From: <ol...@us...> - 2009-06-30 14:26:39
|
Revision: 11334 http://swig.svn.sourceforge.net/swig/?rev=11334&view=rev Author: olly Date: 2009-06-30 12:24:49 +0000 (Tue, 30 Jun 2009) Log Message: ----------- Use -O2 in the GCC examples as GCC defaults to not optimising at all. Document using GCC's -fPIC option as the standard approach - x86 is the oddity here and most architectures require it (or are always PIC), and on x86 it's better to use it or else code pages from the library need relocations and can't be shared. Use "python2.5" rather than "python2.0" in paths in example commands. Fix a typo. Modified Paths: -------------- trunk/Doc/Manual/Python.html Modified: trunk/Doc/Manual/Python.html =================================================================== --- trunk/Doc/Manual/Python.html 2009-06-30 11:50:14 UTC (rev 11333) +++ trunk/Doc/Manual/Python.html 2009-06-30 12:24:49 UTC (rev 11334) @@ -339,7 +339,7 @@ setup.py is the tradition) <li> <tt>build_ext</tt> -- telling distutils to build extensions <li> <tt>--inplace</tt> -- this tells distutils to put the extension lib in the current dir. - Other wise, it will put it inside a build hierarchy, and you'd have to move it to use it. + Otherwise, it will put it inside a build hierarchy, and you'd have to move it to use it. </ul> <p> @@ -363,8 +363,8 @@ <div class="shell"><pre> $ swig -python example.i -$ gcc -c -fPIC example.c -$ gcc -c -fPIC example_wrap.c -I/usr/local/include/python2.0 +$ gcc -O2 -fPIC -c example.c +$ gcc -O2 -fPIC -c example_wrap.c -I/usr/local/include/python2.5 $ gcc -shared example.o example_wrap.o -o _example.so </pre></div> @@ -654,26 +654,19 @@ <div class="shell"><pre> $ swig -c++ -python example.i -$ g++ -c example.cxx -$ g++ -c example_wrap.cxx -I/usr/local/include/python2.0 +$ g++ -O2 -fPIC -c example.cxx +$ g++ -O2 -fPIC -c example_wrap.cxx -I/usr/local/include/python2.5 $ g++ -shared example.o example_wrap.o -o _example.so </pre></div> <p> -On some platforms, you could also need to generate -position-independent code (PIC), by using a compiler option such as -fPIC. -Notably, the x86_64 (Opteron and EM64T) platform requires it, and when -using the GNU Compiler Suite, you will need to modify the previous example -as follows: +The -fPIC option tells GCC to generate position-independent code (PIC) +which is required for most architectures (it's not vital on x86, but +still a good idea as it allows code pages from the library to be shared between +processes). Other compilers may need a different option specified instead of +-fPIC. </p> -<div class="shell"><pre> -$ swig -c++ -python example.i -$ g++ -fPIC -c example.cxx -$ g++ -fPIC -c example_wrap.cxx -I/usr/local/include/python2.0 -$ g++ -shared example.o example_wrap.o -o _example.so -</pre></div> - <p> In addition to this, you may need to include additional library files to make it work. For example, if you are using the Sun C++ compiler on @@ -683,7 +676,7 @@ <div class="shell"><pre> $ swig -c++ -python example.i $ CC -c example.cxx -$ CC -c example_wrap.cxx -I/usr/local/include/python2.0 +$ CC -c example_wrap.cxx -I/usr/local/include/python2.5 $ CC -G example.o example_wrap.o -L/opt/SUNWspro/lib -o _example.so -lCrun </pre></div> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2009-11-14 22:08:01
|
Revision: 11745 http://swig.svn.sourceforge.net/swig/?rev=11745&view=rev Author: wsfulton Date: 2009-11-14 22:07:51 +0000 (Sat, 14 Nov 2009) Log Message: ----------- Removed empty sections Modified Paths: -------------- trunk/Doc/Manual/Python.html Modified: trunk/Doc/Manual/Python.html =================================================================== --- trunk/Doc/Manual/Python.html 2009-11-14 21:54:18 UTC (rev 11744) +++ trunk/Doc/Manual/Python.html 2009-11-14 22:07:51 UTC (rev 11745) @@ -3854,15 +3854,6 @@ also be used to extra binary data from arbitrary pointers. </p> -<H3><a name="Python_nn50"></a>31.7.5 Arrays</H3> - - -<H3><a name="Python_nn51"></a>31.7.6 String arrays</H3> - - -<H3><a name="Python_nn52"></a>31.7.7 STL wrappers</H3> - - <H2><a name="Python_nn53"></a>31.8 Typemaps</H2> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2010-05-01 10:02:29
|
Revision: 12006 http://swig.svn.sourceforge.net/swig/?rev=12006&view=rev Author: wsfulton Date: 2010-05-01 10:02:23 +0000 (Sat, 01 May 2010) Log Message: ----------- Remove incorrect documentation about %ref and %unref Modified Paths: -------------- trunk/Doc/Manual/Python.html Modified: trunk/Doc/Manual/Python.html =================================================================== --- trunk/Doc/Manual/Python.html 2010-05-01 10:01:26 UTC (rev 12005) +++ trunk/Doc/Manual/Python.html 2010-05-01 10:02:23 UTC (rev 12006) @@ -2124,8 +2124,8 @@ <p> To tell SWIG that 'RCObj' and all its derived classes are reference -counted objects, you use the "ref" and "unref" features, or -<tt>%ref</tt> and <tt>%unref</tt> directives (since 1.3.28). For example: +counted objects, you use the "ref" and "unref" features. +For example: </p> @@ -2143,25 +2143,6 @@ </pre> </div> -or, using the directive form: - - -<div class="code"> -<pre> -%module example -... - -%ref RCObj "$this->ref();" -%unref RCObj "$this->unref();" - -%include "rcobj.h" -%include "A.h" -... -</pre> -</div> - - - <p> where the code passed to the "ref" and "unref" features will be executed as needed whenever a new object is passed to python, or when This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ol...@us...> - 2010-06-01 15:14:35
|
Revision: 12074 http://swig.svn.sourceforge.net/swig/?rev=12074&view=rev Author: olly Date: 2010-06-01 15:14:29 +0000 (Tue, 01 Jun 2010) Log Message: ----------- Fix typos in __disown__() example Modified Paths: -------------- trunk/Doc/Manual/Python.html Modified: trunk/Doc/Manual/Python.html =================================================================== --- trunk/Doc/Manual/Python.html 2010-06-01 06:29:16 UTC (rev 12073) +++ trunk/Doc/Manual/Python.html 2010-06-01 15:14:29 UTC (rev 12074) @@ -2782,12 +2782,12 @@ <div class="targetlang"> <pre> >>> c = FooContainer() ->>> a = Foo().__disown()__ +>>> a = Foo().__disown__() >>> c.addFoo(a) >>> b = Foo() ->>> b = b.__disown()__ +>>> b = b.__disown__() >>> c.addFoo(b) ->>> c.addFoo(Foo().__disown()__) +>>> c.addFoo(Foo().__disown__()) </pre> </div> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ol...@us...> - 2010-12-10 05:52:51
|
Revision: 12343 http://swig.svn.sourceforge.net/swig/?rev=12343&view=rev Author: olly Date: 2010-12-10 05:52:45 +0000 (Fri, 10 Dec 2010) Log Message: ----------- Fix typo (extra ')') in Python docs (SF#3131673). Modified Paths: -------------- trunk/Doc/Manual/Python.html Modified: trunk/Doc/Manual/Python.html =================================================================== --- trunk/Doc/Manual/Python.html 2010-12-09 07:42:24 UTC (rev 12342) +++ trunk/Doc/Manual/Python.html 2010-12-10 05:52:45 UTC (rev 12343) @@ -4592,7 +4592,7 @@ %} %typemap(in) double [ANY](double temp[$1_dim0]) { - if (!convert_darray($input,temp,$1_dim0))) { + if (!convert_darray($input,temp,$1_dim0)) { return NULL; } $1 = &temp[0]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sz...@us...> - 2011-04-03 08:35:32
|
Revision: 12597 http://swig.svn.sourceforge.net/swig/?rev=12597&view=rev Author: szager Date: 2011-04-03 08:35:26 +0000 (Sun, 03 Apr 2011) Log Message: ----------- -builtin feature will appear in 2.0.4 Modified Paths: -------------- trunk/Doc/Manual/Python.html Modified: trunk/Doc/Manual/Python.html =================================================================== --- trunk/Doc/Manual/Python.html 2011-04-03 08:33:41 UTC (rev 12596) +++ trunk/Doc/Manual/Python.html 2011-04-03 08:35:26 UTC (rev 12597) @@ -2204,7 +2204,7 @@ of how the proxy classes work. </p> -<p><b>New in SWIG version 2.0.3:</b> +<p><b>New in SWIG version 2.0.4:</b> The use of Python proxy classes has performance implications that may be unacceptable for a high-performance library. The new <tt>-builtin</tt> option instructs SWIG to forego the use of proxy classes, and instead This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sz...@us...> - 2011-04-06 23:30:33
|
Revision: 12613 http://swig.svn.sourceforge.net/swig/?rev=12613&view=rev Author: szager Date: 2011-04-06 23:30:27 +0000 (Wed, 06 Apr 2011) Log Message: ----------- Fix example to show %feature directive before method declaration. Modified Paths: -------------- trunk/Doc/Manual/Python.html Modified: trunk/Doc/Manual/Python.html =================================================================== --- trunk/Doc/Manual/Python.html 2011-04-05 23:16:13 UTC (rev 12612) +++ trunk/Doc/Manual/Python.html 2011-04-06 23:30:27 UTC (rev 12613) @@ -2534,13 +2534,13 @@ <div class="code"> <pre> +%feature("python:slot", "tp_hash", functype="hashfunc") Cheese::cheeseHashFunc; + class Cheese { public: Cheese (const char *name); long cheeseHashFunc () const; }; - -%feature("python:slot", "tp_hash", functype="hashfunc") Cheese::cheeseHashFunc; </pre> </div> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sz...@us...> - 2011-05-16 06:12:21
|
Revision: 12669 http://swig.svn.sourceforge.net/swig/?rev=12669&view=rev Author: szager Date: 2011-05-16 06:12:15 +0000 (Mon, 16 May 2011) Log Message: ----------- Documented non-looping dependency graph requirement for -builtin. Modified Paths: -------------- trunk/Doc/Manual/Python.html Modified: trunk/Doc/Manual/Python.html =================================================================== --- trunk/Doc/Manual/Python.html 2011-05-14 23:54:09 UTC (rev 12668) +++ trunk/Doc/Manual/Python.html 2011-05-16 06:12:15 UTC (rev 12669) @@ -2369,7 +2369,8 @@ <li>Static member variables are no longer accessed through the 'cvar' field (e.g., <tt>Dances.cvar.FishSlap</tt>). They are instead accessed in the idiomatic way (<tt>Dances.FishSlap</tt>).</li> </ul> -<p>Wrapped types may not be raised as python exceptions. Here's why: the python internals expect that all sub-classes of Exception will have this struct layout:</p> + </li> + <li><p>Wrapped types may not be raised as python exceptions. Here's why: the python internals expect that all sub-classes of Exception will have this struct layout:</p> <div class="code"> <pre> @@ -2427,14 +2428,10 @@ </pre> </div> </li> -<li><p>Reverse binary operators (e.g., <tt>__radd__</tt>) are not supported.</p></li> -</ul> - -<p> -To illustrate the last point, if you have a wrapped class called <tt>MyString</tt>, +<li><p>Reverse binary operators (e.g., <tt>__radd__</tt>) are not supported.</p> +<p>To illustrate this point, if you have a wrapped class called <tt>MyString</tt>, and you want to use instances of <tt>MyString</tt> interchangeably with native python -strings, you can define an <tt>'operator+ (const char*)'</tt> method : -</p> +strings, you can define an <tt>'operator+ (const char*)'</tt> method :</p> <div class="code"> <pre> @@ -2478,7 +2475,84 @@ The above code fails, because the first operand -- a native python string -- doesn't know how to add an instance of <tt>MyString</tt> to itself. </p> +</li> +<li><p>If you have multiple SWIG modules that share type information (<a href="Modules.html#Modules_nn2">more info</a>), +the <tt>-builtin</tt> option requiress a bit of extra discipline to ensure that base classes are initialized before derived classes. Specifically:</p> +<ul> +<li>There must be an unambiguous non-looping dependency graph for the modules.</li> +<li>Module dependencies must be explicitly stated with <tt>%import</tt> statements in the SWIG interface file.</li> +</li> +</ul> + +<p>As an example, suppose module <tt>A</tt> has this interface in <tt>A.i</tt> :</p> + +<div class="code"><pre> +%module "A"; + +class Base { +... +}; +</pre></div> + +<p>If you want to wrap another module containing a class that inherits from <tt>A</tt>, this is how it would look :</p> + +<div class="code"><pre> +%module "B"; + +%import "A.i" + +class Derived : public Base { +... +}; +</pre></div> + +<p>The <tt>import "A.i"</tt> statement is required, because module <tt>B</tt> depends on module <tt>A</tt>.</p> + +<p>As long as you obey these requirements, your python code may import the modules in any order :</p> + +<div class="targetlang"><pre> +import B +import A + +d = B.Derived() +</pre></div> + +<p>Here's an example of two interface files that have a dependency loop:</p> + +<p><tt>A.i:</tt></p> + +<div class="code"><pre> +%module "A"; + +class BaseA { +... +}; + +class DerivedA : public BaseB { +... +}; +</pre></div> + +<p><tt>B.i:</tt></p> + +<div class="code"><pre> +%module "B"; + +class BaseB { +... +}; + +class DerivedB : public BaseA { +... +}; +</pre></div> + +<p>These modules are incompatible with the <tt>-builtin</tt> option.</p> + +</li> +</ul> + <H4><a name="Python_builtin_overloads"></a>33.4.2.2 Operator overloads -- use them!</H4> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sz...@us...> - 2011-05-17 21:53:45
|
Revision: 12683 http://swig.svn.sourceforge.net/swig/?rev=12683&view=rev Author: szager Date: 2011-05-17 21:53:39 +0000 (Tue, 17 May 2011) Log Message: ----------- Cleaned up section about dependency requirements for -builtin. Modified Paths: -------------- trunk/Doc/Manual/Python.html Modified: trunk/Doc/Manual/Python.html =================================================================== --- trunk/Doc/Manual/Python.html 2011-05-17 19:47:47 UTC (rev 12682) +++ trunk/Doc/Manual/Python.html 2011-05-17 21:53:39 UTC (rev 12683) @@ -2480,7 +2480,7 @@ <li><p>If you have multiple SWIG modules that share type information (<a href="Modules.html#Modules_nn2">more info</a>), the <tt>-builtin</tt> option requiress a bit of extra discipline to ensure that base classes are initialized before derived classes. Specifically:</p> <ul> -<li>There must be an unambiguous non-looping dependency graph for the modules.</li> +<li>There must be an unambiguous dependency graph for the modules.</li> <li>Module dependencies must be explicitly stated with <tt>%import</tt> statements in the SWIG interface file.</li> </li> </ul> @@ -2515,41 +2515,8 @@ import B import A -d = B.Derived() +assert(issubclass(B.Derived, A.Base)) </pre></div> - -<p>Here's an example of two interface files that have a dependency loop:</p> - -<p><tt>A.i:</tt></p> - -<div class="code"><pre> -%module "A"; - -class BaseA { -... -}; - -class DerivedA : public BaseB { -... -}; -</pre></div> - -<p><tt>B.i:</tt></p> - -<div class="code"><pre> -%module "B"; - -class BaseB { -... -}; - -class DerivedB : public BaseA { -... -}; -</pre></div> - -<p>These modules are incompatible with the <tt>-builtin</tt> option.</p> - </li> </ul> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ol...@us...> - 2011-05-24 23:54:06
|
Revision: 12713 http://swig.svn.sourceforge.net/swig/?rev=12713&view=rev Author: olly Date: 2011-05-24 23:53:59 +0000 (Tue, 24 May 2011) Log Message: ----------- Add link to PEP 3119. Modified Paths: -------------- trunk/Doc/Manual/Python.html Modified: trunk/Doc/Manual/Python.html =================================================================== --- trunk/Doc/Manual/Python.html 2011-05-24 14:54:46 UTC (rev 12712) +++ trunk/Doc/Manual/Python.html 2011-05-24 23:53:59 UTC (rev 12713) @@ -5497,7 +5497,8 @@ </pre></div> <p> -For details of abstract base class, please see PEP 3119. +For details of abstract base class, please see +<a href="http://www.python.org/dev/peps/pep-3119/">PEP 3119</a>. </p> </body> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ol...@us...> - 2011-05-24 23:55:42
|
Revision: 12714 http://swig.svn.sourceforge.net/swig/?rev=12714&view=rev Author: olly Date: 2011-05-24 23:55:35 +0000 (Tue, 24 May 2011) Log Message: ----------- Add link to PEP 3107. Modified Paths: -------------- trunk/Doc/Manual/Python.html Modified: trunk/Doc/Manual/Python.html =================================================================== --- trunk/Doc/Manual/Python.html 2011-05-24 23:53:59 UTC (rev 12713) +++ trunk/Doc/Manual/Python.html 2011-05-24 23:55:35 UTC (rev 12714) @@ -5305,7 +5305,8 @@ </p> <p> -For detailed usage of function annotation, see PEP 3107. +For detailed usage of function annotation, see +<a href="http://www.python.org/dev/peps/pep-3107/">PEP 3107</a>. </p> <H3><a name="Python_nn75"></a>33.12.2 Buffer interface</H3> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2011-08-20 22:18:53
|
Revision: 12779 http://swig.svn.sourceforge.net/swig/?rev=12779&view=rev Author: wsfulton Date: 2011-08-20 22:18:47 +0000 (Sat, 20 Aug 2011) Log Message: ----------- documentation - consistency in shadow/proxy terminology Modified Paths: -------------- trunk/Doc/Manual/Python.html Modified: trunk/Doc/Manual/Python.html =================================================================== --- trunk/Doc/Manual/Python.html 2011-08-17 21:52:52 UTC (rev 12778) +++ trunk/Doc/Manual/Python.html 2011-08-20 22:18:47 UTC (rev 12779) @@ -2153,7 +2153,7 @@ <p> where the code passed to the "ref" and "unref" features will be executed as needed whenever a new object is passed to python, or when -python tries to release the shadow object instance, respectively. +python tries to release the proxy object instance, respectively. </p> <p> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ol...@us...> - 2012-05-31 04:12:24
|
Revision: 13137 http://swig.svn.sourceforge.net/swig/?rev=13137&view=rev Author: olly Date: 2012-05-31 04:12:17 +0000 (Thu, 31 May 2012) Log Message: ----------- Fix doc typo Modified Paths: -------------- trunk/Doc/Manual/Python.html Modified: trunk/Doc/Manual/Python.html =================================================================== --- trunk/Doc/Manual/Python.html 2012-05-30 05:59:46 UTC (rev 13136) +++ trunk/Doc/Manual/Python.html 2012-05-31 04:12:17 UTC (rev 13137) @@ -2345,7 +2345,7 @@ </li> <li><p>If you have multiple SWIG modules that share type information (<a href="Modules.html#Modules_nn2">more info</a>), -the <tt>-builtin</tt> option requiress a bit of extra discipline to ensure that base classes are initialized before derived classes. Specifically:</p> +the <tt>-builtin</tt> option requires a bit of extra discipline to ensure that base classes are initialized before derived classes. Specifically:</p> <ul> <li><p>There must be an unambiguous dependency graph for the modules.</p></li> <li><p>Module dependencies must be explicitly stated with <tt>%import</tt> statements in the SWIG interface file.</p> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2012-12-10 19:45:10
|
Revision: 13954 http://swig.svn.sourceforge.net/swig/?rev=13954&view=rev Author: wsfulton Date: 2012-12-10 19:45:04 +0000 (Mon, 10 Dec 2012) Log Message: ----------- Clarify pythonprepend and pythonappend features when used on overloaded methods/constructors Modified Paths: -------------- trunk/Doc/Manual/Python.html Modified: trunk/Doc/Manual/Python.html =================================================================== --- trunk/Doc/Manual/Python.html 2012-12-09 20:49:52 UTC (rev 13953) +++ trunk/Doc/Manual/Python.html 2012-12-10 19:45:04 UTC (rev 13954) @@ -3386,9 +3386,41 @@ </pre> </div> +<p> +Note that when the underlying C++ method is overloaded, there is only one proxy Python method +for multiple C++ methods. In this case, only one of parsed methods is examined +for the feature. You are better off specifying the feature without the argument list to ensure it will get used, +as it will then get attached to all the overloaded C++ methods. For example: +</p> +<div class="code"> +<pre> +%module example +// Add python code to bar() +%pythonprepend Foo::bar %{ + #do something before C++ call +%} + +%pythonappend Foo::bar %{ + #do something after C++ call +%} + + +class Foo { +public: + int bar(int x); + int bar(); +} +</pre> +</div> + +<p> +The same applies for overloaded constructors. +</p> + + <H3><a name="Python_nn43"></a>34.6.3 Class extension with %extend</H3> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |