diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2013-10-31 08:51:10 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2013-10-31 08:51:10 (GMT) |
commit | 4f970286ec90b02eaf3ad950648ca61a79c193e9 (patch) | |
tree | ed3f975994e81fe4225ba79db8f1746d427737ec /generic/ttk/ttkGenStubs.tcl | |
parent | 85289793bcef6cb95dad1879cb483f5128be9d27 (diff) | |
download | tk-4f970286ec90b02eaf3ad950648ca61a79c193e9.zip tk-4f970286ec90b02eaf3ad950648ca61a79c193e9.tar.gz tk-4f970286ec90b02eaf3ad950648ca61a79c193e9.tar.bz2 |
Put extern "C" guards around all stub table struct definitions,
so it is usable to be used for C++ compilers as well without the danger of modifying the calling convention.
For tkDecls.h, ttkDecls.h tkIntXlibDecls.h is was no problem, because tk.h, tkTheme.h and Xlib.h
already contain those guards. But not for the other *Decls.h files.
Diffstat (limited to 'generic/ttk/ttkGenStubs.tcl')
-rw-r--r-- | generic/ttk/ttkGenStubs.tcl | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/generic/ttk/ttkGenStubs.tcl b/generic/ttk/ttkGenStubs.tcl index 90dea25..3c8eb19 100644 --- a/generic/ttk/ttkGenStubs.tcl +++ b/generic/ttk/ttkGenStubs.tcl @@ -187,7 +187,6 @@ proc genStubs::declare {args} { variable revision incr revision - if {[llength $args] == 2} { lassign $args index decl set status current @@ -214,7 +213,25 @@ proc genStubs::declare {args} { if {$index > $stubs($curName,lastNum)} { set stubs($curName,lastNum) $index } + return +} + +# genStubs::export -- +# +# This function is used in the declarations file to declare a symbol +# that is exported from the library but is not in the stubs table. +# +# Arguments: +# decl The C function declaration, or {} for an undefined +# entry. +# +# Results: +# None. +proc genStubs::export {args} { + if {[llength $args] != 1} { + puts stderr "wrong # args: export $args" + } return } @@ -410,7 +427,6 @@ proc genStubs::parseArg {arg} { proc genStubs::makeDecl {name decl index} { variable scspec - lassign $decl rtype fname args append text "/* $index */\n" @@ -731,6 +747,8 @@ proc genStubs::emitHeader {name} { append text "#define ${CAPName}_STUBS_EPOCH $epoch\n" append text "#define ${CAPName}_STUBS_REVISION $revision\n" + append text "\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n" + emitDeclarations $name text if {[info exists hooks($name)]} { @@ -752,8 +770,7 @@ proc genStubs::emitHeader {name} { append text "} ${capName}Stubs;\n\n" - append text "#ifdef __cplusplus\nextern \"C\" {\n#endif\n" - append text "extern const ${capName}Stubs *${name}StubsPtr;\n" + append text "extern const ${capName}Stubs *${name}StubsPtr;\n\n" append text "#ifdef __cplusplus\n}\n#endif\n" emitMacros $name text @@ -778,10 +795,9 @@ proc genStubs::emitInit {name textVar} { variable interfaces variable epoch variable revision - upvar $textVar text - set root 1 + set root 1 set capName [string toupper [string index $name 0]] append capName [string range $name 1 end] set CAPName [string toupper $name] |