Expand docs on advanced %ignore
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12907 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
15c4a30d9f
commit
320a83627c
2 changed files with 51 additions and 2 deletions
|
|
@ -156,6 +156,7 @@
|
|||
<li><a href="SWIG.html#SWIG_nn29">Simple renaming of specific identifiers</a>
|
||||
<li><a href="SWIG.html#SWIG_advanced_renaming">Advanced renaming support</a>
|
||||
<li><a href="SWIG.html#SWIG_limiting_renaming">Limiting global renaming rules</a>
|
||||
<li><a href="SWIG.html#SWIG_chosen_unignore">Ignoring everything then wrapping a few selected symbols</a>
|
||||
</ul>
|
||||
<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>
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@
|
|||
<li><a href="#SWIG_nn29">Simple renaming of specific identifiers</a>
|
||||
<li><a href="#SWIG_advanced_renaming">Advanced renaming support</a>
|
||||
<li><a href="#SWIG_limiting_renaming">Limiting global renaming rules</a>
|
||||
<li><a href="#SWIG_chosen_unignore">Ignoring everything then wrapping a few selected symbols</a>
|
||||
</ul>
|
||||
<li><a href="#SWIG_default_args">Default/optional arguments</a>
|
||||
<li><a href="#SWIG_nn30">Pointers to functions and callbacks</a>
|
||||
|
|
@ -1996,9 +1997,10 @@ such match expressions, for example
|
|||
</div>
|
||||
<p>
|
||||
will capitalize the names of all the enum elements but not change the case of
|
||||
the other declarations. Similarly, <tt>%$isclass</tt>, <tt>%$isfunction</tt>
|
||||
the other declarations. Similarly, <tt>%$isclass</tt>, <tt>%$isfunction</tt>,
|
||||
<tt>%$isconstructor</tt>, <tt>%$isunion</tt>, <tt>%$istemplate</tt>,
|
||||
and <tt>%$isvariable</tt> can be used. Many other checks are possible and this
|
||||
documentation is not exhaustive, see "%rename predicates" section of
|
||||
documentation is not exhaustive, see the "%rename predicates" section in
|
||||
<tt>swig.swg</tt> for the full list of supported match expressions.
|
||||
</p>
|
||||
|
||||
|
|
@ -2023,9 +2025,13 @@ declaration name directly can be preferable and can also be done using
|
|||
%rename("$ignore", regextarget=1) "Old$";
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Notice that the check is done only against the name of the declaration
|
||||
itself, if you need to match the full name of a C++ declaration you
|
||||
must use <tt>fullname</tt> attribute:
|
||||
</p>
|
||||
|
||||
<div class="code">
|
||||
<pre>
|
||||
%rename("$ignore", regextarget=1, fullname=1) "NameSpace::ClassName::.*Old$";
|
||||
|
|
@ -2050,6 +2056,48 @@ wrap C++ overloaded functions and methods or C++ methods which use default argum
|
|||
</p>
|
||||
|
||||
|
||||
<H4><a name="SWIG_chosen_unignore"></a>5.4.7.4 Ignoring everything then wrapping a few selected symbols</H4>
|
||||
|
||||
|
||||
<p>
|
||||
Using the techniques described above it is possible to ignore everything in a header and then
|
||||
selectively wrap a few chosen methods or classes. For example, consider a header, <tt>myheader.h</tt>
|
||||
which has many classes in it and just the one class called <tt>Star</tt> is wanted within this header,
|
||||
the following approach could be taken:
|
||||
</p>
|
||||
|
||||
<div class="code">
|
||||
<pre>
|
||||
%ignore ""; // Ignore everything
|
||||
|
||||
// Unignore chosen class 'Star'
|
||||
%rename("%s") Star;
|
||||
|
||||
// As the ignore everything will include the constructor, destructor, methods etc
|
||||
// in the class, these have to be explicitly unignored too:
|
||||
%rename("%s") Star::Star;
|
||||
%rename("%s") Star::~Star;
|
||||
%rename("%s") Star::shine; // named method
|
||||
|
||||
%include "myheader.h"
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Another approach which might be more suitable as it does not require naming all the methods in the
|
||||
chosen class is to begin by ignoring just the classes. This does not add an explicit ignore to any
|
||||
members of the class, so when the chosen class is unignored, all of its methods will be wrapped.
|
||||
</p>
|
||||
|
||||
<div class="code">
|
||||
<pre>
|
||||
%rename($ignore, %$isclass) ""; // Only ignore all classes
|
||||
%rename("%s") Star; // Unignore 'Star'
|
||||
%include "myheader.h"
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<H3><a name="SWIG_default_args"></a>5.4.8 Default/optional arguments</H3>
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue