From: <ol...@us...> - 2006-12-14 02:38:16
|
Revision: 9615 http://swig.svn.sourceforge.net/swig/?rev=9615&view=rev Author: olly Date: 2006-12-13 18:38:11 -0800 (Wed, 13 Dec 2006) Log Message: ----------- Fix some more CVS references to SVN Modified Paths: -------------- trunk/Doc/Manual/Extending.html trunk/Doc/Manual/Windows.html Modified: trunk/Doc/Manual/Extending.html =================================================================== --- trunk/Doc/Manual/Extending.html 2006-12-14 02:29:49 UTC (rev 9614) +++ trunk/Doc/Manual/Extending.html 2006-12-14 02:38:11 UTC (rev 9615) @@ -3281,7 +3281,7 @@ which we encourage for all popular languages, there are a few requirements. While we appreciate that getting all aspects of a new language working won't happen at the outset, there are a set of minimum requirements before -a module can be committed into the cvs repository for distribution with future +a module can be committed into the SVN repository for distribution with future versions of SWIG. The following are really a summary of this whole section with details being outlined earlier on. </p> @@ -3323,7 +3323,7 @@ </ol> <p> -Once accepted into CVS, development efforts should concentrate on +Once accepted into SVN, development efforts should concentrate on getting the entire test-suite to work with plenty of runtime tests. Runtime tests should be for existing testcases and new test cases should be added should there be an area not already covered by Modified: trunk/Doc/Manual/Windows.html =================================================================== --- trunk/Doc/Manual/Windows.html 2006-12-14 02:29:49 UTC (rev 9614) +++ trunk/Doc/Manual/Windows.html 2006-12-14 02:38:11 UTC (rev 9615) @@ -215,8 +215,8 @@ </ul> <p> -The step by step instructions to download and install MinGW and MSYS, then download and build the latest version of SWIG from cvs follow... -Note that the instructions for obtaining SWIG from CVS are also online at <a href="http://www.swig.org/cvs.html">SWIG CVS</a>. +The step by step instructions to download and install MinGW and MSYS, then download and build the latest version of SWIG from SVN follow... +Note that the instructions for obtaining SWIG from SVN are also online at <a href="http://www.swig.org/cvs.html">SWIG SVN</a>. </p> <p> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ol...@us...> - 2006-12-14 03:39:36
|
Revision: 9619 http://swig.svn.sourceforge.net/swig/?rev=9619&view=rev Author: olly Date: 2006-12-13 19:39:31 -0800 (Wed, 13 Dec 2006) Log Message: ----------- Update links from cvs.html to svn.html and update windows CVS instructions to use SVN. Modified Paths: -------------- trunk/Doc/Manual/Preface.html trunk/Doc/Manual/Windows.html Modified: trunk/Doc/Manual/Preface.html =================================================================== --- trunk/Doc/Manual/Preface.html 2006-12-14 03:05:33 UTC (rev 9618) +++ trunk/Doc/Manual/Preface.html 2006-12-14 03:39:31 UTC (rev 9619) @@ -106,12 +106,12 @@ </p> <p> -CVS access to the latest version of SWIG is also available. More information +SVN access to the latest version of SWIG is also available. More information about this can be obtained at: </p> <div class="shell"><pre> -<a href="http://www.swig.org/cvs.html">http://www.swig.org/cvs.html</a> +<a href="http://www.swig.org/svn.html">http://www.swig.org/svn.html</a> </pre></div> Modified: trunk/Doc/Manual/Windows.html =================================================================== --- trunk/Doc/Manual/Windows.html 2006-12-14 03:05:33 UTC (rev 9618) +++ trunk/Doc/Manual/Windows.html 2006-12-14 03:39:31 UTC (rev 9619) @@ -216,7 +216,7 @@ <p> The step by step instructions to download and install MinGW and MSYS, then download and build the latest version of SWIG from SVN follow... -Note that the instructions for obtaining SWIG from SVN are also online at <a href="http://www.swig.org/cvs.html">SWIG SVN</a>. +Note that the instructions for obtaining SWIG from SVN are also online at <a href="http://www.swig.org/svn.html">SWIG SVN</a>. </p> <p> @@ -279,27 +279,23 @@ </li> <li> - To get the latest SWIG CVS, type in the following: + To get the latest SWIG SVN, type in the following: <div class="shell"><pre> mkdir /usr/src cd /usr/src -export CVSROOT=:pserver:ano...@sw...:/cvsroot/swig -cvs login - (Logging in to ano...@sw...) - CVS password: <Just Press Return Here> -cvs -z3 checkout SWIG +svn co https://swig.svn.sourceforge.net/svnroot/swig/trunk swig </pre></div> <b>Pitfall note:</b> If you want to check out SWIG to a different folder to the proposed -/usr/src/SWIG, do not use MSYS emulated windows drive letters, because +/usr/src/swig, do not use MSYS emulated windows drive letters, because the autotools will fail miserably on those. </li> <li> You are now ready to build SWIG. Execute the following commands to build swig.exe: <div class="shell"><pre> -cd /usr/src/SWIG +cd /usr/src/swig ./autogen.sh ./configure make This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ol...@us...> - 2007-03-26 01:08:35
|
Revision: 9660 http://swig.svn.sourceforge.net/swig/?rev=9660&view=rev Author: olly Date: 2007-03-25 18:08:34 -0700 (Sun, 25 Mar 2007) Log Message: ----------- Automatic updates to section anchors from the Makefile Modified Paths: -------------- trunk/Doc/Manual/Contents.html trunk/Doc/Manual/R.html Modified: trunk/Doc/Manual/Contents.html =================================================================== --- trunk/Doc/Manual/Contents.html 2007-03-26 01:06:35 UTC (rev 9659) +++ trunk/Doc/Manual/Contents.html 2007-03-26 01:08:34 UTC (rev 9660) @@ -1361,6 +1361,7 @@ <ul> <li><a href="R.html#R_nn2">Bugs</a> <li><a href="R.html#R_nn3">Using R and SWIG</a> +<li><a href="R.html#R_nn4">Precompiling large R files</a> <li><a href="R.html#R_nn4">General policy</a> <li><a href="R.html#R_nn5">Language conventions</a> <li><a href="R.html#R_nn6">C++ classes</a> Modified: trunk/Doc/Manual/R.html =================================================================== --- trunk/Doc/Manual/R.html 2007-03-26 01:06:35 UTC (rev 9659) +++ trunk/Doc/Manual/R.html 2007-03-26 01:08:34 UTC (rev 9660) @@ -12,6 +12,7 @@ <ul> <li><a href="#R_nn2">Bugs</a> <li><a href="#R_nn3">Using R and SWIG</a> +<li><a href="#R_nn4">Precompiling large R files</a> <li><a href="#R_nn4">General policy</a> <li><a href="#R_nn5">Language conventions</a> <li><a href="#R_nn6">C++ classes</a> @@ -99,8 +100,9 @@ These two files can be loaded in any order </p> -<H2>Precompiling large R files</H2> +<H2><a name="R_nn4"></a>32.3 Precompiling large R files</H2> + In cases where the R file is large, one make save a lot of loading time by precompiling the R wrapper. This can be done by creating the file makeRData.R which contains the following @@ -116,7 +118,7 @@ -<H2><a name="R_nn4"></a>32.3 General policy</H2> +<H2><a name="R_nn4"></a>32.4 General policy</H2> <p> @@ -125,7 +127,7 @@ to provide R syntax. </p> -<H2><a name="R_nn5"></a>32.4 Language conventions</H2> +<H2><a name="R_nn5"></a>32.5 Language conventions</H2> <p> @@ -134,7 +136,7 @@ slices) </p> -<H2><a name="R_nn6"></a>32.5 C++ classes</H2> +<H2><a name="R_nn6"></a>32.6 C++ classes</H2> <p> @@ -146,7 +148,7 @@ of the proxy class baggage you see in other languages. </p> -<H2><a name="R_nn7"></a>32.6 Enumerations</H2> +<H2><a name="R_nn7"></a>32.7 Enumerations</H2> <p> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ol...@us...> - 2007-03-26 01:12:19
|
Revision: 9662 http://swig.svn.sourceforge.net/swig/?rev=9662&view=rev Author: olly Date: 2007-03-25 18:12:09 -0700 (Sun, 25 Mar 2007) Log Message: ----------- Escape < and > in HTML since unescaped instances confuse htmldoc and cause it to mangle the "one HTML page" version of the manual. Modified Paths: -------------- trunk/Doc/Manual/Allegrocl.html trunk/Doc/Manual/CSharp.html trunk/Doc/Manual/Extending.html trunk/Doc/Manual/Java.html trunk/Doc/Manual/Lisp.html trunk/Doc/Manual/Lua.html trunk/Doc/Manual/Perl5.html trunk/Doc/Manual/Python.html trunk/Doc/Manual/Ruby.html Modified: trunk/Doc/Manual/Allegrocl.html =================================================================== --- trunk/Doc/Manual/Allegrocl.html 2007-03-26 01:10:07 UTC (rev 9661) +++ trunk/Doc/Manual/Allegrocl.html 2007-03-26 01:12:09 UTC (rev 9662) @@ -760,14 +760,14 @@ </p> <div class="code"> <pre> -#define A 1 => (swig-defconstant "A" 1) -#define B 'c' => (swig-defconstant "B" #\c) -#define C B => (swig-defconstant "C" #\c) -#define D 1.0e2 => (swig-defconstant "D" 1.0d2) -#define E 2222 => (swig-defconstant "E" 2222) -#define F (unsigned int)2222 => no code generated -#define G 1.02e2f => (swig-defconstant "G" 1.02f2) -#define H foo => no code generated +#define A 1 => (swig-defconstant "A" 1) +#define B 'c' => (swig-defconstant "B" #\c) +#define C B => (swig-defconstant "C" #\c) +#define D 1.0e2 => (swig-defconstant "D" 1.0d2) +#define E 2222 => (swig-defconstant "E" 2222) +#define F (unsigned int)2222 => no code generated +#define G 1.02e2f => (swig-defconstant "G" 1.02f2) +#define H foo => no code generated </pre> </div> @@ -789,13 +789,13 @@ <div class="code"> <pre> -#define I A + E => (swig-defconstant "I" (+ 1 2222)) -#define J 1|2 => (swig-defconstant "J" (logior 1 2)) -#define Y 1 + 2 * 3 + 4 => (swig-defconstant "Y" (* (+ 1 2) (+ 3 4))) -#define Y1 (1 + 2) * (3 + 4) => (swig-defconstant "Y1" (* (+ 1 2) (+ 3 4))) -#define Y2 1 * 2 + 3 * 4 => (swig-defconstant "Y2" (* 1 (+ 2 3) 4)) ;; WRONG -#define Y3 (1 * 2) + (3 * 4) => (swig-defconstant "Y3" (* 1 (+ 2 3) 4)) ;; WRONG -#define Z 1 + 2 - 3 + 4 * 5 => (swig-defconstant "Z" (* (+ 1 (- 2 3) 4) 5)) ;; WRONG +#define I A + E => (swig-defconstant "I" (+ 1 2222)) +#define J 1|2 => (swig-defconstant "J" (logior 1 2)) +#define Y 1 + 2 * 3 + 4 => (swig-defconstant "Y" (* (+ 1 2) (+ 3 4))) +#define Y1 (1 + 2) * (3 + 4) => (swig-defconstant "Y1" (* (+ 1 2) (+ 3 4))) +#define Y2 1 * 2 + 3 * 4 => (swig-defconstant "Y2" (* 1 (+ 2 3) 4)) ;; WRONG +#define Y3 (1 * 2) + (3 * 4) => (swig-defconstant "Y3" (* 1 (+ 2 3) 4)) ;; WRONG +#define Z 1 + 2 - 3 + 4 * 5 => (swig-defconstant "Z" (* (+ 1 (- 2 3) 4) 5)) ;; WRONG </pre> </div> <p> @@ -863,20 +863,20 @@ <div class="targetlang"> <pre> -user> (load "globalvar.dll") +user> (load "globalvar.dll") ; Foreign loading globalvar.dll. t -user> (load "globalvar.cl") +user> (load "globalvar.cl") ; Loading c:\mikel\src\swig\test\globalvar.cl t -user> -globalvar> (globalvar.nnn::global_var) +user> +globalvar> (globalvar.nnn::global_var) 2 -globalvar> (globalvar.nnn::glob_float) +globalvar> (globalvar.nnn::glob_float) 2.0 -globalvar> (setf (globalvar.nnn::glob_float) 3.0) +globalvar> (setf (globalvar.nnn::glob_float) 3.0) 3.0 -globalvar> (globalvar.nnn::glob_float) +globalvar> (globalvar.nnn::glob_float) 3.0 </pre> </div> @@ -1215,10 +1215,10 @@ typedef A Foo; -A *xxx(int i); /* sets A->x = A->y = i */ -Foo *yyy(int i); /* sets Foo->x = Foo->y = i */ +A *xxx(int i); /* sets A->x = A->y = i */ +Foo *yyy(int i); /* sets Foo->x = Foo->y = i */ -int zzz(A *inst = 0); /* return inst->x + inst->y */ +int zzz(A *inst = 0); /* return inst->x + inst->y */ </pre> </div> @@ -1258,22 +1258,22 @@ </p> <div class="targetlang"> <pre> -CL-USER> (load "synonym.dll") +CL-USER> (load "synonym.dll") ; Foreign loading synonym.dll. t -CL-USER> (load "synonym.cl") +CL-USER> (load "synonym.cl") ; Loading c:\mikel\src\swig\test\synonym.cl t -CL-USER> -synonym> (setf a (xxx 3)) +CL-USER> +synonym> (setf a (xxx 3)) #<A nil #x3261a0 @ #x207299da> -synonym> (setf foo (yyy 10)) +synonym> (setf foo (yyy 10)) #<A nil #x3291d0 @ #x2072e982> -synonym> (zzz a) +synonym> (zzz a) 6 -synonym> (zzz foo) +synonym> (zzz foo) 20 -synonym> +synonym> </pre> </div> @@ -1326,7 +1326,7 @@ }; float xxx(int i, int x = 0); /* return i * x */ -float xxx(A *inst, int x); /* return x + A->x + A->y */ +float xxx(A *inst, int x); /* return x + A->x + A->y */ </pre> </div> @@ -1443,21 +1443,21 @@ </p> <div class="targetlang"> <pre> -overload> (setf a (new_A)) +overload> (setf a (new_A)) #<A nil #x329268 @ #x206cf612> -overload> (setf (A_x a) 10) +overload> (setf (A_x a) 10) 10 -overload> (setf (A_y a) 20) +overload> (setf (A_y a) 20) 20 -overload> (xxx 1) +overload> (xxx 1) 0.0 -overload> (xxx 3 10) +overload> (xxx 3 10) 30.0 -overload> (xxx a 1) +overload> (xxx a 1) 31.0 -overload> (xxx a 2) +overload> (xxx a 2) 32.0 -overload> +overload> </pre> </div> @@ -1506,17 +1506,17 @@ %rename(__logand_assign__) *::operator&=; %rename(__logior_assign__) *::operator|=; -%rename(__lshift__) *::operator<<; -%rename(__lshift_assign__) *::operator<<=; -%rename(__rshift__) *::operator>>; -%rename(__rshift_assign__) *::operator>>=; +%rename(__lshift__) *::operator<<; +%rename(__lshift_assign__) *::operator<<=; +%rename(__rshift__) *::operator>>; +%rename(__rshift_assign__) *::operator>>=; %rename(__eq__) *::operator==; %rename(__ne__) *::operator!=; -%rename(__lt__) *::operator<; -%rename(__gt__) *::operator>; -%rename(__lte__) *::operator<=; -%rename(__gte__) *::operator>=; +%rename(__lt__) *::operator<; +%rename(__gt__) *::operator>; +%rename(__lte__) *::operator<=; +%rename(__gte__) *::operator>=; %rename(__and__) *::operator&&; %rename(__or__) *::operator||; @@ -1529,8 +1529,8 @@ %rename(__comma__) *::operator,(); %rename(__comma__) *::operator,() const; -%rename(__member_ref__) *::operator->; -%rename(__member_func_ref__) *::operator->*; +%rename(__member_ref__) *::operator->; +%rename(__member_func_ref__) *::operator->*; %rename(__funcall__) *::operator(); %rename(__aref__) *::operator[]; @@ -1599,11 +1599,11 @@ </p> <div class="targetlang"> <pre> -opoverload> (B___eq__ x1 x2) +opoverload> (B___eq__ x1 x2) nil -opoverload> (B___eq__ x1 3) +opoverload> (B___eq__ x1 3) nil -opoverload> +opoverload> </pre> </div> Modified: trunk/Doc/Manual/CSharp.html =================================================================== --- trunk/Doc/Manual/CSharp.html 2007-03-26 01:10:07 UTC (rev 9661) +++ trunk/Doc/Manual/CSharp.html 2007-03-26 01:12:09 UTC (rev 9662) @@ -1485,7 +1485,7 @@ Container container; Element element(20); container.setElement(&element); - cout << "element.value: " << container.getElement()->value << endl; + cout << "element.value: " << container.getElement()->value << endl; </pre> </div> Modified: trunk/Doc/Manual/Extending.html =================================================================== --- trunk/Doc/Manual/Extending.html 2007-03-26 01:10:07 UTC (rev 9661) +++ trunk/Doc/Manual/Extending.html 2007-03-26 01:12:09 UTC (rev 9662) @@ -2869,13 +2869,13 @@ action : delete arg1; functionWrapper : void Shape_x_set(Shape *self,double x) - action : if (arg1) (arg1)->x = arg2; + action : if (arg1) (arg1)->x = arg2; functionWrapper : double Shape_x_get(Shape *self) - action : result = (double) ((arg1)->x); + action : result = (double) ((arg1)->x); functionWrapper : void Shape_y_set(Shape *self,double y) - action : if (arg1) (arg1)->y = arg2; + action : if (arg1) (arg1)->y = arg2; ... </pre> </div> @@ -2975,7 +2975,7 @@ .... /* write the wrapper function definition */ - Printv(wrapper->def,"RETURN_TYPE ", wname, "(ARGS) {",NIL); + Printv(wrapper->def,"RETURN_TYPE ", wname, "(ARGS) {",NIL); /* if any additional local variable needed, add them now */ ... @@ -3005,13 +3005,13 @@ .... /* Close the function(ok) */ - Printv(wrapper->code, "return ALL_OK;\n", NIL); + Printv(wrapper->code, "return ALL_OK;\n", NIL); /* add the failure cleanup code */ ... /* Close the function(error) */ - Printv(wrapper->code, "return ERROR;\n", "}\n", NIL); + Printv(wrapper->code, "return ERROR;\n", "}\n", NIL); /* final substititions if applicable */ ... Modified: trunk/Doc/Manual/Java.html =================================================================== --- trunk/Doc/Manual/Java.html 2007-03-26 01:10:07 UTC (rev 9661) +++ trunk/Doc/Manual/Java.html 2007-03-26 01:12:09 UTC (rev 9662) @@ -3936,7 +3936,7 @@ int array[4]; void populate(int x[]) { int i; - for (i=0; i<4; i++) + for (i=0; i<4; i++) x[i] = 100 + i; } </pre> @@ -4083,7 +4083,7 @@ <div class="code"> <pre> SWIGTYPE_p_int array = example.new_intArray(10000000); // Array of 10-million integers -for (int i=0; i<10000; i++) { // Set some values +for (int i=0; i<10000; i++) { // Set some values example.intArray_setitem(array,i,i); } int sum = example.sumitems(array,10000); @@ -4112,7 +4112,7 @@ <div class="code"> <pre> intArray array = new intArray(10000000); // Array of 10-million integers -for (int i=0; i<10000; i++) { // Set some values +for (int i=0; i<10000; i++) { // Set some values array.setitem(i,i); } int sum = example.sumitems(array.cast(),10000); @@ -6672,7 +6672,7 @@ Container container; Element element(20); container.setElement(&element); - cout << "element.value: " << container.getElement()->value << endl; + cout << "element.value: " << container.getElement()->value << endl; </pre> </div> Modified: trunk/Doc/Manual/Lisp.html =================================================================== --- trunk/Doc/Manual/Lisp.html 2007-03-26 01:10:07 UTC (rev 9661) +++ trunk/Doc/Manual/Lisp.html 2007-03-26 01:12:09 UTC (rev 9662) @@ -126,7 +126,7 @@ <div class="code"><pre> #define y 5 -#define x (y >> 1) +#define x (y >> 1) typedef int days; Modified: trunk/Doc/Manual/Lua.html =================================================================== --- trunk/Doc/Manual/Lua.html 2007-03-26 01:10:07 UTC (rev 9661) +++ trunk/Doc/Manual/Lua.html 2007-03-26 01:12:09 UTC (rev 9662) @@ -107,7 +107,7 @@ int main(int argc,char* argv[]) { lua_State *L; - if (argc<2) + if (argc<2) { printf("%s: <filename.lua>\n",argv[0]); return 0; Modified: trunk/Doc/Manual/Perl5.html =================================================================== --- trunk/Doc/Manual/Perl5.html 2007-03-26 01:10:07 UTC (rev 9661) +++ trunk/Doc/Manual/Perl5.html 2007-03-26 01:12:09 UTC (rev 9662) @@ -1247,8 +1247,8 @@ <li>operator== </li> <li>operator!= </li> <li>operator% </li> -<li>operator> </li> -<li>operator< </li> +<li>operator> </li> +<li>operator< </li> <li>operator and </li> <li>operator or </li> </ul> @@ -2924,11 +2924,11 @@ { my ($im, $x) = @_; my $a = new_mat44(); - for (my $i = 0; $i < 4, $i++) + for (my $i = 0; $i < 4, $i++) { - for (my $j = 0; $j < 4, $j++) + for (my $j = 0; $j < 4, $j++) { - mat44_set($a, $i, $j, $x->[i][j]) + mat44_set($a, $i, $j, $x->[i][j]) } } example.set_transform($im, $a); Modified: trunk/Doc/Manual/Python.html =================================================================== --- trunk/Doc/Manual/Python.html 2007-03-26 01:10:07 UTC (rev 9661) +++ trunk/Doc/Manual/Python.html 2007-03-26 01:12:09 UTC (rev 9662) @@ -1971,7 +1971,7 @@ int main() { A *a = new A(); - a->ref(); // 'a' is ref here + a->ref(); // 'a' is ref here B *b1 = new B(a); // 'a' is ref here if (1 + 1 == 2) { @@ -1980,7 +1980,7 @@ } delete b1; // 'a' is unref, but not deleted - a->unref(); // 'a' is unref and deleted + a->unref(); // 'a' is unref and deleted } </pre> </div> @@ -2004,8 +2004,8 @@ %module example ... -%feature("ref") RCObj "$this->ref();" -%feature("unref") RCObj "$this->unref();" +%feature("ref") RCObj "$this->ref();" +%feature("unref") RCObj "$this->unref();" %include "rcobj.h" %include "A.h" @@ -2021,8 +2021,8 @@ %module example ... -%ref RCObj "$this->ref();" -%unref RCObj "$this->unref();" +%ref RCObj "$this->ref();" +%unref RCObj "$this->unref();" %include "rcobj.h" %include "A.h" @@ -2058,7 +2058,7 @@ </div> <p> -Note that the user doesn't explicitly need to call 'a->ref()' nor 'a->unref()' +Note that the user doesn't explicitly need to call 'a->ref()' nor 'a->unref()' (as neither 'delete a'). Instead, SWIG take cares of executing the "ref" and "unref" codes as needed. If the user doesn't specify the "ref/unref" features, SWIG will produce a code equivalent to define Modified: trunk/Doc/Manual/Ruby.html =================================================================== --- trunk/Doc/Manual/Ruby.html 2007-03-26 01:10:07 UTC (rev 9661) +++ trunk/Doc/Manual/Ruby.html 2007-03-26 01:12:09 UTC (rev 9662) @@ -1302,7 +1302,7 @@ <pre>foo = Foo.new begin foo.test() -rescue CustomError => e +rescue CustomError => e puts "Caught custom error" end </pre> </div> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ol...@us...> - 2007-03-26 01:18:13
|
Revision: 9663 http://swig.svn.sourceforge.net/swig/?rev=9663&view=rev Author: olly Date: 2007-03-25 18:17:48 -0700 (Sun, 25 Mar 2007) Log Message: ----------- Fix duplicate section anchor Modified Paths: -------------- trunk/Doc/Manual/Contents.html trunk/Doc/Manual/R.html Modified: trunk/Doc/Manual/Contents.html =================================================================== --- trunk/Doc/Manual/Contents.html 2007-03-26 01:12:09 UTC (rev 9662) +++ trunk/Doc/Manual/Contents.html 2007-03-26 01:17:48 UTC (rev 9663) @@ -1362,10 +1362,10 @@ <li><a href="R.html#R_nn2">Bugs</a> <li><a href="R.html#R_nn3">Using R and SWIG</a> <li><a href="R.html#R_nn4">Precompiling large R files</a> -<li><a href="R.html#R_nn4">General policy</a> -<li><a href="R.html#R_nn5">Language conventions</a> -<li><a href="R.html#R_nn6">C++ classes</a> -<li><a href="R.html#R_nn7">Enumerations</a> +<li><a href="R.html#R_nn5">General policy</a> +<li><a href="R.html#R_nn6">Language conventions</a> +<li><a href="R.html#R_nn7">C++ classes</a> +<li><a href="R.html#R_nn8">Enumerations</a> </ul> </div> <!-- INDEX --> Modified: trunk/Doc/Manual/R.html =================================================================== --- trunk/Doc/Manual/R.html 2007-03-26 01:12:09 UTC (rev 9662) +++ trunk/Doc/Manual/R.html 2007-03-26 01:17:48 UTC (rev 9663) @@ -13,10 +13,10 @@ <li><a href="#R_nn2">Bugs</a> <li><a href="#R_nn3">Using R and SWIG</a> <li><a href="#R_nn4">Precompiling large R files</a> -<li><a href="#R_nn4">General policy</a> -<li><a href="#R_nn5">Language conventions</a> -<li><a href="#R_nn6">C++ classes</a> -<li><a href="#R_nn7">Enumerations</a> +<li><a href="#R_nn5">General policy</a> +<li><a href="#R_nn6">Language conventions</a> +<li><a href="#R_nn7">C++ classes</a> +<li><a href="#R_nn8">Enumerations</a> </ul> </div> <!-- INDEX --> @@ -118,7 +118,7 @@ -<H2><a name="R_nn4"></a>32.4 General policy</H2> +<H2><a name="R_nn5"></a>32.4 General policy</H2> <p> @@ -127,7 +127,7 @@ to provide R syntax. </p> -<H2><a name="R_nn5"></a>32.5 Language conventions</H2> +<H2><a name="R_nn6"></a>32.5 Language conventions</H2> <p> @@ -136,7 +136,7 @@ slices) </p> -<H2><a name="R_nn6"></a>32.6 C++ classes</H2> +<H2><a name="R_nn7"></a>32.6 C++ classes</H2> <p> @@ -148,7 +148,7 @@ of the proxy class baggage you see in other languages. </p> -<H2><a name="R_nn7"></a>32.7 Enumerations</H2> +<H2><a name="R_nn8"></a>32.7 Enumerations</H2> <p> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2007-04-17 22:59:09
|
Revision: 9681 http://swig.svn.sourceforge.net/swig/?rev=9681&view=rev Author: wsfulton Date: 2007-04-17 15:59:08 -0700 (Tue, 17 Apr 2007) Log Message: ----------- Minor html updates Modified Paths: -------------- trunk/Doc/Manual/Contents.html trunk/Doc/Manual/Lisp.html trunk/Doc/Manual/R.html Modified: trunk/Doc/Manual/Contents.html =================================================================== --- trunk/Doc/Manual/Contents.html 2007-04-17 22:51:24 UTC (rev 9680) +++ trunk/Doc/Manual/Contents.html 2007-04-17 22:59:08 UTC (rev 9681) @@ -598,6 +598,7 @@ <ul> <li><a href="CSharp.html#csharp_memory_management_member_variables">Memory management when returning references to member variables</a> <li><a href="CSharp.html#csharp_memory_management_objects">Memory management for objects passed to the C++ layer</a> +<li><a href="CSharp.html#csharp_date_marshalling">Date marshalling using the csin typemap and associated attributes</a> </ul> </ul> </div> @@ -798,6 +799,7 @@ <li><a href="Java.html#struct_pointer_pointer">Struct pointer to pointer</a> <li><a href="Java.html#java_memory_management_member_variables">Memory management when returning references to member variables</a> <li><a href="Java.html#java_memory_management_objects">Memory management for objects passed to the C++ layer</a> +<li><a href="Java.html#java_date_marshalling">Date marshalling using the javain typemap and associated attributes</a> </ul> <li><a href="Java.html#java_directors_faq">Living with Java Directors</a> <li><a href="Java.html#odds_ends">Odds and ends</a> @@ -823,7 +825,7 @@ <li><a href="Lisp.html#Lisp_nn4">Additional Commandline Options </a> <li><a href="Lisp.html#Lisp_nn5">Generating CFFI bindings</a> <li><a href="Lisp.html#Lisp_nn6">Generating CFFI bindings for C++ code</a> -<li><a href="Lisp.html#Lisp_nn7">Inserting user code into generated files</a></li> +<li><a href="Lisp.html#Lisp_nn7">Inserting user code into generated files</a> </ul> <li><a href="Lisp.html#Lisp_nn8">CLISP</a> <ul> @@ -1364,9 +1366,9 @@ <li><a href="R.html#R_nn3">Using R and SWIG</a> <li><a href="R.html#R_nn4">Precompiling large R files</a> <li><a href="R.html#R_nn5">General policy</a> -<li><a href="R.html#R_nn6">Language conventions</a> -<li><a href="R.html#R_nn7">C++ classes</a> -<li><a href="R.html#R_nn8">Enumerations</a> +<li><a href="R.html#R_language_conventions">Language conventions</a> +<li><a href="R.html#R_nn6">C++ classes</a> +<li><a href="R.html#R_nn7">Enumerations</a> </ul> </div> <!-- INDEX --> Modified: trunk/Doc/Manual/Lisp.html =================================================================== --- trunk/Doc/Manual/Lisp.html 2007-04-17 22:51:24 UTC (rev 9680) +++ trunk/Doc/Manual/Lisp.html 2007-04-17 22:59:08 UTC (rev 9681) @@ -16,7 +16,7 @@ <li><a href="#Lisp_nn4">Additional Commandline Options </a> <li><a href="#Lisp_nn5">Generating CFFI bindings</a> <li><a href="#Lisp_nn6">Generating CFFI bindings for C++ code</a> -<li><a href="#Lisp_nn7">Inserting user code into generated files</a></li> +<li><a href="#Lisp_nn7">Inserting user code into generated files</a> </ul> <li><a href="#Lisp_nn8">CLISP</a> <ul> @@ -570,6 +570,7 @@ <H3><a name="Lisp_nn7"></a>21.2.4 Inserting user code into generated files</H3> + <p> It is often necessary to <a href="SWIG.html#SWIG_nn40">include user-defined code</a> into the automatically generated interface files. For example, when building Modified: trunk/Doc/Manual/R.html =================================================================== --- trunk/Doc/Manual/R.html 2007-04-17 22:51:24 UTC (rev 9680) +++ trunk/Doc/Manual/R.html 2007-04-17 22:59:08 UTC (rev 9681) @@ -14,9 +14,9 @@ <li><a href="#R_nn3">Using R and SWIG</a> <li><a href="#R_nn4">Precompiling large R files</a> <li><a href="#R_nn5">General policy</a> -<li><a href="#R_nn6">Language conventions</a> -<li><a href="#R_nn7">C++ classes</a> -<li><a href="#R_nn8">Enumerations</a> +<li><a href="#R_language_conventions">Language conventions</a> +<li><a href="#R_nn6">C++ classes</a> +<li><a href="#R_nn7">Enumerations</a> </ul> </div> <!-- INDEX --> @@ -127,7 +127,7 @@ to provide R syntax. </p> -<H2><a name="R_nn6"></a>32.5 Language conventions</H2> +<H2><a name="R_language_conventions"></a>32.5 Language conventions</H2> <p> @@ -136,7 +136,7 @@ slices) </p> -<H2><a name="R_nn7"></a>32.6 C++ classes</H2> +<H2><a name="R_nn6"></a>32.6 C++ classes</H2> <p> @@ -148,7 +148,7 @@ of the proxy class baggage you see in other languages. </p> -<H2><a name="R_nn8"></a>32.7 Enumerations</H2> +<H2><a name="R_nn7"></a>32.7 Enumerations</H2> <p> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ol...@us...> - 2007-04-20 01:22:50
|
Revision: 9685 http://swig.svn.sourceforge.net/swig/?rev=9685&view=rev Author: olly Date: 2007-04-19 18:22:46 -0700 (Thu, 19 Apr 2007) Log Message: ----------- Fix a couple of repeated typos: "Creatng" -> "Creating" "visa versa" -> "vice versa" Modified Paths: -------------- trunk/Doc/Manual/Java.html trunk/Doc/Manual/Perl5.html trunk/Doc/Manual/Tcl.html Modified: trunk/Doc/Manual/Java.html =================================================================== --- trunk/Doc/Manual/Java.html 2007-04-20 01:16:31 UTC (rev 9684) +++ trunk/Doc/Manual/Java.html 2007-04-20 01:22:46 UTC (rev 9685) @@ -756,7 +756,7 @@ <p> The <tt>%immutable</tt> directive stays in effect until it is explicitly disabled or cleared using <tt>%mutable</tt>. -See the <a href="SWIG.html#SWIG_readonly_variables">Creatng read-only variables</a> section for further details. +See the <a href="SWIG.html#SWIG_readonly_variables">Creating read-only variables</a> section for further details. </p> <p> @@ -3637,7 +3637,7 @@ <p> -The examples above first use the C JNI calling syntax then the C++ JNI calling syntax. The C++ calling syntax will not compile as C and also visa versa. +The examples above first use the C JNI calling syntax then the C++ JNI calling syntax. The C++ calling syntax will not compile as C and also vice versa. It is however possible to write JNI calls which will compile under both C and C++ and is covered in the <a href="#typemaps_for_c_and_c++">Typemaps for both C and C++ compilation</a> section. </p> @@ -5793,7 +5793,7 @@ %typemap(jstype) char ** "String[]" /* These 2 typemaps handle the conversion of the jtype to jstype typemap type - and visa versa */ + and vice versa */ %typemap(javain) char ** "$javainput" %typemap(javaout) char ** { return $jnicall; Modified: trunk/Doc/Manual/Perl5.html =================================================================== --- trunk/Doc/Manual/Perl5.html 2007-04-20 01:16:31 UTC (rev 9684) +++ trunk/Doc/Manual/Perl5.html 2007-04-20 01:22:46 UTC (rev 9685) @@ -792,7 +792,7 @@ <p> The <tt>%immutable</tt> directive stays in effect until it is explicitly disabled or cleared using <tt>%mutable</tt>. -See the <a href="SWIG.html#SWIG_readonly_variables">Creatng read-only variables</a> section for further details. +See the <a href="SWIG.html#SWIG_readonly_variables">Creating read-only variables</a> section for further details. </p> <p> Modified: trunk/Doc/Manual/Tcl.html =================================================================== --- trunk/Doc/Manual/Tcl.html 2007-04-20 01:16:31 UTC (rev 9684) +++ trunk/Doc/Manual/Tcl.html 2007-04-20 01:22:46 UTC (rev 9685) @@ -770,7 +770,7 @@ <p> The <tt>%immutable</tt> directive stays in effect until it is explicitly disabled or cleared using <tt>%mutable</tt>. -See the <a href="SWIG.html#SWIG_readonly_variables">Creatng read-only variables</a> section for further details. +See the <a href="SWIG.html#SWIG_readonly_variables">Creating read-only variables</a> section for further details. </p> <p> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2007-07-02 21:39:07
|
Revision: 9860 http://swig.svn.sourceforge.net/swig/?rev=9860&view=rev Author: wsfulton Date: 2007-07-02 14:38:22 -0700 (Mon, 02 Jul 2007) Log Message: ----------- Add notes about typemaps and the preprocessor including the noblock attribute Modified Paths: -------------- trunk/Doc/Manual/Preprocessor.html trunk/Doc/Manual/Typemaps.html Modified: trunk/Doc/Manual/Preprocessor.html =================================================================== --- trunk/Doc/Manual/Preprocessor.html 2007-06-25 23:49:19 UTC (rev 9859) +++ trunk/Doc/Manual/Preprocessor.html 2007-07-02 21:38:22 UTC (rev 9860) @@ -16,8 +16,9 @@ <li><a href="#Preprocessor_nn5">Macro Expansion</a> <li><a href="#Preprocessor_nn6">SWIG Macros</a> <li><a href="#Preprocessor_nn7">C99 and GNU Extensions</a> -<li><a href="#Preprocessor_nn8">Preprocessing and %{ ... %} blocks</a> -<li><a href="#Preprocessor_nn9">Preprocessing and { ... }</a> +<li><a href="#Preprocessor_nn8">Preprocessing and %{ ... %} & " ... " delimiters</a> +<li><a href="#Preprocessor_nn9">Preprocessing and { ... } delimiters</a> +<li><a href="#Preprocessor_typemap_delimiters">Preprocessor and Typemaps</a> <li><a href="#Preprocessor_nn10">Viewing preprocessor output</a> <li><a href="#Preprocessor_warning_error">The #error and #warning directives</a> </ul> @@ -306,7 +307,7 @@ SWIG directives and are provided to make SWIG more compatible with C99 code. </p> -<H2><a name="Preprocessor_nn8"></a>7.7 Preprocessing and %{ ... %} blocks</H2> +<H2><a name="Preprocessor_nn8"></a>7.7 Preprocessing and %{ ... %} & " ... " delimiters</H2> <p> @@ -331,7 +332,7 @@ modification to the output (including all preprocessor directives). </p> -<H2><a name="Preprocessor_nn9"></a>7.8 Preprocessing and { ... }</H2> +<H2><a name="Preprocessor_nn9"></a>7.8 Preprocessing and { ... } delimiters</H2> <p> @@ -373,17 +374,88 @@ SWIG will strip the extra <tt>%</tt> and leave the preprocessor directive in the code. </p> -<H2><a name="Preprocessor_nn10"></a>7.9 Viewing preprocessor output</H2> +<H2><a name="Preprocessor_typemap_delimiters"></a>7.9 Preprocessor and Typemaps</H2> <p> +<a href="Typemaps.html">Typemaps</a> support a special attribute where the { ... } delimiters can be used, +but the delimiters are not actually generated into the code. +The effect is then similar to using "" or %{ %} delimiters but the code <b>is</b> run through the preprocessor. For example: +</p> + +<div class="code"> +<pre> +#define SWIG_macro(CAST) (CAST)$input +%typemap(in) Int {$1= SWIG_macro(int);} +</pre> +</div> + +<p> +might generate +</p> + +<div class="code"> +<pre> + { + arg1=(int)jarg1; + } +</pre> +</div> + +<p> +whereas +</p> + +<div class="code"> +<pre> +#define SWIG_macro(CAST) (CAST)$input +%typemap(in,noblock=1) Int {$1= SWIG_macro(int);} +</pre> +</div> + +<p> +might generate +</p> + +<div class="code"> +<pre> + arg1=(int)jarg1; +</pre> +</div> + +<p> +and +</p> + +<div class="code"> +<pre> +#define SWIG_macro(CAST) (CAST)$input +%typemap(in) Int %{$1=SWIG_macro(int);%} +</pre> +</div> + +<p> +would generate +</p> + +<div class="code"> +<pre> + arg1=SWIG_macro(int); +</pre> +</div> + + +<H2><a name="Preprocessor_nn10"></a>7.10 Viewing preprocessor output</H2> + + +<p> Like many compilers, SWIG supports a <tt>-E</tt> command line option to display the output from the preprocessor. When the <tt>-E</tt> switch is used, SWIG will not generate any wrappers. Instead the results after the preprocessor has run are displayed. This might be useful as an aid to debugging and viewing the results of macro expansions. </p> -<H2><a name="Preprocessor_warning_error"></a>7.10 The #error and #warning directives</H2> +<H2><a name="Preprocessor_warning_error"></a>7.11 The #error and #warning directives</H2> <p> Modified: trunk/Doc/Manual/Typemaps.html =================================================================== --- trunk/Doc/Manual/Typemaps.html 2007-06-25 23:49:19 UTC (rev 9859) +++ trunk/Doc/Manual/Typemaps.html 2007-07-02 21:38:22 UTC (rev 9860) @@ -714,7 +714,8 @@ </div> <p> -Note that the preprocessor will expand code within the {} delimiters, but not in the last two styles of delimiters. +Note that the preprocessor will expand code within the {} delimiters, but not in the last two styles of delimiters, +see <a href="Preprocessor.html#Preprocessor_typemap_delimiters">Preprocessor and Typemaps</a>. Here are some examples of valid typemap specifications: </p> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2007-07-02 21:39:48
|
Revision: 9861 http://swig.svn.sourceforge.net/swig/?rev=9861&view=rev Author: wsfulton Date: 2007-07-02 14:38:54 -0700 (Mon, 02 Jul 2007) Log Message: ----------- changes after running the html checker Modified Paths: -------------- trunk/Doc/Manual/Contents.html trunk/Doc/Manual/Lua.html trunk/Doc/Manual/Ruby.html trunk/Doc/Manual/SWIGPlus.html Modified: trunk/Doc/Manual/Contents.html =================================================================== --- trunk/Doc/Manual/Contents.html 2007-07-02 21:38:22 UTC (rev 9860) +++ trunk/Doc/Manual/Contents.html 2007-07-02 21:38:54 UTC (rev 9861) @@ -229,6 +229,7 @@ <li><a href="SWIGPlus.html#SWIGPlus_nn29">Class extension</a> <li><a href="SWIGPlus.html#SWIGPlus_nn30">Templates</a> <li><a href="SWIGPlus.html#SWIGPlus_nn31">Namespaces</a> +<li><a href="SWIGPlus.html#SWIGPlus_renaming_templated_types_namespaces">Renaming templated types in namespaces</a> <li><a href="SWIGPlus.html#SWIGPlus_exception_specifications">Exception specifications</a> <li><a href="SWIGPlus.html#SWIGPlus_catches">Exception handling with %catches</a> <li><a href="SWIGPlus.html#SWIGPlus_nn33">Pointers to Members</a> @@ -252,8 +253,9 @@ <li><a href="Preprocessor.html#Preprocessor_nn5">Macro Expansion</a> <li><a href="Preprocessor.html#Preprocessor_nn6">SWIG Macros</a> <li><a href="Preprocessor.html#Preprocessor_nn7">C99 and GNU Extensions</a> -<li><a href="Preprocessor.html#Preprocessor_nn8">Preprocessing and %{ ... %} blocks</a> -<li><a href="Preprocessor.html#Preprocessor_nn9">Preprocessing and { ... }</a> +<li><a href="Preprocessor.html#Preprocessor_nn8">Preprocessing and %{ ... %} & " ... " delimiters</a> +<li><a href="Preprocessor.html#Preprocessor_nn9">Preprocessing and { ... } delimiters</a> +<li><a href="Preprocessor.html#Preprocessor_typemap_delimiters">Preprocessor and Typemaps</a> <li><a href="Preprocessor.html#Preprocessor_nn10">Viewing preprocessor output</a> <li><a href="Preprocessor.html#Preprocessor_warning_error">The #error and #warning directives</a> </ul> @@ -865,12 +867,13 @@ <li><a href="Lua.html#Lua_nn19">Class extension with %extend</a> <li><a href="Lua.html#Lua_nn20">C++ templates</a> <li><a href="Lua.html#Lua_nn21">C++ Smart Pointers</a> +<li><a href="Lua.html#Lua_nn22">Writing your own custom wrappers</a> </ul> -<li><a href="Lua.html#Lua_nn22">Details on the Lua binding</a> +<li><a href="Lua.html#Lua_nn23">Details on the Lua binding</a> <ul> -<li><a href="Lua.html#Lua_nn23">Binding global data into the module.</a> -<li><a href="Lua.html#Lua_nn24">Userdata and Metatables</a> -<li><a href="Lua.html#Lua_nn25">Memory management</a> +<li><a href="Lua.html#Lua_nn24">Binding global data into the module.</a> +<li><a href="Lua.html#Lua_nn25">Userdata and Metatables</a> +<li><a href="Lua.html#Lua_nn26">Memory management</a> </ul> </ul> </div> @@ -1208,87 +1211,23 @@ <li><a href="Ruby.html#Ruby_nn2">Preliminaries</a> <ul> <li><a href="Ruby.html#Ruby_nn3">Running SWIG</a> -<li><a href="Ruby.html#Ruby_nn4">Getting the right header files</a> -<li><a href="Ruby.html#Ruby_nn5">Compiling a dynamic module</a> -<li><a href="Ruby.html#Ruby_nn6">Using your module</a> -<li><a href="Ruby.html#Ruby_nn7">Static linking</a> -<li><a href="Ruby.html#Ruby_nn8">Compilation of C++ extensions</a> -</ul> -<li><a href="Ruby.html#Ruby_nn9">Building Ruby Extensions under Windows 95/NT</a> -<ul> -<li><a href="Ruby.html#Ruby_nn10">Running SWIG from Developer Studio</a> -</ul> -<li><a href="Ruby.html#Ruby_nn11">The Ruby-to-C/C++ Mapping</a> -<ul> <li><a href="Ruby.html#Ruby_nn12">Modules</a> <li><a href="Ruby.html#Ruby_nn13">Functions</a> -<li><a href="Ruby.html#Ruby_nn14">Variable Linking</a> <li><a href="Ruby.html#Ruby_nn15">Constants</a> <li><a href="Ruby.html#Ruby_nn16">Pointers</a> <li><a href="Ruby.html#Ruby_nn17">Structures</a> <li><a href="Ruby.html#Ruby_nn18">C++ classes</a> -<li><a href="Ruby.html#Ruby_nn19">C++ Inheritance</a> -<li><a href="Ruby.html#Ruby_nn20">C++ Overloaded Functions</a> -<li><a href="Ruby.html#Ruby_nn21">C++ Operators</a> -<li><a href="Ruby.html#Ruby_nn22">C++ namespaces</a> -<li><a href="Ruby.html#Ruby_nn23">C++ templates</a> -<li><a href="Ruby.html#Ruby_nn24">C++ Smart Pointers</a> -<li><a href="Ruby.html#Ruby_nn25">Cross-Language Polymorphism</a> -<ul> -<li><a href="Ruby.html#Ruby_nn26">Exception Unrolling</a> </ul> -</ul> <li><a href="Ruby.html#Ruby_nn27">Naming</a> <ul> -<li><a href="Ruby.html#Ruby_nn28">Defining Aliases</a> -<li><a href="Ruby.html#Ruby_nn29">Predicate Methods</a> <li><a href="Ruby.html#Ruby_nn30">Bang Methods</a> -<li><a href="Ruby.html#Ruby_nn31">Getters and Setters</a> </ul> -<li><a href="Ruby.html#Ruby_nn32">Input and output parameters</a> -<li><a href="Ruby.html#Ruby_nn33">Exception handling </a> -<ul> -<li><a href="Ruby.html#Ruby_nn34">Using the %exception directive </a> -<li><a href="Ruby.html#Ruby_nn35">Raising exceptions </a> -<li><a href="Ruby.html#Ruby_nn36">Exception classes </a> -</ul> <li><a href="Ruby.html#Ruby_nn37">Typemaps</a> <ul> -<li><a href="Ruby.html#Ruby_nn38">What is a typemap?</a> -<li><a href="Ruby.html#Ruby_nn39">Ruby typemaps</a> -<li><a href="Ruby.html#Ruby_nn40">Typemap variables</a> -<li><a href="Ruby.html#Ruby_nn41">Useful Functions</a> -<ul> -<li><a href="Ruby.html#Ruby_nn42">C Datatypes to Ruby Objects</a> -<li><a href="Ruby.html#Ruby_nn43">Ruby Objects to C Datatypes</a> -<li><a href="Ruby.html#Ruby_nn44">Macros for VALUE</a> <li><a href="Ruby.html#Ruby_nn45">Exceptions</a> <li><a href="Ruby.html#Ruby_nn46">Iterators</a> </ul> -<li><a href="Ruby.html#Ruby_nn47">Typemap Examples</a> -<li><a href="Ruby.html#Ruby_nn48">Converting a Ruby array to a char **</a> -<li><a href="Ruby.html#Ruby_nn49">Collecting arguments in a hash</a> -<li><a href="Ruby.html#Ruby_nn50">Pointer handling</a> -<ul> -<li><a href="Ruby.html#Ruby_nn51">Ruby Datatype Wrapping</a> </ul> -<li><a href="Ruby.html#Ruby_nn52">Example: STL Vector to Ruby Array</a> -</ul> -<li><a href="Ruby.html#Ruby_nn53">Advanced Topics</a> -<ul> -<li><a href="Ruby.html#Ruby_nn54">Operator overloading</a> -<li><a href="Ruby.html#Ruby_nn55">Creating Multi-Module Packages</a> -<li><a href="Ruby.html#Ruby_nn56">Specifying Mixin Modules</a> -</ul> -<li><a href="Ruby.html#Ruby_nn57">Memory Management</a> -<ul> -<li><a href="Ruby.html#Ruby_nn58">Mark and Sweep Garbage Collector </a> -<li><a href="Ruby.html#Ruby_nn59">Object Ownership</a> -<li><a href="Ruby.html#Ruby_nn60">Object Tracking</a> -<li><a href="Ruby.html#Ruby_nn61">Mark Functions</a> -<li><a href="Ruby.html#Ruby_nn62">Free Functions</a> -</ul> -</ul> </div> <!-- INDEX --> Modified: trunk/Doc/Manual/Lua.html =================================================================== --- trunk/Doc/Manual/Lua.html 2007-07-02 21:38:22 UTC (rev 9860) +++ trunk/Doc/Manual/Lua.html 2007-07-02 21:38:54 UTC (rev 9861) @@ -954,6 +954,8 @@ </pre></div> <H3><a name="Lua_nn22"></a>22.3.15 Writing your own custom wrappers</H3> + + <p> Sometimes, it may be neccesary to add your own special functions, which bypass the normal SWIG wrappering method, and just use the native lua-c API calls. These 'native' functions allow direct adding of your own code into the module. This is performed with the <tt>%native</tt> directive as follows: </p> Modified: trunk/Doc/Manual/Ruby.html =================================================================== --- trunk/Doc/Manual/Ruby.html 2007-07-02 21:38:22 UTC (rev 9860) +++ trunk/Doc/Manual/Ruby.html 2007-07-02 21:38:54 UTC (rev 9861) @@ -26,1020 +26,44 @@ -<h1><a name="Ruby"></a>30 SWIG and Ruby</h1> - - - - - +<H1><a name="Ruby"></a>30 SWIG and Ruby</H1> <!-- INDEX --> <div class="sectiontoc"> <ul> - - - - - - <li><a href="#Ruby_nn2">Preliminaries</a> - - - - - <ul> - - - - - - <li><a href="#Ruby_nn3">Running SWIG</a> - </li> - - - - - - <li><a href="#Ruby_nn4">Getting the right -header files</a> </li> - - - - - - <li><a href="#Ruby_nn5">Compiling a dynamic -module</a> </li> - - - - - - <li><a href="#Ruby_nn6">Using your module</a> - </li> - - - - - - <li><a href="#Ruby_nn7">Static linking</a> - </li> - - - - - - <li><a href="#Ruby_nn8">Compilation of C++ -extensions</a> </li> - - - - - - - - - - </ul> - - - - - - </li> - - - - - - <li><a href="#Ruby_nn9">Building Ruby Extensions -under Windows 95/NT</a> - - - - - <ul> - - - - - - <li><a href="#Ruby_nn10">Running SWIG from -Developer Studio</a> </li> - - - - - - - - - - </ul> - - - - - - </li> - - - - - - <li><a href="#Ruby_nn11">The Ruby-to-C/C++ Mapping</a> - - - - - <ul> - - - - - - <li><a href="#Ruby_nn12">Modules</a> </li> - - - - - - <li><a href="#Ruby_nn13">Functions</a> </li> - - - - - - <li><a href="#Ruby_nn14">Variable Linking</a> - </li> - - - - - - <li><a href="#Ruby_nn15">Constants</a> </li> - - - - - - <li><a href="#Ruby_nn16">Pointers</a> </li> - - - - - - <li><a href="#Ruby_nn17">Structures</a> </li> - - - - - - <li><a href="#Ruby_nn18">C++ classes</a> - </li> - - - - - - <li><a href="#Ruby_nn19">C++ Inheritance</a> - </li> - - - - - - <li><a href="#Ruby_nn20">C++ Overloaded -Functions</a> </li> - - - - - - <li><a href="#Ruby_nn21">C++ Operators</a> - </li> - - - - - - <li><a href="#Ruby_nn22">C++ namespaces</a> - </li> - - - - - - <li><a href="#Ruby_nn23">C++ templates</a></li> - - - - - - - - - - <ul> - - - - - - <li><a href="#Ruby_nn23_1">C++ Standard -Template Library (STL)</a></li> - - - - - - - - - - <ul> - - - - - - <li><a href="#C_STL_Functors">C++ STL -Functors</a></li> - - - - <li><a href="#30.3.12.1.3_C_Iterators">C++ STL Iterators</a></li> - - - </ul> - - - - - - - - - - </ul> - - - - - - <li><a href="#Ruby_nn24">C++ Smart Pointers</a> - </li> - - - - - - <li><a href="#Ruby_nn25">Cross-Language -Polymorphism</a> - - - - - <ul> - - - - - - <li><a href="#Ruby_nn26">Exception -Unrolling</a> </li> - - - - - - - - - - </ul> - - - - - - </li> - - - - - - - - - - </ul> - - - - - - </li> - - - - - - <li><a href="#Ruby_nn27">Naming</a> - - - - - <ul> - - - - - - <li><a href="#Ruby_nn28">Defining Aliases</a> - </li> - - - - - - <li><a href="#Ruby_nn29">Predicate Methods</a> - </li> - - - - - - <li><a href="#Ruby_nn30">Bang Methods</a> - </li> - - - - - - <li><a href="#Ruby_nn31">Getters and Setters</a> - </li> - - - - - - - - - - </ul> - - - - - - </li> - - - - - - <li><a href="#Ruby_nn32">Input and output -parameters</a></li> - - - - - - <li><a href="#Ruby_nn33">Exception handling </a> - - - - - <ul> - - - - - - <li><a href="#Ruby_nn34">Using the %exception -directive</a> </li> - - - - - - <li><a href="Ruby.html#Ruby_nn34_2">Handling -Ruby Blocks</a></li> - - - - - - <li><a href="#Ruby_nn35">Raising exceptions </a> - </li> - - - - - - <li><a href="#Ruby_nn36">Exception classes </a> - </li> - - - - - - - - - - </ul> - - - - - - </li> - - - - - - <li><a href="#Ruby_nn37">Typemaps</a> - - - - - <ul> - - - - - - <li><a href="#Ruby_nn38">What is a typemap?</a></li> - - - - - - <li><a href="#30.7.2_Typemap_scope">Typemap -scope</a></li> - - - - - - <li><a href="#30.7.3_Copying_a_typemap">Copying -a typemap</a></li> - - - - - - <li><a href="#30.7.4_Deleting_a_typemap">Deleting -a typemap</a></li> - - - - - - <li><a href="#30.7.5_Placement_of_typemaps">Placement -of typemaps</a></li> - - - - - - <li><a href="#Ruby_nn39">Ruby typemaps</a></li> - - - - - - - - - - <ul> - - - - - - <li><a href="#30.7.6.1_in_typemap">"in" -typemap</a></li> - - - - - - <li><a href="#30.7.6.6_check_typemap">"check" -typemap</a></li> - - - - - - <li><a href="#30.7.6.3_out_typemap">"out" -typemap</a></li> - - - - - - <li><a href="#30.7.6.7_argout_typemap_">"argout" -typemap</a></li> - - - - - - <li><a href="#30.7.6.4_arginit_typemap">"arginit" -typemap</a></li> - - - - - - <li><a href="#30.7.6.11_varin_typemap">"varin" -typemap</a></li> - - - - - - <li><a href="#30.7.6.12_varout_typemap_">"varout" -typemap</a></li> - - - - - - <li><a href="#30.7.6.13_throws_typemap">"throws" -typemap</a></li> - - - - - - <li><a href="#30.7.6.10_memberin_typemap">"memberin" -typemap</a></li> - - - - - - <li><a href="#30.7.6.5_default_typemap">"default" -typemap</a></li> - - - - - - <li><a href="#30.7.6.9_newfree_typemap">"newfree" -typemap</a></li> - - - - - - <li><a href="#30.7.6.8_freearg_typemap_">"freearg" -typemap</a></li> - - - - - - <li><a href="#30.7.6.14_directorin_typemap">"directorin" -typemap</a></li> - - - - - - <li><a href="#30.7.6.15_directorout_typemap">"directorout" -typemap</a></li> - - - - - - <li><a href="#30.7.6.16_directorargout_typemap">"directorargout" -typemap</a></li> - - - - - - <li><a href="#30.7.6.17_ret_typemap">"ret" -typemap</a></li> - - - - - - <li><a href="#30.7.6.18_globalin_typemap">"globalin" -typemap</a></li> - - - - - - - - - - </ul> - - - - - - <li><a href="#Ruby_nn40">Typemap variables</a> - </li> - - - - - - <li><a href="#Ruby_nn41">Useful Functions</a> - - - - - <ul> - - - - - - <li><a href="#Ruby_nn42">C Datatypes to -Ruby Objects</a> </li> - - - - - - <li><a href="#Ruby_nn43">Ruby Objects to C -Datatypes</a> </li> - - - - - - <li><a href="#Ruby_nn44">Macros for VALUE</a> - </li> - - - - - - <li><a href="#Ruby_nn45">Exceptions</a> - </li> - - - - - - <li><a href="#Ruby_nn46">Iterators</a> - </li> - - - - - - - - - - </ul> - - - - - - </li> - - - - - - <li><a href="#Ruby_nn47">Typemap Examples</a> - </li> - - - - - - <li><a href="#Ruby_nn48">Converting a Ruby -array to a char **</a> </li> - - - - - - <li><a href="#Ruby_nn49">Collecting arguments -in a hash</a> </li> - - - - - - <li><a href="#Ruby_nn50">Pointer handling</a> - - - - - <ul> - - - - - - <li><a href="#Ruby_nn51">Ruby Datatype -Wrapping</a> </li> - - - - - - - - - - </ul> - - - - - - </li> - - - - - - <li><a href="#Ruby_nn52">Example: STL Vector -to Ruby Array</a></li> - - - - - - - - - - </ul> - - - - - - </li> - - - - - - <li><a href="#Ruby_nn65">Docstring -Features</a> - - - - - <ul> - - - - - - <li><a href="#Ruby_nn66">Module -docstring</a> </li> - - - - - - <li><a href="#Ruby_nn67">%feature("autodoc")</a> - - - - - <ul> - - - - - - <li><a href="#Ruby_nn68">%feature("autodoc", -"0")</a> </li> - - - - - - <li><a href="#Ruby_nn69">%feature("autodoc", -"1")</a> </li> - - - - - - <li><a href="#Ruby_nn70">%feature("autodoc", -"2")</a> </li> - - - - - - <li><a href="#Ruby_nn71">%feature("autodoc", -"3")</a> </li> - - - - - - <li><a href="#Ruby_nn72">%feature("autodoc", -"docstring")</a> </li> - - - - - - - - - - </ul> - - - - - - </li> - - - - - - <li><a href="#Ruby_nn73">%feature("docstring")</a></li> - - - - - - - - - - </ul> - - - - - - </li> - - - - - - <li><a href="#Ruby_nn53">Advanced Topics</a> - - - - - <ul> - - - - - - <li><a href="#Ruby_nn54">Operator overloading</a> - </li> - - - - - - <li><a href="#Ruby_nn55">Creating Multi-Module -Packages</a> </li> - - - - - - <li><a href="#Ruby_nn56">Specifying Mixin -Modules</a> </li> - - - - - - - - - - </ul> - - - - - - </li> - - - - - - <li><a href="#Ruby_nn57">Memory Management</a> - - - - - <ul> - - - - - - <li><a href="#Ruby_nn58">Mark and Sweep -Garbage Collector </a> </li> - - - - - - <li><a href="#Ruby_nn59">Object Ownership</a> - </li> - - - - - - <li><a href="#Ruby_nn60">Object Tracking</a> - </li> - - - - - - <li><a href="#Ruby_nn61">Mark Functions</a> - </li> - - - - - - <li><a href="#Ruby_nn62">Free Functions</a></li> - - - - - - <li><a href="#Ruby_nn63">Embedded Ruby and the -C++ Stack</a></li> - - - - - - - - - - </ul> - - - - - - </li> - - - - - +<li><a href="#Ruby_nn2">Preliminaries</a> +<ul> +<li><a href="#Ruby_nn3">Running SWIG</a> +<li><a href="#Ruby_nn12">Modules</a> +<li><a href="#Ruby_nn13">Functions</a> +<li><a href="#Ruby_nn15">Constants</a> +<li><a href="#Ruby_nn16">Pointers</a> +<li><a href="#Ruby_nn17">Structures</a> +<li><a href="#Ruby_nn18">C++ classes</a> </ul> - - - - - +<li><a href="#Ruby_nn27">Naming</a> +<ul> +<li><a href="#Ruby_nn30">Bang Methods</a> +</ul> +<li><a href="#Ruby_nn37">Typemaps</a> +<ul> +<li><a href="#Ruby_nn45">Exceptions</a> +<li><a href="#Ruby_nn46">Iterators</a> +</ul> +</ul> </div> +<!-- INDEX --> - - -<!-- INDEX --> <p>This chapter describes SWIG's support of Ruby.</p> -<h2><a name="Ruby_nn2"></a>30.1 Preliminaries</h2> +<H2><a name="Ruby_nn2"></a>30.1 Preliminaries</H2> - - - <p> SWIG 1.3 is known to work with Ruby versions 1.6 and later. Given the choice, you should use the latest stable version of Ruby. You should also determine if your system supports shared libraries and @@ -1060,12 +84,9 @@ -<h3><a name="Ruby_nn3"></a>30.1.1 Running SWIG</h3> +<H3><a name="Ruby_nn3"></a>30.1.1 Running SWIG</H3> - - - <p> To build a Ruby module, run SWIG using the <tt>-ruby</tt> option:</p> @@ -1691,12 +712,9 @@ -<h3><a name="Ruby_nn12"></a>30.3.1 Modules</h3> +<H3><a name="Ruby_nn12"></a>30.1.2 Modules</H3> - - - <p> The SWIG <tt>%module</tt> directive specifies the name of the Ruby module. If you specify: </p> @@ -1863,12 +881,9 @@ -<h3><a name="Ruby_nn13"></a>30.3.2 Functions</h3> +<H3><a name="Ruby_nn13"></a>30.1.3 Functions</H3> - - - <p> Global functions are wrapped as Ruby module methods. For example, given the SWIG interface file <tt>example.i</tt>: </p> @@ -2033,12 +1048,9 @@ -<h3><a name="Ruby_nn15"></a>30.3.4 Constants</h3> +<H3><a name="Ruby_nn15"></a>30.1.4 Constants</H3> - - - <p> C/C++ constants are wrapped as module constants initialized to the appropriate value. To create a constant, use <tt>#define</tt> or the <tt>%constant</tt> directive. For example: </p> @@ -2080,12 +1092,9 @@ -<h3><a name="Ruby_nn16"></a>30.3.5 Pointers</h3> +<H3><a name="Ruby_nn16"></a>30.1.5 Pointers</H3> - - - <p> "Opaque" pointers to arbitrary C/C++ types (i.e. types that aren't explicitly declared in your SWIG interface file) are wrapped as data objects. So, for example, consider a SWIG interface file @@ -2135,12 +1144,9 @@ -<h3><a name="Ruby_nn17"></a>30.3.6 Structures</h3> +<H3><a name="Ruby_nn17"></a>30.1.6 Structures</H3> - - - <p> C/C++ structs are wrapped as Ruby classes, with accessor methods (i.e. "getters" and "setters") for all of the struct members. For example, this struct declaration: </p> @@ -2313,12 +1319,9 @@ -<h3><a name="Ruby_nn18"></a>30.3.7 C++ classes</h3> +<H3><a name="Ruby_nn18"></a>30.1.7 C++ classes</H3> - - - <p> Like structs, C++ classes are wrapped by creating a new Ruby class of the same name with accessor methods for the public class member data. Additionally, public member functions for the class are @@ -3915,12 +2918,9 @@ -<h2><a name="Ruby_nn27"></a>30.4 Naming</h2> +<H2><a name="Ruby_nn27"></a>30.2 Naming</H2> - - - <p>Ruby has several common naming conventions. Constants are generally in upper case, module and class names are in camel case and methods are @@ -4203,12 +3203,9 @@ -<h3><a name="Ruby_nn30"></a>30.4.3 Bang Methods</h3> +<H3><a name="Ruby_nn30"></a>30.2.1 Bang Methods</H3> - - - <p> Ruby methods that modify an object in-place and end in an exclamation mark are known as bang methods. An example of a bang method is <em>Array#sort!</em> which changes the ordering of @@ -5726,12 +4723,9 @@ -<h2><a name="Ruby_nn37"></a>30.7 Typemaps</h2> +<H2><a name="Ruby_nn37"></a>30.3 Typemaps</H2> - - - <p> This section describes how you can modify SWIG's default wrapping behavior for various C/C++ datatypes using the <tt>%typemap</tt> directive. This is an advanced topic that assumes familiarity with the @@ -8489,12 +7483,9 @@ -<h4><a name="Ruby_nn45"></a>30.7.8.4 Exceptions</h4> +<H4><a name="Ruby_nn45"></a>30.3.0.1 Exceptions</H4> - - - <p> <tt>void rb_raise(VALUE exception, const char *fmt, ...)</tt> </p> @@ -8659,12 +7650,9 @@ -<h4><a name="Ruby_nn46"></a>30.7.8.5 Iterators</h4> +<H4><a name="Ruby_nn46"></a>30.3.0.2 Iterators</H4> - - - <p> <tt>void rb_iter_break()</tt> </p> Modified: trunk/Doc/Manual/SWIGPlus.html =================================================================== --- trunk/Doc/Manual/SWIGPlus.html 2007-07-02 21:38:22 UTC (rev 9860) +++ trunk/Doc/Manual/SWIGPlus.html 2007-07-02 21:38:54 UTC (rev 9861) @@ -49,6 +49,7 @@ <li><a href="#SWIGPlus_nn29">Class extension</a> <li><a href="#SWIGPlus_nn30">Templates</a> <li><a href="#SWIGPlus_nn31">Namespaces</a> +<li><a href="#SWIGPlus_renaming_templated_types_namespaces">Renaming templated types in namespaces</a> <li><a href="#SWIGPlus_exception_specifications">Exception specifications</a> <li><a href="#SWIGPlus_catches">Exception handling with %catches</a> <li><a href="#SWIGPlus_nn33">Pointers to Members</a> @@ -4049,7 +4050,9 @@ more advanced namespace support. </p> -<H2><a name="SWIGPlus_renaming_templated_types_namespaces"></a>Renaming templated types in namespaces</H2> +<H2><a name="SWIGPlus_renaming_templated_types_namespaces"></a>6.20 Renaming templated types in namespaces</H2> + + <p> As has been mentioned, when %rename includes parameters, the parameter types must match exactly (no typedef or namespace resolution is performed). SWIG treats templated types slightly differently and has an additional matching rule so unlike non-templated types, an exact match is not always required. @@ -4124,7 +4127,7 @@ </div> -<H2><a name="SWIGPlus_exception_specifications"></a>6.20 Exception specifications</H2> +<H2><a name="SWIGPlus_exception_specifications"></a>6.21 Exception specifications</H2> <p> @@ -4175,7 +4178,7 @@ The next section details a way of simulating an exception specification or replacing an existing one. </p> -<H2><a name="SWIGPlus_catches"></a>6.21 Exception handling with %catches</H2> +<H2><a name="SWIGPlus_catches"></a>6.22 Exception handling with %catches</H2> <p> @@ -4225,7 +4228,7 @@ </p> -<H2><a name="SWIGPlus_nn33"></a>6.22 Pointers to Members</H2> +<H2><a name="SWIGPlus_nn33"></a>6.23 Pointers to Members</H2> <p> @@ -4275,7 +4278,7 @@ for member pointers. </p> -<H2><a name="SWIGPlus_nn34"></a>6.23 Smart pointers and operator->()</H2> +<H2><a name="SWIGPlus_nn34"></a>6.24 Smart pointers and operator->()</H2> <p> @@ -4485,7 +4488,7 @@ </p> -<H2><a name="SWIGPlus_nn35"></a>6.24 Using declarations and inheritance</H2> +<H2><a name="SWIGPlus_nn35"></a>6.25 Using declarations and inheritance</H2> <p> @@ -4648,7 +4651,7 @@ </div> </ul> -<H2><a name="SWIGPlus_nested_classes"></a>6.25 Nested classes</H2> +<H2><a name="SWIGPlus_nested_classes"></a>6.26 Nested classes</H2> <p> @@ -4739,7 +4742,7 @@ The downside to this approach is having to maintain two definitions of <tt>Inner</tt>, the real one and the one in the interface file that SWIG parses. </p> -<H2><a name="SWIGPlus_nn37"></a>6.26 A brief rant about const-correctness</H2> +<H2><a name="SWIGPlus_nn37"></a>6.27 A brief rant about const-correctness</H2> <p> @@ -4797,7 +4800,7 @@ of your project. </p> -<H2><a name="SWIGPlus_nn42"></a>6.27 Where to go for more information</H2> +<H2><a name="SWIGPlus_nn42"></a>6.28 Where to go for more information</H2> <p> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2007-09-24 21:25:17
|
Revision: 9953 http://swig.svn.sourceforge.net/swig/?rev=9953&view=rev Author: wsfulton Date: 2007-09-24 14:25:13 -0700 (Mon, 24 Sep 2007) Log Message: ----------- update section numbers Modified Paths: -------------- trunk/Doc/Manual/Contents.html trunk/Doc/Manual/Warnings.html Modified: trunk/Doc/Manual/Contents.html =================================================================== --- trunk/Doc/Manual/Contents.html 2007-09-23 21:40:29 UTC (rev 9952) +++ trunk/Doc/Manual/Contents.html 2007-09-24 21:25:13 UTC (rev 9953) @@ -458,8 +458,9 @@ <ul> <li><a href="Warnings.html#Warnings_nn2">Introduction</a> <li><a href="Warnings.html#Warnings_suppression">Warning message suppression</a> -<li><a href="Warnings.html#Warnings_nn4">Enabling additional warnings</a> +<li><a href="Warnings.html#Warnings_nn4">Enabling extra warnings</a> <li><a href="Warnings.html#Warnings_nn5">Issuing a warning message</a> +<li><a href="Warnings.html#Warnings_symbolic_symbols">Symbolic symbols</a> <li><a href="Warnings.html#Warnings_nn6">Commentary</a> <li><a href="Warnings.html#Warnings_nn7">Warnings as errors</a> <li><a href="Warnings.html#Warnings_nn8">Message output format</a> @@ -601,6 +602,7 @@ <li><a href="CSharp.html#csharp_memory_management_member_variables">Memory management when returning references to member variables</a> <li><a href="CSharp.html#csharp_memory_management_objects">Memory management for objects passed to the C++ layer</a> <li><a href="CSharp.html#csharp_date_marshalling">Date marshalling using the csin typemap and associated attributes</a> +<li><a href="CSharp.html#csharp_date_properties">A date example demonstrating marshalling of C# properties</a> <li><a href="CSharp.html#csharp_partial_classes">Turning wrapped classes into partial classes</a> <li><a href="CSharp.html#csharp_extending_proxy_class">Extending proxy classes with additional C# code</a> </ul> Modified: trunk/Doc/Manual/Warnings.html =================================================================== --- trunk/Doc/Manual/Warnings.html 2007-09-23 21:40:29 UTC (rev 9952) +++ trunk/Doc/Manual/Warnings.html 2007-09-24 21:25:13 UTC (rev 9953) @@ -12,8 +12,9 @@ <ul> <li><a href="#Warnings_nn2">Introduction</a> <li><a href="#Warnings_suppression">Warning message suppression</a> -<li><a href="#Warnings_nn4">Enabling additional warnings</a> +<li><a href="#Warnings_nn4">Enabling extra warnings</a> <li><a href="#Warnings_nn5">Issuing a warning message</a> +<li><a href="#Warnings_symbolic_symbols">Symbolic symbols</a> <li><a href="#Warnings_nn6">Commentary</a> <li><a href="#Warnings_nn7">Warnings as errors</a> <li><a href="#Warnings_nn8">Message output format</a> @@ -148,6 +149,7 @@ <H2><a name="Warnings_nn4"></a>14.3 Enabling extra warnings</H2> + <p> Some warning messages are disabled by default and are generated only to provide additional diagnostics. These warnings can be turned on using the @@ -265,7 +267,7 @@ In this case, the warning message will be printed whenever the typemap is actually used. </p> -<H2><a name="Warnings_symbolic_symbols"></a>Symbolic symbols</H2> +<H2><a name="Warnings_symbolic_symbols"></a>14.5 Symbolic symbols</H2> <p> @@ -300,8 +302,9 @@ </pre> </div> -<H2><a name="Warnings_nn6"></a>14.5 Commentary</H2> +<H2><a name="Warnings_nn6"></a>14.6 Commentary</H2> + <p> The ability to suppress warning messages is really only provided for advanced users and is not recommended in normal use. You are advised @@ -316,7 +319,7 @@ messages. </p> -<H2><a name="Warnings_nn7"></a>14.6 Warnings as errors</H2> +<H2><a name="Warnings_nn7"></a>14.7 Warnings as errors</H2> <p> @@ -325,7 +328,7 @@ warning is encountered. </p> -<H2><a name="Warnings_nn8"></a>14.7 Message output format</H2> +<H2><a name="Warnings_nn8"></a>14.8 Message output format</H2> <p> @@ -344,11 +347,12 @@ example.i(4): Syntax error in input. </pre></div> -<H2><a name="Warnings_nn9"></a>14.8 Warning number reference</H2> +<H2><a name="Warnings_nn9"></a>14.9 Warning number reference</H2> -<H3><a name="Warnings_nn10"></a>14.8.1 Deprecated features (100-199)</H3> +<H3><a name="Warnings_nn10"></a>14.9.1 Deprecated features (100-199)</H3> + <ul> <li>101. Deprecated <tt>%extern</tt> directive. <li>102. Deprecated <tt>%val</tt> directive. @@ -373,7 +377,7 @@ <li>121. Deprecated <tt>%name</tt> directive. </ul> -<H3><a name="Warnings_nn11"></a>14.8.2 Preprocessor (200-299)</H3> +<H3><a name="Warnings_nn11"></a>14.9.2 Preprocessor (200-299)</H3> <ul> @@ -381,7 +385,7 @@ <li>202. Could not evaluate 'expr'. </ul> -<H3><a name="Warnings_nn12"></a>14.8.3 C/C++ Parser (300-399)</H3> +<H3><a name="Warnings_nn12"></a>14.9.3 C/C++ Parser (300-399)</H3> <ul> @@ -455,7 +459,7 @@ <li>395. operator delete[] ignored. </ul> -<H3><a name="Warnings_nn13"></a>14.8.4 Types and typemaps (400-499) </H3> +<H3><a name="Warnings_nn13"></a>14.9.4 Types and typemaps (400-499) </H3> <ul> @@ -480,7 +484,7 @@ <li>471. Unable to use return type <em>type</em> in director method </ul> -<H3><a name="Warnings_nn14"></a>14.8.5 Code generation (500-599)</H3> +<H3><a name="Warnings_nn14"></a>14.9.5 Code generation (500-599)</H3> <ul> @@ -505,7 +509,7 @@ <li>519. %template() contains no name. Template method ignored: <em>declaration</em> </ul> -<H3><a name="Warnings_nn15"></a>14.8.6 Language module specific (800-899) </H3> +<H3><a name="Warnings_nn15"></a>14.9.6 Language module specific (800-899) </H3> <ul> @@ -554,14 +558,14 @@ <li>871. Unrecognized pragma <em>pragma</em>. (Php). </ul> -<H3><a name="Warnings_nn16"></a>14.8.7 User defined (900-999)</H3> +<H3><a name="Warnings_nn16"></a>14.9.7 User defined (900-999)</H3> <p> These numbers can be used by your own application. </p> -<H2><a name="Warnings_nn17"></a>14.9 History</H2> +<H2><a name="Warnings_nn17"></a>14.10 History</H2> <p> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2007-09-25 21:24:23
|
Revision: 9955 http://swig.svn.sourceforge.net/swig/?rev=9955&view=rev Author: wsfulton Date: 2007-09-25 14:24:22 -0700 (Tue, 25 Sep 2007) Log Message: ----------- Add more details on and special variables Modified Paths: -------------- trunk/Doc/Manual/CSharp.html trunk/Doc/Manual/Java.html trunk/Doc/Manual/Typemaps.html Modified: trunk/Doc/Manual/CSharp.html =================================================================== --- trunk/Doc/Manual/CSharp.html 2007-09-24 21:42:05 UTC (rev 9954) +++ trunk/Doc/Manual/CSharp.html 2007-09-25 21:24:22 UTC (rev 9955) @@ -192,6 +192,8 @@ <p>Special variable equivalent names:</p> <div class="code"><pre> $javaclassname -> $csclassname +$&javaclassname -> $&csclassname +$*javaclassname -> $*csclassname $javainput -> $csinput $jnicall -> $imcall </pre></div> Modified: trunk/Doc/Manual/Java.html =================================================================== --- trunk/Doc/Manual/Java.html 2007-09-24 21:42:05 UTC (rev 9954) +++ trunk/Doc/Manual/Java.html 2007-09-25 21:24:22 UTC (rev 9955) @@ -4994,11 +4994,14 @@ <p> <b><tt>$javaclassname</tt></b><br> -<tt>$javaclassname</tt> is similar to <tt>$1_type</tt>. It expands to the class name for use in Java. -When wrapping a union, struct or class, it expands to the Java proxy class name. -Otherwise it expands to the type wrapper class name. -For example, <tt>$javaclassname</tt> is replaced by <tt>Foo</tt> when the wrapping a <tt>struct Foo</tt> or <tt>struct Foo *</tt> and -<tt>SWIGTYPE_p_unsigned_short</tt> is used for <tt>unsigned short *</tt>. +This special variable works like the other <a href="Typemaps.html#Typemaps_special_variables">special variables</a> +and <tt>$javaclassname</tt> is similar to <tt>$1_type</tt>. It expands to the class name for use in Java given a pointer. +SWIG wraps unions, structs and classes using pointers and in this case it expands to the Java proxy class name. +For example, <tt>$javaclassname</tt> is replaced by the proxy classname <tt>Foo</tt> when wrapping a <tt>Foo *</tt> and +<tt>$&javaclassname</tt> expands to the proxy classname when wrapping the C/C++ type <tt>Foo</tt> and <tt>$*javaclassname</tt> +expands to the proxy classname when wrapping <tt>Foo *&</tt>. +If the type does not have an associated proxy class, it expands to the type wrapper class name, for example, +<tt>SWIGTYPE_p_unsigned_short</tt> is generated when wrapping <tt>unsigned short *</tt>. </p> <p> Modified: trunk/Doc/Manual/Typemaps.html =================================================================== --- trunk/Doc/Manual/Typemaps.html 2007-09-24 21:42:05 UTC (rev 9954) +++ trunk/Doc/Manual/Typemaps.html 2007-09-25 21:24:22 UTC (rev 9955) @@ -1618,7 +1618,7 @@ </p> -<H3><a name="Typemaps_nn24"></a>10.4.3 Special variables</H3> +<H3><a name="Typemaps_special_variables"></a>10.4.3 Special variables</H3> <p> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2007-10-19 21:47:10
|
Revision: 10015 http://swig.svn.sourceforge.net/swig/?rev=10015&view=rev Author: wsfulton Date: 2007-10-19 14:47:08 -0700 (Fri, 19 Oct 2007) Log Message: ----------- html fixes and toc update Modified Paths: -------------- trunk/Doc/Manual/Contents.html trunk/Doc/Manual/Ruby.html trunk/Doc/Manual/Typemaps.html Modified: trunk/Doc/Manual/Contents.html =================================================================== --- trunk/Doc/Manual/Contents.html 2007-10-19 21:37:56 UTC (rev 10014) +++ trunk/Doc/Manual/Contents.html 2007-10-19 21:47:08 UTC (rev 10015) @@ -354,7 +354,7 @@ <ul> <li><a href="Typemaps.html#Typemaps_nn22">Scope</a> <li><a href="Typemaps.html#Typemaps_nn23">Declaring new local variables</a> -<li><a href="Typemaps.html#Typemaps_nn24">Special variables</a> +<li><a href="Typemaps.html#Typemaps_special_variables">Special variables</a> </ul> <li><a href="Typemaps.html#Typemaps_nn25">Common typemap methods</a> <ul> @@ -1118,8 +1118,8 @@ <li><a href="Python.html#Python_nn3">Preliminaries</a> <ul> <li><a href="Python.html#Python_nn4">Running SWIG</a> -<li><a href="Python.html#Python_nn6">Compiling a dynamic module</a> -<li><a href="Python.html#Python_nn7">Using distutils</a> +<li><a href="Python.html#Python_nn6">Using distutils</a> +<li><a href="Python.html#Python_nn7">Hand compiling a dynamic module</a> <li><a href="Python.html#Python_nn8">Static linking</a> <li><a href="Python.html#Python_nn9">Using your module</a> <li><a href="Python.html#Python_nn10">Compilation of C++ extensions</a> Modified: trunk/Doc/Manual/Ruby.html =================================================================== --- trunk/Doc/Manual/Ruby.html 2007-10-19 21:37:56 UTC (rev 10014) +++ trunk/Doc/Manual/Ruby.html 2007-10-19 21:47:08 UTC (rev 10015) @@ -1872,7 +1872,7 @@ <p>Please refer to the <a href="SWIGPlus.html#SWIGPlus">"SWIG -and C++"</a> chapter for more information about overloading.</a> </p> +and C++"</a> chapter for more information about overloading. </p> Modified: trunk/Doc/Manual/Typemaps.html =================================================================== --- trunk/Doc/Manual/Typemaps.html 2007-10-19 21:37:56 UTC (rev 10014) +++ trunk/Doc/Manual/Typemaps.html 2007-10-19 21:47:08 UTC (rev 10015) @@ -40,7 +40,7 @@ <ul> <li><a href="#Typemaps_nn22">Scope</a> <li><a href="#Typemaps_nn23">Declaring new local variables</a> -<li><a href="#Typemaps_nn24">Special variables</a> +<li><a href="#Typemaps_special_variables">Special variables</a> </ul> <li><a href="#Typemaps_nn25">Common typemap methods</a> <ul> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2007-11-22 23:55:38
|
Revision: 10163 http://swig.svn.sourceforge.net/swig/?rev=10163&view=rev Author: wsfulton Date: 2007-11-22 15:55:34 -0800 (Thu, 22 Nov 2007) Log Message: ----------- updates for R Modified Paths: -------------- trunk/Doc/Manual/Contents.html trunk/Doc/Manual/Modules.html trunk/Doc/Manual/Php.html trunk/Doc/Manual/R.html trunk/Doc/Manual/Sections.html trunk/Doc/Manual/Windows.html Modified: trunk/Doc/Manual/Contents.html =================================================================== --- trunk/Doc/Manual/Contents.html 2007-11-21 21:33:42 UTC (rev 10162) +++ trunk/Doc/Manual/Contents.html 2007-11-22 23:55:34 UTC (rev 10163) @@ -57,32 +57,33 @@ <!-- INDEX --> <div class="sectiontoc"> <ul> -<li><a href="Windows.html#Windows_nn2">Installation on Windows</a> +<li><a href="Windows.html#Windows_installation">Installation on Windows</a> <ul> -<li><a href="Windows.html#Windows_nn3">Windows Executable</a> +<li><a href="Windows.html#Windows_executable">Windows Executable</a> </ul> -<li><a href="Windows.html#examples">SWIG Windows Examples</a> +<li><a href="Windows.html#Windows_examples">SWIG Windows Examples</a> <ul> -<li><a href="Windows.html#Windows_nn5">Instructions for using the Examples with Visual Studio</a> +<li><a href="Windows.html#Windows_visual_studio">Instructions for using the Examples with Visual Studio</a> <ul> -<li><a href="Windows.html#Windows_nn6">Python</a> -<li><a href="Windows.html#Windows_nn7">TCL</a> -<li><a href="Windows.html#Windows_nn8">Perl</a> -<li><a href="Windows.html#Windows_nn9">Java</a> -<li><a href="Windows.html#Windows_nn10">Ruby</a> -<li><a href="Windows.html#Windows_nn11">C#</a> +<li><a href="Windows.html#Windows_csharp">C#</a> +<li><a href="Windows.html#Windows_java">Java</a> +<li><a href="Windows.html#Windows_perl">Perl</a> +<li><a href="Windows.html#Windows_python">Python</a> +<li><a href="Windows.html#Windows_tcl">TCL</a> +<li><a href="Windows.html#Windows_r">R</a> +<li><a href="Windows.html#Windows_ruby">Ruby</a> </ul> -<li><a href="Windows.html#Windows_nn12">Instructions for using the Examples with other compilers</a> +<li><a href="Windows.html#Windows_other_compilers">Instructions for using the Examples with other compilers</a> </ul> -<li><a href="Windows.html#Windows_nn13">SWIG on Cygwin and MinGW</a> +<li><a href="Windows.html#Windows_cygwin_mingw">SWIG on Cygwin and MinGW</a> <ul> -<li><a href="Windows.html#swig_exe">Building swig.exe on Windows</a> +<li><a href="Windows.html#Windows_swig_exe">Building swig.exe on Windows</a> <ul> <li><a href="Windows.html#Windows_mingw_msys">Building swig.exe using MinGW and MSYS</a> -<li><a href="Windows.html#Windows_nn16">Building swig.exe using Cygwin</a> -<li><a href="Windows.html#Windows_nn17">Building swig.exe alternatives</a> +<li><a href="Windows.html#Windows_cygwin">Building swig.exe using Cygwin</a> +<li><a href="Windows.html#Windows_building_alternatives">Building swig.exe alternatives</a> </ul> -<li><a href="Windows.html#examples_cygwin">Running the examples on Windows using Cygwin</a> +<li><a href="Windows.html#Windows_examples_cygwin">Running the examples on Windows using Cygwin</a> </ul> <li><a href="Windows.html#Windows_interface_file">Microsoft extensions and other Windows quirks</a> </ul> @@ -484,6 +485,7 @@ <!-- INDEX --> <div class="sectiontoc"> <ul> +<li><a href="Modules.html#Modules_nn1">Basics</a> <li><a href="Modules.html#Modules_nn2">The SWIG runtime code</a> <li><a href="Modules.html#external_run_time">External access to the runtime</a> <li><a href="Modules.html#Modules_nn4">A word of caution about static libraries</a> Modified: trunk/Doc/Manual/Modules.html =================================================================== --- trunk/Doc/Manual/Modules.html 2007-11-21 21:33:42 UTC (rev 10162) +++ trunk/Doc/Manual/Modules.html 2007-11-22 23:55:34 UTC (rev 10163) @@ -37,8 +37,9 @@ where you want to create a collection of modules. </p> -<h2><a name="Modules_nn1"></a>15.1 Basics</h2> +<H2><a name="Modules_nn1"></a>15.1 Basics</H2> + <p> The basic usage case with multiple modules is when modules do not have cross-references (ie. when wrapping multiple independent C APIs). In that case, @@ -87,6 +88,7 @@ <H2><a name="Modules_nn2"></a>15.2 The SWIG runtime code</H2> + <p> Many of SWIG's target languages generate a set of functions commonly known as the "SWIG runtime." These functions are primarily related to the runtime type @@ -150,7 +152,7 @@ is empty. Only modules compiled with the same pair will share type information. </p> -<H2><a name="external_run_time"></a>15.2 External access to the runtime</H2> +<H2><a name="external_run_time"></a>15.3 External access to the runtime</H2> <p>As described in <a href="Typemaps.html#runtime_type_checker">The run-time type checker</a>, @@ -187,7 +189,7 @@ access. </p> -<H2><a name="Modules_nn4"></a>15.3 A word of caution about static libraries</H2> +<H2><a name="Modules_nn4"></a>15.4 A word of caution about static libraries</H2> <p> @@ -198,7 +200,7 @@ behavior. When working with dynamically loadable modules, you should try to work exclusively with shared libraries. </p> -<H2><a name="Modules_nn5"></a>15.4 References</H2> +<H2><a name="Modules_nn5"></a>15.5 References</H2> <p> @@ -206,7 +208,7 @@ an outside reference. John Levine's "Linkers and Loaders" is highly recommended. </p> -<H2><a name="Modules_nn6"></a>15.5 Reducing the wrapper file size</H2> +<H2><a name="Modules_nn6"></a>15.6 Reducing the wrapper file size</H2> <p> Modified: trunk/Doc/Manual/Php.html =================================================================== --- trunk/Doc/Manual/Php.html 2007-11-21 21:33:42 UTC (rev 10162) +++ trunk/Doc/Manual/Php.html 2007-11-22 23:55:34 UTC (rev 10163) @@ -116,6 +116,7 @@ <H3><a name="Php_nn1_1"></a>27.1.1 Building a loadable extension</H3> + <p> To build your module as a dynamically loadable extension, use compilation commands like these (if you aren't using GCC, the commands will be different, @@ -139,6 +140,7 @@ <H3><a name="Php_nn1_2"></a>27.1.2 Building extensions into PHP</H3> + <p> Note that we don't recommend this approach - it's cleaner and simpler to use dynamically loadable modules, which are supported by all modern OSes. Modified: trunk/Doc/Manual/R.html =================================================================== --- trunk/Doc/Manual/R.html 2007-11-21 21:33:42 UTC (rev 10162) +++ trunk/Doc/Manual/R.html 2007-11-22 23:55:34 UTC (rev 10163) @@ -30,7 +30,7 @@ The R bindings are under active development. They have been used to compile and run an R interface to QuantLib running on Mandriva Linux -with gcc, and testing on other platforms is appreciated. +with gcc. The R bindings also work on Microsoft Windows using Visual C++. </p> <H2><a name="R_nn2"></a>32.1 Bugs</H2> @@ -43,7 +43,6 @@ <ul> <li>Garbage collection of created objects <li>C Array wrappings -<li>tested on UNIX only, how well or badly it works on windows is not known </ul> <H2><a name="R_nn3"></a>32.2 Using R and SWIG</H2> @@ -67,7 +66,7 @@ <div class="shell"> <pre> -swig -c++ -r example.i +swig -c++ -r -o example_wrap.cpp example.i PKG_LIBS="example.cxx" R CMD SHLIB example_wrap.cpp </pre> </div> @@ -75,20 +74,20 @@ <p> Note that R is sensitive to the name of the file and to the file extension in C and C++ mode. The name of the wrapper file must be the -name of the library. Also in C++ mode, the file extension must be cpp -rather than cxx for the R compile command to recognize it. +name of the library. Also in C++ mode, the file extension must be .cpp +rather than .cxx for the R compile command to recognize it. </p> <p> The commands produces two files. A dynamic shared object file called -example_wrap.so and an R wrapper file called example_wrap.R. To load these +example.so, or example.dll, and an R wrapper file called example.R. To load these files, start up R and type in the following commands </p> <div class="shell"> <pre> -dyn.load('example_wrap.so') -source('example_wrap.R') +dyn.load(paste("example", .Platform$dynlib.ext, sep="")) +source("example.R") cacheMetaData(1) </pre> </div> @@ -108,12 +107,12 @@ file makeRData.R which contains the following <pre> -source('BigFile_wrap.R') -save(list=ls(all=TRUE),file="BigFile_wrap.RData", compress=TRUE) +source('BigFile.R') +save(list=ls(all=TRUE),file="BigFile.RData", compress=TRUE) q(save="no") </pre> -This will generate a compiled R file called BigFile_wrap.RData that +This will generate a compiled R file called BigFile.RData that will save a large amount of loading time. Modified: trunk/Doc/Manual/Sections.html =================================================================== --- trunk/Doc/Manual/Sections.html 2007-11-21 21:33:42 UTC (rev 10162) +++ trunk/Doc/Manual/Sections.html 2007-11-22 23:55:34 UTC (rev 10163) @@ -6,7 +6,7 @@ <body bgcolor="#ffffff"> <H1><a name="Sections"></a>SWIG-1.3 Development Documentation</H1> -Last update : SWIG-1.3.33 (in progress) +Last update : SWIG-1.3.33 (November 23, 2007) <H2>Sections</H2> Modified: trunk/Doc/Manual/Windows.html =================================================================== --- trunk/Doc/Manual/Windows.html 2007-11-21 21:33:42 UTC (rev 10162) +++ trunk/Doc/Manual/Windows.html 2007-11-22 23:55:34 UTC (rev 10163) @@ -10,32 +10,33 @@ <!-- INDEX --> <div class="sectiontoc"> <ul> -<li><a href="#Windows_nn2">Installation on Windows</a> +<li><a href="#Windows_installation">Installation on Windows</a> <ul> -<li><a href="#Windows_nn3">Windows Executable</a> +<li><a href="#Windows_executable">Windows Executable</a> </ul> -<li><a href="#examples">SWIG Windows Examples</a> +<li><a href="#Windows_examples">SWIG Windows Examples</a> <ul> -<li><a href="#Windows_nn5">Instructions for using the Examples with Visual Studio</a> +<li><a href="#Windows_visual_studio">Instructions for using the Examples with Visual Studio</a> <ul> -<li><a href="#Windows_nn6">Python</a> -<li><a href="#Windows_nn7">TCL</a> -<li><a href="#Windows_nn8">Perl</a> -<li><a href="#Windows_nn9">Java</a> -<li><a href="#Windows_nn10">Ruby</a> -<li><a href="#Windows_nn11">C#</a> +<li><a href="#Windows_csharp">C#</a> +<li><a href="#Windows_java">Java</a> +<li><a href="#Windows_perl">Perl</a> +<li><a href="#Windows_python">Python</a> +<li><a href="#Windows_tcl">TCL</a> +<li><a href="#Windows_r">R</a> +<li><a href="#Windows_ruby">Ruby</a> </ul> -<li><a href="#Windows_nn12">Instructions for using the Examples with other compilers</a> +<li><a href="#Windows_other_compilers">Instructions for using the Examples with other compilers</a> </ul> -<li><a href="#Windows_nn13">SWIG on Cygwin and MinGW</a> +<li><a href="#Windows_cygwin_mingw">SWIG on Cygwin and MinGW</a> <ul> -<li><a href="#swig_exe">Building swig.exe on Windows</a> +<li><a href="#Windows_swig_exe">Building swig.exe on Windows</a> <ul> <li><a href="#Windows_mingw_msys">Building swig.exe using MinGW and MSYS</a> -<li><a href="#Windows_nn16">Building swig.exe using Cygwin</a> -<li><a href="#Windows_nn17">Building swig.exe alternatives</a> +<li><a href="#Windows_cygwin">Building swig.exe using Cygwin</a> +<li><a href="#Windows_building_alternatives">Building swig.exe alternatives</a> </ul> -<li><a href="#examples_cygwin">Running the examples on Windows using Cygwin</a> +<li><a href="#Windows_examples_cygwin">Running the examples on Windows using Cygwin</a> </ul> <li><a href="#Windows_interface_file">Microsoft extensions and other Windows quirks</a> </ul> @@ -51,7 +52,7 @@ </p> -<H2><a name="Windows_nn2"></a>3.1 Installation on Windows</H2> +<H2><a name="Windows_installation"></a>3.1 Installation on Windows</H2> <p> @@ -62,7 +63,7 @@ <li>Set environment variables as described in the <a href="#examples">SWIG Windows Examples</a> section in order to run examples using Visual C++. </ul> -<H3><a name="Windows_nn3"></a>3.1.1 Windows Executable</H3> +<H3><a name="Windows_executable"></a>3.1.1 Windows Executable</H3> <p> @@ -71,7 +72,7 @@ </p> -<H2><a name="examples"></a>3.2 SWIG Windows Examples</H2> +<H2><a name="Windows_examples"></a>3.2 SWIG Windows Examples</H2> <p> @@ -86,7 +87,7 @@ <p> More information on each of the examples is available with the examples distributed with SWIG (Examples/index.html). -<H3><a name="Windows_nn5"></a>3.2.1 Instructions for using the Examples with Visual Studio</H3> +<H3><a name="Windows_visual_studio"></a>3.2.1 Instructions for using the Examples with Visual Studio</H3> <p> @@ -104,35 +105,33 @@ If you are interested in how the project files are set up there is explanatory information in some of the language module's documentation. </p> -<H4><a name="Windows_nn6"></a>3.2.1.1 Python</H4> +<H4><a name="Windows_csharp"></a>3.2.1.1 C#</H4> <p> -<b><tt>PYTHON_INCLUDE</tt></b> : Set this to the directory that contains python.h<br> -<b><tt>PYTHON_LIB</tt></b> : Set this to the python library including path for linking<p> -Example using Python 2.1.1:<br> -<tt> -PYTHON_INCLUDE: d:\python21\include<br> -PYTHON_LIB: d:\python21\libs\python21.lib<br> -</tt> +The C# examples do not require any environment variables to be set as a C# project file is included. +Just open up the .sln solution file in Visual Studio .NET 2003 or later, select Release Build, and do a Rebuild All from the Build menu. +The accompanying C# and C++ project files are automatically used by the solution file. </p> -<H4><a name="Windows_nn7"></a>3.2.1.2 TCL</H4> +<H4><a name="Windows_java"></a>3.2.1.2 Java</H4> + <p> -<b><tt>TCL_INCLUDE</tt></b> : Set this to the directory containing tcl.h<br> -<b><tt>TCL_LIB</tt></b> : Set this to the TCL library including path for linking<p> -Example using ActiveTcl 8.3.3.3 <br> +<b><tt>JAVA_INCLUDE</tt></b> : Set this to the directory containing jni.h<br> +<b><tt>JAVA_BIN</tt></b> : Set this to the bin directory containing javac.exe<p> +Example using JDK1.3:<br> <tt> -TCL_INCLUDE: d:\tcl\include<br> -TCL_LIB: d:\tcl\lib\tcl83.lib<br> +JAVA_INCLUDE: D:\jdk1.3\include<br> +JAVA_BIN: D:\jdk1.3\bin<br> </tt> </p> -<H4><a name="Windows_nn8"></a>3.2.1.3 Perl</H4> +<H4><a name="Windows_perl"></a>3.2.1.3 Perl</H4> + <p> <b><tt>PERL5_INCLUDE</tt></b> : Set this to the directory containing perl.h<br> <b><tt>PERL5_LIB</tt></b> : Set this to the Perl library including path for linking<p> @@ -143,23 +142,53 @@ </tt> </p> -<H4><a name="Windows_nn9"></a>3.2.1.4 Java</H4> +<H4><a name="Windows_python"></a>3.2.1.4 Python</H4> + <p> -<b><tt>JAVA_INCLUDE</tt></b> : Set this to the directory containing jni.h<br> -<b><tt>JAVA_BIN</tt></b> : Set this to the bin directory containing javac.exe<p> -Example using JDK1.3:<br> +<b><tt>PYTHON_INCLUDE</tt></b> : Set this to the directory that contains python.h<br> +<b><tt>PYTHON_LIB</tt></b> : Set this to the python library including path for linking<p> +Example using Python 2.1.1:<br> <tt> -JAVA_INCLUDE: d:\jdk1.3\include<br> -JAVA_BIN: d:\jdk1.3\bin<br> +PYTHON_INCLUDE: D:\python21\include<br> +PYTHON_LIB: D:\python21\libs\python21.lib<br> </tt> </p> -<H4><a name="Windows_nn10"></a>3.2.1.5 Ruby</H4> +<H4><a name="Windows_tcl"></a>3.2.1.5 TCL</H4> + <p> +<b><tt>TCL_INCLUDE</tt></b> : Set this to the directory containing tcl.h<br> +<b><tt>TCL_LIB</tt></b> : Set this to the TCL library including path for linking<p> +Example using ActiveTcl 8.3.3.3 <br> +<tt> +TCL_INCLUDE: D:\tcl\include<br> +TCL_LIB: D:\tcl\lib\tcl83.lib<br> +</tt> +</p> + + +<H4><a name="Windows_r"></a>3.2.1.6 R</H4> + + +<p> +<b><tt>R_INCLUDE</tt></b> : Set this to the directory containing R.h<br> +<b><tt>R_LIB</tt></b> : Set this to the R library (Rdll.lib) including path for linking. The library needs to be built as described in the R README.packages file (the pexports.exe approach is the easiest).<p> +Example using R 2.5.1:<br> +<tt> +R_INCLUDE: C:\Program Files\R\R-2.5.1\include<br> +R_LIB: C:\Program Files\R\R-2.5.1\bin\Rdll.lib<br> +</tt> +</p> + + +<H4><a name="Windows_ruby"></a>3.2.1.7 Ruby</H4> + + +<p> <b><tt>RUBY_INCLUDE</tt></b> : Set this to the directory containing ruby.h<br> <b><tt>RUBY_LIB</tt></b> : Set this to the ruby library including path for linking<p> Example using Ruby 1.6.4:<br> @@ -169,30 +198,22 @@ </tt> </p> -<H4><a name="Windows_nn11"></a>3.2.1.6 C#</H4> +<H3><a name="Windows_other_compilers"></a>3.2.2 Instructions for using the Examples with other compilers</H3> -<p> -The C# examples do not require any environment variables to be set as a C# project file is included. -Just open up the .sln solution file in Visual Studio .NET 2003 and do a Rebuild All from the Build menu. -The accompanying C# and C++ project file are automatically used by the solution file. -</p> -<H3><a name="Windows_nn12"></a>3.2.2 Instructions for using the Examples with other compilers</H3> - - <p> If you do not have access to Visual C++ you will have to set up project files / Makefiles for your chosen compiler. There is a section in each of the language modules detailing what needs setting up using Visual C++ which may be of some guidance. Alternatively you may want to use Cygwin as described in the following section. </p> -<H2><a name="Windows_nn13"></a>3.3 SWIG on Cygwin and MinGW</H2> +<H2><a name="Windows_cygwin_mingw"></a>3.3 SWIG on Cygwin and MinGW</H2> <p> SWIG can also be compiled and run using <a href="http://www.cygwin.com">Cygwin</a> or <a href="http://www.mingw.org">MinGW</a> which provides a Unix like front end to Windows and comes free with gcc, an ANSI C/C++ compiler. However, this is not a recommended approach as the prebuilt executable is supplied. </p> -<H3><a name="swig_exe"></a>3.3.1 Building swig.exe on Windows</H3> +<H3><a name="Windows_swig_exe"></a>3.3.1 Building swig.exe on Windows</H3> <p> @@ -304,7 +325,7 @@ </ol> -<H4><a name="Windows_nn16"></a>3.3.1.2 Building swig.exe using Cygwin</H4> +<H4><a name="Windows_cygwin"></a>3.3.1.2 Building swig.exe using Cygwin</H4> <p> @@ -315,7 +336,7 @@ These files are generated using the <tt>autogen.sh</tt> script and will only need regenerating in circumstances such as changing the build system. </p> -<H4><a name="Windows_nn17"></a>3.3.1.3 Building swig.exe alternatives</H4> +<H4><a name="Windows_building_alternatives"></a>3.3.1.3 Building swig.exe alternatives</H4> <p> @@ -325,7 +346,7 @@ </p> -<H3><a name="examples_cygwin"></a>3.3.2 Running the examples on Windows using Cygwin</H3> +<H3><a name="Windows_examples_cygwin"></a>3.3.2 Running the examples on Windows using Cygwin</H3> <p> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2008-02-25 22:04:58
|
Revision: 10263 http://swig.svn.sourceforge.net/swig/?rev=10263&view=rev Author: wsfulton Date: 2008-02-25 14:04:54 -0800 (Mon, 25 Feb 2008) Log Message: ----------- document special variables for %exception Modified Paths: -------------- trunk/Doc/Manual/Contents.html trunk/Doc/Manual/Customization.html Modified: trunk/Doc/Manual/Contents.html =================================================================== --- trunk/Doc/Manual/Contents.html 2008-02-14 23:07:30 UTC (rev 10262) +++ trunk/Doc/Manual/Contents.html 2008-02-25 22:04:54 UTC (rev 10263) @@ -406,6 +406,7 @@ <li><a href="Customization.html#Customization_nn5">Handling C++ exceptions</a> <li><a href="Customization.html#Customization_allowexcept">Exception handlers for variables</a> <li><a href="Customization.html#Customization_nn6">Defining different exception handlers</a> +<li><a href="Customization.html#Customization_exception_special_variables">Special variables for %exception</a> <li><a href="Customization.html#Customization_nn7">Using The SWIG exception library</a> </ul> <li><a href="Customization.html#ownership">Object ownership and %newobject</a> Modified: trunk/Doc/Manual/Customization.html =================================================================== --- trunk/Doc/Manual/Customization.html 2008-02-14 23:07:30 UTC (rev 10262) +++ trunk/Doc/Manual/Customization.html 2008-02-25 22:04:54 UTC (rev 10263) @@ -17,6 +17,7 @@ <li><a href="#Customization_nn5">Handling C++ exceptions</a> <li><a href="#Customization_allowexcept">Exception handlers for variables</a> <li><a href="#Customization_nn6">Defining different exception handlers</a> +<li><a href="#Customization_exception_special_variables">Special variables for %exception</a> <li><a href="#Customization_nn7">Using The SWIG exception library</a> </ul> <li><a href="#ownership">Object ownership and %newobject</a> @@ -66,7 +67,9 @@ <p> When defined, the code enclosed in braces is inserted directly into the low-level wrapper -functions. The special symbol <tt>$action</tt> gets replaced with the actual operation +functions. The special variable <tt>$action</tt> is one of a few +<a href="Customization.html#Customization_exception_special_variables">%exception special variable</a> +supported and gets replaced with the actual operation to be performed (a function call, method invocation, attribute access, etc.). An exception handler remains in effect until it is explicitly deleted. This is done by using either <tt>%exception</tt> or <tt>%noexception</tt> with no code. For example: @@ -419,10 +422,98 @@ %exception directive is much better. </p> -<H3><a name="Customization_nn7"></a>11.1.6 Using The SWIG exception library</H3> +<H3><a name="Customization_exception_special_variables"></a>11.1.6 Special variables for %exception</H3> <p> +The %exception directive supports a few special variables which are placeholders for +code substitution. +The following table shows the available special variables and details what the special +variables are replaced with. +</p> + +<table summary="Special variables for %exception"> + +<tr> +<td>$action</td> +<td>The actual operation to be performed (a function call, method invocation, variable access, etc.)</td> +</tr> + +<tr> +<td>$symname</td> +<td>The symbol name used internally by SWIG</td> +</tr> + +<tr> +<td>$overname</td> +<td>The extra mangling used in the symbol name for overloaded method. Expands to nothing if the wrapped method is not overloaded.</td> +</tr> + +<tr> +<td>$wrapname</td> +<td>The language specific wrapper name (usually a C function name exported from the shared object/dll)</td> +</tr> + +<tr> +<td>$decl</td> +<td>The fully qualified C/C++ declaration of the method being wrapped without the return type</td> +</tr> + +<tr> +<td>$fulldecl</td> +<td>The fully qualified C/C++ declaration of the method being wrapped including the return type</td> +</tr> + +</table> + +<p> +The special variables are often used in situations where method calls are logged. Exactly which form of the method call needs logging is up to individual requirements, but the example code below shows all the possible expansions, plus how an exception message could be tailored to show the C++ method declaration: +</p> + +<div class="code"><pre> +%exception Special::something { + log("symname: $symname"); + log("overname: $overname"); + log("wrapname: $wrapname"); + log("decl: $decl"); + log("fulldecl: $fulldecl"); + try { + $action + } + catch (MemoryError) { + croak("Out of memory in $decl"); + } +} +void log(const char *message); +struct Special { + void something(const char *c); + void something(int i); +}; +</pre></div> + +<p> +Below shows the expansions for the 1st of the overloaded <tt>something</tt> wrapper methods for Perl: +</p> + +<div class="code"><pre> + log("symname: Special_something"); + log("overname: __SWIG_0"); + log("wrapname: _wrap_Special_something__SWIG_0"); + log("decl: Special::something(char const *)"); + log("fulldecl: void Special::something(char const *)"); + try { + (arg1)->something((char const *)arg2); + } + catch (MemoryError) { + croak("Out of memory in Special::something(char const *)"); + } +</pre></div> + + +<H3><a name="Customization_nn7"></a>11.1.7 Using The SWIG exception library</H3> + + +<p> The <tt>exception.i</tt> library file provides support for creating language independent exceptions in your interfaces. To use it, simply put an "<tt>%include exception.i</tt>" in your interface file. This This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2008-03-02 22:13:16
|
Revision: 10292 http://swig.svn.sourceforge.net/swig/?rev=10292&view=rev Author: wsfulton Date: 2008-03-02 14:13:14 -0800 (Sun, 02 Mar 2008) Log Message: ----------- Add in Octave and R sections Modified Paths: -------------- trunk/Doc/Manual/Allegrocl.html trunk/Doc/Manual/Arguments.html trunk/Doc/Manual/CSharp.html trunk/Doc/Manual/Chicken.html trunk/Doc/Manual/Contents.html trunk/Doc/Manual/Contract.html trunk/Doc/Manual/Customization.html trunk/Doc/Manual/Extending.html trunk/Doc/Manual/Guile.html trunk/Doc/Manual/Introduction.html trunk/Doc/Manual/Java.html trunk/Doc/Manual/Library.html trunk/Doc/Manual/Lisp.html trunk/Doc/Manual/Lua.html trunk/Doc/Manual/Modula3.html trunk/Doc/Manual/Mzscheme.html trunk/Doc/Manual/Ocaml.html trunk/Doc/Manual/Octave.html trunk/Doc/Manual/Perl5.html trunk/Doc/Manual/Php.html trunk/Doc/Manual/Pike.html trunk/Doc/Manual/Preface.html trunk/Doc/Manual/Preprocessor.html trunk/Doc/Manual/Python.html trunk/Doc/Manual/R.html trunk/Doc/Manual/Ruby.html trunk/Doc/Manual/SWIG.html trunk/Doc/Manual/SWIGPlus.html trunk/Doc/Manual/Scripting.html trunk/Doc/Manual/Sections.html trunk/Doc/Manual/Tcl.html trunk/Doc/Manual/Typemaps.html trunk/Doc/Manual/Varargs.html trunk/Doc/Manual/Warnings.html trunk/Doc/Manual/Windows.html trunk/Doc/Manual/chapters Modified: trunk/Doc/Manual/Allegrocl.html =================================================================== --- trunk/Doc/Manual/Allegrocl.html 2008-03-02 15:35:49 UTC (rev 10291) +++ trunk/Doc/Manual/Allegrocl.html 2008-03-02 22:13:14 UTC (rev 10292) @@ -8,7 +8,7 @@ <body bgcolor="#ffffff"> -<H1><a name="Allegrocl_nn1"></a>16 SWIG and Allegro Common Lisp</H1> +<H1><a name="Allegrocl_nn1"></a>1 SWIG and Allegro Common Lisp</H1> <!-- INDEX --> <div class="sectiontoc"> <ul> @@ -135,10 +135,10 @@ to it. </p> -<H2><a name="Allegrocl_nn2"></a>16.1 Basics</H2> +<H2><a name="Allegrocl_nn2"></a>1.1 Basics</H2> -<H3><a name="Allegrocl_nn3"></a>16.1.1 Running Swig</H3> +<H3><a name="Allegrocl_nn3"></a>1.1.1 Running Swig</H3> <p> @@ -360,7 +360,7 @@ the C++ wrapper will be what you then load into Allegro CL. </p> -<H3><a name="Allegrocl_nn4"></a>16.1.2 Command Line Options</H3> +<H3><a name="Allegrocl_nn4"></a>1.1.2 Command Line Options</H3> <p> @@ -396,7 +396,7 @@ functions</a> for more details. </p> -<H3><a name="Allegrocl_nn5"></a>16.1.3 Inserting user code into generated files</H3> +<H3><a name="Allegrocl_nn5"></a>1.1.3 Inserting user code into generated files</H3> <p> @@ -436,7 +436,7 @@ </p> -<H2><a name="Allegrocl_nn6"></a>16.2 Wrapping Overview</H2> +<H2><a name="Allegrocl_nn6"></a>1.2 Wrapping Overview</H2> <p> @@ -446,7 +446,7 @@ interested in generating an interface to C++. </p> -<H3><a name="Allegrocl_nn7"></a>16.2.1 Function Wrapping</H3> +<H3><a name="Allegrocl_nn7"></a>1.2.1 Function Wrapping</H3> <p> @@ -499,7 +499,7 @@ </pre> </div> -<H3><a name="Allegrocl_nn8"></a>16.2.2 Foreign Wrappers</H3> +<H3><a name="Allegrocl_nn8"></a>1.2.2 Foreign Wrappers</H3> <p> @@ -512,7 +512,7 @@ typemap. </p> -<H3><a name="Allegrocl_nn9"></a>16.2.3 FFI Wrappers</H3> +<H3><a name="Allegrocl_nn9"></a>1.2.3 FFI Wrappers</H3> <p> @@ -593,7 +593,7 @@ ff:def-foreign-call's. </p> -<H3><a name="Allegrocl_nn10"></a>16.2.4 Non-overloaded Defuns</H3> +<H3><a name="Allegrocl_nn10"></a>1.2.4 Non-overloaded Defuns</H3> <p> @@ -606,7 +606,7 @@ this function can be manipulated via the <tt>lout</tt> typemap. </p> -<H3><a name="Allegrocl_nn11"></a>16.2.5 Overloaded Defuns</H3> +<H3><a name="Allegrocl_nn11"></a>1.2.5 Overloaded Defuns</H3> <p> @@ -622,7 +622,7 @@ can be manipulated via the <tt>lout</tt> typemap. </p> -<H3><a name="Allegrocl_nn12"></a>16.2.6 What about constant and variable access?</H3> +<H3><a name="Allegrocl_nn12"></a>1.2.6 What about constant and variable access?</H3> <p> @@ -635,7 +635,7 @@ into the foreign module. </p> -<H3><a name="Allegrocl_nn13"></a>16.2.7 Object Wrapping</H3> +<H3><a name="Allegrocl_nn13"></a>1.2.7 Object Wrapping</H3> <p> @@ -657,7 +657,7 @@ foreign function interface. </p> -<H2><a name="Allegrocl_nn14"></a>16.3 Wrapping Details</H2> +<H2><a name="Allegrocl_nn14"></a>1.3 Wrapping Details</H2> <p> @@ -665,7 +665,7 @@ translated into lisp. </p> -<H3><a name="Allegrocl_nn15"></a>16.3.1 Namespaces</H3> +<H3><a name="Allegrocl_nn15"></a>1.3.1 Namespaces</H3> <p> @@ -742,7 +742,7 @@ function such as <tt>(car '(1 2 3)</tt>. </p> -<H3><a name="Allegrocl_nn16"></a>16.3.2 Constants</H3> +<H3><a name="Allegrocl_nn16"></a>1.3.2 Constants</H3> @@ -803,7 +803,7 @@ not use the <tt>-nocwrap</tt> command-line option. </p> -<H3><a name="Allegrocl_nn17"></a>16.3.3 Variables</H3> +<H3><a name="Allegrocl_nn17"></a>1.3.3 Variables</H3> <p> @@ -881,7 +881,7 @@ </pre> </div> -<H3><a name="Allegrocl_nn18"></a>16.3.4 Enumerations</H3> +<H3><a name="Allegrocl_nn18"></a>1.3.4 Enumerations</H3> <p> @@ -957,7 +957,7 @@ </pre> </div> -<H3><a name="Allegrocl_nn19"></a>16.3.5 Arrays</H3> +<H3><a name="Allegrocl_nn19"></a>1.3.5 Arrays</H3> <p> @@ -1105,10 +1105,10 @@ </pre> </div> -<H3><a name="Allegrocl_nn20"></a>16.3.6 Classes and Structs and Unions (oh my!)</H3> +<H3><a name="Allegrocl_nn20"></a>1.3.6 Classes and Structs and Unions (oh my!)</H3> -<H4><a name="Allegrocl_nn21"></a>16.3.6.1 CLOS wrapping of</H4> +<H4><a name="Allegrocl_nn21"></a>1.3.6.1 CLOS wrapping of</H4> <p> @@ -1123,7 +1123,7 @@ integer values. </p> -<H4><a name="Allegrocl_nn22"></a>16.3.6.2 CLOS Inheritance</H4> +<H4><a name="Allegrocl_nn22"></a>1.3.6.2 CLOS Inheritance</H4> <p> @@ -1136,7 +1136,7 @@ parameter. </p> -<H4><a name="Allegrocl_nn23"></a>16.3.6.3 Member fields and functions</H4> +<H4><a name="Allegrocl_nn23"></a>1.3.6.3 Member fields and functions</H4> <p> @@ -1152,7 +1152,7 @@ the interface does nothing for <tt>friend</tt> directives, </p> -<H4><a name="Allegrocl_nn24"></a>16.3.6.4 Why not directly access C++ classes using foreign types?</H4> +<H4><a name="Allegrocl_nn24"></a>1.3.6.4 Why not directly access C++ classes using foreign types?</H4> <p> @@ -1170,11 +1170,11 @@ use the more robust wrapper functions. </p> -<H3><a name="Allegrocl_nn25"></a>16.3.7 Templates</H3> +<H3><a name="Allegrocl_nn25"></a>1.3.7 Templates</H3> -<H4><a name="Allegrocl_nn26"></a>16.3.7.1 Generating wrapper code for templates</H4> +<H4><a name="Allegrocl_nn26"></a>1.3.7.1 Generating wrapper code for templates</H4> <p> @@ -1187,7 +1187,7 @@ directive. </p> -<H4><a name="Allegrocl_nn27"></a>16.3.7.2 Implicit Template instantiation</H4> +<H4><a name="Allegrocl_nn27"></a>1.3.7.2 Implicit Template instantiation</H4> <p> @@ -1197,7 +1197,7 @@ class schema. </p> -<H3><a name="Allegrocl_nn28"></a>16.3.8 Typedef, Templates, and Synonym Types</H3> +<H3><a name="Allegrocl_nn28"></a>1.3.8 Typedef, Templates, and Synonym Types</H3> <p> @@ -1277,7 +1277,7 @@ </pre> </div> -<H4><a name="Allegrocl_nn29"></a>16.3.8.1 Choosing a primary type</H4> +<H4><a name="Allegrocl_nn29"></a>1.3.8.1 Choosing a primary type</H4> <p> @@ -1298,7 +1298,7 @@ </li> </ul> -<H3><a name="Allegrocl_nn30"></a>16.3.9 Function overloading/Parameter defaulting</H3> +<H3><a name="Allegrocl_nn30"></a>1.3.9 Function overloading/Parameter defaulting</H3> <p> @@ -1461,7 +1461,7 @@ </pre> </div> -<H3><a name="Allegrocl_nn31"></a>16.3.10 Operator wrapping and Operator overloading</H3> +<H3><a name="Allegrocl_nn31"></a>1.3.10 Operator wrapping and Operator overloading</H3> <p> @@ -1607,7 +1607,7 @@ </pre> </div> -<H3><a name="Allegrocl_nn32"></a>16.3.11 Varargs</H3> +<H3><a name="Allegrocl_nn32"></a>1.3.11 Varargs</H3> <p> @@ -1628,7 +1628,7 @@ with other ways such functions can be wrapped. </p> -<H3><a name="Allegrocl_nn33"></a>16.3.12 C++ Exceptions</H3> +<H3><a name="Allegrocl_nn33"></a>1.3.12 C++ Exceptions</H3> <p> @@ -1640,7 +1640,7 @@ implemented. </p> -<H3><a name="Allegrocl_nn34"></a>16.3.13 Pass by value, pass by reference</H3> +<H3><a name="Allegrocl_nn34"></a>1.3.13 Pass by value, pass by reference</H3> <p> @@ -1652,7 +1652,7 @@ newly defined types. </p> -<H2><a name="Allegrocl_nn35"></a>16.4 Typemaps</H2> +<H2><a name="Allegrocl_nn35"></a>1.4 Typemaps</H2> <p> @@ -1663,7 +1663,7 @@ on <a href="Typemaps.html#Typemaps">Typemaps</a> for more information. </p> -<H3><a name="Allegrocl_nn36"></a>16.4.1 Code Generation in the C++ Wrapper</H3> +<H3><a name="Allegrocl_nn36"></a>1.4.1 Code Generation in the C++ Wrapper</H3> @@ -1693,7 +1693,7 @@ </pre> </div> -<H4><a name="Allegrocl_nn37"></a>16.4.1.1 IN Typemap</H4> +<H4><a name="Allegrocl_nn37"></a>1.4.1.1 IN Typemap</H4> <p> @@ -1728,7 +1728,7 @@ </pre> </div> -<H4><a name="Allegrocl_nn38"></a>16.4.1.2 OUT Typemap</H4> +<H4><a name="Allegrocl_nn38"></a>1.4.1.2 OUT Typemap</H4> <p> @@ -1752,7 +1752,7 @@ </pre> </div> -<H4><a name="Allegrocl_nn39"></a>16.4.1.3 CTYPE Typemap</H4> +<H4><a name="Allegrocl_nn39"></a>1.4.1.3 CTYPE Typemap</H4> <p> @@ -1784,7 +1784,7 @@ these <a href="Typemaps.html#Typemaps_nn25">common typemaps</a> here. </p> -<H3><a name="Allegrocl_nn40"></a>16.4.2 Code generation in Lisp wrappers</H3> +<H3><a name="Allegrocl_nn40"></a>1.4.2 Code generation in Lisp wrappers</H3> <p> @@ -1803,7 +1803,7 @@ <a href="#Allegrocl_nn15">16.3.1 Namespaces</a> for details. </p> -<H4><a name="Allegrocl_nn41"></a>16.4.2.1 LIN Typemap</H4> +<H4><a name="Allegrocl_nn41"></a>1.4.2.1 LIN Typemap</H4> <p> @@ -1846,7 +1846,7 @@ </pre> </div> -<H4><a name="Allegrocl_nn42"></a>16.4.2.2 LOUT Typemap</H4> +<H4><a name="Allegrocl_nn42"></a>1.4.2.2 LOUT Typemap</H4> <p> @@ -1889,7 +1889,7 @@ </pre> </div> -<H4><a name="Allegrocl_nn43"></a>16.4.2.3 FFITYPE Typemap</H4> +<H4><a name="Allegrocl_nn43"></a>1.4.2.3 FFITYPE Typemap</H4> @@ -1939,7 +1939,7 @@ </pre> </div> -<H4><a name="Allegrocl_nn44"></a>16.4.2.4 LISPTYPE Typemap</H4> +<H4><a name="Allegrocl_nn44"></a>1.4.2.4 LISPTYPE Typemap</H4> <p> @@ -1959,7 +1959,7 @@ </pre> </div> -<H4><a name="Allegrocl_nn45"></a>16.4.2.5 LISPCLASS Typemap</H4> +<H4><a name="Allegrocl_nn45"></a>1.4.2.5 LISPCLASS Typemap</H4> <p> @@ -1983,7 +1983,7 @@ </pre> </div> -<H3><a name="Allegrocl_nn46"></a>16.4.3 Modifying SWIG behavior using typemaps</H3> +<H3><a name="Allegrocl_nn46"></a>1.4.3 Modifying SWIG behavior using typemaps</H3> <p> @@ -2017,10 +2017,10 @@ </pre> </div> -<H2><a name="Allegrocl_nn47"></a>16.5 Identifier Converter functions</H2> +<H2><a name="Allegrocl_nn47"></a>1.5 Identifier Converter functions</H2> -<H3><a name="Allegrocl_nn48"></a>16.5.1 Creating symbols in the lisp environment</H3> +<H3><a name="Allegrocl_nn48"></a>1.5.1 Creating symbols in the lisp environment</H3> <p> @@ -2041,11 +2041,11 @@ of arguments. </p> -<H3><a name="Allegrocl_nn49"></a>16.5.2 Existing identifier-converter functions</H3> +<H3><a name="Allegrocl_nn49"></a>1.5.2 Existing identifier-converter functions</H3> <p>Two basic identifier routines have been defined. -<H4><a name="Allegrocl_nn50"></a>16.5.2.1 identifier-convert-null</H4> +<H4><a name="Allegrocl_nn50"></a>1.5.2.1 identifier-convert-null</H4> <p> @@ -2054,7 +2054,7 @@ strings, from which a symbol will be created. </p> -<H4><a name="Allegrocl_nn51"></a>16.5.2.2 identifier-convert-lispify</H4> +<H4><a name="Allegrocl_nn51"></a>1.5.2.2 identifier-convert-lispify</H4> <p> @@ -2063,7 +2063,7 @@ same symbol transformations. </p> -<H4><a name="Allegrocl_nn52"></a>16.5.2.3 Default identifier to symbol conversions</H4> +<H4><a name="Allegrocl_nn52"></a>1.5.2.3 Default identifier to symbol conversions</H4> <p> @@ -2072,7 +2072,7 @@ default naming conventions. </p> -<H3><a name="Allegrocl_nn53"></a>16.5.3 Defining your own identifier-converter</H3> +<H3><a name="Allegrocl_nn53"></a>1.5.3 Defining your own identifier-converter</H3> <p> @@ -2128,7 +2128,7 @@ this identifier. </p> -<H3><a name="Allegrocl_nn54"></a>16.5.4 Instructing SWIG to use a particular identifier-converter</H3> +<H3><a name="Allegrocl_nn54"></a>1.5.4 Instructing SWIG to use a particular identifier-converter</H3> <p> Modified: trunk/Doc/Manual/Arguments.html =================================================================== --- trunk/Doc/Manual/Arguments.html 2008-03-02 15:35:49 UTC (rev 10291) +++ trunk/Doc/Manual/Arguments.html 2008-03-02 22:13:14 UTC (rev 10292) @@ -6,7 +6,7 @@ </head> <body bgcolor="#ffffff"> -<H1><a name="Arguments"></a>9 Argument Handling</H1> +<H1><a name="Arguments"></a>2 Argument Handling</H1> <!-- INDEX --> <div class="sectiontoc"> <ul> @@ -44,7 +44,7 @@ describes some of the techniques for doing this. </p> -<H2><a name="Arguments_nn2"></a>9.1 The typemaps.i library</H2> +<H2><a name="Arguments_nn2"></a>2.1 The typemaps.i library</H2> <p> @@ -52,7 +52,7 @@ change certain properties of argument conversion. </p> -<H3><a name="Arguments_nn3"></a>9.1.1 Introduction</H3> +<H3><a name="Arguments_nn3"></a>2.1.1 Introduction</H3> <p> @@ -196,7 +196,7 @@ </pre> </div> -<H3><a name="Arguments_nn4"></a>9.1.2 Input parameters</H3> +<H3><a name="Arguments_nn4"></a>2.1.2 Input parameters</H3> <p> @@ -249,7 +249,7 @@ result = add(3,4) </pre></div> -<H3><a name="Arguments_nn5"></a>9.1.3 Output parameters</H3> +<H3><a name="Arguments_nn5"></a>2.1.3 Output parameters</H3> <p> @@ -316,7 +316,7 @@ </pre> </div> -<H3><a name="Arguments_nn6"></a>9.1.4 Input/Output parameters</H3> +<H3><a name="Arguments_nn6"></a>2.1.4 Input/Output parameters</H3> <p> @@ -381,7 +381,7 @@ SWIG. Backwards compatibility is preserved, but deprecated. </p> -<H3><a name="Arguments_nn7"></a>9.1.5 Using different names</H3> +<H3><a name="Arguments_nn7"></a>2.1.5 Using different names</H3> <p> @@ -415,7 +415,7 @@ file or a matching <tt>%clear</tt> declaration. </p> -<H2><a name="Arguments_nn8"></a>9.2 Applying constraints to input values</H2> +<H2><a name="Arguments_nn8"></a>2.2 Applying constraints to input values</H2> <p> @@ -425,7 +425,7 @@ can be accomplished including the <tt>constraints.i</tt> library file. </p> -<H3><a name="Arguments_nn9"></a>9.2.1 Simple constraint example</H3> +<H3><a name="Arguments_nn9"></a>2.2.1 Simple constraint example</H3> <p> @@ -451,7 +451,7 @@ exception will be raised. As a result, it is possible to catch bad values, prevent mysterious program crashes and so on.</p> -<H3><a name="Arguments_nn10"></a>9.2.2 Constraint methods</H3> +<H3><a name="Arguments_nn10"></a>2.2.2 Constraint methods</H3> <p> @@ -467,7 +467,7 @@ </pre></div> -<H3><a name="Arguments_nn11"></a>9.2.3 Applying constraints to new datatypes</H3> +<H3><a name="Arguments_nn11"></a>2.2.3 Applying constraints to new datatypes</H3> <p> Modified: trunk/Doc/Manual/CSharp.html =================================================================== --- trunk/Doc/Manual/CSharp.html 2008-03-02 15:35:49 UTC (rev 10291) +++ trunk/Doc/Manual/CSharp.html 2008-03-02 22:13:14 UTC (rev 10292) @@ -5,7 +5,7 @@ <link rel="stylesheet" type="text/css" href="style.css"> </head> <body bgcolor="#FFFFFF"> -<H1><a name="CSharp"></a>17 SWIG and C#</H1> +<H1><a name="CSharp"></a>5 SWIG and C#</H1> <!-- INDEX --> <div class="sectiontoc"> <ul> @@ -39,7 +39,7 @@ -<H2><a name="csharp_introduction"></a>17.1 Introduction</H2> +<H2><a name="csharp_introduction"></a>5.1 Introduction</H2> <p> @@ -59,7 +59,7 @@ Monodoc, available from the Mono project, has a very useful section titled <a href="http://www.mono-project.com/Interop_with_Native_Libraries">Interop with native libraries</a>. </p> -<H2><a name="csharp_differences_java"></a>17.2 Differences to the Java module</H2> +<H2><a name="csharp_differences_java"></a>5.2 Differences to the Java module</H2> <p> @@ -397,7 +397,7 @@ <a href="http://www.cygwin.com">Cygwin</a> or <a href="http://www.mingw.org">MinGW</a> environment for automatic configuration of the example makefiles. Any one of the three C# compilers (Portable.NET, Mono or Microsoft) can be detected from within a Cygwin or Mingw environment if installed in your path. -<H2><a name="csharp_exceptions"></a>17.3 C# Exceptions</H2> +<H2><a name="csharp_exceptions"></a>5.3 C# Exceptions</H2> <p> @@ -494,7 +494,7 @@ </p> -<H3><a name="csharp_exception_example_check_typemap"></a>17.3.1 C# exception example using "check" typemap</H3> +<H3><a name="csharp_exception_example_check_typemap"></a>5.3.1 C# exception example using "check" typemap</H3> <p> @@ -676,7 +676,7 @@ Actually it will issue this warning for any function beginning with <tt>SWIG_CSharpSetPendingException</tt>. </P> -<H3><a name="csharp_exception_example_percent_exception"></a>17.3.2 C# exception example using %exception</H3> +<H3><a name="csharp_exception_example_percent_exception"></a>5.3.2 C# exception example using %exception</H3> <p> @@ -741,7 +741,7 @@ </pre> </div> -<H3><a name="csharp_exception_example_exception_specifications"></a>17.3.3 C# exception example using exception specifications</H3> +<H3><a name="csharp_exception_example_exception_specifications"></a>5.3.3 C# exception example using exception specifications</H3> <p> @@ -798,7 +798,7 @@ Multiple catch handlers are generated should there be more than one exception specifications declared. </p> -<H3><a name="csharp_custom_application_exception"></a>17.3.4 Custom C# ApplicationException example</H3> +<H3><a name="csharp_custom_application_exception"></a>5.3.4 Custom C# ApplicationException example</H3> <p> @@ -932,7 +932,7 @@ </pre> </div> -<H2><a name="csharp_directors"></a>17.4 C# Directors</H2> +<H2><a name="csharp_directors"></a>5.4 C# Directors</H2> <p> @@ -945,7 +945,7 @@ However, the <a href="Java.html#java_directors">Java directors</a> section should also be read in order to gain more insight into directors. </p> -<H3><a name="csharp_directors_example"></a>17.4.1 Directors example</H3> +<H3><a name="csharp_directors_example"></a>5.4.1 Directors example</H3> <p> @@ -1066,7 +1066,7 @@ </pre> </div> -<H3><a name="csharp_directors_implementation"></a>17.4.2 Directors implementation</H3> +<H3><a name="csharp_directors_implementation"></a>5.4.2 Directors implementation</H3> <p> @@ -1252,7 +1252,7 @@ </pre> </div> -<H3><a name="csharp_director_caveats"></a>17.4.3 Director caveats</H3> +<H3><a name="csharp_director_caveats"></a>5.4.3 Director caveats</H3> <p> @@ -1300,7 +1300,7 @@ should pass the call on to <tt>CSharpDefaults.DefaultMethod(int)</tt>using the C++ default value, as shown above. </p> -<H2><a name="csharp_typemap_examples"></a>17.5 C# Typemap examples</H2> +<H2><a name="csharp_typemap_examples"></a>5.5 C# Typemap examples</H2> This section includes a few examples of typemaps. For more examples, you @@ -1308,7 +1308,7 @@ the SWIG library. -<H3><a name="csharp_memory_management_member_variables"></a>17.5.1 Memory management when returning references to member variables</H3> +<H3><a name="csharp_memory_management_member_variables"></a>5.5.1 Memory management when returning references to member variables</H3> <p> @@ -1432,7 +1432,7 @@ Note the <tt>addReference</tt> call. </p> -<H3><a name="csharp_memory_management_objects"></a>17.5.2 Memory management for objects passed to the C++ layer</H3> +<H3><a name="csharp_memory_management_objects"></a>5.5.2 Memory management for objects passed to the C++ layer</H3> <p> @@ -1551,7 +1551,7 @@ </div> -<H3><a name="csharp_date_marshalling"></a>17.5.3 Date marshalling using the csin typemap and associated attributes</H3> +<H3><a name="csharp_date_marshalling"></a>5.5.3 Date marshalling using the csin typemap and associated attributes</H3> <p> @@ -1788,7 +1788,7 @@ </pre> </div> -<H3><a name="csharp_date_properties"></a>17.5.4 A date example demonstrating marshalling of C# properties</H3> +<H3><a name="csharp_date_properties"></a>5.5.4 A date example demonstrating marshalling of C# properties</H3> <p> @@ -1888,7 +1888,7 @@ </ul> -<H3><a name="csharp_partial_classes"></a>17.5.5 Turning wrapped classes into partial classes</H3> +<H3><a name="csharp_partial_classes"></a>5.5.5 Turning wrapped classes into partial classes</H3> <p> @@ -1988,7 +1988,7 @@ The following example is an alternative approach to adding managed code to the generated proxy class. </p> -<H3><a name="csharp_extending_proxy_class"></a>17.5.6 Extending proxy classes with additional C# code</H3> +<H3><a name="csharp_extending_proxy_class"></a>5.5.6 Extending proxy classes with additional C# code</H3> <p> Modified: trunk/Doc/Manual/Chicken.html =================================================================== --- trunk/Doc/Manual/Chicken.html 2008-03-02 15:35:49 UTC (rev 10291) +++ trunk/Doc/Manual/Chicken.html 2008-03-02 22:13:14 UTC (rev 10292) @@ -8,7 +8,7 @@ <body bgcolor="#ffffff"> -<H1><a name="Chicken"></a>18 SWIG and Chicken</H1> +<H1><a name="Chicken"></a>3 SWIG and Chicken</H1> <!-- INDEX --> <div class="sectiontoc"> <ul> @@ -72,7 +72,7 @@ </p> -<H2><a name="Chicken_nn2"></a>18.1 Preliminaries</H2> +<H2><a name="Chicken_nn2"></a>3.1 Preliminaries</H2> <p> @@ -90,7 +90,7 @@ CHICKEN. </p> -<H3><a name="Chicken_nn3"></a>18.1.1 Running SWIG in C mode</H3> +<H3><a name="Chicken_nn3"></a>3.1.1 Running SWIG in C mode</H3> <p> @@ -123,7 +123,7 @@ object files and linked into your project. </p> -<H3><a name="Chicken_nn4"></a>18.1.2 Running SWIG in C++ mode</H3> +<H3><a name="Chicken_nn4"></a>3.1.2 Running SWIG in C++ mode</H3> <p> @@ -152,10 +152,10 @@ object files and linked into your project. </p> -<H2><a name="Chicken_nn5"></a>18.2 Code Generation</H2> +<H2><a name="Chicken_nn5"></a>3.2 Code Generation</H2> -<H3><a name="Chicken_nn6"></a>18.2.1 Naming Conventions</H3> +<H3><a name="Chicken_nn6"></a>3.2.1 Naming Conventions</H3> <p> @@ -171,7 +171,7 @@ <tt>%rename</tt> SWIG directive in the SWIG interface file. </p> -<H3><a name="Chicken_nn7"></a>18.2.2 Modules</H3> +<H3><a name="Chicken_nn7"></a>3.2.2 Modules</H3> <p> @@ -193,7 +193,7 @@ (uses <i>modulename</i>))</code> CHICKEN Scheme form. </p> -<H3><a name="Chicken_nn8"></a>18.2.3 Constants and Variables</H3> +<H3><a name="Chicken_nn8"></a>3.2.3 Constants and Variables</H3> <p> @@ -230,7 +230,7 @@ for info on how to apply the %feature. </p> -<H3><a name="Chicken_nn9"></a>18.2.4 Functions</H3> +<H3><a name="Chicken_nn9"></a>3.2.4 Functions</H3> <p> @@ -249,7 +249,7 @@ parameters). The return values can then be accessed with <code>(call-with-values)</code>. </p> -<H3><a name="Chicken_nn10"></a>18.2.5 Exceptions</H3> +<H3><a name="Chicken_nn10"></a>3.2.5 Exceptions</H3> <p>The SWIG chicken module has support for exceptions thrown from @@ -291,7 +291,7 @@ </pre></div> -<H2><a name="Chicken_nn11"></a>18.3 TinyCLOS</H2> +<H2><a name="Chicken_nn11"></a>3.3 TinyCLOS</H2> <p> @@ -334,7 +334,7 @@ </p> -<H2><a name="Chicken_nn12"></a>18.4 Linkage</H2> +<H2><a name="Chicken_nn12"></a>3.4 Linkage</H2> <p> @@ -355,7 +355,7 @@ </p> -<H3><a name="Chicken_nn13"></a>18.4.1 Static binary or shared library linked at compile time</H3> +<H3><a name="Chicken_nn13"></a>3.4.1 Static binary or shared library linked at compile time</H3> <p>We can easily use csc to build a static binary.</p> @@ -396,7 +396,7 @@ be run with <tt>csi</tt>. </p> -<H3><a name="Chicken_nn14"></a>18.4.2 Building chicken extension libraries</H3> +<H3><a name="Chicken_nn14"></a>3.4.2 Building chicken extension libraries</H3> <p>Building a shared library like in the above section only works if the library @@ -454,7 +454,7 @@ <p>See the <tt>Examples/chicken/egg</tt> directory in the SWIG source for an example that builds two eggs, one using the first method and one using the second method.</p> -<H3><a name="Chicken_nn15"></a>18.4.3 Linking multiple SWIG modules with TinyCLOS</H3> +<H3><a name="Chicken_nn15"></a>3.4.3 Linking multiple SWIG modules with TinyCLOS</H3> <p>Linking together multiple modules that share type information using the <code>%import</code> @@ -478,7 +478,7 @@ To create an extension library or an egg, just create a <tt>module_load.scm</tt> file that <code>(declare (uses ...))</code> all the modules.</p> -<H2><a name="Chicken_nn16"></a>18.5 Typemaps</H2> +<H2><a name="Chicken_nn16"></a>3.5 Typemaps</H2> <p> @@ -487,7 +487,7 @@ <code>Lib/chicken/chicken.swg</code>. </p> -<H2><a name="Chicken_nn17"></a>18.6 Pointers</H2> +<H2><a name="Chicken_nn17"></a>3.6 Pointers</H2> <p> @@ -520,7 +520,7 @@ type. flags is either zero or SWIG_POINTER_DISOWN (see below). </p> -<H3><a name="collection"></a>18.6.1 Garbage collection</H3> +<H3><a name="collection"></a>3.6.1 Garbage collection</H3> <p>If the owner flag passed to <code>SWIG_NewPointerObj</code> is 1, <code>NewPointerObj</code> will add a @@ -551,7 +551,7 @@ must be called manually. </p> -<H2><a name="Chicken_nn18"></a>18.7 Unsupported features and known problems</H2> +<H2><a name="Chicken_nn18"></a>3.7 Unsupported features and known problems</H2> <ul> @@ -561,7 +561,7 @@ <a href="SWIGPlus.html#SWIGPlus_default_args">%feature(compactdefaultargs)</a>.</li> </ul> -<H3><a name="Chicken_nn19"></a>18.7.1 TinyCLOS problems with Chicken version <= 1.92</H3> +<H3><a name="Chicken_nn19"></a>3.7.1 TinyCLOS problems with Chicken version <= 1.92</H3> <p>In Chicken versions equal to or below 1.92, TinyCLOS has a limitation such that generic methods do not properly work on methods Modified: trunk/Doc/Manual/Contents.html =================================================================== --- trunk/Doc/Manual/Contents.html 2008-03-02 15:35:49 UTC (rev 10291) +++ trunk/Doc/Manual/Contents.html 2008-03-02 22:13:14 UTC (rev 10292) @@ -9,498 +9,11 @@ <p> -<h3><a href="Preface.html#Preface">1 Preface</a></h3> +<h3><a href="Allegrocl.html#Allegrocl">1 SWIG and Allegro Common Lisp</a></h3> <!-- INDEX --> <div class="sectiontoc"> <ul> -<li><a href="Preface.html#Preface_nn2">Introduction</a> -<li><a href="Preface.html#Preface_nn3">Special Introduction for Version 1.3</a> -<li><a href="Preface.html#Preface_nn4">SWIG Versions</a> -<li><a href="Preface.html#Preface_nn5">SWIG resources</a> -<li><a href="Preface.html#Preface_nn6">Prerequisites</a> -<li><a href="Preface.html#Preface_nn7">Organization of this manual</a> -<li><a href="Preface.html#Preface_nn8">How to avoid reading the manual</a> -<li><a href="Preface.html#Preface_nn9">Backwards Compatibility</a> -<li><a href="Preface.html#Preface_nn10">Credits</a> -<li><a href="Preface.html#Preface_nn11">Bug reports</a> -</ul> -</div> -<!-- INDEX --> - -<h3><a href="Introduction.html#Introduction">2 Introduction</a></h3> - -<!-- INDEX --> -<div class="sectiontoc"> -<ul> -<li><a href="Introduction.html#Introduction_nn2">What is SWIG?</a> -<li><a href="Introduction.html#Introduction_nn3">Why use SWIG?</a> -<li><a href="Introduction.html#Introduction_nn4">A SWIG example</a> -<ul> -<li><a href="Introduction.html#Introduction_nn5">SWIG interface file</a> -<li><a href="Introduction.html#Introduction_nn6">The swig command</a> -<li><a href="Introduction.html#Introduction_nn7">Building a Perl5 module</a> -<li><a href="Introduction.html#Introduction_nn8">Building a Python module</a> -<li><a href="Introduction.html#Introduction_nn9">Shortcuts</a> -</ul> -<li><a href="Introduction.html#Introduction_nn10">Supported C/C++ language features</a> -<li><a href="Introduction.html#Introduction_nn11">Non-intrusive interface building</a> -<li><a href="Introduction.html#Introduction_build_system">Incorporating SWIG into a build system</a> -<li><a href="Introduction.html#Introduction_nn12">Hands off code generation</a> -<li><a href="Introduction.html#Introduction_nn13">SWIG and freedom</a> -</ul> -</div> -<!-- INDEX --> - -<h3><a href="Windows.html#Windows">3 Getting started on Windows </a></h3> - -<!-- INDEX --> -<div class="sectiontoc"> -<ul> -<li><a href="Windows.html#Windows_installation">Installation on Windows</a> -<ul> -<li><a href="Windows.html#Windows_executable">Windows Executable</a> -</ul> -<li><a href="Windows.html#Windows_examples">SWIG Windows Examples</a> -<ul> -<li><a href="Windows.html#Windows_visual_studio">Instructions for using the Examples with Visual Studio</a> -<ul> -<li><a href="Windows.html#Windows_csharp">C#</a> -<li><a href="Windows.html#Windows_java">Java</a> -<li><a href="Windows.html#Windows_perl">Perl</a> -<li><a href="Windows.html#Windows_python">Python</a> -<li><a href="Windows.html#Windows_tcl">TCL</a> -<li><a href="Windows.html#Windows_r">R</a> -<li><a href="Windows.html#Windows_ruby">Ruby</a> -</ul> -<li><a href="Windows.html#Windows_other_compilers">Instructions for using the Examples with other compilers</a> -</ul> -<li><a href="Windows.html#Windows_cygwin_mingw">SWIG on Cygwin and MinGW</a> -<ul> -<li><a href="Windows.html#Windows_swig_exe">Building swig.exe on Windows</a> -<ul> -<li><a href="Windows.html#Windows_mingw_msys">Building swig.exe using MinGW and MSYS</a> -<li><a href="Windows.html#Windows_cygwin">Building swig.exe using Cygwin</a> -<li><a href="Windows.html#Windows_building_alternatives">Building swig.exe alternatives</a> -</ul> -<li><a href="Windows.html#Windows_examples_cygwin">Running the examples on Windows using Cygwin</a> -</ul> -<li><a href="Windows.html#Windows_interface_file">Microsoft extensions and other Windows quirks</a> -</ul> -</div> -<!-- INDEX --> - -<h3><a href="Scripting.html#Scripting">4 Scripting Languages</a></h3> - -<!-- INDEX --> -<div class="sectiontoc"> -<ul> -<li><a href="Scripting.html#Scripting_nn2">The two language view of the world</a> -<li><a href="Scripting.html#Scripting_nn3">How does a scripting language talk to C?</a> -<ul> -<li><a href="Scripting.html#Scripting_nn4">Wrapper functions</a> -<li><a href="Scripting.html#Scripting_nn5">Variable linking</a> -<li><a href="Scripting.html#Scripting_nn6">Constants</a> -<li><a href="Scripting.html#Scripting_nn7">Structures and classes</a> -<li><a href="Scripting.html#Scripting_nn8">Proxy classes</a> -</ul> -<li><a href="Scripting.html#Scripting_nn9">Building scripting language extensions</a> -<ul> -<li><a href="Scripting.html#Scripting_nn10">Shared libraries and dynamic loading</a> -<li><a href="Scripting.html#Scripting_nn11">Linking with shared libraries</a> -<li><a href="Scripting.html#Scripting_nn12">Static linking</a> -</ul> -</ul> -</div> -<!-- INDEX --> - -<h3><a href="SWIG.html#SWIG">5 SWIG Basics</a></h3> - -<!-- INDEX --> -<div class="sectiontoc"> -<ul> -<li><a href="SWIG.html#SWIG_nn2">Running SWIG</a> -<ul> -<li><a href="SWIG.html#SWIG_nn3">Input format</a> -<li><a href="SWIG.html#output">SWIG Output</a> -<li><a href="SWIG.html#SWIG_nn5">Comments</a> -<li><a href="SWIG.html#SWIG_nn6">C Preprocessor</a> -<li><a href="SWIG.html#SWIG_nn7">SWIG Directives</a> -<li><a href="SWIG.html#SWIG_nn8">Parser Limitations</a> -</ul> -<li><a href="SWIG.html#SWIG_nn9">Wrapping Simple C Declarations</a> -<ul> -<li><a href="SWIG.html#SWIG_nn10">Basic Type Handling</a> -<li><a href="SWIG.html#SWIG_nn11">Global Variables</a> -<li><a href="SWIG.html#SWIG_nn12">Constants</a> -<li><a href="SWIG.html#SWIG_nn13">A brief word about <tt>const</tt></a> -<li><a href="SWIG.html#SWIG_nn14">A cautionary tale of <tt>char *</tt></a> -</ul> -<li><a href="SWIG.html#SWIG_nn15">Pointers and complex objects</a> -<ul> -<li><a href="SWIG.html#SWIG_nn16">Simple pointers</a> -<li><a href="SWIG.html#SWIG_nn17">Run time pointer type checking</a> -<li><a href="SWIG.html#SWIG_nn18">Derived types, structs, and classes</a> -<li><a href="SWIG.html#SWIG_nn19">Undefined datatypes</a> -<li><a href="SWIG.html#SWIG_nn20">Typedef</a> -</ul> -<li><a href="SWIG.html#SWIG_nn21">Other Practicalities</a> -<ul> -<li><a href="SWIG.html#SWIG_nn22">Passing structures by value</a> -<li><a href="SWIG.html#SWIG_nn23">Return by value</a> -<li><a href="SWIG.html#SWIG_nn24">Linking to structure variables</a> -<li><a href="SWIG.html#SWIG_nn25">Linking to <tt>char *</tt></a> -<li><a href="SWIG.html#SWIG_nn26">Arrays</a> -<li><a href="SWIG.html#SWIG_readonly_variables">Creating read-only variables</a> -<li><a href="SWIG.html#SWIG_rename_ignore">Renaming and ignoring declarations</a> -<li><a href="SWIG.html#SWIG_default_args">Default/optional arguments</a> -<li><a href="SWIG.html#SWIG_nn30">Pointers to functions and callbacks</a> -</ul> -<li><a href="SWIG.html#SWIG_nn31">Structures and unions</a> -<ul> -<li><a href="SWIG.html#SWIG_nn32">Typedef and structures</a> -<li><a href="SWIG.html#SWIG_nn33">Character strings and structures</a> -<li><a href="SWIG.html#SWIG_nn34">Array members</a> -<li><a href="SWIG.html#SWIG_structure_data_members">Structure data members</a> -<li><a href="SWIG.html#SWIG_nn36">C constructors and destructors </a> -<li><a href="SWIG.html#SWIG_adding_member_functions">Adding member functions to C structures</a> -<li><a href="SWIG.html#SWIG_nested_structs">Nested structures</a> -<li><a href="SWIG.html#SWIG_nn39">Other things to note about structure wrapping</a> -</ul> -<li><a href="SWIG.html#SWIG_nn40">Code Insertion</a> -<ul> -<li><a href="SWIG.html#SWIG_nn41">The output of SWIG</a> -<li><a href="SWIG.html#SWIG_nn42">Code insertion blocks</a> -<li><a href="SWIG.html#SWIG_nn43">Inlined code blocks</a> -<li><a href="SWIG.html#SWIG_nn44">Initialization blocks</a> -</ul> -<li><a href="SWIG.html#SWIG_nn45">An Interface Building Strategy</a> -<ul> -<li><a href="SWIG.html#SWIG_nn46">Preparing a C program for SWIG</a> -<li><a href="SWIG.html#SWIG_nn47">The SWIG interface file</a> -<li><a href="SWIG.html#SWIG_nn48">Why use separate interface files?</a> -<li><a href="SWIG.html#SWIG_nn49">Getting the right header files</a> -<li><a href="SWIG.html#SWIG_nn50">What to do with main()</a> -</ul> -</ul> -</div> -<!-- INDEX --> - -<h3><a href="SWIGPlus.html#SWIGPlus">6 SWIG and C++</a></h3> - -<!-- INDEX --> -<div class="sectiontoc"> -<ul> -<li><a href="SWIGPlus.html#SWIGPlus_nn2">Comments on C++ Wrapping</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn3">Approach</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn4">Supported C++ features</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn5">Command line options and compilation</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn38">Proxy classes</a> -<ul> -<li><a href="SWIGPlus.html#SWIGPlus_nn39">Construction of proxy classes</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn40">Resource management in proxies</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn41">Language specific details</a> -</ul> -<li><a href="SWIGPlus.html#SWIGPlus_nn6">Simple C++ wrapping</a> -<ul> -<li><a href="SWIGPlus.html#SWIGPlus_nn7">Constructors and destructors</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn8">Default constructors, copy constructors and implicit destructors</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn9">When constructor wrappers aren't created</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn10">Copy constructors</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn11">Member functions</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn12">Static members</a> -<li><a href="SWIGPlus.html#SWIGPlus_member_data">Member data</a> -</ul> -<li><a href="SWIGPlus.html#SWIGPlus_default_args">Default arguments</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn15">Protection</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn16">Enums and constants</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn17">Friends</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn18">References and pointers</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn19">Pass and return by value</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn20">Inheritance</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn21">A brief discussion of multiple inheritance, pointers, and type checking</a> -<li><a href="SWIGPlus.html#SWIGPlus_overloaded_methods">Wrapping Overloaded Functions and Methods</a> -<ul> -<li><a href="SWIGPlus.html#SWIGPlus_nn24">Dispatch function generation</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn25">Ambiguity in Overloading</a> -<li><a href="SWIGPlus.html#ambiguity_resolution_renaming">Ambiguity resolution and renaming</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn27">Comments on overloading</a> -</ul> -<li><a href="SWIGPlus.html#SWIGPlus_nn28">Wrapping overloaded operators</a> -<li><a href="SWIGPlus.html#SWIGPlus_class_extension">Class extension</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn30">Templates</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn31">Namespaces</a> -<li><a href="SWIGPlus.html#SWIGPlus_renaming_templated_types_namespaces">Renaming templated types in namespaces</a> -<li><a href="SWIGPlus.html#SWIGPlus_exception_specifications">Exception specifications</a> -<li><a href="SWIGPlus.html#SWIGPlus_catches">Exception handling with %catches</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn33">Pointers to Members</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn34">Smart pointers and operator->()</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn35">Using declarations and inheritance</a> -<li><a href="SWIGPlus.html#SWIGPlus_nested_classes">Nested classes</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn37">A brief rant about const-correctness</a> -<li><a href="SWIGPlus.html#SWIGPlus_nn42">Where to go for more information</a> -</ul> -</div> -<!-- INDEX --> - -<h3><a href="Preprocessor.html#Preprocessor">7 Preprocessing</a></h3> - -<!-- INDEX --> -<div class="sectiontoc"> -<ul> -<li><a href="Preprocessor.html#Preprocessor_nn2">File inclusion</a> -<li><a href="Preprocessor.html#Preprocessor_nn3">File imports</a> -<li><a href="Preprocessor.html#Preprocessor_condition_compilation">Conditional Compilation</a> -<li><a href="Preprocessor.html#Preprocessor_nn5">Macro Expansion</a> -<li><a href="Preprocessor.html#Preprocessor_nn6">SWIG Macros</a> -<li><a href="Preprocessor.html#Preprocessor_nn7">C99 and GNU Extensions</a> -<li><a href="Preprocessor.html#Preprocessor_nn8">Preprocessing and %{ ... %} & " ... " delimiters</a> -<li><a href="Preprocessor.html#Preprocessor_nn9">Preprocessing and { ... } delimiters</a> -<li><a href="Preprocessor.html#Preprocessor_typemap_delimiters">Preprocessor and Typemaps</a> -<li><a href="Preprocessor.html#Preprocessor_nn10">Viewing preprocessor output</a> -<li><a href="Preprocessor.html#Preprocessor_warning_error">The #error and #warning directives</a> -</ul> -</div> -<!-- INDEX --> - -<h3><a href="Library.html#Library">8 SWIG library</a></h3> - -<!-- INDEX --> -<div class="sectiontoc"> -<ul> -<li><a href="Library.html#Library_nn2">The %include directive and library search path</a> -<li><a href="Library.html#Library_nn3">C Arrays and Pointers</a> -<ul> -<li><a href="Library.html#Library_nn4">cpointer.i</a> -<li><a href="Library.html#Library_nn5">carrays.i</a> -<li><a href="Library.html#Library_nn6">cmalloc.i</a> -<li><a href="Library.html#Library_nn7">cdata.i</a> -</ul> -<li><a href="Library.html#Library_nn8">C String Handling</a> -<ul> -<li><a href="Library.html#Library_nn9">Default string handling</a> -<li><a href="Library.html#Library_nn10">Passing binary data</a> -<li><a href="Library.html#Library_nn11">Using %newobject to release memory</a> -<li><a href="Library.html#Library_nn12">cstring.i</a> -</ul> -<li><a href="Library.html#Library_stl_cpp_library">STL/C++ Library</a> -<ul> -<li><a href="Library.html#Library_nn14">std_string.i</a> -<li><a href="Library.html#Library_nn15">std_vector.i</a> -<li><a href="Library.html#Library_stl_exceptions">STL exceptions</a> -</ul> -<li><a href="Library.html#Library_nn16">Utility Libraries</a> -<ul> -<li><a href="Library.html#Library_nn17">exception.i</a> -</ul> -</ul> -</div> -<!-- INDEX --> - -<h3><a href="Arguments.html#Arguments">9 Argument Handling</a></h3> - -<!-- INDEX --> -<div class="sectiontoc"> -<ul> -<li><a href="Arguments.html#Arguments_nn2">The typemaps.i library</a> -<ul> -<li><a href="Arguments.html#Arguments_nn3">Introduction</a> -<li><a href="Arguments.html#Arguments_nn4">Input parameters</a> -<li><a href="Arguments.html#Arguments_nn5">Output parameters</a> -<li><a href="Arguments.html#Arguments_nn6">Input/Output parameters</a> -<li><a href="Arguments.html#Arguments_nn7">Using different names</a> -</ul> -<li><a href="Arguments.html#Arguments_nn8">Applying constraints to input values</a> -<ul> -<li><a href="Arguments.html#Arguments_nn9">Simple constraint example</a> -<li><a href="Arguments.html#Arguments_nn10">Constraint methods</a> -<li><a href="Arguments.html#Arguments_nn11">Applying constraints to new datatypes</a> -</ul> -</ul> -</div> -<!-- INDEX --> - -<h3><a href="Typemaps.html#Typemaps">10 Typemaps</a></h3> - -<!-- INDEX --> -<div class="sectiontoc"> -<ul> -<li><a href="Typemaps.html#Typemaps_nn2">Introduction</a> -<ul> -<li><a href="Typemaps.html#Typemaps_nn3">Type conversion</a> -<li><a href="Typemaps.html#Typemaps_nn4">Typemaps</a> -<li><a href="Typemaps.html#Typemaps_nn5">Pattern matching</a> -<li><a href="Typemaps.html#Typemaps_nn6">Reusing typemaps</a> -<li><a href="Typemaps.html#Typemaps_nn7">What can be done with typemaps?</a> -<li><a href="Typemaps.html#Typemaps_nn8">What can't be done with typemaps?</a> -<li><a href="Typemaps.html#Typemaps_nn9">The rest of this chapter</a> -</ul> -<li><a href="Typemaps.html#Typemaps_nn10">Typemap specifications</a> -<ul> -<li><a href="Typemaps.html#Typemaps_nn11">Defining a typemap</a> -<li><a href="Typemaps.html#Typemaps_nn12">Typemap scope</a> -<li><a href="Typemaps.html#Typemaps_nn13">Copying a typemap</a> -<li><a href="Typemaps.html#Typemaps_nn14">Deleting a typemap</a> -<li><a href="Typemaps.html#Typemaps_nn15">Placement of typemaps</a> -</ul> -<li><a href="Typemaps.html#Typemaps_nn16">Pattern matching rules</a> -<ul> -<li><a href="Typemaps.html#Typemaps_nn17">Basic matching rules</a> -<li><a href="Typemaps.html#Typemaps_nn18">Typedef reductions</a> -<li><a href="Typemaps.html#Typemaps_nn19">Default typemaps</a> -<li><a href="Typemaps.html#Typemaps_mixed_default">Mixed default typemaps</a> -<li><a href="Typemaps.html#Typemaps_nn20">Multi-arguments typemaps</a> -</ul> -<li><a href="Typemaps.html#Typemaps_nn21">Code generation rules</a> -<ul> -<li><a href="Typemaps.html#Typemaps_nn22">Scope</a> -<li><a href="Typemaps.html#Typemaps_nn23">Declaring new local variables</a> -<li><a href="Typemaps.html#Typemaps_special_variables">Special variables</a> -</ul> -<li><a href="Typemaps.html#Typemaps_nn25">Common typemap methods</a> -<ul> -<li><a href="Typemaps.html#Typemaps_nn26">"in" typemap</a> -<li><a href="Typemaps.html#Typemaps_nn27">"typecheck" typemap</a> -<li><a href="Typemaps.html#Typemaps_nn28">"out" typemap</a> -<li><a href="Typemaps.html#Typemaps_nn29">"arginit" typemap</a> -<li><a href="Typemaps.html#Typemaps_nn30">"default" typemap</a> -<li><a href="Typemaps.html#Typemaps_nn31">"check" typemap</a> -<li><a href="Typemaps.html#Typemaps_nn32">"argout" typemap</a> -<li><a href="Typemaps.html#Typemaps_nn33">"freearg" typemap</a> -<li><a href="Typemaps.html#Typemaps_nn34">"newfree" typemap</a> -<li><a href="Typemaps.html#Typemaps_nn35">"memberin" typemap</a> -<li><a href="Typemaps.html#Typemaps_nn36">"varin" typemap</a> -<li><a href="Typemaps.html#Typemaps_nn37">"varout" typemap</a> -<li><a href="Typemaps.html#throws_typemap">"throws" typemap</a> -</ul> -<li><a href="Typemaps.html#Typemaps_nn39">Some typemap examples</a> -<ul> -<li><a href="Typemaps.html#Typemaps_nn40">Typemaps for arrays</a> -<li><a href="Typemaps.html#Typemaps_nn41">Implementing constraints with typemaps</a> -</ul> -<li><a href="Typemaps.html#Typemaps_nn43">Typemaps for multiple languages</a> -<li><a href="Typemaps.html#Typemaps_nn42">Multi-argument typemaps</a> -<li><a href="Typemaps.html#runtime_type_checker">The run-time type checker</a> -<ul> -<li><a href="Typemaps.html#Typemaps_nn45">Implementation</a> -<li><a href="Typemaps.html#Typemaps_nn46">Usage</a> -</ul> -<li><a href="Typemaps.html#Typemaps_overloading">Typemaps and overloading</a> -<li><a href="Typemaps.html#Typemaps_nn48">More about <tt>%apply</tt> and <tt>%clear</tt></a> -<li><a href="Typemaps.html#Typemaps_nn49">Reducing wrapper code size</a> -<li><a href="Typemaps.html#Typemaps_nn47">Passing data between typemaps</a> -<li><a href="Typemaps.html#Typemaps_nn51">Where to go for more information?</a> -</ul> -</div> -<!-- INDEX --> - -<h3><a href="Customization.html#Customization">11 Customization Features</a></h3> - -<!-- INDEX --> -<div class="sectiontoc"> -<ul> -<li><a href="Customization.html#exception">Exception handling with %exception</a> -<ul> -<li><a href="Customization.html#Customization_nn3">Handling exceptions in C code</a> -<li><a href="Customization.html#Customization_nn4">Exception handling with longjmp()</a> -<li><a href="Customization.html#Customization_nn5">Handling C++ exceptions</a> -<li><a href="Customization.html#Customization_allowexcept">Exception handlers for variables</a> -<li><a href="Customization.html#Customization_nn6">Defining different exception handlers</a> -<li><a href="Customization.html#Customization_exception_special_variables">Special variables for %exception</a> -<li><a href="Customization.html#Customization_nn7">Using The SWIG exception library</a> -</ul> -<li><a href="Customization.html#ownership">Object ownership and %newobject</a> -<li><a href="Customization.html#features">Features and the %feature directive</a> -<ul> -<li><a href="Customization.html#Customization_feature_attributes">Feature attributes</a> -<li><a href="Customization.html#Customization_feature_flags">Feature flags</a> -<li><a href="Customization.html#Customization_clearing_features">Clearing features</a> -<li><a href="Customization.html#Customization_features_default_args">Features and default arguments</a> -<li><a href="Customization.html#features_example">Feature example</a> -</ul> -</ul> -</div> -<!-- INDEX --> - -<h3><a href="Contract.html#Contract">12 Contracts</a></h3> - -<!-- INDEX --> -<div class="sectiontoc"> -<ul> -<li><a href="Contract.html#Contract_nn2">The %contract directive</a> -<li><a href="Contract.html#Contract_nn3">%contract and classes</a> -<li><a href="Contract.html#Contract_nn4">Constant aggregation and %aggregate_check</a> -<li><a href="Contract.html#Contract_nn5">Notes</a> -</ul> -</div> -<!-- INDEX --> - -<h3><a href="Varargs.html#Varargs">13 Variable Length Arguments</a></h3> - -<!-- INDEX --> -<div class="sectiontoc"> -<ul> -<li><a href="Varargs.html#Varargs_nn2">Introduction</a> -<li><a href="Varargs.html#Varargs_nn3">The Problem</a> -<li><a href="Varargs.html#Varargs_nn4">Default varargs support</a> -<li><a href="Varargs.html#Varargs_nn5">Argument replacement using %varargs</a> -<li><a href="Varargs.html#Varargs_nn6">Varargs and typemaps</a> -<li><a href="Varargs.html#Varargs_nn7">Varargs wrapping with libffi</a> -<li><a href="Varargs.html#Varargs_nn8">Wrapping of va_list</a> -<li><a href="Varargs.html#Varargs_nn9">C++ Issues</a> -<li><a href="Varargs.html#Varargs_nn10">Discussion</a> -</ul> -</div> -<!-- INDEX --> - -<h3><a href="Warnings.html#Warnings">14 Warning Messages</a></h3> - -<!-- INDEX --> -<div class="sectiontoc"> -<ul> -<li><a href="Warnings.html#Warnings_nn2">Introduction</a> -<li><a href="Warnings.html#Warnings_suppression">Warning message suppression</a> -<li><a href="Warnings.html#Warnings_nn4">Enabling extra warnings</a> -<li><a href="Warnings.html#Warnings_nn5">Issuing a warning message</a> -<li><a href="Warnings.html#Warnings_symbolic_symbols">Symbolic symbols</a> -<li><a href="Warnings.html#Warnings_nn6">Commentary</a> -<li><a href="Warnings.html#Warnings_nn7">Warnings as errors</a> -<li><a href="Warnings.html#Warnings_nn8">Message output format</a> -<li><a href="Warnings.html#Warnings_nn9">Warning number reference</a> -<ul> -<li><a href="Warnings.html#Warnings_nn10">Deprecated features (100-199)</a> -<li><a href="Warnings.html#Warnings_nn11">Preprocessor (200-299)</a> -<li><a href="Warnings.html#Warnings_nn12">C/C++ Parser (300-399)</a> -<li><a href="Warnings.html#Warnings_nn13">Types and typemaps (400-499) </a> -<li><a href="Warnings.html#Warnings_nn14">Code generation (500-599)</a> -<li><a href="Warnings.html#Warnings_nn15">Language module specific (800-899) </a> -<li><a href="Warnings.html#Warnings_nn16">User defined (900-999)</a> -</ul> -<li><a href="Warnings.html#Warnings_nn17">History</a> -</ul> -</div> -<!-- INDEX --> - -<h3><a href="Modules.html#Modules">15 Working with Modules</a></h3> - -<!-- INDEX --> -<div class="sectiontoc"> -<ul> -<li><a href="Modules.html#Modules_nn1">Basics</a> -<li><a href="Modules.html#Modules_nn2">The SWIG runtime code</a> -<li><a href="Modules.html#external_run_time">External access to the runtime</a> -<li><a href="Modules.html#Modules_nn4">A word of caution about static libraries</a> -<li><a href="Modules.html#Modules_nn5">References</a> -<li><a href="Modules.html#Modules_nn6">Reducing the wrapper file size</a> -</ul> -</div> -<!-- INDEX --> - -<h3><a href="Allegrocl.html#Allegrocl">16 SWIG and Allegro Common Lisp</a></h3> - -<!-- INDEX --> -<div class="sectiontoc"> -<ul> <li><a href="Allegrocl.html#Allegrocl_nn2">Basics</a> <ul> <li><a href="Allegrocl.html#Allegrocl_nn3">Running Swig</a> @@ -580,11 +93,85 @@ </div> <!-- INDEX --> -<h3><a href="CSharp.html#CSharp">17 SWIG and C#</a></h3> +<h3><a href="Arguments.html#Arguments">2 Argument Handling</a></h3> <!-- INDEX --> <div class="sectiontoc"> <ul> +<li><a href="Arguments.html#Arguments_nn2">The typemaps.i library</a> +<ul> +<li><a href="Arguments.html#Arguments_nn3">Introduction</a> +<li><a href="Arguments.html#Arguments_nn4">Input parameters</a> +<li><a href="Arguments.html#Arguments_nn5">Output parameters</a> +<li><a href="Arguments.html#Arguments_nn6">Input/Output parameters</a> +<li><a href="Arguments.html#Arguments_nn7">Using different names</a> +</ul> +<li><a href="Arguments.html#Arguments_nn8">Applying constraints to input values</a> +<ul> +<li><a href="Arguments.html#Arguments_nn9">Simple constraint example</a> +<li><a href="Arguments.html#Arguments_nn10">Constraint methods</a> +<li><a href="Arguments.html#Arguments_nn11">Applying constraints to new datatypes</a> +</ul> +</ul> +</div> +<!-- INDEX --> + +<h3><a href="Chicken.html#Chicken">3 SWIG and Chicken</a></h3> + +<!-- INDEX --> +<div class="sectiontoc"> +<ul> +<li><a href="Chicken.html#Chicken_nn2">Preliminaries</a> +<ul> +<li><a href="Chicken.html#Chicken_nn3">Running SWIG in C mode</a> +<li><a href="Chicken.html#Chicken_nn4">Running SWIG in C++ mode</a> +</ul> +<li><a href="Chicken.html#Chicken_nn5">Code Generation</a> +<ul> +<li><a href="Chicken.html#Chicken_nn6">Naming Conventions</a> +<li><a href="Chicken.html#Chicken_nn7">Modules</a> +<li><a href="Chicken.html#Chicken_nn8">Constants and Variables</a> +<li><a href="Chicken.html#Chicken_nn9">Functions</a> +<li><a href="Chicken.html#Chicken_nn10">Exceptions</a> +</ul> +<li><a href="Chicken.html#Chicken_nn11">TinyCLOS</a> +<li><a href="Chicken.html#Chicken_nn12">Linkage</a> +<ul> +<li><a href="Chicken.html#Chicken_nn13">Static binary or shared library linked at compile time</a> +<li><a href="Chicken.html#Chicken_nn14">Building chicken extension libraries</a> +<li><a href="Chicken.html#Chicken_nn15">Linking multiple SWIG modules with TinyCLOS</a> +</ul> +<li><a href="Chicken.html#Chicken_nn16">Typemaps</a> +<li><a href="Chicken.html#Chicken_nn17">Pointers</a> +<ul> +<li><a href="Chicken.html#collection">Garbage collection</a> +</ul> +<li><a href="Chicken.html#Chicken_nn18">Unsupported features and known problems</a> +<ul> +<li><a href="Chicken.html#Chicken_nn19">TinyCLOS problems with Chicken version <= 1.92</a> +</ul> +</ul> +</div> +<!-- INDEX --> + +<h3><a href="Contract.html#Contract">4 Contracts</a></h3> + +<!-- INDEX --> +<div class="sectiontoc"> +<ul> +<li><a href="Contract.html#Contract_nn2">The %contract directive</a> +<li><a href="Contract.html#Contract_nn3">%contract and classes</a> +<li><a href="Contract.html#Contract_nn4">Constant aggregation and %aggregate_check</a> +<li><a href="Contract.html#Contract_nn5">Notes</a> +</ul> +</div> +<!-- INDEX --> + +<h3><a href="CSharp.html#CSharp">5 SWIG and C#</a></h3> + +<!-- INDEX --> +<div class="sectiontoc"> +<ul> <li><a href="CSharp.html#csharp_introduction">Introduction</a> <li><a href="CSharp.html#csharp_differences_java">Differences to the Java module</a> <li><a href="CSharp.html#csharp_exceptions">C# Exceptions</a> @@ -613,45 +200,101 @@ </div> <!-- INDEX --> -<h3><a href="Chicken.html#Chicken">18 SWIG and Chicken</a></h3> +<h3><a href="Customization.html#Customization">6 Customization Features</a></h3> <!-- INDEX --> <div class="sectiontoc"> <ul> -<li><a href="Chicken.html#Chicken_nn2">Preliminaries</a> +<li><a href="Customization.html#exception">Exception handling with %exception</a> <ul> -<li><a href="Chicken.html#Chicken_nn3">Running SWIG in C mode</a> -<li><a href="Chicken.html#Chicken_nn4">Running SWIG in C++ mode</a> +<li><a href="Customization.html#Customization_nn3">Handling exceptions in C code</a> +<li><a href="Customization.html#Customization_nn4">Exception handling with longjmp()</a> +<li><a href="Customization.html#Customization_nn5">Handling C++ exceptions</a> +<li><a href="Customization.html#Customization_allowexcept">Exception handlers for variables</a> +<li><a href="Customization.html#Customization_nn6">Defining different exception handlers</a> +<li><a href="Customization.html#Customization_exception_special_variables">Special variables for %exception</a> +<li><a href="Customization.html#Customization_nn7">Using The SWIG exception library</a> </ul> -<li><a href="Chicken.html#Chicken_nn5">Code Generation</a> +<li><a href="Customization.html#ownership">Object ownership and %newobject</a> +<li><a href="Customization.html#features">Features and the %feature directive</a> <ul> -<li><a href="Chicken.html#Chicken_nn6">Naming Conventions</a> -<li><a href="Chicken.html#Chicken_nn7">Modules</a> -<li><a href="Chicken.html#Chicken_nn8">Constants and Variables</a> -<li><a href="Chicken.html#Chicken_nn9">Functions</a> -<li><a href="Chicken.html#Chicken_nn10">Exceptions</a> +<li><a href="Customization.html#Customization_feature_attributes">Feature attributes</a> +<li><a href="Customization.html#Customization_feature_flags">Feature flags</a> +<li><a href="Customization.html#Customization_clearing_features">Clearing features</a> +<li><a href="Customization.html#Customization_features_default_args">Features and default arguments</a> +<li><a href="Customization.html#features_example">Feature example</a> </ul> -<li><a href="Chicken.html#Chicken_nn11">TinyCLOS</a> -<li><a href="Chicken.html#Chicken_nn12">Linkage</a> +</ul> +</div> +<!-- INDEX --> + +<h3><a href="Extending.html#Extending">7 Extending SWIG to support new languages</a></h3> + +<!-- INDEX --> +<div class="sectiontoc"> <ul> -<li><a href="Chicken.html#Chicken_nn13">Static binary or shared library linked at compile time</a> -<li><a href="Chicken.html#Chicken_nn14">Building chicken extension libraries</a> -<li><a href="Chicken.html#Chicken_nn15">Linking multiple SWIG modules with TinyCLOS</a> +<li><a href="Extending.html#Extending_nn2">Introduction</a> +<li><a href="Extending.html#Extending_nn3">Prerequisites</a> +<li><a href="Extending.html#Extending_nn4">The Big Picture</a> +<li><a href="Extending.html#Extending_nn5">Execution Model</a> +<ul> +<li><a href="Extending.html#Extending_nn6">Preprocessing</a> +<li><a href="Extending.html#Extending_nn7">Parsing</a> +<li><a href="Extending.html#Extending_nn8">Parse Trees</a> +<li><a href="Extending.html#Extending_nn9">Attribute namespaces</a> +<li><a href="Extending.html#Extending_nn10">Symbol Tables</a> +<li><a href="Extending.html#Extending_nn11">The %feature directive</a> +<li><a href="Extending.html#Extending_nn12">Code Generation</a> +<li><a href="Extending.html#Extending_nn13">SWIG and XML</a> </ul> -<li><a href="Chicken.html#Chicken_nn16">Typemaps</a> -<li><a href="Chicken.html#Chicken_nn17">Pointers</a> +<li><a href="Extending.html#Extending_nn14">Primitive Data Structures</a> <ul> -<li><a href="Chicken.html#collection">Garbage collection</a> +<li><a href="Extending.html#Extending_nn15">Strings</a> +<li><a href="Extending.html#Extending_nn16">Hashes</a> +<li><a href="Extending.html#Extending_nn17">Lists</a> +<li><a href="Extending.html#Extending_nn18">Common operations</a> +<li><a href="Extending.html#Extending_nn19">Iterating over Lists and Hashes</a> +<li><a href="Extending.html#Extending_nn20">I/O</a> </ul> -<li><a href="Chicken.html#Chicken_nn18">Unsupported features and known problems</a> +<li><a href="Extending.html#Extending_nn21">Navigating and manipulating parse trees</a> +<li><a href="Extending.html#Extending_nn22">Working with attributes</a> +<li><a href="Extending.html#Extending_nn23">Type system</a> <ul> -<li><a href="Chicken.html#Chicken_nn19">TinyCLOS problems with Chicken version <= 1.92</a> +<li><a href="Extending.html#Extending_nn24">String encoding of types</a> +<li><a href="Extending.html#Extending_nn25">Type construction</a> +<li><a href="Extending.html#Extending_nn26">Type tests</a> +<li><a href="Extending.html#Extending_nn27">Typedef and inheritance</a> +<li><a href="Extending.html#Extending_nn28">Lvalues</a> +<li><a href="Extending.html#Extending_nn29">Output functions</a> </ul> +<li><a href="Extending.html#Extending_nn30">Parameters</a> +<li><a href="Extending.html#Extending_nn31">Writing a Language Module</a> +<ul> +<li><a href="Extending.html#Extending_nn32">Execution model</a> +<li><a href="Extending.html#Extending_nn33">Starting out</a> +<li><a href="Extending.html#Extending_nn34">Command line options</a> +<li><a href="Extending.html#Extending_nn35">Configuration and preprocessing</a> +<li><a href="Extending.html#Extending_nn36">Entry point to code generation</a> +<li><a href="Extending.html#Extending_nn37">Module I/O and wrapper skeleton</a> +<li><a href="Extending.html#Extending_nn38">Low-level code generators</a> +<li><a href="Extending.html#Extending_nn39">Configuration files</a> +<li><a href="Extending.html#Extending_nn40">Runtime support</a> +<li><a href="Extending.html#Extending_nn41">Standard library files</a> +<li><a href="Extending.html#Extending_nn42">Examples and test cases</a> +<li><a href="Extending.html#Extending_nn43">Documentation</a> +<li><a href="Extending.html#Extending_prerequisites">Prerequisites for adding a new language module to the SWIG distribution</a> +<li><a href="Extending.html#Extending_coding_style_guidelines">Coding style guidelines</a> </ul> +<li><a href="Extending.html#Extending_nn44">Typemaps</a> +<ul> +<li><a href="Extending.html#Extending_nn45">Proxy classes</a> +</ul> +<li><a href="Extending.html#Extending_nn46">Guide to parse tree nodes</a> +</ul> </div> <!-- INDEX --> -<h3><a href="Guile.html#Guile">19 SWIG and Guile</a></h3> +<h3><a href="Guile.html#Guile">8 SWIG and Guile</a></h3> <!-- INDEX --> <div class="sectiontoc"> @@ -686,11 +329,35 @@ </div> <!-- INDEX --> -<h3><a href="Java.html#Java">20 SWIG and Java</a></h3> +<h3><a href="Introduction.html#Introduction">9 Introduction</a></h3> <!-- INDEX --> <div class="sectiontoc"> <ul> +<li><a href="Introduction.html#Introduction_nn2">What is SWIG?</a> +<li><a href="Introduction.html#Introduction_nn3">Why use SWIG?</a> +<li><a href="Introduction.html#Introduction_nn4">A SWIG example</a> +<ul> +<li><a href="Introduction.html#Introduction_nn5">SWIG interface file</a> +<li><a href="Introduction.html#Introduction_nn6">The swig command</a> +<li><a href="Introduction.html#Introduction_nn7">Building a Perl5 module</a> +<li><a href="Introduction.html#Introduction_nn8">Building a Python module</a> +<li><a href="Introduction.html#Introdu... [truncated message content] |
From: <wsf...@us...> - 2008-03-02 22:41:59
|
Revision: 10294 http://swig.svn.sourceforge.net/swig/?rev=10294&view=rev Author: wsfulton Date: 2008-03-02 14:41:58 -0800 (Sun, 02 Mar 2008) Log Message: ----------- Put the chapters back in order after erroneously incorrectly reordering them in last checkin Modified Paths: -------------- trunk/Doc/Manual/Allegrocl.html trunk/Doc/Manual/Arguments.html trunk/Doc/Manual/CSharp.html trunk/Doc/Manual/Chicken.html trunk/Doc/Manual/Contents.html trunk/Doc/Manual/Contract.html trunk/Doc/Manual/Customization.html trunk/Doc/Manual/Extending.html trunk/Doc/Manual/Guile.html trunk/Doc/Manual/Introduction.html trunk/Doc/Manual/Java.html trunk/Doc/Manual/Library.html trunk/Doc/Manual/Lisp.html trunk/Doc/Manual/Lua.html trunk/Doc/Manual/Modula3.html trunk/Doc/Manual/Mzscheme.html trunk/Doc/Manual/Ocaml.html trunk/Doc/Manual/Octave.html trunk/Doc/Manual/Perl5.html trunk/Doc/Manual/Php.html trunk/Doc/Manual/Pike.html trunk/Doc/Manual/Preface.html trunk/Doc/Manual/Preprocessor.html trunk/Doc/Manual/Python.html trunk/Doc/Manual/R.html trunk/Doc/Manual/Ruby.html trunk/Doc/Manual/SWIG.html trunk/Doc/Manual/SWIGPlus.html trunk/Doc/Manual/Scripting.html trunk/Doc/Manual/Tcl.html trunk/Doc/Manual/Typemaps.html trunk/Doc/Manual/Varargs.html trunk/Doc/Manual/Warnings.html trunk/Doc/Manual/Windows.html trunk/Doc/Manual/chapters Modified: trunk/Doc/Manual/Allegrocl.html =================================================================== --- trunk/Doc/Manual/Allegrocl.html 2008-03-02 22:33:36 UTC (rev 10293) +++ trunk/Doc/Manual/Allegrocl.html 2008-03-02 22:41:58 UTC (rev 10294) @@ -8,7 +8,7 @@ <body bgcolor="#ffffff"> -<H1><a name="Allegrocl_nn1"></a>1 SWIG and Allegro Common Lisp</H1> +<H1><a name="Allegrocl_nn1"></a>16 SWIG and Allegro Common Lisp</H1> <!-- INDEX --> <div class="sectiontoc"> <ul> @@ -135,10 +135,10 @@ to it. </p> -<H2><a name="Allegrocl_nn2"></a>1.1 Basics</H2> +<H2><a name="Allegrocl_nn2"></a>16.1 Basics</H2> -<H3><a name="Allegrocl_nn3"></a>1.1.1 Running Swig</H3> +<H3><a name="Allegrocl_nn3"></a>16.1.1 Running Swig</H3> <p> @@ -360,7 +360,7 @@ the C++ wrapper will be what you then load into Allegro CL. </p> -<H3><a name="Allegrocl_nn4"></a>1.1.2 Command Line Options</H3> +<H3><a name="Allegrocl_nn4"></a>16.1.2 Command Line Options</H3> <p> @@ -396,7 +396,7 @@ functions</a> for more details. </p> -<H3><a name="Allegrocl_nn5"></a>1.1.3 Inserting user code into generated files</H3> +<H3><a name="Allegrocl_nn5"></a>16.1.3 Inserting user code into generated files</H3> <p> @@ -436,7 +436,7 @@ </p> -<H2><a name="Allegrocl_nn6"></a>1.2 Wrapping Overview</H2> +<H2><a name="Allegrocl_nn6"></a>16.2 Wrapping Overview</H2> <p> @@ -446,7 +446,7 @@ interested in generating an interface to C++. </p> -<H3><a name="Allegrocl_nn7"></a>1.2.1 Function Wrapping</H3> +<H3><a name="Allegrocl_nn7"></a>16.2.1 Function Wrapping</H3> <p> @@ -499,7 +499,7 @@ </pre> </div> -<H3><a name="Allegrocl_nn8"></a>1.2.2 Foreign Wrappers</H3> +<H3><a name="Allegrocl_nn8"></a>16.2.2 Foreign Wrappers</H3> <p> @@ -512,7 +512,7 @@ typemap. </p> -<H3><a name="Allegrocl_nn9"></a>1.2.3 FFI Wrappers</H3> +<H3><a name="Allegrocl_nn9"></a>16.2.3 FFI Wrappers</H3> <p> @@ -593,7 +593,7 @@ ff:def-foreign-call's. </p> -<H3><a name="Allegrocl_nn10"></a>1.2.4 Non-overloaded Defuns</H3> +<H3><a name="Allegrocl_nn10"></a>16.2.4 Non-overloaded Defuns</H3> <p> @@ -606,7 +606,7 @@ this function can be manipulated via the <tt>lout</tt> typemap. </p> -<H3><a name="Allegrocl_nn11"></a>1.2.5 Overloaded Defuns</H3> +<H3><a name="Allegrocl_nn11"></a>16.2.5 Overloaded Defuns</H3> <p> @@ -622,7 +622,7 @@ can be manipulated via the <tt>lout</tt> typemap. </p> -<H3><a name="Allegrocl_nn12"></a>1.2.6 What about constant and variable access?</H3> +<H3><a name="Allegrocl_nn12"></a>16.2.6 What about constant and variable access?</H3> <p> @@ -635,7 +635,7 @@ into the foreign module. </p> -<H3><a name="Allegrocl_nn13"></a>1.2.7 Object Wrapping</H3> +<H3><a name="Allegrocl_nn13"></a>16.2.7 Object Wrapping</H3> <p> @@ -657,7 +657,7 @@ foreign function interface. </p> -<H2><a name="Allegrocl_nn14"></a>1.3 Wrapping Details</H2> +<H2><a name="Allegrocl_nn14"></a>16.3 Wrapping Details</H2> <p> @@ -665,7 +665,7 @@ translated into lisp. </p> -<H3><a name="Allegrocl_nn15"></a>1.3.1 Namespaces</H3> +<H3><a name="Allegrocl_nn15"></a>16.3.1 Namespaces</H3> <p> @@ -742,7 +742,7 @@ function such as <tt>(car '(1 2 3)</tt>. </p> -<H3><a name="Allegrocl_nn16"></a>1.3.2 Constants</H3> +<H3><a name="Allegrocl_nn16"></a>16.3.2 Constants</H3> @@ -803,7 +803,7 @@ not use the <tt>-nocwrap</tt> command-line option. </p> -<H3><a name="Allegrocl_nn17"></a>1.3.3 Variables</H3> +<H3><a name="Allegrocl_nn17"></a>16.3.3 Variables</H3> <p> @@ -881,7 +881,7 @@ </pre> </div> -<H3><a name="Allegrocl_nn18"></a>1.3.4 Enumerations</H3> +<H3><a name="Allegrocl_nn18"></a>16.3.4 Enumerations</H3> <p> @@ -957,7 +957,7 @@ </pre> </div> -<H3><a name="Allegrocl_nn19"></a>1.3.5 Arrays</H3> +<H3><a name="Allegrocl_nn19"></a>16.3.5 Arrays</H3> <p> @@ -1105,10 +1105,10 @@ </pre> </div> -<H3><a name="Allegrocl_nn20"></a>1.3.6 Classes and Structs and Unions (oh my!)</H3> +<H3><a name="Allegrocl_nn20"></a>16.3.6 Classes and Structs and Unions (oh my!)</H3> -<H4><a name="Allegrocl_nn21"></a>1.3.6.1 CLOS wrapping of</H4> +<H4><a name="Allegrocl_nn21"></a>16.3.6.1 CLOS wrapping of</H4> <p> @@ -1123,7 +1123,7 @@ integer values. </p> -<H4><a name="Allegrocl_nn22"></a>1.3.6.2 CLOS Inheritance</H4> +<H4><a name="Allegrocl_nn22"></a>16.3.6.2 CLOS Inheritance</H4> <p> @@ -1136,7 +1136,7 @@ parameter. </p> -<H4><a name="Allegrocl_nn23"></a>1.3.6.3 Member fields and functions</H4> +<H4><a name="Allegrocl_nn23"></a>16.3.6.3 Member fields and functions</H4> <p> @@ -1152,7 +1152,7 @@ the interface does nothing for <tt>friend</tt> directives, </p> -<H4><a name="Allegrocl_nn24"></a>1.3.6.4 Why not directly access C++ classes using foreign types?</H4> +<H4><a name="Allegrocl_nn24"></a>16.3.6.4 Why not directly access C++ classes using foreign types?</H4> <p> @@ -1170,11 +1170,11 @@ use the more robust wrapper functions. </p> -<H3><a name="Allegrocl_nn25"></a>1.3.7 Templates</H3> +<H3><a name="Allegrocl_nn25"></a>16.3.7 Templates</H3> -<H4><a name="Allegrocl_nn26"></a>1.3.7.1 Generating wrapper code for templates</H4> +<H4><a name="Allegrocl_nn26"></a>16.3.7.1 Generating wrapper code for templates</H4> <p> @@ -1187,7 +1187,7 @@ directive. </p> -<H4><a name="Allegrocl_nn27"></a>1.3.7.2 Implicit Template instantiation</H4> +<H4><a name="Allegrocl_nn27"></a>16.3.7.2 Implicit Template instantiation</H4> <p> @@ -1197,7 +1197,7 @@ class schema. </p> -<H3><a name="Allegrocl_nn28"></a>1.3.8 Typedef, Templates, and Synonym Types</H3> +<H3><a name="Allegrocl_nn28"></a>16.3.8 Typedef, Templates, and Synonym Types</H3> <p> @@ -1277,7 +1277,7 @@ </pre> </div> -<H4><a name="Allegrocl_nn29"></a>1.3.8.1 Choosing a primary type</H4> +<H4><a name="Allegrocl_nn29"></a>16.3.8.1 Choosing a primary type</H4> <p> @@ -1298,7 +1298,7 @@ </li> </ul> -<H3><a name="Allegrocl_nn30"></a>1.3.9 Function overloading/Parameter defaulting</H3> +<H3><a name="Allegrocl_nn30"></a>16.3.9 Function overloading/Parameter defaulting</H3> <p> @@ -1461,7 +1461,7 @@ </pre> </div> -<H3><a name="Allegrocl_nn31"></a>1.3.10 Operator wrapping and Operator overloading</H3> +<H3><a name="Allegrocl_nn31"></a>16.3.10 Operator wrapping and Operator overloading</H3> <p> @@ -1607,7 +1607,7 @@ </pre> </div> -<H3><a name="Allegrocl_nn32"></a>1.3.11 Varargs</H3> +<H3><a name="Allegrocl_nn32"></a>16.3.11 Varargs</H3> <p> @@ -1628,7 +1628,7 @@ with other ways such functions can be wrapped. </p> -<H3><a name="Allegrocl_nn33"></a>1.3.12 C++ Exceptions</H3> +<H3><a name="Allegrocl_nn33"></a>16.3.12 C++ Exceptions</H3> <p> @@ -1640,7 +1640,7 @@ implemented. </p> -<H3><a name="Allegrocl_nn34"></a>1.3.13 Pass by value, pass by reference</H3> +<H3><a name="Allegrocl_nn34"></a>16.3.13 Pass by value, pass by reference</H3> <p> @@ -1652,7 +1652,7 @@ newly defined types. </p> -<H2><a name="Allegrocl_nn35"></a>1.4 Typemaps</H2> +<H2><a name="Allegrocl_nn35"></a>16.4 Typemaps</H2> <p> @@ -1663,7 +1663,7 @@ on <a href="Typemaps.html#Typemaps">Typemaps</a> for more information. </p> -<H3><a name="Allegrocl_nn36"></a>1.4.1 Code Generation in the C++ Wrapper</H3> +<H3><a name="Allegrocl_nn36"></a>16.4.1 Code Generation in the C++ Wrapper</H3> @@ -1693,7 +1693,7 @@ </pre> </div> -<H4><a name="Allegrocl_nn37"></a>1.4.1.1 IN Typemap</H4> +<H4><a name="Allegrocl_nn37"></a>16.4.1.1 IN Typemap</H4> <p> @@ -1728,7 +1728,7 @@ </pre> </div> -<H4><a name="Allegrocl_nn38"></a>1.4.1.2 OUT Typemap</H4> +<H4><a name="Allegrocl_nn38"></a>16.4.1.2 OUT Typemap</H4> <p> @@ -1752,7 +1752,7 @@ </pre> </div> -<H4><a name="Allegrocl_nn39"></a>1.4.1.3 CTYPE Typemap</H4> +<H4><a name="Allegrocl_nn39"></a>16.4.1.3 CTYPE Typemap</H4> <p> @@ -1784,7 +1784,7 @@ these <a href="Typemaps.html#Typemaps_nn25">common typemaps</a> here. </p> -<H3><a name="Allegrocl_nn40"></a>1.4.2 Code generation in Lisp wrappers</H3> +<H3><a name="Allegrocl_nn40"></a>16.4.2 Code generation in Lisp wrappers</H3> <p> @@ -1803,7 +1803,7 @@ <a href="#Allegrocl_nn15">16.3.1 Namespaces</a> for details. </p> -<H4><a name="Allegrocl_nn41"></a>1.4.2.1 LIN Typemap</H4> +<H4><a name="Allegrocl_nn41"></a>16.4.2.1 LIN Typemap</H4> <p> @@ -1846,7 +1846,7 @@ </pre> </div> -<H4><a name="Allegrocl_nn42"></a>1.4.2.2 LOUT Typemap</H4> +<H4><a name="Allegrocl_nn42"></a>16.4.2.2 LOUT Typemap</H4> <p> @@ -1889,7 +1889,7 @@ </pre> </div> -<H4><a name="Allegrocl_nn43"></a>1.4.2.3 FFITYPE Typemap</H4> +<H4><a name="Allegrocl_nn43"></a>16.4.2.3 FFITYPE Typemap</H4> @@ -1939,7 +1939,7 @@ </pre> </div> -<H4><a name="Allegrocl_nn44"></a>1.4.2.4 LISPTYPE Typemap</H4> +<H4><a name="Allegrocl_nn44"></a>16.4.2.4 LISPTYPE Typemap</H4> <p> @@ -1959,7 +1959,7 @@ </pre> </div> -<H4><a name="Allegrocl_nn45"></a>1.4.2.5 LISPCLASS Typemap</H4> +<H4><a name="Allegrocl_nn45"></a>16.4.2.5 LISPCLASS Typemap</H4> <p> @@ -1983,7 +1983,7 @@ </pre> </div> -<H3><a name="Allegrocl_nn46"></a>1.4.3 Modifying SWIG behavior using typemaps</H3> +<H3><a name="Allegrocl_nn46"></a>16.4.3 Modifying SWIG behavior using typemaps</H3> <p> @@ -2017,10 +2017,10 @@ </pre> </div> -<H2><a name="Allegrocl_nn47"></a>1.5 Identifier Converter functions</H2> +<H2><a name="Allegrocl_nn47"></a>16.5 Identifier Converter functions</H2> -<H3><a name="Allegrocl_nn48"></a>1.5.1 Creating symbols in the lisp environment</H3> +<H3><a name="Allegrocl_nn48"></a>16.5.1 Creating symbols in the lisp environment</H3> <p> @@ -2041,11 +2041,11 @@ of arguments. </p> -<H3><a name="Allegrocl_nn49"></a>1.5.2 Existing identifier-converter functions</H3> +<H3><a name="Allegrocl_nn49"></a>16.5.2 Existing identifier-converter functions</H3> <p>Two basic identifier routines have been defined. -<H4><a name="Allegrocl_nn50"></a>1.5.2.1 identifier-convert-null</H4> +<H4><a name="Allegrocl_nn50"></a>16.5.2.1 identifier-convert-null</H4> <p> @@ -2054,7 +2054,7 @@ strings, from which a symbol will be created. </p> -<H4><a name="Allegrocl_nn51"></a>1.5.2.2 identifier-convert-lispify</H4> +<H4><a name="Allegrocl_nn51"></a>16.5.2.2 identifier-convert-lispify</H4> <p> @@ -2063,7 +2063,7 @@ same symbol transformations. </p> -<H4><a name="Allegrocl_nn52"></a>1.5.2.3 Default identifier to symbol conversions</H4> +<H4><a name="Allegrocl_nn52"></a>16.5.2.3 Default identifier to symbol conversions</H4> <p> @@ -2072,7 +2072,7 @@ default naming conventions. </p> -<H3><a name="Allegrocl_nn53"></a>1.5.3 Defining your own identifier-converter</H3> +<H3><a name="Allegrocl_nn53"></a>16.5.3 Defining your own identifier-converter</H3> <p> @@ -2128,7 +2128,7 @@ this identifier. </p> -<H3><a name="Allegrocl_nn54"></a>1.5.4 Instructing SWIG to use a particular identifier-converter</H3> +<H3><a name="Allegrocl_nn54"></a>16.5.4 Instructing SWIG to use a particular identifier-converter</H3> <p> Modified: trunk/Doc/Manual/Arguments.html =================================================================== --- trunk/Doc/Manual/Arguments.html 2008-03-02 22:33:36 UTC (rev 10293) +++ trunk/Doc/Manual/Arguments.html 2008-03-02 22:41:58 UTC (rev 10294) @@ -6,7 +6,7 @@ </head> <body bgcolor="#ffffff"> -<H1><a name="Arguments"></a>2 Argument Handling</H1> +<H1><a name="Arguments"></a>9 Argument Handling</H1> <!-- INDEX --> <div class="sectiontoc"> <ul> @@ -44,7 +44,7 @@ describes some of the techniques for doing this. </p> -<H2><a name="Arguments_nn2"></a>2.1 The typemaps.i library</H2> +<H2><a name="Arguments_nn2"></a>9.1 The typemaps.i library</H2> <p> @@ -52,7 +52,7 @@ change certain properties of argument conversion. </p> -<H3><a name="Arguments_nn3"></a>2.1.1 Introduction</H3> +<H3><a name="Arguments_nn3"></a>9.1.1 Introduction</H3> <p> @@ -196,7 +196,7 @@ </pre> </div> -<H3><a name="Arguments_nn4"></a>2.1.2 Input parameters</H3> +<H3><a name="Arguments_nn4"></a>9.1.2 Input parameters</H3> <p> @@ -249,7 +249,7 @@ result = add(3,4) </pre></div> -<H3><a name="Arguments_nn5"></a>2.1.3 Output parameters</H3> +<H3><a name="Arguments_nn5"></a>9.1.3 Output parameters</H3> <p> @@ -316,7 +316,7 @@ </pre> </div> -<H3><a name="Arguments_nn6"></a>2.1.4 Input/Output parameters</H3> +<H3><a name="Arguments_nn6"></a>9.1.4 Input/Output parameters</H3> <p> @@ -381,7 +381,7 @@ SWIG. Backwards compatibility is preserved, but deprecated. </p> -<H3><a name="Arguments_nn7"></a>2.1.5 Using different names</H3> +<H3><a name="Arguments_nn7"></a>9.1.5 Using different names</H3> <p> @@ -415,7 +415,7 @@ file or a matching <tt>%clear</tt> declaration. </p> -<H2><a name="Arguments_nn8"></a>2.2 Applying constraints to input values</H2> +<H2><a name="Arguments_nn8"></a>9.2 Applying constraints to input values</H2> <p> @@ -425,7 +425,7 @@ can be accomplished including the <tt>constraints.i</tt> library file. </p> -<H3><a name="Arguments_nn9"></a>2.2.1 Simple constraint example</H3> +<H3><a name="Arguments_nn9"></a>9.2.1 Simple constraint example</H3> <p> @@ -451,7 +451,7 @@ exception will be raised. As a result, it is possible to catch bad values, prevent mysterious program crashes and so on.</p> -<H3><a name="Arguments_nn10"></a>2.2.2 Constraint methods</H3> +<H3><a name="Arguments_nn10"></a>9.2.2 Constraint methods</H3> <p> @@ -467,7 +467,7 @@ </pre></div> -<H3><a name="Arguments_nn11"></a>2.2.3 Applying constraints to new datatypes</H3> +<H3><a name="Arguments_nn11"></a>9.2.3 Applying constraints to new datatypes</H3> <p> Modified: trunk/Doc/Manual/CSharp.html =================================================================== --- trunk/Doc/Manual/CSharp.html 2008-03-02 22:33:36 UTC (rev 10293) +++ trunk/Doc/Manual/CSharp.html 2008-03-02 22:41:58 UTC (rev 10294) @@ -5,7 +5,7 @@ <link rel="stylesheet" type="text/css" href="style.css"> </head> <body bgcolor="#FFFFFF"> -<H1><a name="CSharp"></a>5 SWIG and C#</H1> +<H1><a name="CSharp"></a>17 SWIG and C#</H1> <!-- INDEX --> <div class="sectiontoc"> <ul> @@ -39,7 +39,7 @@ -<H2><a name="csharp_introduction"></a>5.1 Introduction</H2> +<H2><a name="csharp_introduction"></a>17.1 Introduction</H2> <p> @@ -59,7 +59,7 @@ Monodoc, available from the Mono project, has a very useful section titled <a href="http://www.mono-project.com/Interop_with_Native_Libraries">Interop with native libraries</a>. </p> -<H2><a name="csharp_differences_java"></a>5.2 Differences to the Java module</H2> +<H2><a name="csharp_differences_java"></a>17.2 Differences to the Java module</H2> <p> @@ -397,7 +397,7 @@ <a href="http://www.cygwin.com">Cygwin</a> or <a href="http://www.mingw.org">MinGW</a> environment for automatic configuration of the example makefiles. Any one of the three C# compilers (Portable.NET, Mono or Microsoft) can be detected from within a Cygwin or Mingw environment if installed in your path. -<H2><a name="csharp_exceptions"></a>5.3 C# Exceptions</H2> +<H2><a name="csharp_exceptions"></a>17.3 C# Exceptions</H2> <p> @@ -494,7 +494,7 @@ </p> -<H3><a name="csharp_exception_example_check_typemap"></a>5.3.1 C# exception example using "check" typemap</H3> +<H3><a name="csharp_exception_example_check_typemap"></a>17.3.1 C# exception example using "check" typemap</H3> <p> @@ -676,7 +676,7 @@ Actually it will issue this warning for any function beginning with <tt>SWIG_CSharpSetPendingException</tt>. </P> -<H3><a name="csharp_exception_example_percent_exception"></a>5.3.2 C# exception example using %exception</H3> +<H3><a name="csharp_exception_example_percent_exception"></a>17.3.2 C# exception example using %exception</H3> <p> @@ -741,7 +741,7 @@ </pre> </div> -<H3><a name="csharp_exception_example_exception_specifications"></a>5.3.3 C# exception example using exception specifications</H3> +<H3><a name="csharp_exception_example_exception_specifications"></a>17.3.3 C# exception example using exception specifications</H3> <p> @@ -798,7 +798,7 @@ Multiple catch handlers are generated should there be more than one exception specifications declared. </p> -<H3><a name="csharp_custom_application_exception"></a>5.3.4 Custom C# ApplicationException example</H3> +<H3><a name="csharp_custom_application_exception"></a>17.3.4 Custom C# ApplicationException example</H3> <p> @@ -932,7 +932,7 @@ </pre> </div> -<H2><a name="csharp_directors"></a>5.4 C# Directors</H2> +<H2><a name="csharp_directors"></a>17.4 C# Directors</H2> <p> @@ -945,7 +945,7 @@ However, the <a href="Java.html#java_directors">Java directors</a> section should also be read in order to gain more insight into directors. </p> -<H3><a name="csharp_directors_example"></a>5.4.1 Directors example</H3> +<H3><a name="csharp_directors_example"></a>17.4.1 Directors example</H3> <p> @@ -1066,7 +1066,7 @@ </pre> </div> -<H3><a name="csharp_directors_implementation"></a>5.4.2 Directors implementation</H3> +<H3><a name="csharp_directors_implementation"></a>17.4.2 Directors implementation</H3> <p> @@ -1252,7 +1252,7 @@ </pre> </div> -<H3><a name="csharp_director_caveats"></a>5.4.3 Director caveats</H3> +<H3><a name="csharp_director_caveats"></a>17.4.3 Director caveats</H3> <p> @@ -1300,7 +1300,7 @@ should pass the call on to <tt>CSharpDefaults.DefaultMethod(int)</tt>using the C++ default value, as shown above. </p> -<H2><a name="csharp_typemap_examples"></a>5.5 C# Typemap examples</H2> +<H2><a name="csharp_typemap_examples"></a>17.5 C# Typemap examples</H2> This section includes a few examples of typemaps. For more examples, you @@ -1308,7 +1308,7 @@ the SWIG library. -<H3><a name="csharp_memory_management_member_variables"></a>5.5.1 Memory management when returning references to member variables</H3> +<H3><a name="csharp_memory_management_member_variables"></a>17.5.1 Memory management when returning references to member variables</H3> <p> @@ -1432,7 +1432,7 @@ Note the <tt>addReference</tt> call. </p> -<H3><a name="csharp_memory_management_objects"></a>5.5.2 Memory management for objects passed to the C++ layer</H3> +<H3><a name="csharp_memory_management_objects"></a>17.5.2 Memory management for objects passed to the C++ layer</H3> <p> @@ -1551,7 +1551,7 @@ </div> -<H3><a name="csharp_date_marshalling"></a>5.5.3 Date marshalling using the csin typemap and associated attributes</H3> +<H3><a name="csharp_date_marshalling"></a>17.5.3 Date marshalling using the csin typemap and associated attributes</H3> <p> @@ -1788,7 +1788,7 @@ </pre> </div> -<H3><a name="csharp_date_properties"></a>5.5.4 A date example demonstrating marshalling of C# properties</H3> +<H3><a name="csharp_date_properties"></a>17.5.4 A date example demonstrating marshalling of C# properties</H3> <p> @@ -1888,7 +1888,7 @@ </ul> -<H3><a name="csharp_partial_classes"></a>5.5.5 Turning wrapped classes into partial classes</H3> +<H3><a name="csharp_partial_classes"></a>17.5.5 Turning wrapped classes into partial classes</H3> <p> @@ -1988,7 +1988,7 @@ The following example is an alternative approach to adding managed code to the generated proxy class. </p> -<H3><a name="csharp_extending_proxy_class"></a>5.5.6 Extending proxy classes with additional C# code</H3> +<H3><a name="csharp_extending_proxy_class"></a>17.5.6 Extending proxy classes with additional C# code</H3> <p> Modified: trunk/Doc/Manual/Chicken.html =================================================================== --- trunk/Doc/Manual/Chicken.html 2008-03-02 22:33:36 UTC (rev 10293) +++ trunk/Doc/Manual/Chicken.html 2008-03-02 22:41:58 UTC (rev 10294) @@ -8,7 +8,7 @@ <body bgcolor="#ffffff"> -<H1><a name="Chicken"></a>3 SWIG and Chicken</H1> +<H1><a name="Chicken"></a>18 SWIG and Chicken</H1> <!-- INDEX --> <div class="sectiontoc"> <ul> @@ -72,7 +72,7 @@ </p> -<H2><a name="Chicken_nn2"></a>3.1 Preliminaries</H2> +<H2><a name="Chicken_nn2"></a>18.1 Preliminaries</H2> <p> @@ -90,7 +90,7 @@ CHICKEN. </p> -<H3><a name="Chicken_nn3"></a>3.1.1 Running SWIG in C mode</H3> +<H3><a name="Chicken_nn3"></a>18.1.1 Running SWIG in C mode</H3> <p> @@ -123,7 +123,7 @@ object files and linked into your project. </p> -<H3><a name="Chicken_nn4"></a>3.1.2 Running SWIG in C++ mode</H3> +<H3><a name="Chicken_nn4"></a>18.1.2 Running SWIG in C++ mode</H3> <p> @@ -152,10 +152,10 @@ object files and linked into your project. </p> -<H2><a name="Chicken_nn5"></a>3.2 Code Generation</H2> +<H2><a name="Chicken_nn5"></a>18.2 Code Generation</H2> -<H3><a name="Chicken_nn6"></a>3.2.1 Naming Conventions</H3> +<H3><a name="Chicken_nn6"></a>18.2.1 Naming Conventions</H3> <p> @@ -171,7 +171,7 @@ <tt>%rename</tt> SWIG directive in the SWIG interface file. </p> -<H3><a name="Chicken_nn7"></a>3.2.2 Modules</H3> +<H3><a name="Chicken_nn7"></a>18.2.2 Modules</H3> <p> @@ -193,7 +193,7 @@ (uses <i>modulename</i>))</code> CHICKEN Scheme form. </p> -<H3><a name="Chicken_nn8"></a>3.2.3 Constants and Variables</H3> +<H3><a name="Chicken_nn8"></a>18.2.3 Constants and Variables</H3> <p> @@ -230,7 +230,7 @@ for info on how to apply the %feature. </p> -<H3><a name="Chicken_nn9"></a>3.2.4 Functions</H3> +<H3><a name="Chicken_nn9"></a>18.2.4 Functions</H3> <p> @@ -249,7 +249,7 @@ parameters). The return values can then be accessed with <code>(call-with-values)</code>. </p> -<H3><a name="Chicken_nn10"></a>3.2.5 Exceptions</H3> +<H3><a name="Chicken_nn10"></a>18.2.5 Exceptions</H3> <p>The SWIG chicken module has support for exceptions thrown from @@ -291,7 +291,7 @@ </pre></div> -<H2><a name="Chicken_nn11"></a>3.3 TinyCLOS</H2> +<H2><a name="Chicken_nn11"></a>18.3 TinyCLOS</H2> <p> @@ -334,7 +334,7 @@ </p> -<H2><a name="Chicken_nn12"></a>3.4 Linkage</H2> +<H2><a name="Chicken_nn12"></a>18.4 Linkage</H2> <p> @@ -355,7 +355,7 @@ </p> -<H3><a name="Chicken_nn13"></a>3.4.1 Static binary or shared library linked at compile time</H3> +<H3><a name="Chicken_nn13"></a>18.4.1 Static binary or shared library linked at compile time</H3> <p>We can easily use csc to build a static binary.</p> @@ -396,7 +396,7 @@ be run with <tt>csi</tt>. </p> -<H3><a name="Chicken_nn14"></a>3.4.2 Building chicken extension libraries</H3> +<H3><a name="Chicken_nn14"></a>18.4.2 Building chicken extension libraries</H3> <p>Building a shared library like in the above section only works if the library @@ -454,7 +454,7 @@ <p>See the <tt>Examples/chicken/egg</tt> directory in the SWIG source for an example that builds two eggs, one using the first method and one using the second method.</p> -<H3><a name="Chicken_nn15"></a>3.4.3 Linking multiple SWIG modules with TinyCLOS</H3> +<H3><a name="Chicken_nn15"></a>18.4.3 Linking multiple SWIG modules with TinyCLOS</H3> <p>Linking together multiple modules that share type information using the <code>%import</code> @@ -478,7 +478,7 @@ To create an extension library or an egg, just create a <tt>module_load.scm</tt> file that <code>(declare (uses ...))</code> all the modules.</p> -<H2><a name="Chicken_nn16"></a>3.5 Typemaps</H2> +<H2><a name="Chicken_nn16"></a>18.5 Typemaps</H2> <p> @@ -487,7 +487,7 @@ <code>Lib/chicken/chicken.swg</code>. </p> -<H2><a name="Chicken_nn17"></a>3.6 Pointers</H2> +<H2><a name="Chicken_nn17"></a>18.6 Pointers</H2> <p> @@ -520,7 +520,7 @@ type. flags is either zero or SWIG_POINTER_DISOWN (see below). </p> -<H3><a name="collection"></a>3.6.1 Garbage collection</H3> +<H3><a name="collection"></a>18.6.1 Garbage collection</H3> <p>If the owner flag passed to <code>SWIG_NewPointerObj</code> is 1, <code>NewPointerObj</code> will add a @@ -551,7 +551,7 @@ must be called manually. </p> -<H2><a name="Chicken_nn18"></a>3.7 Unsupported features and known problems</H2> +<H2><a name="Chicken_nn18"></a>18.7 Unsupported features and known problems</H2> <ul> @@ -561,7 +561,7 @@ <a href="SWIGPlus.html#SWIGPlus_default_args">%feature(compactdefaultargs)</a>.</li> </ul> -<H3><a name="Chicken_nn19"></a>3.7.1 TinyCLOS problems with Chicken version <= 1.92</H3> +<H3><a name="Chicken_nn19"></a>18.7.1 TinyCLOS problems with Chicken version <= 1.92</H3> <p>In Chicken versions equal to or below 1.92, TinyCLOS has a limitation such that generic methods do not properly work on methods Modified: trunk/Doc/Manual/Contents.html =================================================================== --- trunk/Doc/Manual/Contents.html 2008-03-02 22:33:36 UTC (rev 10293) +++ trunk/Doc/Manual/Contents.html 2008-03-02 22:41:58 UTC (rev 10294) @@ -9,11 +9,498 @@ <p> -<h3><a href="Allegrocl.html#Allegrocl">1 SWIG and Allegro Common Lisp</a></h3> +<h3><a href="Preface.html#Preface">1 Preface</a></h3> <!-- INDEX --> <div class="sectiontoc"> <ul> +<li><a href="Preface.html#Preface_nn2">Introduction</a> +<li><a href="Preface.html#Preface_nn3">Special Introduction for Version 1.3</a> +<li><a href="Preface.html#Preface_nn4">SWIG Versions</a> +<li><a href="Preface.html#Preface_nn5">SWIG resources</a> +<li><a href="Preface.html#Preface_nn6">Prerequisites</a> +<li><a href="Preface.html#Preface_nn7">Organization of this manual</a> +<li><a href="Preface.html#Preface_nn8">How to avoid reading the manual</a> +<li><a href="Preface.html#Preface_nn9">Backwards Compatibility</a> +<li><a href="Preface.html#Preface_nn10">Credits</a> +<li><a href="Preface.html#Preface_nn11">Bug reports</a> +</ul> +</div> +<!-- INDEX --> + +<h3><a href="Introduction.html#Introduction">2 Introduction</a></h3> + +<!-- INDEX --> +<div class="sectiontoc"> +<ul> +<li><a href="Introduction.html#Introduction_nn2">What is SWIG?</a> +<li><a href="Introduction.html#Introduction_nn3">Why use SWIG?</a> +<li><a href="Introduction.html#Introduction_nn4">A SWIG example</a> +<ul> +<li><a href="Introduction.html#Introduction_nn5">SWIG interface file</a> +<li><a href="Introduction.html#Introduction_nn6">The swig command</a> +<li><a href="Introduction.html#Introduction_nn7">Building a Perl5 module</a> +<li><a href="Introduction.html#Introduction_nn8">Building a Python module</a> +<li><a href="Introduction.html#Introduction_nn9">Shortcuts</a> +</ul> +<li><a href="Introduction.html#Introduction_nn10">Supported C/C++ language features</a> +<li><a href="Introduction.html#Introduction_nn11">Non-intrusive interface building</a> +<li><a href="Introduction.html#Introduction_build_system">Incorporating SWIG into a build system</a> +<li><a href="Introduction.html#Introduction_nn12">Hands off code generation</a> +<li><a href="Introduction.html#Introduction_nn13">SWIG and freedom</a> +</ul> +</div> +<!-- INDEX --> + +<h3><a href="Windows.html#Windows">3 Getting started on Windows </a></h3> + +<!-- INDEX --> +<div class="sectiontoc"> +<ul> +<li><a href="Windows.html#Windows_installation">Installation on Windows</a> +<ul> +<li><a href="Windows.html#Windows_executable">Windows Executable</a> +</ul> +<li><a href="Windows.html#Windows_examples">SWIG Windows Examples</a> +<ul> +<li><a href="Windows.html#Windows_visual_studio">Instructions for using the Examples with Visual Studio</a> +<ul> +<li><a href="Windows.html#Windows_csharp">C#</a> +<li><a href="Windows.html#Windows_java">Java</a> +<li><a href="Windows.html#Windows_perl">Perl</a> +<li><a href="Windows.html#Windows_python">Python</a> +<li><a href="Windows.html#Windows_tcl">TCL</a> +<li><a href="Windows.html#Windows_r">R</a> +<li><a href="Windows.html#Windows_ruby">Ruby</a> +</ul> +<li><a href="Windows.html#Windows_other_compilers">Instructions for using the Examples with other compilers</a> +</ul> +<li><a href="Windows.html#Windows_cygwin_mingw">SWIG on Cygwin and MinGW</a> +<ul> +<li><a href="Windows.html#Windows_swig_exe">Building swig.exe on Windows</a> +<ul> +<li><a href="Windows.html#Windows_mingw_msys">Building swig.exe using MinGW and MSYS</a> +<li><a href="Windows.html#Windows_cygwin">Building swig.exe using Cygwin</a> +<li><a href="Windows.html#Windows_building_alternatives">Building swig.exe alternatives</a> +</ul> +<li><a href="Windows.html#Windows_examples_cygwin">Running the examples on Windows using Cygwin</a> +</ul> +<li><a href="Windows.html#Windows_interface_file">Microsoft extensions and other Windows quirks</a> +</ul> +</div> +<!-- INDEX --> + +<h3><a href="Scripting.html#Scripting">4 Scripting Languages</a></h3> + +<!-- INDEX --> +<div class="sectiontoc"> +<ul> +<li><a href="Scripting.html#Scripting_nn2">The two language view of the world</a> +<li><a href="Scripting.html#Scripting_nn3">How does a scripting language talk to C?</a> +<ul> +<li><a href="Scripting.html#Scripting_nn4">Wrapper functions</a> +<li><a href="Scripting.html#Scripting_nn5">Variable linking</a> +<li><a href="Scripting.html#Scripting_nn6">Constants</a> +<li><a href="Scripting.html#Scripting_nn7">Structures and classes</a> +<li><a href="Scripting.html#Scripting_nn8">Proxy classes</a> +</ul> +<li><a href="Scripting.html#Scripting_nn9">Building scripting language extensions</a> +<ul> +<li><a href="Scripting.html#Scripting_nn10">Shared libraries and dynamic loading</a> +<li><a href="Scripting.html#Scripting_nn11">Linking with shared libraries</a> +<li><a href="Scripting.html#Scripting_nn12">Static linking</a> +</ul> +</ul> +</div> +<!-- INDEX --> + +<h3><a href="SWIG.html#SWIG">5 SWIG Basics</a></h3> + +<!-- INDEX --> +<div class="sectiontoc"> +<ul> +<li><a href="SWIG.html#SWIG_nn2">Running SWIG</a> +<ul> +<li><a href="SWIG.html#SWIG_nn3">Input format</a> +<li><a href="SWIG.html#output">SWIG Output</a> +<li><a href="SWIG.html#SWIG_nn5">Comments</a> +<li><a href="SWIG.html#SWIG_nn6">C Preprocessor</a> +<li><a href="SWIG.html#SWIG_nn7">SWIG Directives</a> +<li><a href="SWIG.html#SWIG_nn8">Parser Limitations</a> +</ul> +<li><a href="SWIG.html#SWIG_nn9">Wrapping Simple C Declarations</a> +<ul> +<li><a href="SWIG.html#SWIG_nn10">Basic Type Handling</a> +<li><a href="SWIG.html#SWIG_nn11">Global Variables</a> +<li><a href="SWIG.html#SWIG_nn12">Constants</a> +<li><a href="SWIG.html#SWIG_nn13">A brief word about <tt>const</tt></a> +<li><a href="SWIG.html#SWIG_nn14">A cautionary tale of <tt>char *</tt></a> +</ul> +<li><a href="SWIG.html#SWIG_nn15">Pointers and complex objects</a> +<ul> +<li><a href="SWIG.html#SWIG_nn16">Simple pointers</a> +<li><a href="SWIG.html#SWIG_nn17">Run time pointer type checking</a> +<li><a href="SWIG.html#SWIG_nn18">Derived types, structs, and classes</a> +<li><a href="SWIG.html#SWIG_nn19">Undefined datatypes</a> +<li><a href="SWIG.html#SWIG_nn20">Typedef</a> +</ul> +<li><a href="SWIG.html#SWIG_nn21">Other Practicalities</a> +<ul> +<li><a href="SWIG.html#SWIG_nn22">Passing structures by value</a> +<li><a href="SWIG.html#SWIG_nn23">Return by value</a> +<li><a href="SWIG.html#SWIG_nn24">Linking to structure variables</a> +<li><a href="SWIG.html#SWIG_nn25">Linking to <tt>char *</tt></a> +<li><a href="SWIG.html#SWIG_nn26">Arrays</a> +<li><a href="SWIG.html#SWIG_readonly_variables">Creating read-only variables</a> +<li><a href="SWIG.html#SWIG_rename_ignore">Renaming and ignoring declarations</a> +<li><a href="SWIG.html#SWIG_default_args">Default/optional arguments</a> +<li><a href="SWIG.html#SWIG_nn30">Pointers to functions and callbacks</a> +</ul> +<li><a href="SWIG.html#SWIG_nn31">Structures and unions</a> +<ul> +<li><a href="SWIG.html#SWIG_nn32">Typedef and structures</a> +<li><a href="SWIG.html#SWIG_nn33">Character strings and structures</a> +<li><a href="SWIG.html#SWIG_nn34">Array members</a> +<li><a href="SWIG.html#SWIG_structure_data_members">Structure data members</a> +<li><a href="SWIG.html#SWIG_nn36">C constructors and destructors </a> +<li><a href="SWIG.html#SWIG_adding_member_functions">Adding member functions to C structures</a> +<li><a href="SWIG.html#SWIG_nested_structs">Nested structures</a> +<li><a href="SWIG.html#SWIG_nn39">Other things to note about structure wrapping</a> +</ul> +<li><a href="SWIG.html#SWIG_nn40">Code Insertion</a> +<ul> +<li><a href="SWIG.html#SWIG_nn41">The output of SWIG</a> +<li><a href="SWIG.html#SWIG_nn42">Code insertion blocks</a> +<li><a href="SWIG.html#SWIG_nn43">Inlined code blocks</a> +<li><a href="SWIG.html#SWIG_nn44">Initialization blocks</a> +</ul> +<li><a href="SWIG.html#SWIG_nn45">An Interface Building Strategy</a> +<ul> +<li><a href="SWIG.html#SWIG_nn46">Preparing a C program for SWIG</a> +<li><a href="SWIG.html#SWIG_nn47">The SWIG interface file</a> +<li><a href="SWIG.html#SWIG_nn48">Why use separate interface files?</a> +<li><a href="SWIG.html#SWIG_nn49">Getting the right header files</a> +<li><a href="SWIG.html#SWIG_nn50">What to do with main()</a> +</ul> +</ul> +</div> +<!-- INDEX --> + +<h3><a href="SWIGPlus.html#SWIGPlus">6 SWIG and C++</a></h3> + +<!-- INDEX --> +<div class="sectiontoc"> +<ul> +<li><a href="SWIGPlus.html#SWIGPlus_nn2">Comments on C++ Wrapping</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn3">Approach</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn4">Supported C++ features</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn5">Command line options and compilation</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn38">Proxy classes</a> +<ul> +<li><a href="SWIGPlus.html#SWIGPlus_nn39">Construction of proxy classes</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn40">Resource management in proxies</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn41">Language specific details</a> +</ul> +<li><a href="SWIGPlus.html#SWIGPlus_nn6">Simple C++ wrapping</a> +<ul> +<li><a href="SWIGPlus.html#SWIGPlus_nn7">Constructors and destructors</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn8">Default constructors, copy constructors and implicit destructors</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn9">When constructor wrappers aren't created</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn10">Copy constructors</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn11">Member functions</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn12">Static members</a> +<li><a href="SWIGPlus.html#SWIGPlus_member_data">Member data</a> +</ul> +<li><a href="SWIGPlus.html#SWIGPlus_default_args">Default arguments</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn15">Protection</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn16">Enums and constants</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn17">Friends</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn18">References and pointers</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn19">Pass and return by value</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn20">Inheritance</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn21">A brief discussion of multiple inheritance, pointers, and type checking</a> +<li><a href="SWIGPlus.html#SWIGPlus_overloaded_methods">Wrapping Overloaded Functions and Methods</a> +<ul> +<li><a href="SWIGPlus.html#SWIGPlus_nn24">Dispatch function generation</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn25">Ambiguity in Overloading</a> +<li><a href="SWIGPlus.html#ambiguity_resolution_renaming">Ambiguity resolution and renaming</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn27">Comments on overloading</a> +</ul> +<li><a href="SWIGPlus.html#SWIGPlus_nn28">Wrapping overloaded operators</a> +<li><a href="SWIGPlus.html#SWIGPlus_class_extension">Class extension</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn30">Templates</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn31">Namespaces</a> +<li><a href="SWIGPlus.html#SWIGPlus_renaming_templated_types_namespaces">Renaming templated types in namespaces</a> +<li><a href="SWIGPlus.html#SWIGPlus_exception_specifications">Exception specifications</a> +<li><a href="SWIGPlus.html#SWIGPlus_catches">Exception handling with %catches</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn33">Pointers to Members</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn34">Smart pointers and operator->()</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn35">Using declarations and inheritance</a> +<li><a href="SWIGPlus.html#SWIGPlus_nested_classes">Nested classes</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn37">A brief rant about const-correctness</a> +<li><a href="SWIGPlus.html#SWIGPlus_nn42">Where to go for more information</a> +</ul> +</div> +<!-- INDEX --> + +<h3><a href="Preprocessor.html#Preprocessor">7 Preprocessing</a></h3> + +<!-- INDEX --> +<div class="sectiontoc"> +<ul> +<li><a href="Preprocessor.html#Preprocessor_nn2">File inclusion</a> +<li><a href="Preprocessor.html#Preprocessor_nn3">File imports</a> +<li><a href="Preprocessor.html#Preprocessor_condition_compilation">Conditional Compilation</a> +<li><a href="Preprocessor.html#Preprocessor_nn5">Macro Expansion</a> +<li><a href="Preprocessor.html#Preprocessor_nn6">SWIG Macros</a> +<li><a href="Preprocessor.html#Preprocessor_nn7">C99 and GNU Extensions</a> +<li><a href="Preprocessor.html#Preprocessor_nn8">Preprocessing and %{ ... %} & " ... " delimiters</a> +<li><a href="Preprocessor.html#Preprocessor_nn9">Preprocessing and { ... } delimiters</a> +<li><a href="Preprocessor.html#Preprocessor_typemap_delimiters">Preprocessor and Typemaps</a> +<li><a href="Preprocessor.html#Preprocessor_nn10">Viewing preprocessor output</a> +<li><a href="Preprocessor.html#Preprocessor_warning_error">The #error and #warning directives</a> +</ul> +</div> +<!-- INDEX --> + +<h3><a href="Library.html#Library">8 SWIG library</a></h3> + +<!-- INDEX --> +<div class="sectiontoc"> +<ul> +<li><a href="Library.html#Library_nn2">The %include directive and library search path</a> +<li><a href="Library.html#Library_nn3">C Arrays and Pointers</a> +<ul> +<li><a href="Library.html#Library_nn4">cpointer.i</a> +<li><a href="Library.html#Library_nn5">carrays.i</a> +<li><a href="Library.html#Library_nn6">cmalloc.i</a> +<li><a href="Library.html#Library_nn7">cdata.i</a> +</ul> +<li><a href="Library.html#Library_nn8">C String Handling</a> +<ul> +<li><a href="Library.html#Library_nn9">Default string handling</a> +<li><a href="Library.html#Library_nn10">Passing binary data</a> +<li><a href="Library.html#Library_nn11">Using %newobject to release memory</a> +<li><a href="Library.html#Library_nn12">cstring.i</a> +</ul> +<li><a href="Library.html#Library_stl_cpp_library">STL/C++ Library</a> +<ul> +<li><a href="Library.html#Library_nn14">std_string.i</a> +<li><a href="Library.html#Library_nn15">std_vector.i</a> +<li><a href="Library.html#Library_stl_exceptions">STL exceptions</a> +</ul> +<li><a href="Library.html#Library_nn16">Utility Libraries</a> +<ul> +<li><a href="Library.html#Library_nn17">exception.i</a> +</ul> +</ul> +</div> +<!-- INDEX --> + +<h3><a href="Arguments.html#Arguments">9 Argument Handling</a></h3> + +<!-- INDEX --> +<div class="sectiontoc"> +<ul> +<li><a href="Arguments.html#Arguments_nn2">The typemaps.i library</a> +<ul> +<li><a href="Arguments.html#Arguments_nn3">Introduction</a> +<li><a href="Arguments.html#Arguments_nn4">Input parameters</a> +<li><a href="Arguments.html#Arguments_nn5">Output parameters</a> +<li><a href="Arguments.html#Arguments_nn6">Input/Output parameters</a> +<li><a href="Arguments.html#Arguments_nn7">Using different names</a> +</ul> +<li><a href="Arguments.html#Arguments_nn8">Applying constraints to input values</a> +<ul> +<li><a href="Arguments.html#Arguments_nn9">Simple constraint example</a> +<li><a href="Arguments.html#Arguments_nn10">Constraint methods</a> +<li><a href="Arguments.html#Arguments_nn11">Applying constraints to new datatypes</a> +</ul> +</ul> +</div> +<!-- INDEX --> + +<h3><a href="Typemaps.html#Typemaps">10 Typemaps</a></h3> + +<!-- INDEX --> +<div class="sectiontoc"> +<ul> +<li><a href="Typemaps.html#Typemaps_nn2">Introduction</a> +<ul> +<li><a href="Typemaps.html#Typemaps_nn3">Type conversion</a> +<li><a href="Typemaps.html#Typemaps_nn4">Typemaps</a> +<li><a href="Typemaps.html#Typemaps_nn5">Pattern matching</a> +<li><a href="Typemaps.html#Typemaps_nn6">Reusing typemaps</a> +<li><a href="Typemaps.html#Typemaps_nn7">What can be done with typemaps?</a> +<li><a href="Typemaps.html#Typemaps_nn8">What can't be done with typemaps?</a> +<li><a href="Typemaps.html#Typemaps_nn9">The rest of this chapter</a> +</ul> +<li><a href="Typemaps.html#Typemaps_nn10">Typemap specifications</a> +<ul> +<li><a href="Typemaps.html#Typemaps_nn11">Defining a typemap</a> +<li><a href="Typemaps.html#Typemaps_nn12">Typemap scope</a> +<li><a href="Typemaps.html#Typemaps_nn13">Copying a typemap</a> +<li><a href="Typemaps.html#Typemaps_nn14">Deleting a typemap</a> +<li><a href="Typemaps.html#Typemaps_nn15">Placement of typemaps</a> +</ul> +<li><a href="Typemaps.html#Typemaps_nn16">Pattern matching rules</a> +<ul> +<li><a href="Typemaps.html#Typemaps_nn17">Basic matching rules</a> +<li><a href="Typemaps.html#Typemaps_nn18">Typedef reductions</a> +<li><a href="Typemaps.html#Typemaps_nn19">Default typemaps</a> +<li><a href="Typemaps.html#Typemaps_mixed_default">Mixed default typemaps</a> +<li><a href="Typemaps.html#Typemaps_nn20">Multi-arguments typemaps</a> +</ul> +<li><a href="Typemaps.html#Typemaps_nn21">Code generation rules</a> +<ul> +<li><a href="Typemaps.html#Typemaps_nn22">Scope</a> +<li><a href="Typemaps.html#Typemaps_nn23">Declaring new local variables</a> +<li><a href="Typemaps.html#Typemaps_special_variables">Special variables</a> +</ul> +<li><a href="Typemaps.html#Typemaps_nn25">Common typemap methods</a> +<ul> +<li><a href="Typemaps.html#Typemaps_nn26">"in" typemap</a> +<li><a href="Typemaps.html#Typemaps_nn27">"typecheck" typemap</a> +<li><a href="Typemaps.html#Typemaps_nn28">"out" typemap</a> +<li><a href="Typemaps.html#Typemaps_nn29">"arginit" typemap</a> +<li><a href="Typemaps.html#Typemaps_nn30">"default" typemap</a> +<li><a href="Typemaps.html#Typemaps_nn31">"check" typemap</a> +<li><a href="Typemaps.html#Typemaps_nn32">"argout" typemap</a> +<li><a href="Typemaps.html#Typemaps_nn33">"freearg" typemap</a> +<li><a href="Typemaps.html#Typemaps_nn34">"newfree" typemap</a> +<li><a href="Typemaps.html#Typemaps_nn35">"memberin" typemap</a> +<li><a href="Typemaps.html#Typemaps_nn36">"varin" typemap</a> +<li><a href="Typemaps.html#Typemaps_nn37">"varout" typemap</a> +<li><a href="Typemaps.html#throws_typemap">"throws" typemap</a> +</ul> +<li><a href="Typemaps.html#Typemaps_nn39">Some typemap examples</a> +<ul> +<li><a href="Typemaps.html#Typemaps_nn40">Typemaps for arrays</a> +<li><a href="Typemaps.html#Typemaps_nn41">Implementing constraints with typemaps</a> +</ul> +<li><a href="Typemaps.html#Typemaps_nn43">Typemaps for multiple languages</a> +<li><a href="Typemaps.html#Typemaps_nn42">Multi-argument typemaps</a> +<li><a href="Typemaps.html#runtime_type_checker">The run-time type checker</a> +<ul> +<li><a href="Typemaps.html#Typemaps_nn45">Implementation</a> +<li><a href="Typemaps.html#Typemaps_nn46">Usage</a> +</ul> +<li><a href="Typemaps.html#Typemaps_overloading">Typemaps and overloading</a> +<li><a href="Typemaps.html#Typemaps_nn48">More about <tt>%apply</tt> and <tt>%clear</tt></a> +<li><a href="Typemaps.html#Typemaps_nn49">Reducing wrapper code size</a> +<li><a href="Typemaps.html#Typemaps_nn47">Passing data between typemaps</a> +<li><a href="Typemaps.html#Typemaps_nn51">Where to go for more information?</a> +</ul> +</div> +<!-- INDEX --> + +<h3><a href="Customization.html#Customization">11 Customization Features</a></h3> + +<!-- INDEX --> +<div class="sectiontoc"> +<ul> +<li><a href="Customization.html#exception">Exception handling with %exception</a> +<ul> +<li><a href="Customization.html#Customization_nn3">Handling exceptions in C code</a> +<li><a href="Customization.html#Customization_nn4">Exception handling with longjmp()</a> +<li><a href="Customization.html#Customization_nn5">Handling C++ exceptions</a> +<li><a href="Customization.html#Customization_allowexcept">Exception handlers for variables</a> +<li><a href="Customization.html#Customization_nn6">Defining different exception handlers</a> +<li><a href="Customization.html#Customization_exception_special_variables">Special variables for %exception</a> +<li><a href="Customization.html#Customization_nn7">Using The SWIG exception library</a> +</ul> +<li><a href="Customization.html#ownership">Object ownership and %newobject</a> +<li><a href="Customization.html#features">Features and the %feature directive</a> +<ul> +<li><a href="Customization.html#Customization_feature_attributes">Feature attributes</a> +<li><a href="Customization.html#Customization_feature_flags">Feature flags</a> +<li><a href="Customization.html#Customization_clearing_features">Clearing features</a> +<li><a href="Customization.html#Customization_features_default_args">Features and default arguments</a> +<li><a href="Customization.html#features_example">Feature example</a> +</ul> +</ul> +</div> +<!-- INDEX --> + +<h3><a href="Contract.html#Contract">12 Contracts</a></h3> + +<!-- INDEX --> +<div class="sectiontoc"> +<ul> +<li><a href="Contract.html#Contract_nn2">The %contract directive</a> +<li><a href="Contract.html#Contract_nn3">%contract and classes</a> +<li><a href="Contract.html#Contract_nn4">Constant aggregation and %aggregate_check</a> +<li><a href="Contract.html#Contract_nn5">Notes</a> +</ul> +</div> +<!-- INDEX --> + +<h3><a href="Varargs.html#Varargs">13 Variable Length Arguments</a></h3> + +<!-- INDEX --> +<div class="sectiontoc"> +<ul> +<li><a href="Varargs.html#Varargs_nn2">Introduction</a> +<li><a href="Varargs.html#Varargs_nn3">The Problem</a> +<li><a href="Varargs.html#Varargs_nn4">Default varargs support</a> +<li><a href="Varargs.html#Varargs_nn5">Argument replacement using %varargs</a> +<li><a href="Varargs.html#Varargs_nn6">Varargs and typemaps</a> +<li><a href="Varargs.html#Varargs_nn7">Varargs wrapping with libffi</a> +<li><a href="Varargs.html#Varargs_nn8">Wrapping of va_list</a> +<li><a href="Varargs.html#Varargs_nn9">C++ Issues</a> +<li><a href="Varargs.html#Varargs_nn10">Discussion</a> +</ul> +</div> +<!-- INDEX --> + +<h3><a href="Warnings.html#Warnings">14 Warning Messages</a></h3> + +<!-- INDEX --> +<div class="sectiontoc"> +<ul> +<li><a href="Warnings.html#Warnings_nn2">Introduction</a> +<li><a href="Warnings.html#Warnings_suppression">Warning message suppression</a> +<li><a href="Warnings.html#Warnings_nn4">Enabling extra warnings</a> +<li><a href="Warnings.html#Warnings_nn5">Issuing a warning message</a> +<li><a href="Warnings.html#Warnings_symbolic_symbols">Symbolic symbols</a> +<li><a href="Warnings.html#Warnings_nn6">Commentary</a> +<li><a href="Warnings.html#Warnings_nn7">Warnings as errors</a> +<li><a href="Warnings.html#Warnings_nn8">Message output format</a> +<li><a href="Warnings.html#Warnings_nn9">Warning number reference</a> +<ul> +<li><a href="Warnings.html#Warnings_nn10">Deprecated features (100-199)</a> +<li><a href="Warnings.html#Warnings_nn11">Preprocessor (200-299)</a> +<li><a href="Warnings.html#Warnings_nn12">C/C++ Parser (300-399)</a> +<li><a href="Warnings.html#Warnings_nn13">Types and typemaps (400-499) </a> +<li><a href="Warnings.html#Warnings_nn14">Code generation (500-599)</a> +<li><a href="Warnings.html#Warnings_nn15">Language module specific (800-899) </a> +<li><a href="Warnings.html#Warnings_nn16">User defined (900-999)</a> +</ul> +<li><a href="Warnings.html#Warnings_nn17">History</a> +</ul> +</div> +<!-- INDEX --> + +<h3><a href="Modules.html#Modules">15 Working with Modules</a></h3> + +<!-- INDEX --> +<div class="sectiontoc"> +<ul> +<li><a href="Modules.html#Modules_nn1">Basics</a> +<li><a href="Modules.html#Modules_nn2">The SWIG runtime code</a> +<li><a href="Modules.html#external_run_time">External access to the runtime</a> +<li><a href="Modules.html#Modules_nn4">A word of caution about static libraries</a> +<li><a href="Modules.html#Modules_nn5">References</a> +<li><a href="Modules.html#Modules_nn6">Reducing the wrapper file size</a> +</ul> +</div> +<!-- INDEX --> + +<h3><a href="Allegrocl.html#Allegrocl">16 SWIG and Allegro Common Lisp</a></h3> + +<!-- INDEX --> +<div class="sectiontoc"> +<ul> <li><a href="Allegrocl.html#Allegrocl_nn2">Basics</a> <ul> <li><a href="Allegrocl.html#Allegrocl_nn3">Running Swig</a> @@ -93,85 +580,11 @@ </div> <!-- INDEX --> -<h3><a href="Arguments.html#Arguments">2 Argument Handling</a></h3> +<h3><a href="CSharp.html#CSharp">17 SWIG and C#</a></h3> <!-- INDEX --> <div class="sectiontoc"> <ul> -<li><a href="Arguments.html#Arguments_nn2">The typemaps.i library</a> -<ul> -<li><a href="Arguments.html#Arguments_nn3">Introduction</a> -<li><a href="Arguments.html#Arguments_nn4">Input parameters</a> -<li><a href="Arguments.html#Arguments_nn5">Output parameters</a> -<li><a href="Arguments.html#Arguments_nn6">Input/Output parameters</a> -<li><a href="Arguments.html#Arguments_nn7">Using different names</a> -</ul> -<li><a href="Arguments.html#Arguments_nn8">Applying constraints to input values</a> -<ul> -<li><a href="Arguments.html#Arguments_nn9">Simple constraint example</a> -<li><a href="Arguments.html#Arguments_nn10">Constraint methods</a> -<li><a href="Arguments.html#Arguments_nn11">Applying constraints to new datatypes</a> -</ul> -</ul> -</div> -<!-- INDEX --> - -<h3><a href="Chicken.html#Chicken">3 SWIG and Chicken</a></h3> - -<!-- INDEX --> -<div class="sectiontoc"> -<ul> -<li><a href="Chicken.html#Chicken_nn2">Preliminaries</a> -<ul> -<li><a href="Chicken.html#Chicken_nn3">Running SWIG in C mode</a> -<li><a href="Chicken.html#Chicken_nn4">Running SWIG in C++ mode</a> -</ul> -<li><a href="Chicken.html#Chicken_nn5">Code Generation</a> -<ul> -<li><a href="Chicken.html#Chicken_nn6">Naming Conventions</a> -<li><a href="Chicken.html#Chicken_nn7">Modules</a> -<li><a href="Chicken.html#Chicken_nn8">Constants and Variables</a> -<li><a href="Chicken.html#Chicken_nn9">Functions</a> -<li><a href="Chicken.html#Chicken_nn10">Exceptions</a> -</ul> -<li><a href="Chicken.html#Chicken_nn11">TinyCLOS</a> -<li><a href="Chicken.html#Chicken_nn12">Linkage</a> -<ul> -<li><a href="Chicken.html#Chicken_nn13">Static binary or shared library linked at compile time</a> -<li><a href="Chicken.html#Chicken_nn14">Building chicken extension libraries</a> -<li><a href="Chicken.html#Chicken_nn15">Linking multiple SWIG modules with TinyCLOS</a> -</ul> -<li><a href="Chicken.html#Chicken_nn16">Typemaps</a> -<li><a href="Chicken.html#Chicken_nn17">Pointers</a> -<ul> -<li><a href="Chicken.html#collection">Garbage collection</a> -</ul> -<li><a href="Chicken.html#Chicken_nn18">Unsupported features and known problems</a> -<ul> -<li><a href="Chicken.html#Chicken_nn19">TinyCLOS problems with Chicken version <= 1.92</a> -</ul> -</ul> -</div> -<!-- INDEX --> - -<h3><a href="Contract.html#Contract">4 Contracts</a></h3> - -<!-- INDEX --> -<div class="sectiontoc"> -<ul> -<li><a href="Contract.html#Contract_nn2">The %contract directive</a> -<li><a href="Contract.html#Contract_nn3">%contract and classes</a> -<li><a href="Contract.html#Contract_nn4">Constant aggregation and %aggregate_check</a> -<li><a href="Contract.html#Contract_nn5">Notes</a> -</ul> -</div> -<!-- INDEX --> - -<h3><a href="CSharp.html#CSharp">5 SWIG and C#</a></h3> - -<!-- INDEX --> -<div class="sectiontoc"> -<ul> <li><a href="CSharp.html#csharp_introduction">Introduction</a> <li><a href="CSharp.html#csharp_differences_java">Differences to the Java module</a> <li><a href="CSharp.html#csharp_exceptions">C# Exceptions</a> @@ -200,101 +613,45 @@ </div> <!-- INDEX --> -<h3><a href="Customization.html#Customization">6 Customization Features</a></h3> +<h3><a href="Chicken.html#Chicken">18 SWIG and Chicken</a></h3> <!-- INDEX --> <div class="sectiontoc"> <ul> -<li><a href="Customization.html#exception">Exception handling with %exception</a> +<li><a href="Chicken.html#Chicken_nn2">Preliminaries</a> <ul> -<li><a href="Customization.html#Customization_nn3">Handling exceptions in C code</a> -<li><a href="Customization.html#Customization_nn4">Exception handling with longjmp()</a> -<li><a href="Customization.html#Customization_nn5">Handling C++ exceptions</a> -<li><a href="Customization.html#Customization_allowexcept">Exception handlers for variables</a> -<li><a href="Customization.html#Customization_nn6">Defining different exception handlers</a> -<li><a href="Customization.html#Customization_exception_special_variables">Special variables for %exception</a> -<li><a href="Customization.html#Customization_nn7">Using The SWIG exception library</a> +<li><a href="Chicken.html#Chicken_nn3">Running SWIG in C mode</a> +<li><a href="Chicken.html#Chicken_nn4">Running SWIG in C++ mode</a> </ul> -<li><a href="Customization.html#ownership">Object ownership and %newobject</a> -<li><a href="Customization.html#features">Features and the %feature directive</a> +<li><a href="Chicken.html#Chicken_nn5">Code Generation</a> <ul> -<li><a href="Customization.html#Customization_feature_attributes">Feature attributes</a> -<li><a href="Customization.html#Customization_feature_flags">Feature flags</a> -<li><a href="Customization.html#Customization_clearing_features">Clearing features</a> -<li><a href="Customization.html#Customization_features_default_args">Features and default arguments</a> -<li><a href="Customization.html#features_example">Feature example</a> +<li><a href="Chicken.html#Chicken_nn6">Naming Conventions</a> +<li><a href="Chicken.html#Chicken_nn7">Modules</a> +<li><a href="Chicken.html#Chicken_nn8">Constants and Variables</a> +<li><a href="Chicken.html#Chicken_nn9">Functions</a> +<li><a href="Chicken.html#Chicken_nn10">Exceptions</a> </ul> -</ul> -</div> -<!-- INDEX --> - -<h3><a href="Extending.html#Extending">7 Extending SWIG to support new languages</a></h3> - -<!-- INDEX --> -<div class="sectiontoc"> +<li><a href="Chicken.html#Chicken_nn11">TinyCLOS</a> +<li><a href="Chicken.html#Chicken_nn12">Linkage</a> <ul> -<li><a href="Extending.html#Extending_nn2">Introduction</a> -<li><a href="Extending.html#Extending_nn3">Prerequisites</a> -<li><a href="Extending.html#Extending_nn4">The Big Picture</a> -<li><a href="Extending.html#Extending_nn5">Execution Model</a> -<ul> -<li><a href="Extending.html#Extending_nn6">Preprocessing</a> -<li><a href="Extending.html#Extending_nn7">Parsing</a> -<li><a href="Extending.html#Extending_nn8">Parse Trees</a> -<li><a href="Extending.html#Extending_nn9">Attribute namespaces</a> -<li><a href="Extending.html#Extending_nn10">Symbol Tables</a> -<li><a href="Extending.html#Extending_nn11">The %feature directive</a> -<li><a href="Extending.html#Extending_nn12">Code Generation</a> -<li><a href="Extending.html#Extending_nn13">SWIG and XML</a> +<li><a href="Chicken.html#Chicken_nn13">Static binary or shared library linked at compile time</a> +<li><a href="Chicken.html#Chicken_nn14">Building chicken extension libraries</a> +<li><a href="Chicken.html#Chicken_nn15">Linking multiple SWIG modules with TinyCLOS</a> </ul> -<li><a href="Extending.html#Extending_nn14">Primitive Data Structures</a> +<li><a href="Chicken.html#Chicken_nn16">Typemaps</a> +<li><a href="Chicken.html#Chicken_nn17">Pointers</a> <ul> -<li><a href="Extending.html#Extending_nn15">Strings</a> -<li><a href="Extending.html#Extending_nn16">Hashes</a> -<li><a href="Extending.html#Extending_nn17">Lists</a> -<li><a href="Extending.html#Extending_nn18">Common operations</a> -<li><a href="Extending.html#Extending_nn19">Iterating over Lists and Hashes</a> -<li><a href="Extending.html#Extending_nn20">I/O</a> +<li><a href="Chicken.html#collection">Garbage collection</a> </ul> -<li><a href="Extending.html#Extending_nn21">Navigating and manipulating parse trees</a> -<li><a href="Extending.html#Extending_nn22">Working with attributes</a> -<li><a href="Extending.html#Extending_nn23">Type system</a> +<li><a href="Chicken.html#Chicken_nn18">Unsupported features and known problems</a> <ul> -<li><a href="Extending.html#Extending_nn24">String encoding of types</a> -<li><a href="Extending.html#Extending_nn25">Type construction</a> -<li><a href="Extending.html#Extending_nn26">Type tests</a> -<li><a href="Extending.html#Extending_nn27">Typedef and inheritance</a> -<li><a href="Extending.html#Extending_nn28">Lvalues</a> -<li><a href="Extending.html#Extending_nn29">Output functions</a> +<li><a href="Chicken.html#Chicken_nn19">TinyCLOS problems with Chicken version <= 1.92</a> </ul> -<li><a href="Extending.html#Extending_nn30">Parameters</a> -<li><a href="Extending.html#Extending_nn31">Writing a Language Module</a> -<ul> -<li><a href="Extending.html#Extending_nn32">Execution model</a> -<li><a href="Extending.html#Extending_nn33">Starting out</a> -<li><a href="Extending.html#Extending_nn34">Command line options</a> -<li><a href="Extending.html#Extending_nn35">Configuration and preprocessing</a> -<li><a href="Extending.html#Extending_nn36">Entry point to code generation</a> -<li><a href="Extending.html#Extending_nn37">Module I/O and wrapper skeleton</a> -<li><a href="Extending.html#Extending_nn38">Low-level code generators</a> -<li><a href="Extending.html#Extending_nn39">Configuration files</a> -<li><a href="Extending.html#Extending_nn40">Runtime support</a> -<li><a href="Extending.html#Extending_nn41">Standard library files</a> -<li><a href="Extending.html#Extending_nn42">Examples and test cases</a> -<li><a href="Extending.html#Extending_nn43">Documentation</a> -<li><a href="Extending.html#Extending_prerequisites">Prerequisites for adding a new language module to the SWIG distribution</a> -<li><a href="Extending.html#Extending_coding_style_guidelines">Coding style guidelines</a> </ul> -<li><a href="Extending.html#Extending_nn44">Typemaps</a> -<ul> -<li><a href="Extending.html#Extending_nn45">Proxy classes</a> -</ul> -<li><a href="Extending.html#Extending_nn46">Guide to parse tree nodes</a> -</ul> </div> <!-- INDEX --> -<h3><a href="Guile.html#Guile">8 SWIG and Guile</a></h3> +<h3><a href="Guile.html#Guile">19 SWIG and Guile</a></h3> <!-- INDEX --> <div class="sectiontoc"> @@ -329,35 +686,11 @@ </div> <!-- INDEX --> -<h3><a href="Introduction.html#Introduction">9 Introduction</a></h3> +<h3><a href="Java.html#Java">20 SWIG and Java</a></h3> <!-- INDEX --> <div class="sectiontoc"> <ul> -<li><a href="Introduction.html#Introduction_nn2">What is SWIG?</a> -<li><a href="Introduction.html#Introduction_nn3">Why use SWIG?</a> -<li><a href="Introduction.html#Introduction_nn4">A SWIG example</a> -<ul> -<li><a href="Introduction.html#Introduction_nn5">SWIG interface file</a> -<li><a href="Introduction.html#Introduction_nn6">The swig command</a> -<li><a href="Introduction.html#Introduction_nn7">Building a Perl5 module</a> -<li><a href="Introduction.html#Introduction_nn8">Building a Python module</a> -<li><a hr... [truncated message content] |
From: <xav...@us...> - 2008-03-22 19:54:54
|
Revision: 10318 http://swig.svn.sourceforge.net/swig/?rev=10318&view=rev Author: xavier98 Date: 2008-03-22 12:54:50 -0700 (Sat, 22 Mar 2008) Log Message: ----------- Some documentation improvements for Octave. Modified Paths: -------------- trunk/Doc/Manual/Contents.html trunk/Doc/Manual/Lua.html trunk/Doc/Manual/Octave.html Modified: trunk/Doc/Manual/Contents.html =================================================================== --- trunk/Doc/Manual/Contents.html 2008-03-21 23:11:24 UTC (rev 10317) +++ trunk/Doc/Manual/Contents.html 2008-03-22 19:54:50 UTC (rev 10318) @@ -876,13 +876,15 @@ <li><a href="Lua.html#Lua_nn19">Class extension with %extend</a> <li><a href="Lua.html#Lua_nn20">C++ templates</a> <li><a href="Lua.html#Lua_nn21">C++ Smart Pointers</a> -<li><a href="Lua.html#Lua_nn22">Writing your own custom wrappers</a> +<li><a href="Lua.html#Lua_nn22">C++ Exceptions</a> +<li><a href="Lua.html#Lua_nn23">Writing your own custom wrappers</a> +<li><a href="Lua.html#Lua_nn24">Adding additional Lua code</a> </ul> -<li><a href="Lua.html#Lua_nn23">Details on the Lua binding</a> +<li><a href="Lua.html#Lua_nn25">Details on the Lua binding</a> <ul> -<li><a href="Lua.html#Lua_nn24">Binding global data into the module.</a> -<li><a href="Lua.html#Lua_nn25">Userdata and Metatables</a> -<li><a href="Lua.html#Lua_nn26">Memory management</a> +<li><a href="Lua.html#Lua_nn26">Binding global data into the module.</a> +<li><a href="Lua.html#Lua_nn27">Userdata and Metatables</a> +<li><a href="Lua.html#Lua_nn28">Memory management</a> </ul> </ul> </div> @@ -1008,10 +1010,8 @@ <li><a href="Octave.html#Octave_nn10">Global variables</a> <li><a href="Octave.html#Octave_nn11">Constants and enums</a> <li><a href="Octave.html#Octave_nn12">Pointers</a> -<li><a href="Octave.html#Octave_nn13">Structures</a> -<li><a href="Octave.html#Octave_nn14">C++ classes</a> +<li><a href="Octave.html#Octave_nn13">Structures and C++ classes</a> <li><a href="Octave.html#Octave_nn15">C++ inheritance</a> -<li><a href="Octave.html#Octave_nn16">Pointers, references, values, and arrays</a> <li><a href="Octave.html#Octave_nn17">C++ overloaded functions</a> <li><a href="Octave.html#Octave_nn18">C++ operators</a> <li><a href="Octave.html#Octave_nn19">Class extension with %extend</a> Modified: trunk/Doc/Manual/Lua.html =================================================================== --- trunk/Doc/Manual/Lua.html 2008-03-21 23:11:24 UTC (rev 10317) +++ trunk/Doc/Manual/Lua.html 2008-03-22 19:54:50 UTC (rev 10318) @@ -33,7 +33,7 @@ <li><a href="#Lua_nn19">Class extension with %extend</a> <li><a href="#Lua_nn20">C++ templates</a> <li><a href="#Lua_nn21">C++ Smart Pointers</a> -<li><a href="#Lua_nn22">C++ exceptions</a> +<li><a href="#Lua_nn22">C++ Exceptions</a> <li><a href="#Lua_nn23">Writing your own custom wrappers</a> <li><a href="#Lua_nn24">Adding additional Lua code</a> </ul> @@ -952,6 +952,8 @@ </pre></div> <H3><a name="Lua_nn22"></a>22.3.15 C++ Exceptions</H3> + + <p> Lua does not natively support exceptions, but it has errors which are similar. When a Lua function terminates with an error it returns one value back to the caller. SWIG automatically maps any basic type which is thrown into a Lua error. @@ -1074,6 +1076,8 @@ <H3><a name="Lua_nn23"></a>22.3.16 Writing your own custom wrappers</H3> + + <p> Sometimes, it may be neccesary to add your own special functions, which bypass the normal SWIG wrappering method, and just use the native Lua API calls. These 'native' functions allow direct adding of your own code into the module. This is performed with the <tt>%native</tt> directive as follows: </p> @@ -1091,6 +1095,8 @@ </p> <H3><a name="Lua_nn24"></a>22.3.17 Adding additional Lua code</H3> + + <p> As well as adding additional C/C++ code, its also possible to add your own Lua code to the module as well. This code is executed once all other initialisation, including the %init code has been called. Modified: trunk/Doc/Manual/Octave.html =================================================================== --- trunk/Doc/Manual/Octave.html 2008-03-21 23:11:24 UTC (rev 10317) +++ trunk/Doc/Manual/Octave.html 2008-03-22 19:54:50 UTC (rev 10318) @@ -25,10 +25,8 @@ <li><a href="#Octave_nn10">Global variables</a> <li><a href="#Octave_nn11">Constants and enums</a> <li><a href="#Octave_nn12">Pointers</a> -<li><a href="#Octave_nn13">Structures</a> -<li><a href="#Octave_nn14">C++ classes</a> +<li><a href="#Octave_nn13">Structures and C++ classes</a> <li><a href="#Octave_nn15">C++ inheritance</a> -<li><a href="#Octave_nn16">Pointers, references, values, and arrays</a> <li><a href="#Octave_nn17">C++ overloaded functions</a> <li><a href="#Octave_nn18">C++ operators</a> <li><a href="#Octave_nn19">Class extension with %extend</a> @@ -48,21 +46,14 @@ <p> Octave is a high-level language intended for numerical programming that is mostly compatible with MATLAB. -More information can be found at <a href="http://www.octave.org">octave.org</a>. +More information can be found at <a href="http://www.octave.org">www.octave.org</a>. </p> <p> - The Octave documentation is preliminary and is intended to give only a cursory introduction to using the module. You should (at a minimum) also read the SWIG documentation that is not specific to Octave. (also note, some of the early sections here are adapted from the Lua docs). + This chapter is intended to give an introduction to using the module. You should also read the SWIG documentation that is not specific to Octave. +Also, there are a dozen or so examples in the Examples/octave directory, and hundreds in the test suite (Examples/test-suite and Examples/test-suite/octave). </p> -<p> -For now, the best way to find information about how to use the Octave module is to look at the code itself, test-suite, and examples. There are a dozen or so examples in the Examples/octave directory, and hundreds in the test suite (Examples/test-suite and Examples/test-suite/octave). -</p> - -<p> -The bulk of the Octave-specific wrapper generator code is in Source/Modules/octave.cxx. The runtime components are in Lib/octave, and in particular Lib/octave/octrun.swg. -</p> - <H2><a name="Octave_nn2"></a>26.1 Preliminaries</H2> @@ -327,11 +318,12 @@ error: value on right hand side of assignment is undefined error: evaluating assignment expression near line 2, column 2 </pre></div> -<H3><a name="Octave_nn13"></a>26.3.6 Structures</H3> +<H3><a name="Octave_nn13"></a>26.3.6 Structures and C++ classes</H3> <p> - SWIG wraps C structures and C++ classes by creating type objects. When invoked as a function, they create a new object of their type. The structures/classes themselves are mapped to a native Octave type. This provides a very natural interface. For example, + SWIG wraps C structures and C++ classes by using a special Octave type called a <tt>swig_ref</tt>. A <tt>swig_ref</tt> contains a reference to one or more instances of C/C++ objects, or just the type information for an object. +For each wrapped structure and class, a <tt>swig_ref</tt> will be exposed that has the name of the type. When invoked as a function, it creates a new object of its type and returns a <tt>swig_ref</tt> that points to that instance. This provides a very natural interface. For example, </p> <div class="code"><pre>struct Point{ @@ -352,55 +344,147 @@ ans = 3 ans = 5 </pre></div> +<p> +In C++, invoking the type object in this way calls the object's constructor. +<tt>swig_ref</tt> objects can also be acquired by having a wrapped function return a pointer, reference, or value of a non-primitive type. +</p> +<p> +The swig_ref type handles indexing operations such that usage maps closely to what you would have in C/C++. +Structure members are accessed as in the above example, by calling set and get methods for C++ variables. -<H3><a name="Octave_nn14"></a>26.3.7 C++ classes</H3> +Methods also work as expected. For example, code wrapped in the following way +</p> + <div class="code"><pre>class Point{ +public: + int x,y; + Point(int _x,int _y) : x(_x),y(_y) {} + double distance(const Point& rhs) { + return sqrt(pow(x-rhs.x,2)+pow(y-rhs.y,2)); + } + void set(int _x,int _y) { + x=_x; y=_y; + } +}; +</pre></div> +<p> +can be used from Octave like this +</p> + <div class="targetlang"> + <pre>octave:1> example; +octave:2> p1=example.Point(3,5); +octave:3> p2=example.Point(1,2); +octave:3> p1.distance(p2) +ans = 3.6056 +</pre></div> +<p> +By using the <tt>swig_this()</tt> and <tt>swig_type()</tt> functions, one can discover the pointers to and types of the underlying C/C++ object. +</p> + <div class="targetlang"> + <pre> +octave:5> swig_this(p1) +ans = 162504808 +octave:6> swig_type(p1) +ans = Point +</pre></div> <p> -C++ classes are handled in a way identical to other modules. +Note that <tt>swig_ref</tt> is a reference-counted pointer to a C/C++ object/type, and as such has pass-by-reference semantics. For example if one has a allocated a single object but has two <tt>swig_ref</tt>'s pointing to it, modifying the object through either of them will change the single allocated object. +This differs from the usual pass-by-value (copy-on-write) semantics that Octave maintains for built-in types. For example, in the following snippet, modifying <tt>b</tt> does not modify <tt>a</tt>, </p> -<H3><a name="Octave_nn15"></a>26.3.8 C++ inheritance</H3> + <div class="targetlang"> + <pre> +octave:7> a=struct('x',4) +a = +{ + x = 4 +} +octave:8> b=a +b = +{ + x = 4 +} +octave:9> b.y=4 +b = +{ + x = 4 + y = 4 +} + +octave:10> a +a = +{ + x = 4 +} +</pre></div> <p> -Inheritance is handled in a way identical to other modules. +However, when dealing with wrapped objects, one gets the behavior </p> -<H3><a name="Octave_nn16"></a>26.3.9 Pointers, references, values, and arrays</H3> + <div class="targetlang"> + <pre> +octave:2> a=Point(3,5) +a = +{ + Point, ptr = 0x9afbbb0 +} +octave:3> b=a +b = + +{ + Point, ptr = 0x9afbbb0 +} + +octave:4> b.set(2,1); +octave:5> b.x, b.y +ans = 2 +ans = 1 +octave:6> a.x, a.y +ans = 2 +ans = 1 +</pre></div> + <p> -Pointers, references, values, and arrays are handled in the same way as other modules. +Depending on the ownership setting of a <tt>swig_ref</tt>, it may call C++ destructors when its reference count goes to zero. See the section on memory management below for details. </p> + +<H3><a name="Octave_nn15"></a>26.3.7 C++ inheritance</H3> + + <p> -There are still some failing tests relating to global arrays. +Single and multiple inheritance are fully supported. The <tt>swig_ref</tt> type carries type information along with any C++ object pointer it holds. +This information contains the full class hierarchy. When an indexing operation (such as a method invocation) occurs, +the tree is walked to find a match in the current class as well as any of its bases. The lookup is then cached in the <tt>swig_ref</tt>. </p> -<H3><a name="Octave_nn17"></a>26.3.10 C++ overloaded functions</H3> +<H3><a name="Octave_nn17"></a>26.3.8 C++ overloaded functions</H3> <p> -Overloaded functions are supported, and handled as in other modules. +Overloaded functions are supported, and handled as in other modules. That is, +each overload is wrapped separately (under internal names), and a dispatch function is also emitted under the external/visible name. +The dispatch function selects which overload to call (if any) based on the passed arguments. +<tt>typecheck</tt> typemaps are used to analyze each argument, as well as assign precedence. See the chapter on typemaps for details. </p> -<H3><a name="Octave_nn18"></a>26.3.11 C++ operators</H3> +<H3><a name="Octave_nn18"></a>26.3.9 C++ operators</H3> <p> C++ operator overloading is supported, in a way similar to other modules. +The <tt>swig_ref</tt> type supports all unary and binary operators between itself and all other types that exist in the system at module load time. When an operator is used (where one of the operands is a <tt>swig_ref</tt>), the runtime routes the call to either a member function of the given object, or to a global function whose named is derived from the types of the operands (either both or just the lhs or rhs). </p> <p> -SWIG types are represented in Octave by a special type called <tt>swig_ref</tt> (the full list of types can be listed with <tt>typeinfo()</tt>, and SWIG specific information can be extracted via <tt>swig_this(obj)</tt> and <tt>swig_type(obj)</tt>). This type supports all unary and binary operators between itself and all other types that exist in the system at module load time. When an operator is used (where one of the operands is a <tt>swig_ref</tt>), the runtime routes the call to either a member function of the given object, or to a global function whose named is derived from the types of the operands (either both or just the lhs or rhs). (... more details needed ...) -</p> -<p> For example, if <tt>a</tt> and <tt>b</tt> are SWIG variables in Octave, <tt>a+b</tt> becomes <tt>a.__add(b)</tt>. The wrapper is then free to implement __add to do whatever it wants. A wrapper may define the <tt>__add</tt> function manually, %rename some other function to it, or %rename a C++ operator to it. </p> <p> -By default the C++ operators are renamed to their corresponding Octave operators. So without doing any work, they just work. +By default the C++ operators are renamed to their corresponding Octave operators. So without doing any work, the following interface </p> -<p> -For example, the following: <div class="code"><pre> %inline { struct A { @@ -413,7 +497,7 @@ } </pre></div> <p> -may be used naturally from Octave: +is usable from Octave like this: </p> <div class="targetlang"><pre> a=A(2), b=A(3), c=a+b @@ -488,7 +572,7 @@ %rename(__brace) *::operator[]; </pre></div> -<H3><a name="Octave_nn19"></a>26.3.12 Class extension with %extend</H3> +<H3><a name="Octave_nn19"></a>26.3.10 Class extension with %extend</H3> <p> @@ -518,28 +602,98 @@ octave:4> a.__str() 4 </pre></div> -<H3><a name="Octave_nn20"></a>26.3.13 C++ templates</H3> +<H3><a name="Octave_nn20"></a>26.3.11 C++ templates</H3> <p> -C++ templates are fully supported, as in other modules. +C++ class and function templates are fully supported as in other modules, in that the %template directive may used to create explicit instantiations of templated types. +For example, function templates can be instantiated as follows: </p> -<H3><a name="Octave_nn21"></a>26.3.14 C++ Smart Pointers</H3> +<div class="code"><pre>%module example +%inline { + template<class __scalar> + __scalar mul(__scalar a,__scalar b) { + return a*b; + } +} +%include <std_complex.i> +%template(mul) mul<std::complex<double> > +%template(mul) mul<double> +</pre></div> +<p> +and then used from Octave +</p> +<div class="targetlang"><pre> +octave:3> mul(4,3) +ans = 12 +octave:4> mul(4.2,3.6) +ans = 15.120 +octave:2> mul(3+4i,10+2i) +ans = 22 + 46i +</pre></div> <p> -C++ smart pointers are fully supported, as in other modules. +Similarly, class templates can be instantiated as in the following example, </p> -<H3><a name="Octave_nn22"></a>26.3.15 Directors (calling Octave from C++ code)</H3> +<div class="code"><pre>%module example +%include <std_complex.i> +%include <std_string.i> +%inline { + #include <sstream> + template<class __scalar> class sum { + __scalar s; + public: + sum(__scalar _s=0) : s(_s) {} + sum& add(__scalar _s) { + s+=_s; + return *this; + } + std::string __str() const { + std::stringstream sout; + sout<<s; + return sout.str(); + } + }; +} +%template(sum_complex) sum<std::complex<double> >; +%template(sum_double) sum<double>; +</pre></div> +<p> +and then used from Octave +</p> +<div class="targetlang"><pre> +octave:2> a=sum_complex(2+3i); +octave:3> a.add(2) +ans = + +(4,3) +octave:4> a.add(3+i) +ans = + +(7,4) +</pre></div> + + +<H3><a name="Octave_nn21"></a>26.3.12 C++ Smart Pointers</H3> + + <p> +C++ smart pointers are fully supported as in other modules. +</p> + +<H3><a name="Octave_nn22"></a>26.3.13 Directors (calling Octave from C++ code)</H3> + + +<p> There is full support for SWIG Directors, which permits Octave code to subclass C++ classes, and implement their virtual methods. </p> <p> -Octave has no direct support for object oriented programming, however the <tt>swig_ref</tt> type provides some of this support. All SWIG types are wrapped inside a <tt>swig_ref</tt>. These handle calling set and get methods for C++ variables (see other SWIG docs), and invoking member functions (by prepending self parameter). You can aquire a <tt>swig_ref</tt> by having a wrapped function return a pointer, reference, or value of a non-primitive type. You can also manufacture one using the <tt>subclass</tt> function (provided by the SWIG/Octave runtime). +Octave has no direct support for object oriented programming, however the <tt>swig_ref</tt> type provides some of this support. You can manufacture a <tt>swig_ref</tt> using the <tt>subclass</tt> function (provided by the SWIG/Octave runtime). </p> <p> For example, @@ -612,18 +766,18 @@ octave-side routine called </pre></div> -<H3><a name="Octave_nn23"></a>26.3.16 Threads</H3> +<H3><a name="Octave_nn23"></a>26.3.14 Threads</H3> <p> The use of threads in wrapped Director code is not supported; i.e., an Octave-side implementation of a C++ class must be called from the Octave interpreter's thread. Anything fancier (apartment/queue model, whatever) is left to the user. Without anything fancier, this amounts to the limitation that Octave must drive the module... like, for example, an optimization package that calls Octave to evaluate an objective function. </p> -<H3><a name="Octave_nn24"></a>26.3.17 Memory management</H3> +<H3><a name="Octave_nn24"></a>26.3.15 Memory management</H3> <p> -All Octave objects are referenced counted internally. SWIG-wrapped objects are no different. This means that destructors get called when the Octave object's reference count goes to zero. +As noted above, <tt>swig_ref</tt> represents a reference counted pointer to a C/C++-side object. It also contains a flag indicating whether Octave or the C/C++ code owns the object. If Octave owns it, any destructors will be called when the reference count reaches zero. If the C/C++ side owns the object, then destructors will not be called when the reference count goes to zero. </p> <p> For example, @@ -648,21 +802,23 @@ A destructing </pre></div> <p> +The %newobject directive may be used to control this behavior for pointers returned from functions. +<p> In the case where one wishes for the C++ side to own an object that was created in Octave (especially a Director object), one can use the __disown() method to invert this logic. Then letting the Octave reference count go to zero will not destroy the object, but destroying the object will invalidate the Octave-side object if it still exists (and call destructors of other C++ bases in the case of multiple inheritance/<tt>subclass()</tt>'ing). </p> -<H3><a name="Octave_nn25"></a>26.3.18 STL support</H3> +<H3><a name="Octave_nn25"></a>26.3.16 STL support</H3> <p> -This is some skeleton support for various STL containers, but this work is not finished. +This is some skeleton support for various STL containers. </p> -<H3><a name="Octave_nn26"></a>26.3.19 Matrix typemaps</H3> +<H3><a name="Octave_nn26"></a>26.3.17 Matrix typemaps</H3> <p> -Octave provides a rich set of classes for dealing with matrices etc. Currently there are no typemaps to deal with those, though such support will be added soon. However, these are relatively straight forward for users to add themselves (see the docs on typemaps). Without much work (a single typemap decl-- say, 5 lines of code in the interface file), it would be possible to have a function +Octave provides a rich set of classes for dealing with matrices. Currently there are no built-in typemaps to deal with those. However, these are relatively straight forward for users to add themselves (see the docs on typemaps). Without much work (a single typemap decl-- say, 5 lines of code in the interface file), it would be possible to have a function </p> <div class="code"><pre> double my_det(const double* mat,int m,int n); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2008-04-22 22:37:50
|
Revision: 10385 http://swig.svn.sourceforge.net/swig/?rev=10385&view=rev Author: wsfulton Date: 2008-04-22 15:37:48 -0700 (Tue, 22 Apr 2008) Log Message: ----------- Add documentation on the allprotected mode Modified Paths: -------------- trunk/Doc/Manual/Contents.html trunk/Doc/Manual/Java.html trunk/Doc/Manual/SWIGPlus.html Modified: trunk/Doc/Manual/Contents.html =================================================================== --- trunk/Doc/Manual/Contents.html 2008-04-22 22:09:18 UTC (rev 10384) +++ trunk/Doc/Manual/Contents.html 2008-04-22 22:37:48 UTC (rev 10385) @@ -768,6 +768,7 @@ <li><a href="Java.html#java_directors_overhead">Overhead and code bloat</a> <li><a href="Java.html#java_directors_example">Simple directors example</a> </ul> +<li><a href="Java.html#java_allprotected">Accessing protected members</a> <li><a href="Java.html#common_customization">Common customization features</a> <ul> <li><a href="Java.html#helper_functions">C/C++ helper functions</a> @@ -819,6 +820,7 @@ <li><a href="Java.html#functional_interface">Functional interface without proxy classes</a> <li><a href="Java.html#using_own_jni_functions">Using your own JNI functions</a> <li><a href="Java.html#performance">Performance concerns and hints</a> +<li><a href="Java.html#java_debugging">Debugging</a> </ul> <li><a href="Java.html#java_examples">Examples</a> </ul> Modified: trunk/Doc/Manual/Java.html =================================================================== --- trunk/Doc/Manual/Java.html 2008-04-22 22:09:18 UTC (rev 10384) +++ trunk/Doc/Manual/Java.html 2008-04-22 22:37:48 UTC (rev 10385) @@ -79,13 +79,14 @@ <li><a href="#typeunsafe_enums_classes">Type unsafe enum classes</a> </ul> </ul> -<li><a href="#java_directors">Cross language polymorphism using directors (experimental)</a> +<li><a href="#java_directors">Cross language polymorphism using directors</a> <ul> <li><a href="#java_enabling_directors">Enabling directors</a> <li><a href="#java_directors_classes">Director classes</a> <li><a href="#java_directors_overhead">Overhead and code bloat</a> <li><a href="#java_directors_example">Simple directors example</a> </ul> +<li><a href="#java_allprotected">Accessing protected members</a> <li><a href="#common_customization">Common customization features</a> <ul> <li><a href="#helper_functions">C/C++ helper functions</a> @@ -3246,7 +3247,7 @@ </pre> </div> -<H2><a name="java_directors"></a>20.5 Cross language polymorphism using directors (experimental)</H2> +<H2><a name="java_directors"></a>20.5 Cross language polymorphism using directors</H2> <p> @@ -3410,19 +3411,19 @@ </div> <p> -The following <code>directorDerived</code> Java class is derived from the Java proxy class <code>DirectorBase</code> and overrides <code>upcall_method()</code>. -When C++ code invokes <code>upcall_method()</code>, the SWIG-generated C++ code redirects the call via JNI to the Java <code>directorDerived</code> subclass. +The following <code>DirectorDerived</code> Java class is derived from the Java proxy class <code>DirectorBase</code> and overrides <code>upcall_method()</code>. +When C++ code invokes <code>upcall_method()</code>, the SWIG-generated C++ code redirects the call via JNI to the Java <code>DirectorDerived</code> subclass. Naturally, the SWIG generated C++ code and the generated Java intermediate class marshal and convert arguments between C++ and Java when needed. </p> <div class="code"> <pre> -public class directorDerived extends DirectorBase { - public directorDerived() { +public class DirectorDerived extends DirectorBase { + public DirectorDerived() { } public void upcall_method() { - System.out.println("directorDerived::upcall_method() invoked."); + System.out.println("DirectorDerived::upcall_method() invoked."); } } </pre> @@ -3434,7 +3435,7 @@ <div class="code"> <pre> -directorDerived director = new directorDerived(); +DirectorDerived director = new DirectorDerived(); example.callup(director); </pre> </div> @@ -3445,14 +3446,110 @@ <div class="code"> <pre> -directorDerived::upcall_method() invoked. +DirectorDerived::upcall_method() invoked. </pre> </div> -<H2><a name="common_customization"></a>20.6 Common customization features</H2> +<H2><a name="java_allprotected"></a>20.6 Accessing protected members</H2> <p> +When using directors, the protected virtual methods are also wrapped. +These methods are wrapped with a protected Java proxy method, so the only way that Java code can access these is from within a Java class derived from the director class. +</p> + +<p> +Members which are protected and non-virtual can also be accessed when using the 'allprotected' mode. +The allprotected mode requires directors and is turned on by setting the <tt>allprotected</tt> option in addition to the <tt>directors</tt> option in the %module directive, like this: +</p> + +<div class="code"> +<pre> +%module(directors="1", allprotected="1") modulename +</pre> +</div> + +<p> +Protected member variables and methods (both static and non-static) will then be wrapped with protected access in the Java proxy class. +</p> + +<p> +<b>Note:</b> Neither the directors option nor the allprotected mode support types defined with protected scope. +This includes any enums or typedefs declared in the protected section of the C++ class. +</p> + +<p> +The following simple example is a class with numerous protected members, including the constructor and destructor: +</p> + +<div class="code"> +<pre> +%module(directors="1", allprotected="1") example + +%feature("director") ProtectedBase; + +// Ignore use of unsupported types (those defined in the protected section) +%ignore ProtectedBase::typedefs; + +%inline %{ + +class ProtectedBase { +protected: + ProtectedBase() {} + virtual ~ProtectedBase() {} + virtual void virtualMethod() const {} + void nonStaticMethod(double d) const {} + static void staticMethod(int i) {} + int instanceMemberVariable; + static int staticMemberVariable; + + // unsupported: types defined with protected access and the methods/variables which use them + typedef int IntegerType; + IntegerType typedefs(IntegerType it) { return it; } +}; +int ProtectedBase::staticMemberVariable = 10; + +%} + +</pre> +</div> + +<p> +Note that the <tt>IntegerType</tt> has protected scope and the members which use this type must be ignored as they cannot be wrapped. +</p> + +<p> +The proxy methods are protected, so the only way the protected members can be accessed is within a class that derives from the director class, such as the following: +</p> + +<div class="code"> +<pre> +class MyProtectedBase extends ProtectedBase +{ + public MyProtectedBase() { + } + + public void accessProtected() { + virtualMethod(); + nonStaticMethod(1.2); + staticMethod(99); + + setInstanceMemberVariable(5); + int i = getInstanceMemberVariable(); + + setStaticMemberVariable(10); + i = getStaticMemberVariable(); + } +} +</pre> +</div> + + + +<H2><a name="common_customization"></a>20.7 Common customization features</H2> + + +<p> An earlier section presented the absolute basics of C/C++ wrapping. If you do nothing but feed SWIG a header file, you will get an interface that mimics the behavior described. However, sometimes this isn't enough to produce a nice module. Certain @@ -3461,7 +3558,7 @@ to improve the interface to existing C/C++ code. </p> -<H3><a name="helper_functions"></a>20.6.1 C/C++ helper functions</H3> +<H3><a name="helper_functions"></a>20.7.1 C/C++ helper functions</H3> <p> @@ -3527,7 +3624,7 @@ customization features as covered in later sections, but sometimes helper functions are a quick and easy solution to difficult cases. </p> -<H3><a name="class_extension"></a>20.6.2 Class extension with %extend</H3> +<H3><a name="class_extension"></a>20.7.2 Class extension with %extend</H3> <p> @@ -3590,7 +3687,7 @@ in any way---the extensions only show up in the Java interface. </p> -<H3><a name="exception_handling"></a>20.6.3 Exception handling with %exception and %javaexception</H3> +<H3><a name="exception_handling"></a>20.7.3 Exception handling with %exception and %javaexception</H3> <p> @@ -3747,7 +3844,7 @@ The typemap example <a href="#exception_typemap">Handling C++ exception specifications as Java exceptions</a> provides further exception handling capabilities. </p> -<H3><a name="method_access"></a>20.6.4 Method access with %javamethodmodifiers</H3> +<H3><a name="method_access"></a>20.7.4 Method access with %javamethodmodifiers</H3> <p> @@ -3773,7 +3870,7 @@ </pre> </div> -<H2><a name="tips_techniques"></a>20.7 Tips and techniques</H2> +<H2><a name="tips_techniques"></a>20.8 Tips and techniques</H2> <p> @@ -3783,7 +3880,7 @@ solving these problems. </p> -<H3><a name="input_output_parameters"></a>20.7.1 Input and output parameters using primitive pointers and references</H3> +<H3><a name="input_output_parameters"></a>20.8.1 Input and output parameters using primitive pointers and references</H3> <p> @@ -3957,7 +4054,7 @@ will not have the intended effect since <tt>typemaps.i</tt> does not define an OUTPUT rule for <tt>Bar</tt>. </p> -<H3><a name="simple_pointers"></a>20.7.2 Simple pointers</H3> +<H3><a name="simple_pointers"></a>20.8.2 Simple pointers</H3> <p> @@ -4023,7 +4120,7 @@ See the <a href="Library.html#Library">SWIG Library</a> chapter for further details. </p> -<H3><a name="c_arrays"></a>20.7.3 Wrapping C arrays with Java arrays</H3> +<H3><a name="c_arrays"></a>20.8.3 Wrapping C arrays with Java arrays</H3> <p> @@ -4090,7 +4187,7 @@ There is an alternative approach using the SWIG array library and this is covered in the next section. </p> -<H3><a name="unbounded_c_arrays"></a>20.7.4 Unbounded C Arrays</H3> +<H3><a name="unbounded_c_arrays"></a>20.8.4 Unbounded C Arrays</H3> <p> @@ -4235,7 +4332,7 @@ package binary data, etc. </p> -<H3><a name="java_heap_allocations"></a>20.7.5 Overriding new and delete to allocate from Java heap</H3> +<H3><a name="java_heap_allocations"></a>20.8.5 Overriding new and delete to allocate from Java heap</H3> <p> @@ -4352,7 +4449,7 @@ code. </p> -<H2><a name="java_typemaps"></a>20.8 Java typemaps</H2> +<H2><a name="java_typemaps"></a>20.9 Java typemaps</H2> <p> @@ -4373,7 +4470,7 @@ part of using SWIG---the default wrapping behavior is enough in most cases. Typemaps are only used if you want to change some aspect of the generated code. -<H3><a name="default_primitive_type_mappings"></a>20.8.1 Default primitive type mappings</H3> +<H3><a name="default_primitive_type_mappings"></a>20.9.1 Default primitive type mappings</H3> <p> @@ -4525,7 +4622,7 @@ </p> -<H3><a name="Java_default_non_primitive_typemaps"></a>20.8.2 Default typemaps for non-primitive types</H3> +<H3><a name="Java_default_non_primitive_typemaps"></a>20.9.2 Default typemaps for non-primitive types</H3> <p> @@ -4540,7 +4637,7 @@ The Java type is either the proxy class or type wrapper class. </p> -<H3><a name="jvm64"></a>20.8.3 Sixty four bit JVMs</H3> +<H3><a name="jvm64"></a>20.9.3 Sixty four bit JVMs</H3> <p> @@ -4553,7 +4650,7 @@ </p> -<H3><a name="what_is_typemap"></a>20.8.4 What is a typemap?</H3> +<H3><a name="what_is_typemap"></a>20.9.4 What is a typemap?</H3> <p> @@ -4676,7 +4773,7 @@ </pre> </div> -<H3><a name="typemaps_c_to_java_types"></a>20.8.5 Typemaps for mapping C/C++ types to Java types</H3> +<H3><a name="typemaps_c_to_java_types"></a>20.9.5 Typemaps for mapping C/C++ types to Java types</H3> <p> @@ -4936,7 +5033,7 @@ </table> -<H3><a name="typemap_attributes"></a>20.8.6 Java typemap attributes</H3> +<H3><a name="typemap_attributes"></a>20.9.6 Java typemap attributes</H3> <p> @@ -4982,7 +5079,7 @@ Note that when the 'pre' or 'post' attributes are specified and the associated type is used in a constructor, a constructor helper function is generated. This is necessary as the Java proxy constructor wrapper makes a call to a support constructor using a <i>this</i> call. In Java the <i>this</i> call must be the first statement in the constructor body. The constructor body thus calls the helper function and the helper function instead makes the JNI call, ensuring the 'pre' code is called before the JNI call is made. There is a <a href="#java_date_marshalling">Date marshalling</a> example showing 'pre', 'post' and 'pgcppname' attributes in action. </p> -<H3><a name="special_variables"></a>20.8.7 Java special variables</H3> +<H3><a name="special_variables"></a>20.9.7 Java special variables</H3> <p> @@ -5125,7 +5222,7 @@ unless the jniclassname attribute is specified in the <a href="Java.html#java_module_directive">%module directive</a>. </p> -<H3><a name="typemaps_for_c_and_cpp"></a>20.8.8 Typemaps for both C and C++ compilation</H3> +<H3><a name="typemaps_for_c_and_cpp"></a>20.9.8 Typemaps for both C and C++ compilation</H3> <p> @@ -5162,7 +5259,7 @@ </p> -<H3><a name="java_code_typemaps"></a>20.8.9 Java code typemaps</H3> +<H3><a name="java_code_typemaps"></a>20.9.9 Java code typemaps</H3> <p> @@ -5358,7 +5455,7 @@ Again this is the same that is in "<tt>java.swg</tt>", barring the method modifier for <tt>getCPtr</tt>. </p> -<H3><a name="java_directors_typemaps"></a>20.8.10 Director specific typemaps</H3> +<H3><a name="java_directors_typemaps"></a>20.9.10 Director specific typemaps</H3> <p> @@ -5583,7 +5680,7 @@ </div> -<H2><a name="typemap_examples"></a>20.9 Typemap Examples</H2> +<H2><a name="typemap_examples"></a>20.10 Typemap Examples</H2> <p> @@ -5593,7 +5690,7 @@ </p> -<H3><a name="simpler_enum_classes"></a>20.9.1 Simpler Java enums for enums without initializers</H3> +<H3><a name="simpler_enum_classes"></a>20.10.1 Simpler Java enums for enums without initializers</H3> <p> @@ -5672,7 +5769,7 @@ </p> -<H3><a name="exception_typemap"></a>20.9.2 Handling C++ exception specifications as Java exceptions</H3> +<H3><a name="exception_typemap"></a>20.10.2 Handling C++ exception specifications as Java exceptions</H3> <p> @@ -5797,7 +5894,7 @@ </p> -<H3><a name="nan_exception_typemap"></a>20.9.3 NaN Exception - exception handling for a particular type</H3> +<H3><a name="nan_exception_typemap"></a>20.10.3 NaN Exception - exception handling for a particular type</H3> <p> @@ -5952,7 +6049,7 @@ If we had, we would have put it in the "in" typemap which, like all JNI and Java typemaps, also supports the 'throws' attribute. </p> -<H3><a name="converting_java_string_arrays"></a>20.9.4 Converting Java String arrays to char ** </H3> +<H3><a name="converting_java_string_arrays"></a>20.10.4 Converting Java String arrays to char ** </H3> <p> @@ -6096,7 +6193,7 @@ what Java types to use. </p> -<H3><a name="expanding_java_object"></a>20.9.5 Expanding a Java object to multiple arguments</H3> +<H3><a name="expanding_java_object"></a>20.10.5 Expanding a Java object to multiple arguments</H3> <p> @@ -6178,7 +6275,7 @@ </div> -<H3><a name="using_typemaps_return_arguments"></a>20.9.6 Using typemaps to return arguments</H3> +<H3><a name="using_typemaps_return_arguments"></a>20.10.6 Using typemaps to return arguments</H3> <p> @@ -6296,7 +6393,7 @@ 1 12.0 340.0 </pre></div> -<H3><a name="adding_downcasts"></a>20.9.7 Adding Java downcasts to polymorphic return types</H3> +<H3><a name="adding_downcasts"></a>20.10.7 Adding Java downcasts to polymorphic return types</H3> <p> @@ -6502,7 +6599,7 @@ Note that the JNI code above uses a number of string lookups to call a constructor, whereas this would not occur using byte compiled Java code. </p> -<H3><a name="adding_equals_method"></a>20.9.8 Adding an equals method to the Java classes</H3> +<H3><a name="adding_equals_method"></a>20.10.8 Adding an equals method to the Java classes</H3> <p> @@ -6546,7 +6643,7 @@ </div> -<H3><a name="void_pointers"></a>20.9.9 Void pointers and a common Java base class</H3> +<H3><a name="void_pointers"></a>20.10.9 Void pointers and a common Java base class</H3> <p> @@ -6605,7 +6702,7 @@ <li> It also has a function which effectively implements a cast from the type of the proxy/type wrapper class to a void pointer. This is necessary for passing a proxy class or a type wrapper class to a function that takes a void pointer. </ul> -<H3><a name="struct_pointer_pointer"></a>20.9.10 Struct pointer to pointer</H3> +<H3><a name="struct_pointer_pointer"></a>20.10.10 Struct pointer to pointer</H3> <p> @@ -6785,7 +6882,7 @@ the Butler class would behave much like any pure Java class and feel more natural to Java users. </p> -<H3><a name="java_memory_management_member_variables"></a>20.9.11 Memory management when returning references to member variables</H3> +<H3><a name="java_memory_management_member_variables"></a>20.10.11 Memory management when returning references to member variables</H3> <p> @@ -6908,7 +7005,7 @@ Note the <tt>addReference</tt> call. </p> -<H3><a name="java_memory_management_objects"></a>20.9.12 Memory management for objects passed to the C++ layer</H3> +<H3><a name="java_memory_management_objects"></a>20.10.12 Memory management for objects passed to the C++ layer</H3> <p> @@ -7024,7 +7121,7 @@ </div> -<H3><a name="java_date_marshalling"></a>20.9.13 Date marshalling using the javain typemap and associated attributes</H3> +<H3><a name="java_date_marshalling"></a>20.10.13 Date marshalling using the javain typemap and associated attributes</H3> <p> @@ -7201,7 +7298,7 @@ -<H2><a name="java_directors_faq"></a>20.10 Living with Java Directors</H2> +<H2><a name="java_directors_faq"></a>20.11 Living with Java Directors</H2> <p> @@ -7382,10 +7479,10 @@ </li> </ol> -<H2><a name="odds_ends"></a>20.11 Odds and ends</H2> +<H2><a name="odds_ends"></a>20.12 Odds and ends</H2> -<H3><a name="javadoc_comments"></a>20.11.1 JavaDoc comments</H3> +<H3><a name="javadoc_comments"></a>20.12.1 JavaDoc comments</H3> <p> @@ -7441,7 +7538,7 @@ -<H3><a name="functional_interface"></a>20.11.2 Functional interface without proxy classes</H3> +<H3><a name="functional_interface"></a>20.12.2 Functional interface without proxy classes</H3> <p> @@ -7502,7 +7599,7 @@ </p> -<H3><a name="using_own_jni_functions"></a>20.11.3 Using your own JNI functions</H3> +<H3><a name="using_own_jni_functions"></a>20.12.3 Using your own JNI functions</H3> <p> @@ -7552,7 +7649,7 @@ </p> -<H3><a name="performance"></a>20.11.4 Performance concerns and hints</H3> +<H3><a name="performance"></a>20.12.4 Performance concerns and hints</H3> <p> @@ -7573,7 +7670,7 @@ This method normally calls the C++ destructor or <tt>free()</tt> for C code. </p> -<H3><a name="java_debugging"></a>20.11.5 Debugging</H3> +<H3><a name="java_debugging"></a>20.12.5 Debugging</H3> <p> @@ -7595,7 +7692,7 @@ </p> -<H2><a name="java_examples"></a>20.12 Examples</H2> +<H2><a name="java_examples"></a>20.13 Examples</H2> <p> Modified: trunk/Doc/Manual/SWIGPlus.html =================================================================== --- trunk/Doc/Manual/SWIGPlus.html 2008-04-22 22:09:18 UTC (rev 10384) +++ trunk/Doc/Manual/SWIGPlus.html 2008-04-22 22:37:48 UTC (rev 10385) @@ -1461,6 +1461,8 @@ Although SWIG usually detects the classes to which the fulton transform should be applied, in some situations it's necessary to override it. That's done with <tt>%feature("valuewrapper")</tt> and <tt>%feature("novaluewrapper")</tt>: +</p> + <div class="code"><pre> %feature("novaluewrapper") A; class A; @@ -1471,7 +1473,6 @@ // .... }; </pre></div> -</p> <p> <b>Note:</b> this transformation has no effect on typemaps This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2008-06-21 14:04:57
|
Revision: 10536 http://swig.svn.sourceforge.net/swig/?rev=10536&view=rev Author: wsfulton Date: 2008-06-21 04:35:33 -0700 (Sat, 21 Jun 2008) Log Message: ----------- better terminology for static types Modified Paths: -------------- trunk/Doc/Manual/SWIGPlus.html trunk/Doc/Manual/Typemaps.html Modified: trunk/Doc/Manual/SWIGPlus.html =================================================================== --- trunk/Doc/Manual/SWIGPlus.html 2008-06-20 20:02:30 UTC (rev 10535) +++ trunk/Doc/Manual/SWIGPlus.html 2008-06-21 11:35:33 UTC (rev 10536) @@ -1153,8 +1153,9 @@ <p> -This is great for reducing the size of the wrappers, but the caveat is it does not work for the strongly typed languages -which don't have optional arguments in the language, such as C# and Java. +This is great for reducing the size of the wrappers, but the caveat is it does not work for the statically typed languages, +such as C# and Java, +which don't have optional arguments in the language, Another restriction of this feature is that it cannot handle default arguments that are not public. The following example illustrates this: </p> Modified: trunk/Doc/Manual/Typemaps.html =================================================================== --- trunk/Doc/Manual/Typemaps.html 2008-06-20 20:02:30 UTC (rev 10535) +++ trunk/Doc/Manual/Typemaps.html 2008-06-21 11:35:33 UTC (rev 10536) @@ -702,7 +702,7 @@ </p> <p><em>code</em> specifies the code used in the typemap. -Usually this is C/C++ code, but in the strongly typed target languages, such as Java and C#, this can contain target language code for certain typemaps. +Usually this is C/C++ code, but in the statically typed target languages, such as Java and C#, this can contain target language code for certain typemaps. It can take any one of the following forms: </p> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2008-06-22 05:14:05
|
Revision: 10551 http://swig.svn.sourceforge.net/swig/?rev=10551&view=rev Author: wsfulton Date: 2008-06-21 17:09:51 -0700 (Sat, 21 Jun 2008) Log Message: ----------- documentation sections update Modified Paths: -------------- trunk/Doc/Manual/Contents.html trunk/Doc/Manual/Java.html Modified: trunk/Doc/Manual/Contents.html =================================================================== --- trunk/Doc/Manual/Contents.html 2008-06-22 00:09:11 UTC (rev 10550) +++ trunk/Doc/Manual/Contents.html 2008-06-22 00:09:51 UTC (rev 10551) @@ -768,6 +768,7 @@ <li><a href="Java.html#java_directors_classes">Director classes</a> <li><a href="Java.html#java_directors_overhead">Overhead and code bloat</a> <li><a href="Java.html#java_directors_example">Simple directors example</a> +<li><a href="Java.html#java_directors_threading">Director threading issues</a> </ul> <li><a href="Java.html#java_allprotected">Accessing protected members</a> <li><a href="Java.html#common_customization">Common customization features</a> Modified: trunk/Doc/Manual/Java.html =================================================================== --- trunk/Doc/Manual/Java.html 2008-06-22 00:09:11 UTC (rev 10550) +++ trunk/Doc/Manual/Java.html 2008-06-22 00:09:51 UTC (rev 10551) @@ -85,6 +85,7 @@ <li><a href="#java_directors_classes">Director classes</a> <li><a href="#java_directors_overhead">Overhead and code bloat</a> <li><a href="#java_directors_example">Simple directors example</a> +<li><a href="#java_directors_threading">Director threading issues</a> </ul> <li><a href="#java_allprotected">Accessing protected members</a> <li><a href="#common_customization">Common customization features</a> @@ -3450,8 +3451,9 @@ </pre> </div> -<H3><a name="java_directors_threading"></a>Director threading issues</H3> +<H3><a name="java_directors_threading"></a>20.5.5 Director threading issues</H3> + <p> Depending on your operating system and version of Java and how you are using threads, you might find the JVM hangs on exit. There are a couple of solutions to try out. The preferred solution requires jdk-1.4 and later and uses <tt>AttachCurrentThreadAsDaemon</tt> instead of <tt>AttachCurrentThread</tt> whenever a call into the JVM is required. This can be enabled by defining the SWIG_JAVA_ATTACH_CURRENT_THREAD_AS_DAEMON macro when compiling the C++ wrapper code. For older JVMs define SWIG_JAVA_NO_DETACH_CURRENT_THREAD instead, to avoid the <tt>DetachCurrentThread</tt> call but this will result in a memory leak instead. For further details inspect the source code in the java/director.swg library file. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2008-06-25 00:16:10
|
Revision: 10588 http://swig.svn.sourceforge.net/swig/?rev=10588&view=rev Author: wsfulton Date: 2008-06-24 17:16:04 -0700 (Tue, 24 Jun 2008) Log Message: ----------- section update Modified Paths: -------------- trunk/Doc/Manual/Contents.html trunk/Doc/Manual/Typemaps.html Modified: trunk/Doc/Manual/Contents.html =================================================================== --- trunk/Doc/Manual/Contents.html 2008-06-25 00:04:06 UTC (rev 10587) +++ trunk/Doc/Manual/Contents.html 2008-06-25 00:16:04 UTC (rev 10588) @@ -380,7 +380,7 @@ </ul> <li><a href="Typemaps.html#Typemaps_nn43">Typemaps for multiple languages</a> <li><a href="Typemaps.html#Typemaps_optimal">Optimal code generation when returning by value</a> -<li><a href="Typemaps.html#Typemaps_nn42">Multi-argument typemaps</a> +<li><a href="Typemaps.html#Typemaps_multi_argument_typemaps">Multi-argument typemaps</a> <li><a href="Typemaps.html#runtime_type_checker">The run-time type checker</a> <ul> <li><a href="Typemaps.html#Typemaps_nn45">Implementation</a> Modified: trunk/Doc/Manual/Typemaps.html =================================================================== --- trunk/Doc/Manual/Typemaps.html 2008-06-25 00:04:06 UTC (rev 10587) +++ trunk/Doc/Manual/Typemaps.html 2008-06-25 00:16:04 UTC (rev 10588) @@ -65,7 +65,7 @@ </ul> <li><a href="#Typemaps_nn43">Typemaps for multiple languages</a> <li><a href="#Typemaps_optimal">Optimal code generation when returning by value</a> -<li><a href="#Typemaps_nn42">Multi-argument typemaps</a> +<li><a href="#Typemaps_multi_argument_typemaps">Multi-argument typemaps</a> <li><a href="#runtime_type_checker">The run-time type checker</a> <ul> <li><a href="#Typemaps_nn45">Implementation</a> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |