Some notes about reducing the wrapper file size added
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@6057 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
7cae5d46c5
commit
d30f6e76a0
1 changed files with 33 additions and 0 deletions
|
|
@ -171,6 +171,39 @@ behavior. When working with dynamically loadable modules, you should try to work
|
|||
Due to the complexity of working with shared libraries and multiple modules, it might be a good idea to consult
|
||||
an outside reference. John Levine's "Linkers and Loaders" is highly recommended.
|
||||
|
||||
<a name="n6"></a><H2>14.5 Reducing the wrapper file size</H2>
|
||||
Using multiple modules with the <tt>%import</tt> directive is the most common approach to modularising large projects.
|
||||
In this way a number of different wrapper files can be generated, thereby avoiding the generation of a single large wrapper file.
|
||||
There are a couple of alternative solutions for reducing the size of a wrapper file through the use of command line options.
|
||||
|
||||
<p/>
|
||||
<b>-fcompact</b><br>
|
||||
This command line option will compact the size of the wrapper file without changing the code generated into the wrapper file.
|
||||
It simply removes blank lines and joins lines of code together.
|
||||
This is useful for compilers that have a maximum file size that can be handled.
|
||||
|
||||
<p/>
|
||||
<b>-fvirtual</b><br>
|
||||
This command line option will remove the generation of superfluous virtual method wrappers.
|
||||
Consider the following inheritance hierarchy:
|
||||
|
||||
<blockquote>
|
||||
<pre>
|
||||
struct Base {
|
||||
virtual void method();
|
||||
...
|
||||
};
|
||||
|
||||
struct Derived : Base {
|
||||
virtual void method();
|
||||
...
|
||||
};
|
||||
</pre>
|
||||
</blockquote>
|
||||
Normally wrappers are generated for both methods, whereas this command line option will suppress the generation of a wrapper for <tt>Derived::method</tt>.
|
||||
Normal polymorphic behaviour remains as <tt>Derived::method</tt> will still be called should you have
|
||||
a <tt>Derived</tt> instance and call the wrapper for <tt>Base::method</tt>.
|
||||
|
||||
<p><hr>
|
||||
|
||||
<address>SWIG 1.3 - Last Modified : July 9, 2004</address>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue