/tags/rel-1-3-26/SWIG/Doc/Manual/Contents.html
HTML | 1285 lines | 1160 code | 65 blank | 60 comment | 0 complexity | cee36afe214ad4a13f0083ab974a19a4 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
Large files files are truncated, but you can click here to view the full file
1 2<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 3<HTML> 4<HEAD> 5<TITLE>SWIG Users Manual</TITLE> 6</HEAD> 7<BODY BGCOLOR="#ffffff"> 8<H1>SWIG Users Manual</H1> 9 10<p> 11 12<h3><a href="Preface.html#Preface">1 Preface</a></h3> 13 14<!-- INDEX --> 15<div class="sectiontoc"> 16<ul> 17<li><a href="Preface.html#Preface_nn2">Introduction</a> 18<li><a href="Preface.html#Preface_nn3">Special Introduction for Version 1.3</a> 19<li><a href="Preface.html#Preface_nn4">SWIG Versions</a> 20<li><a href="Preface.html#Preface_nn5">SWIG resources</a> 21<li><a href="Preface.html#Preface_nn6">Prerequisites</a> 22<li><a href="Preface.html#Preface_nn7">Organization of this manual</a> 23<li><a href="Preface.html#Preface_nn8">How to avoid reading the manual</a> 24<li><a href="Preface.html#Preface_nn9">Backwards Compatibility</a> 25<li><a href="Preface.html#Preface_nn10">Credits</a> 26<li><a href="Preface.html#Preface_nn11">Bug reports</a> 27</ul> 28</div> 29<!-- INDEX --> 30 31<h3><a href="Introduction.html#Introduction">2 Introduction</a></h3> 32 33<!-- INDEX --> 34<div class="sectiontoc"> 35<ul> 36<li><a href="Introduction.html#Introduction_nn2">What is SWIG?</a> 37<li><a href="Introduction.html#Introduction_nn3">Why use SWIG?</a> 38<li><a href="Introduction.html#Introduction_nn4">A SWIG example</a> 39<ul> 40<li><a href="Introduction.html#Introduction_nn5">SWIG interface file</a> 41<li><a href="Introduction.html#Introduction_nn6">The swig command</a> 42<li><a href="Introduction.html#Introduction_nn7">Building a Perl5 module</a> 43<li><a href="Introduction.html#Introduction_nn8">Building a Python module</a> 44<li><a href="Introduction.html#Introduction_nn9">Shortcuts</a> 45</ul> 46<li><a href="Introduction.html#Introduction_nn10">Supported C/C++ language features</a> 47<li><a href="Introduction.html#Introduction_nn11">Non-intrusive interface building</a> 48<li><a href="Introduction.html#Introduction_build_system">Incorporating SWIG into a build system</a> 49<li><a href="Introduction.html#Introduction_nn12">Hands off code generation</a> 50<li><a href="Introduction.html#Introduction_nn13">SWIG and freedom</a> 51</ul> 52</div> 53<!-- INDEX --> 54 55<h3><a href="Windows.html#Windows">3 Getting started on Windows </a></h3> 56 57<!-- INDEX --> 58<div class="sectiontoc"> 59<ul> 60<li><a href="Windows.html#Windows_nn2">Installation on Windows</a> 61<ul> 62<li><a href="Windows.html#Windows_nn3">Windows Executable</a> 63</ul> 64<li><a href="Windows.html#examples">SWIG Windows Examples</a> 65<ul> 66<li><a href="Windows.html#Windows_nn5">Instructions for using the Examples with Visual Studio</a> 67<ul> 68<li><a href="Windows.html#Windows_nn6">Python</a> 69<li><a href="Windows.html#Windows_nn7">TCL</a> 70<li><a href="Windows.html#Windows_nn8">Perl</a> 71<li><a href="Windows.html#Windows_nn9">Java</a> 72<li><a href="Windows.html#Windows_nn10">Ruby</a> 73<li><a href="Windows.html#Windows_nn11">C#</a> 74</ul> 75<li><a href="Windows.html#Windows_nn12">Instructions for using the Examples with other compilers</a> 76</ul> 77<li><a href="Windows.html#Windows_nn13">SWIG on Cygwin and MinGW</a> 78<ul> 79<li><a href="Windows.html#swig_exe">Building swig.exe on Windows</a> 80<ul> 81<li><a href="Windows.html#Windows_nn15">Building swig.exe using MinGW and MSYS</a> 82<li><a href="Windows.html#Windows_nn16">Building swig.exe using Cygwin</a> 83<li><a href="Windows.html#Windows_nn17">Building swig.exe alternatives</a> 84</ul> 85<li><a href="Windows.html#examples_cygwin">Running the examples on Windows using Cygwin</a> 86</ul> 87</ul> 88</div> 89<!-- INDEX --> 90 91<h3><a href="Scripting.html#Scripting">4 Scripting Languages</a></h3> 92 93<!-- INDEX --> 94<div class="sectiontoc"> 95<ul> 96<li><a href="Scripting.html#Scripting_nn2">The two language view of the world</a> 97<li><a href="Scripting.html#Scripting_nn3">How does a scripting language talk to C?</a> 98<ul> 99<li><a href="Scripting.html#Scripting_nn4">Wrapper functions</a> 100<li><a href="Scripting.html#Scripting_nn5">Variable linking</a> 101<li><a href="Scripting.html#Scripting_nn6">Constants</a> 102<li><a href="Scripting.html#Scripting_nn7">Structures and classes</a> 103<li><a href="Scripting.html#Scripting_nn8">Proxy classes</a> 104</ul> 105<li><a href="Scripting.html#Scripting_nn9">Building scripting language extensions</a> 106<ul> 107<li><a href="Scripting.html#Scripting_nn10">Shared libraries and dynamic loading</a> 108<li><a href="Scripting.html#Scripting_nn11">Linking with shared libraries</a> 109<li><a href="Scripting.html#Scripting_nn12">Static linking</a> 110</ul> 111</ul> 112</div> 113<!-- INDEX --> 114 115<h3><a href="SWIG.html#SWIG">5 SWIG Basics</a></h3> 116 117<!-- INDEX --> 118<div class="sectiontoc"> 119<ul> 120<li><a href="SWIG.html#SWIG_nn2">Running SWIG</a> 121<ul> 122<li><a href="SWIG.html#SWIG_nn3">Input format</a> 123<li><a href="SWIG.html#output">SWIG Output</a> 124<li><a href="SWIG.html#SWIG_nn5">Comments</a> 125<li><a href="SWIG.html#SWIG_nn6">C Preprocessor</a> 126<li><a href="SWIG.html#SWIG_nn7">SWIG Directives</a> 127<li><a href="SWIG.html#SWIG_nn8">Parser Limitations</a> 128</ul> 129<li><a href="SWIG.html#SWIG_nn9">Wrapping Simple C Declarations</a> 130<ul> 131<li><a href="SWIG.html#SWIG_nn10">Basic Type Handling</a> 132<li><a href="SWIG.html#SWIG_nn11">Global Variables</a> 133<li><a href="SWIG.html#SWIG_nn12">Constants</a> 134<li><a href="SWIG.html#SWIG_nn13">A brief word about <tt>const</tt></a> 135<li><a href="SWIG.html#SWIG_nn14">A cautionary tale of <tt>char *</tt></a> 136</ul> 137<li><a href="SWIG.html#SWIG_nn15">Pointers and complex objects</a> 138<ul> 139<li><a href="SWIG.html#SWIG_nn16">Simple pointers</a> 140<li><a href="SWIG.html#SWIG_nn17">Run time pointer type checking</a> 141<li><a href="SWIG.html#SWIG_nn18">Derived types, structs, and classes</a> 142<li><a href="SWIG.html#SWIG_nn19">Undefined datatypes</a> 143<li><a href="SWIG.html#SWIG_nn20">Typedef</a> 144</ul> 145<li><a href="SWIG.html#SWIG_nn21">Other Practicalities</a> 146<ul> 147<li><a href="SWIG.html#SWIG_nn22">Passing structures by value</a> 148<li><a href="SWIG.html#SWIG_nn23">Return by value</a> 149<li><a href="SWIG.html#SWIG_nn24">Linking to structure variables</a> 150<li><a href="SWIG.html#SWIG_nn25">Linking to <tt>char *</tt></a> 151<li><a href="SWIG.html#SWIG_nn26">Arrays</a> 152<li><a href="SWIG.html#SWIG_readonly_variables">Creating read-only variables</a> 153<li><a href="SWIG.html#SWIG_nn28">Renaming and ignoring declarations</a> 154<li><a href="SWIG.html#SWIG_default_args">Default/optional arguments</a> 155<li><a href="SWIG.html#SWIG_nn30">Pointers to functions and callbacks</a> 156</ul> 157<li><a href="SWIG.html#SWIG_nn31">Structures and unions</a> 158<ul> 159<li><a href="SWIG.html#SWIG_nn32">Typedef and structures</a> 160<li><a href="SWIG.html#SWIG_nn33">Character strings and structures</a> 161<li><a href="SWIG.html#SWIG_nn34">Array members</a> 162<li><a href="SWIG.html#SWIG_nn35">Structure data members</a> 163<li><a href="SWIG.html#SWIG_nn36">C constructors and destructors </a> 164<li><a href="SWIG.html#SWIG_adding_member_functions">Adding member functions to C structures</a> 165<li><a href="SWIG.html#SWIG_nn38">Nested structures</a> 166<li><a href="SWIG.html#SWIG_nn39">Other things to note about structure wrapping</a> 167</ul> 168<li><a href="SWIG.html#SWIG_nn40">Code Insertion</a> 169<ul> 170<li><a href="SWIG.html#SWIG_nn41">The output of SWIG</a> 171<li><a href="SWIG.html#SWIG_nn42">Code insertion blocks</a> 172<li><a href="SWIG.html#SWIG_nn43">Inlined code blocks</a> 173<li><a href="SWIG.html#SWIG_nn44">Initialization blocks</a> 174</ul> 175<li><a href="SWIG.html#SWIG_nn45">An Interface Building Strategy</a> 176<ul> 177<li><a href="SWIG.html#SWIG_nn46">Preparing a C program for SWIG</a> 178<li><a href="SWIG.html#SWIG_nn47">The SWIG interface file</a> 179<li><a href="SWIG.html#SWIG_nn48">Why use separate interface files?</a> 180<li><a href="SWIG.html#SWIG_nn49">Getting the right header files</a> 181<li><a href="SWIG.html#SWIG_nn50">What to do with main()</a> 182</ul> 183</ul> 184</div> 185<!-- INDEX --> 186 187<h3><a href="SWIGPlus.html#SWIGPlus">6 SWIG and C++</a></h3> 188 189<!-- INDEX --> 190<div class="sectiontoc"> 191<ul> 192<li><a href="SWIGPlus.html#SWIGPlus_nn2">Comments on C++ Wrapping</a> 193<li><a href="SWIGPlus.html#SWIGPlus_nn3">Approach</a> 194<li><a href="SWIGPlus.html#SWIGPlus_nn4">Supported C++ features</a> 195<li><a href="SWIGPlus.html#SWIGPlus_nn5">Command line options and compilation</a> 196<li><a href="SWIGPlus.html#SWIGPlus_nn6">Simple C++ wrapping</a> 197<ul> 198<li><a href="SWIGPlus.html#SWIGPlus_nn7">Constructors and destructors</a> 199<li><a href="SWIGPlus.html#SWIGPlus_nn8">Default constructors</a> 200<li><a href="SWIGPlus.html#SWIGPlus_nn9">When constructor wrappers aren't created</a> 201<li><a href="SWIGPlus.html#SWIGPlus_nn10">Copy constructors</a> 202<li><a href="SWIGPlus.html#SWIGPlus_nn11">Member functions</a> 203<li><a href="SWIGPlus.html#SWIGPlus_nn12">Static members</a> 204<li><a href="SWIGPlus.html#SWIGPlus_nn13">Member data</a> 205</ul> 206<li><a href="SWIGPlus.html#SWIGPlus_default_args">Default arguments</a> 207<li><a href="SWIGPlus.html#SWIGPlus_nn15">Protection</a> 208<li><a href="SWIGPlus.html#SWIGPlus_nn16">Enums and constants</a> 209<li><a href="SWIGPlus.html#SWIGPlus_nn17">Friends</a> 210<li><a href="SWIGPlus.html#SWIGPlus_nn18">References and pointers</a> 211<li><a href="SWIGPlus.html#SWIGPlus_nn19">Pass and return by value</a> 212<li><a href="SWIGPlus.html#SWIGPlus_nn20">Inheritance</a> 213<li><a href="SWIGPlus.html#SWIGPlus_nn21">A brief discussion of multiple inheritance, pointers, and type checking</a> 214<li><a href="SWIGPlus.html#SWIGPlus_nn22">Renaming</a> 215<li><a href="SWIGPlus.html#SWIGPlus_overloaded_methods">Wrapping Overloaded Functions and Methods</a> 216<ul> 217<li><a href="SWIGPlus.html#SWIGPlus_nn24">Dispatch function generation</a> 218<li><a href="SWIGPlus.html#SWIGPlus_nn25">Ambiguity in Overloading</a> 219<li><a href="SWIGPlus.html#ambiguity_resolution_renaming">Ambiguity resolution and renaming</a> 220<li><a href="SWIGPlus.html#SWIGPlus_nn27">Comments on overloading</a> 221</ul> 222<li><a href="SWIGPlus.html#SWIGPlus_nn28">Wrapping overloaded operators</a> 223<li><a href="SWIGPlus.html#SWIGPlus_nn29">Class extension</a> 224<li><a href="SWIGPlus.html#SWIGPlus_nn30">Templates</a> 225<li><a href="SWIGPlus.html#SWIGPlus_nn31">Namespaces</a> 226<li><a href="SWIGPlus.html#SWIGPlus_exception_specifications">Exception specifications</a> 227<li><a href="SWIGPlus.html#SWIGPlus_nn33">Pointers to Members</a> 228<li><a href="SWIGPlus.html#SWIGPlus_nn34">Smart pointers and operator->()</a> 229<li><a href="SWIGPlus.html#SWIGPlus_nn35">Using declarations and inheritance</a> 230<li><a href="SWIGPlus.html#SWIGPlus_nn36">Partial class definitions</a> 231<li><a href="SWIGPlus.html#SWIGPlus_nn37">A brief rant about const-correctness</a> 232<li><a href="SWIGPlus.html#SWIGPlus_nn38">Proxy classes</a> 233<ul> 234<li><a href="SWIGPlus.html#SWIGPlus_nn39">Construction of proxy classes</a> 235<li><a href="SWIGPlus.html#SWIGPlus_nn40">Resource management in proxies</a> 236<li><a href="SWIGPlus.html#SWIGPlus_nn41">Language specific details</a> 237</ul> 238<li><a href="SWIGPlus.html#SWIGPlus_nn42">Where to go for more information</a> 239</ul> 240</div> 241<!-- INDEX --> 242 243<h3><a href="Preprocessor.html#Preprocessor">7 Preprocessing</a></h3> 244 245<!-- INDEX --> 246<div class="sectiontoc"> 247<ul> 248<li><a href="Preprocessor.html#Preprocessor_nn2">File inclusion</a> 249<li><a href="Preprocessor.html#Preprocessor_nn3">File imports</a> 250<li><a href="Preprocessor.html#Preprocessor_nn4">Conditional Compilation</a> 251<li><a href="Preprocessor.html#Preprocessor_nn5">Macro Expansion</a> 252<li><a href="Preprocessor.html#Preprocessor_nn6">SWIG Macros</a> 253<li><a href="Preprocessor.html#Preprocessor_nn7">C99 and GNU Extensions</a> 254<li><a href="Preprocessor.html#Preprocessor_nn8">Preprocessing and %{ ... %} blocks</a> 255<li><a href="Preprocessor.html#Preprocessor_nn9">Preprocessing and { ... }</a> 256<li><a href="Preprocessor.html#Preprocessor_nn10">Viewing preprocessor output</a> 257</ul> 258</div> 259<!-- INDEX --> 260 261<h3><a href="Library.html#Library">8 SWIG library</a></h3> 262 263<!-- INDEX --> 264<div class="sectiontoc"> 265<ul> 266<li><a href="Library.html#Library_nn2">The %include directive and library search path</a> 267<li><a href="Library.html#Library_nn3">C Arrays and Pointers</a> 268<ul> 269<li><a href="Library.html#Library_nn4">cpointer.i</a> 270<li><a href="Library.html#Library_nn5">carrays.i</a> 271<li><a href="Library.html#Library_nn6">cmalloc.i</a> 272<li><a href="Library.html#Library_nn7">cdata.i</a> 273</ul> 274<li><a href="Library.html#Library_nn8">C String Handling</a> 275<ul> 276<li><a href="Library.html#Library_nn9">Default string handling</a> 277<li><a href="Library.html#Library_nn10">Passing binary data</a> 278<li><a href="Library.html#Library_nn11">Using %newobject to release memory</a> 279<li><a href="Library.html#Library_nn12">cstring.i</a> 280</ul> 281<li><a href="Library.html#Library_stl_cpp_library">STL/C++ Library</a> 282<ul> 283<li><a href="Library.html#Library_nn14">std_string.i</a> 284<li><a href="Library.html#Library_nn15">std_vector.i</a> 285<li><a href="Library.html#Library_stl_exceptions">STL exceptions</a> 286</ul> 287<li><a href="Library.html#Library_nn16">Utility Libraries</a> 288<ul> 289<li><a href="Library.html#Library_nn17">exception.i</a> 290</ul> 291</ul> 292</div> 293<!-- INDEX --> 294 295<h3><a href="Arguments.html#Arguments">9 Argument Handling</a></h3> 296 297<!-- INDEX --> 298<div class="sectiontoc"> 299<ul> 300<li><a href="Arguments.html#Arguments_nn2">The typemaps.i library</a> 301<ul> 302<li><a href="Arguments.html#Arguments_nn3">Introduction</a> 303<li><a href="Arguments.html#Arguments_nn4">Input parameters</a> 304<li><a href="Arguments.html#Arguments_nn5">Output parameters</a> 305<li><a href="Arguments.html#Arguments_nn6">Input/Output parameters</a> 306<li><a href="Arguments.html#Arguments_nn7">Using different names</a> 307</ul> 308<li><a href="Arguments.html#Arguments_nn8">Applying constraints to input values</a> 309<ul> 310<li><a href="Arguments.html#Arguments_nn9">Simple constraint example</a> 311<li><a href="Arguments.html#Arguments_nn10">Constraint methods</a> 312<li><a href="Arguments.html#Arguments_nn11">Applying constraints to new datatypes</a> 313</ul> 314</ul> 315</div> 316<!-- INDEX --> 317 318<h3><a href="Typemaps.html#Typemaps">10 Typemaps</a></h3> 319 320<!-- INDEX --> 321<div class="sectiontoc"> 322<ul> 323<li><a href="Typemaps.html#Typemaps_nn2">Introduction</a> 324<ul> 325<li><a href="Typemaps.html#Typemaps_nn3">Type conversion</a> 326<li><a href="Typemaps.html#Typemaps_nn4">Typemaps</a> 327<li><a href="Typemaps.html#Typemaps_nn5">Pattern matching</a> 328<li><a href="Typemaps.html#Typemaps_nn6">Reusing typemaps</a> 329<li><a href="Typemaps.html#Typemaps_nn7">What can be done with typemaps?</a> 330<li><a href="Typemaps.html#Typemaps_nn8">What can't be done with typemaps?</a> 331<li><a href="Typemaps.html#Typemaps_nn9">The rest of this chapter</a> 332</ul> 333<li><a href="Typemaps.html#Typemaps_nn10">Typemap specifications</a> 334<ul> 335<li><a href="Typemaps.html#Typemaps_nn11">Defining a typemap</a> 336<li><a href="Typemaps.html#Typemaps_nn12">Typemap scope</a> 337<li><a href="Typemaps.html#Typemaps_nn13">Copying a typemap</a> 338<li><a href="Typemaps.html#Typemaps_nn14">Deleting a typemap</a> 339<li><a href="Typemaps.html#Typemaps_nn15">Placement of typemaps</a> 340</ul> 341<li><a href="Typemaps.html#Typemaps_nn16">Pattern matching rules</a> 342<ul> 343<li><a href="Typemaps.html#Typemaps_nn17">Basic matching rules</a> 344<li><a href="Typemaps.html#Typemaps_nn18">Typedef reductions</a> 345<li><a href="Typemaps.html#Typemaps_nn19">Default typemaps</a> 346<li><a href="Typemaps.html#Typemaps_mixed_default">Mixed default typemaps</a> 347<li><a href="Typemaps.html#Typemaps_nn20">Multi-arguments typemaps</a> 348</ul> 349<li><a href="Typemaps.html#Typemaps_nn21">Code generation rules</a> 350<ul> 351<li><a href="Typemaps.html#Typemaps_nn22">Scope</a> 352<li><a href="Typemaps.html#Typemaps_nn23">Declaring new local variables</a> 353<li><a href="Typemaps.html#Typemaps_nn24">Special variables</a> 354</ul> 355<li><a href="Typemaps.html#Typemaps_nn25">Common typemap methods</a> 356<ul> 357<li><a href="Typemaps.html#Typemaps_nn26">"in" typemap</a> 358<li><a href="Typemaps.html#Typemaps_nn27">"typecheck" typemap</a> 359<li><a href="Typemaps.html#Typemaps_nn28">"out" typemap</a> 360<li><a href="Typemaps.html#Typemaps_nn29">"arginit" typemap</a> 361<li><a href="Typemaps.html#Typemaps_nn30">"default" typemap</a> 362<li><a href="Typemaps.html#Typemaps_nn31">"check" typemap</a> 363<li><a href="Typemaps.html#Typemaps_nn32">"argout" typemap</a> 364<li><a href="Typemaps.html#Typemaps_nn33">"freearg" typemap</a> 365<li><a href="Typemaps.html#Typemaps_nn34">"newfree" typemap</a> 366<li><a href="Typemaps.html#Typemaps_nn35">"memberin" typemap</a> 367<li><a href="Typemaps.html#Typemaps_nn36">"varin" typemap</a> 368<li><a href="Typemaps.html#Typemaps_nn37">"varout" typemap</a> 369<li><a href="Typemaps.html#throws_typemap">"throws" typemap</a> 370</ul> 371<li><a href="Typemaps.html#Typemaps_nn39">Some typemap examples</a> 372<ul> 373<li><a href="Typemaps.html#Typemaps_nn40">Typemaps for arrays</a> 374<li><a href="Typemaps.html#Typemaps_nn41">Implementing constraints with typemaps</a> 375</ul> 376<li><a href="Typemaps.html#Typemaps_nn42">Multi-argument typemaps</a> 377<li><a href="Typemaps.html#runtime_type_checker">The run-time type checker</a> 378<ul> 379<li><a href="Typemaps.html#Typemaps_nn45">Implementation</a> 380<li><a href="Typemaps.html#Typemaps_nn46">Usage</a> 381</ul> 382<li><a href="Typemaps.html#Typemaps_overloading">Typemaps and overloading</a> 383<li><a href="Typemaps.html#Typemaps_nn48">More about <tt>%apply</tt> and <tt>%clear</tt></a> 384<li><a href="Typemaps.html#Typemaps_nn49">Reducing wrapper code size</a> 385<li><a href="Typemaps.html#Typemaps_nn47">Passing data between typemaps</a> 386<li><a href="Typemaps.html#Typemaps_nn51">Where to go for more information?</a> 387</ul> 388</div> 389<!-- INDEX --> 390 391<h3><a href="Customization.html#Customization">11 Customization Features</a></h3> 392 393<!-- INDEX --> 394<div class="sectiontoc"> 395<ul> 396<li><a href="Customization.html#exception">Exception handling with %exception</a> 397<ul> 398<li><a href="Customization.html#Customization_nn3">Handling exceptions in C code</a> 399<li><a href="Customization.html#Customization_nn4">Exception handling with longjmp()</a> 400<li><a href="Customization.html#Customization_nn5">Handling C++ exceptions</a> 401<li><a href="Customization.html#Customization_nn6">Defining different exception handlers</a> 402<li><a href="Customization.html#Customization_nn7">Using The SWIG exception library</a> 403</ul> 404<li><a href="Customization.html#ownership">Object ownership and %newobject</a> 405<li><a href="Customization.html#features">Features and the %feature directive</a> 406<ul> 407<li><a href="Customization.html#Customization_feature_flags">Feature flags</a> 408<li><a href="Customization.html#Customization_clearing_features">Clearing features</a> 409<li><a href="Customization.html#Customization_features_default_args">Features and default arguments</a> 410<li><a href="Customization.html#features_example">Feature example</a> 411</ul> 412</ul> 413</div> 414<!-- INDEX --> 415 416<h3><a href="Contract.html#Contract">12 Contracts</a></h3> 417 418<!-- INDEX --> 419<div class="sectiontoc"> 420<ul> 421<li><a href="Contract.html#Contract_nn2">The %contract directive</a> 422<li><a href="Contract.html#Contract_nn3">%contract and classes</a> 423<li><a href="Contract.html#Contract_nn4">Constant aggregation and %aggregate_check</a> 424<li><a href="Contract.html#Contract_nn5">Notes</a> 425</ul> 426</div> 427<!-- INDEX --> 428 429<h3><a href="Varargs.html#Varargs">13 Variable Length Arguments</a></h3> 430 431<!-- INDEX --> 432<div class="sectiontoc"> 433<ul> 434<li><a href="Varargs.html#Varargs_nn2">Introduction</a> 435<li><a href="Varargs.html#Varargs_nn3">The Problem</a> 436<li><a href="Varargs.html#Varargs_nn4">Default varargs support</a> 437<li><a href="Varargs.html#Varargs_nn5">Argument replacement using %varargs</a> 438<li><a href="Varargs.html#Varargs_nn6">Varargs and typemaps</a> 439<li><a href="Varargs.html#Varargs_nn7">Varargs wrapping with libffi</a> 440<li><a href="Varargs.html#Varargs_nn8">Wrapping of va_list</a> 441<li><a href="Varargs.html#Varargs_nn9">C++ Issues</a> 442<li><a href="Varargs.html#Varargs_nn10">Discussion</a> 443</ul> 444</div> 445<!-- INDEX --> 446 447<h3><a href="Warnings.html#Warnings">14 Warning Messages</a></h3> 448 449<!-- INDEX --> 450<div class="sectiontoc"> 451<ul> 452<li><a href="Warnings.html#Warnings_nn2">Introduction</a> 453<li><a href="Warnings.html#Warnings_nn3">Warning message suppression</a> 454<li><a href="Warnings.html#Warnings_nn4">Enabling additional warnings</a> 455<li><a href="Warnings.html#Warnings_nn5">Issuing a warning message</a> 456<li><a href="Warnings.html#Warnings_nn6">Commentary</a> 457<li><a href="Warnings.html#Warnings_nn7">Warnings as errors</a> 458<li><a href="Warnings.html#Warnings_nn8">Message output format</a> 459<li><a href="Warnings.html#Warnings_nn9">Warning number reference</a> 460<ul> 461<li><a href="Warnings.html#Warnings_nn10">Deprecated features (100-199)</a> 462<li><a href="Warnings.html#Warnings_nn11">Preprocessor (200-299)</a> 463<li><a href="Warnings.html#Warnings_nn12">C/C++ Parser (300-399)</a> 464<li><a href="Warnings.html#Warnings_nn13">Types and typemaps (400-499) </a> 465<li><a href="Warnings.html#Warnings_nn14">Code generation (500-599)</a> 466<li><a href="Warnings.html#Warnings_nn15">Language module specific (800-899) </a> 467<li><a href="Warnings.html#Warnings_nn16">User defined (900-999)</a> 468</ul> 469<li><a href="Warnings.html#Warnings_nn17">History</a> 470</ul> 471</div> 472<!-- INDEX --> 473 474<h3><a href="Modules.html#Modules">15 Working with Modules</a></h3> 475 476<!-- INDEX --> 477<div class="sectiontoc"> 478<ul> 479<li><a href="Modules.html#Modules_nn2">The SWIG runtime code</a> 480<li><a href="Modules.html#external_run_time">External access to the runtime</a> 481<li><a href="Modules.html#Modules_nn4">A word of caution about static libraries</a> 482<li><a href="Modules.html#Modules_nn5">References</a> 483<li><a href="Modules.html#Modules_nn6">Reducing the wrapper file size</a> 484</ul> 485</div> 486<!-- INDEX --> 487 488<h3><a href="CSharp.html#CSharp">16 SWIG and C#</a></h3> 489 490<!-- INDEX --> 491<div class="sectiontoc"> 492<ul> 493<li><a href="CSharp.html#csharp_introduction">Introduction</a> 494<li><a href="CSharp.html#csharp_differences_java">Differences to the Java module</a> 495<li><a href="CSharp.html#csharp_exceptions">C# Exceptions</a> 496<ul> 497<li><a href="CSharp.html#csharp_exception_example_check_typemap">C# exception example using "check" typemap</a> 498<li><a href="CSharp.html#csharp_exception_example_percent_exception">C# exception example using %exception</a> 499<li><a href="CSharp.html#csharp_exception_example_exception_specifications">C# exception example using exception specifications</a> 500<li><a href="CSharp.html#csharp_custom_application_exception">Custom C# ApplicationException example</a> 501</ul> 502</ul> 503</div> 504<!-- INDEX --> 505 506<h3><a href="Chicken.html#Chicken">17 SWIG and Chicken</a></h3> 507 508<!-- INDEX --> 509<div class="sectiontoc"> 510<ul> 511<li><a href="Chicken.html#Chicken_nn2">Preliminaries</a> 512<ul> 513<li><a href="Chicken.html#Chicken_nn3">Running SWIG in C mode</a> 514<li><a href="Chicken.html#Chicken_nn4">Running SWIG in C++ mode</a> 515</ul> 516<li><a href="Chicken.html#Chicken_nn5">Code Generation</a> 517<ul> 518<li><a href="Chicken.html#Chicken_nn6">Naming Conventions</a> 519<li><a href="Chicken.html#Chicken_nn7">Modules</a> 520<li><a href="Chicken.html#Chicken_nn8">Constants and Variables</a> 521<li><a href="Chicken.html#Chicken_nn9">Functions</a> 522<li><a href="Chicken.html#Chicken_nn10">Exceptions</a> 523</ul> 524<li><a href="Chicken.html#Chicken_nn11">TinyCLOS</a> 525<li><a href="Chicken.html#Chicken_nn12">Linkage</a> 526<ul> 527<li><a href="Chicken.html#Chicken_nn13">Static binary or shared library linked at compile time</a> 528<li><a href="Chicken.html#Chicken_nn14">Building chicken extension libraries</a> 529<li><a href="Chicken.html#Chicken_nn15">Linking multiple SWIG modules with TinyCLOS</a> 530</ul> 531<li><a href="Chicken.html#Chicken_nn16">Typemaps</a> 532<li><a href="Chicken.html#Chicken_nn17">Pointers</a> 533<ul> 534<li><a href="Chicken.html#collection">Garbage collection</a> 535</ul> 536<li><a href="Chicken.html#Chicken_nn18">Unsupported features and known problems</a> 537</ul> 538</div> 539<!-- INDEX --> 540 541<h3><a href="Guile.html#Guile">18 SWIG and Guile</a></h3> 542 543<!-- INDEX --> 544<div class="sectiontoc"> 545<ul> 546<li><a href="Guile.html#Guile_nn2">Meaning of "Module"</a> 547<li><a href="Guile.html#Guile_nn3">Using the SCM or GH Guile API</a> 548<li><a href="Guile.html#Guile_nn4">Linkage</a> 549<ul> 550<li><a href="Guile.html#Guile_nn5">Simple Linkage</a> 551<li><a href="Guile.html#Guile_nn6">Passive Linkage</a> 552<li><a href="Guile.html#Guile_nn7">Native Guile Module Linkage</a> 553<li><a href="Guile.html#Guile_nn8">Old Auto-Loading Guile Module Linkage</a> 554<li><a href="Guile.html#Guile_nn9">Hobbit4D Linkage</a> 555</ul> 556<li><a href="Guile.html#Guile_nn10">Underscore Folding</a> 557<li><a href="Guile.html#Guile_nn11">Typemaps</a> 558<li><a href="Guile.html#Guile_nn12">Representation of pointers as smobs</a> 559<ul> 560<li><a href="Guile.html#Guile_nn13">GH Smobs</a> 561<li><a href="Guile.html#Guile_nn14">SCM Smobs</a> 562<li><a href="Guile.html#Guile_nn15">Garbage Collection</a> 563</ul> 564<li><a href="Guile.html#Guile_nn16">Exception Handling</a> 565<li><a href="Guile.html#Guile_nn17">Procedure documentation</a> 566<li><a href="Guile.html#Guile_nn18">Procedures with setters</a> 567<li><a href="Guile.html#Guile_nn19">GOOPS Proxy Classes</a> 568<ul> 569<li><a href="Guile.html#Guile_nn20">Naming Issues</a> 570<li><a href="Guile.html#Guile_nn21">Linking</a> 571</ul> 572</ul> 573</div> 574<!-- INDEX --> 575 576<h3><a href="Java.html#Java">19 SWIG and Java</a></h3> 577 578<!-- INDEX --> 579<div class="sectiontoc"> 580<ul> 581<li><a href="Java.html#java_overview">Overview</a> 582<li><a href="Java.html#java_preliminaries">Preliminaries</a> 583<ul> 584<li><a href="Java.html#running_swig">Running SWIG</a> 585<li><a href="Java.html#java_commandline">Additional Commandline Options</a> 586<li><a href="Java.html#getting_right_headers">Getting the right header files</a> 587<li><a href="Java.html#compiling_dynamic">Compiling a dynamic module</a> 588<li><a href="Java.html#using_module">Using your module</a> 589<li><a href="Java.html#dynamic_linking_problems">Dynamic linking problems</a> 590<li><a href="Java.html#compilation_problems_cpp">Compilation problems and compiling with C++</a> 591<li><a href="Java.html#building_windows">Building on Windows</a> 592<ul> 593<li><a href="Java.html#visual_studio">Running SWIG from Visual Studio</a> 594<li><a href="Java.html#nmake">Using NMAKE</a> 595</ul> 596</ul> 597<li><a href="Java.html#java_basic_tour">A tour of basic C/C++ wrapping</a> 598<ul> 599<li><a href="Java.html#module_packages_classes">Modules, packages and generated Java classes</a> 600<li><a href="Java.html#functions">Functions</a> 601<li><a href="Java.html#global_variables">Global variables</a> 602<li><a href="Java.html#constants">Constants</a> 603<li><a href="Java.html#enumerations">Enumerations</a> 604<ul> 605<li><a href="Java.html#anonymous_enums">Anonymous enums</a> 606<li><a href="Java.html#typesafe_enums">Typesafe enums</a> 607<li><a href="Java.html#proper_enums">Proper Java enums</a> 608<li><a href="Java.html#typeunsafe_enums">Type unsafe enums</a> 609<li><a href="Java.html#simple_enums">Simple enums</a> 610</ul> 611<li><a href="Java.html#pointers">Pointers</a> 612<li><a href="Java.html#structures">Structures</a> 613<li><a href="Java.html#classes">C++ classes</a> 614<li><a href="Java.html#inheritance">C++ inheritance</a> 615<li><a href="Java.html#pointers_refs_arrays">Pointers, references, arrays and pass by value</a> 616<ul> 617<li><a href="Java.html#null_pointers">Null pointers</a> 618</ul> 619<li><a href="Java.html#overloaded_functions">C++ overloaded functions</a> 620<li><a href="Java.html#java_default_arguments">C++ default arguments</a> 621<li><a href="Java.html#namespaces">C++ namespaces</a> 622<li><a href="Java.html#templates">C++ templates</a> 623<li><a href="Java.html#smart_pointers">C++ Smart Pointers</a> 624</ul> 625<li><a href="Java.html#further_details">Further details on the generated Java classes</a> 626<ul> 627<li><a href="Java.html#imclass">The intermediary JNI class</a> 628<ul> 629<li><a href="Java.html#imclass_pragmas">The intermediary JNI class pragmas</a> 630</ul> 631<li><a href="Java.html#java_module_class">The Java module class</a> 632<ul> 633<li><a href="Java.html#module_class_pragmas">The Java module class pragmas</a> 634</ul> 635<li><a href="Java.html#java_proxy_classes">Java proxy classes</a> 636<ul> 637<li><a href="Java.html#memory_management">Memory management</a> 638<li><a href="Java.html#inheritance_mirroring">Inheritance</a> 639<li><a href="Java.html#proxy_classes_gc">Proxy classes and garbage collection</a> 640</ul> 641<li><a href="Java.html#type_wrapper_classes">Type wrapper classes</a> 642<li><a href="Java.html#enum_classes">Enum classes</a> 643<ul> 644<li><a href="Java.html#typesafe_enums_classes">Typesafe enum classes</a> 645<li><a href="Java.html#proper_enums_classes">Proper Java enum classes</a> 646<li><a href="Java.html#typeunsafe_enums_classes">Type unsafe enum classes</a> 647</ul> 648</ul> 649<li><a href="Java.html#java_directors">Cross language polymorphism using directors (experimental)</a> 650<ul> 651<li><a href="Java.html#java_enabling_directors">Enabling directors</a> 652<li><a href="Java.html#java_directors_classes">Director classes</a> 653<li><a href="Java.html#java_directors_overhead">Overhead and code bloat</a> 654<li><a href="Java.html#java_directors_example">Simple directors example</a> 655</ul> 656<li><a href="Java.html#common_customization">Common customization features</a> 657<ul> 658<li><a href="Java.html#helper_functions">C/C++ helper functions</a> 659<li><a href="Java.html#class_extension">Class extension with %extend</a> 660<li><a href="Java.html#exception_handling">Exception handling with %exception and %javaexception</a> 661<li><a href="Java.html#method_access">Method access with %javamethodmodifiers</a> 662</ul> 663<li><a href="Java.html#tips_techniques">Tips and techniques</a> 664<ul> 665<li><a href="Java.html#input_output_parameters">Input and output parameters using primitive pointers and references</a> 666<li><a href="Java.html#simple_pointers">Simple pointers</a> 667<li><a href="Java.html#c_arrays">Wrapping C arrays with Java arrays</a> 668<li><a href="Java.html#unbounded_c_arrays">Unbounded C Arrays</a> 669</ul> 670<li><a href="Java.html#java_typemaps">Java typemaps</a> 671<ul> 672<li><a href="Java.html#default_primitive_type_mappings">Default primitive type mappings</a> 673<li><a href="Java.html#jvm64">Sixty four bit JVMs</a> 674<li><a href="Java.html#what_is_typemap">What is a typemap?</a> 675<li><a href="Java.html#typemaps_c_to_java_types">Typemaps for mapping C/C++ types to Java types</a> 676<li><a href="Java.html#typemap_attributes">Java typemap attributes</a> 677<li><a href="Java.html#special_variables">Java special variables</a> 678<li><a href="Java.html#typemaps_for_c_and_c++">Typemaps for both C and C++ compilation</a> 679<li><a href="Java.html#java_code_typemaps">Java code typemaps</a> 680<li><a href="Java.html#java_directors_typemaps">Director specific typemaps</a> 681</ul> 682<li><a href="Java.html#typemap_examples">Typemap Examples</a> 683<ul> 684<li><a href="Java.html#simpler_enum_classes">Simpler Java enums for enums without initializers</a> 685<li><a href="Java.html#exception_typemap">Handling C++ exception specifications as Java exceptions</a> 686<li><a href="Java.html#nan_exception_typemap">NaN Exception - exception handling for a particular type</a> 687<li><a href="Java.html#converting_java_string_arrays">Converting Java String arrays to char ** </a> 688<li><a href="Java.html#expanding_java_object">Expanding a Java object to multiple arguments</a> 689<li><a href="Java.html#using_typemaps_return_arguments">Using typemaps to return arguments</a> 690<li><a href="Java.html#adding_downcasts">Adding Java downcasts to polymorphic return types</a> 691<li><a href="Java.html#adding_equals_method">Adding an equals method to the Java classes</a> 692<li><a href="Java.html#void_pointers">Void pointers and a common Java base class</a> 693<li><a href="Java.html#struct_pointer_pointer">Struct pointer to pointer</a> 694</ul> 695<li><a href="Java.html#java_directors_faq">Living with Java Directors</a> 696<li><a href="Java.html#odds_ends">Odds and ends</a> 697<ul> 698<li><a href="Java.html#javadoc_comments">JavaDoc comments</a> 699<li><a href="Java.html#functional_interface">Functional interface without proxy classes</a> 700<li><a href="Java.html#using_own_jni_functions">Using your own JNI functions</a> 701<li><a href="Java.html#performance">Performance concerns and hints</a> 702</ul> 703<li><a href="Java.html#java_examples">Examples</a> 704</ul> 705</div> 706<!-- INDEX --> 707 708<h3><a href="Modula3.html#Modula3">20 SWIG and Modula-3</a></h3> 709 710<!-- INDEX --> 711<div class="sectiontoc"> 712<ul> 713<li><a href="Modula3.html#modula3_overview">Overview</a> 714<ul> 715<li><a href="Modula3.html#whyscripting">Why not scripting ?</a> 716<li><a href="Modula3.html#whymodula3">Why Modula-3 ?</a> 717<li><a href="Modula3.html#whycpp">Why C / C++ ?</a> 718<li><a href="Modula3.html#whyswig">Why SWIG ?</a> 719</ul> 720<li><a href="Modula3.html#conception">Conception</a> 721<ul> 722<li><a href="Modula3.html#cinterface">Interfaces to C libraries</a> 723<li><a href="Modula3.html#cppinterface">Interfaces to C++ libraries</a> 724</ul> 725<li><a href="Modula3.html#preliminaries">Preliminaries</a> 726<ul> 727<li><a href="Modula3.html#compilers">Compilers</a> 728<li><a href="Modula3.html#commandline">Additional Commandline Options</a> 729</ul> 730<li><a href="Modula3.html#modula3_typemaps">Modula-3 typemaps</a> 731<ul> 732<li><a href="Modula3.html#inoutparam">Inputs and outputs</a> 733<li><a href="Modula3.html#ordinals">Subranges, Enumerations, Sets</a> 734<li><a href="Modula3.html#class">Objects</a> 735<li><a href="Modula3.html#imports">Imports</a> 736<li><a href="Modula3.html#exceptions">Exceptions</a> 737<li><a href="Modula3.html#typemap_example">Example</a> 738</ul> 739<li><a href="Modula3.html#hints">More hints to the generator</a> 740<ul> 741<li><a href="Modula3.html#features">Features</a> 742<li><a href="Modula3.html#pragmas">Pragmas</a> 743</ul> 744<li><a href="Modula3.html#remarks">Remarks</a> 745</ul> 746</div> 747<!-- INDEX --> 748 749<h3><a href="Mzscheme.html#Mzscheme">21 SWIG and MzScheme</a></h3> 750 751<!-- INDEX --> 752<div class="sectiontoc"> 753<ul> 754<li><a href="Mzscheme.html#MzScheme_nn2">Creating native MzScheme structures</a> 755</ul> 756</div> 757<!-- INDEX --> 758 759<h3><a href="Ocaml.html#Ocaml">22 SWIG and Ocaml</a></h3> 760 761<!-- INDEX --> 762<div class="sectiontoc"> 763<ul> 764<li><a href="Ocaml.html#Ocaml_nn2">Preliminaries</a> 765<ul> 766<li><a href="Ocaml.html#Ocaml_nn3">Running SWIG</a> 767<li><a href="Ocaml.html#Ocaml_nn4">Compiling the code</a> 768<li><a href="Ocaml.html#Ocaml_nn5">The camlp4 module</a> 769<li><a href="Ocaml.html#Ocaml_nn6">Using your module</a> 770<li><a href="Ocaml.html#Ocaml_nn7">Compilation problems and compiling with C++</a> 771</ul> 772<li><a href="Ocaml.html#Ocaml_nn8">The low-level Ocaml/C interface</a> 773<ul> 774<li><a href="Ocaml.html#Ocaml_nn9">The generated module</a> 775<li><a href="Ocaml.html#Ocaml_nn10">Enums</a> 776<ul> 777<li><a href="Ocaml.html#Ocaml_nn11">Enum typing in Ocaml</a> 778</ul> 779<li><a href="Ocaml.html#Ocaml_nn12">Arrays</a> 780<ul> 781<li><a href="Ocaml.html#Ocaml_nn13">Simple types of bounded arrays</a> 782<li><a href="Ocaml.html#Ocaml_nn14">Complex and unbounded arrays</a> 783<li><a href="Ocaml.html#Ocaml_nn15">Using an object</a> 784<li><a href="Ocaml.html#Ocaml_nn16">Example typemap for a function taking float * and int</a> 785</ul> 786<li><a href="Ocaml.html#Ocaml_nn17">C++ Classes</a> 787<ul> 788<li><a href="Ocaml.html#Ocaml_nn18">STL vector and string Example</a> 789<li><a href="Ocaml.html#Ocaml_nn19">C++ Class Example</a> 790<li><a href="Ocaml.html#Ocaml_nn20">Compiling the example</a> 791<li><a href="Ocaml.html#Ocaml_nn21">Sample Session</a> 792</ul> 793<li><a href="Ocaml.html#Ocaml_nn22">Director Classes</a> 794<ul> 795<li><a href="Ocaml.html#Ocaml_nn23">Director Introduction</a> 796<li><a href="Ocaml.html#Ocaml_nn24">Overriding Methods in Ocaml</a> 797<li><a href="Ocaml.html#Ocaml_nn25">Director Usage Example</a> 798<li><a href="Ocaml.html#Ocaml_nn26">Creating director objects</a> 799<li><a href="Ocaml.html#Ocaml_nn27">Typemaps for directors, <tt>directorin, directorout, directorargout</tt></a> 800<li><a href="Ocaml.html#Ocaml_nn28"><tt>directorin</tt> typemap</a> 801<li><a href="Ocaml.html#Ocaml_nn29"><tt>directorout</tt> typemap</a> 802<li><a href="Ocaml.html#Ocaml_nn30"><tt>directorargout</tt> typemap</a> 803</ul> 804<li><a href="Ocaml.html#Ocaml_nn31">Exceptions</a> 805</ul> 806</ul> 807</div> 808<!-- INDEX --> 809 810<h3><a href="Perl5.html#Perl5">23 SWIG and Perl5</a></h3> 811 812<!-- INDEX --> 813<div class="sectiontoc"> 814<ul> 815<li><a href="Perl5.html#Perl5_nn2">Overview</a> 816<li><a href="Perl5.html#Perl5_nn3">Preliminaries</a> 817<ul> 818<li><a href="Perl5.html#Perl5_nn4">Getting the right header files</a> 819<li><a href="Perl5.html#Perl5_nn5">Compiling a dynamic module</a> 820<li><a href="Perl5.html#Perl5_nn6">Building a dynamic module with MakeMaker</a> 821<li><a href="Perl5.html#Perl5_nn7">Building a static version of Perl</a> 822<li><a href="Perl5.html#Perl5_nn8">Using the module</a> 823<li><a href="Perl5.html#Perl5_nn9">Compilation problems and compiling with C++</a> 824<li><a href="Perl5.html#Perl5_nn10">Compiling for 64-bit platforms</a> 825</ul> 826<li><a href="Perl5.html#Perl5_nn11">Building Perl Extensions under Windows</a> 827<ul> 828<li><a href="Perl5.html#Perl5_nn12">Running SWIG from Developer Studio</a> 829<li><a href="Perl5.html#Perl5_nn13">Using other compilers</a> 830</ul> 831<li><a href="Perl5.html#Perl5_nn14">The low-level interface</a> 832<ul> 833<li><a href="Perl5.html#Perl5_nn15">Functions</a> 834<li><a href="Perl5.html#Perl5_nn16">Global variables</a> 835<li><a href="Perl5.html#Perl5_nn17">Constants</a> 836<li><a href="Perl5.html#Perl5_nn18">Pointers</a> 837<li><a href="Perl5.html#Perl5_nn19">Structures</a> 838<li><a href="Perl5.html#Perl5_nn20">C++ classes</a> 839<li><a href="Perl5.html#Perl5_nn21">C++ classes and type-checking</a> 840<li><a href="Perl5.html#Perl5_nn22">C++ overloaded functions</a> 841<li><a href="Perl5.html#Perl5_nn23">Operators</a> 842<li><a href="Perl5.html#Perl5_nn24">Modules and packages</a> 843</ul> 844<li><a href="Perl5.html#Perl5_nn25">Input and output parameters</a> 845<li><a href="Perl5.html#Perl5_nn26">Exception handling </a> 846<li><a href="Perl5.html#Perl5_nn27">Remapping datatypes with typemaps</a> 847<ul> 848<li><a href="Perl5.html#Perl5_nn28">A simple typemap example</a> 849<li><a href="Perl5.html#Perl5_nn29">Perl5 typemaps</a> 850<li><a href="Perl5.html#Perl5_nn30">Typemap variables</a> 851<li><a href="Perl5.html#Perl5_nn31">Useful functions</a> 852</ul> 853<li><a href="Perl5.html#Perl5_nn32">Typemap Examples</a> 854<ul> 855<li><a href="Perl5.html#Perl5_nn33">Converting a Perl5 array to a char ** </a> 856<li><a href="Perl5.html#Perl5_nn34">Return values </a> 857<li><a href="Perl5.html#Perl5_nn35">Returning values from arguments</a> 858<li><a href="Perl5.html#Perl5_nn36">Accessing array structure members</a> 859<li><a href="Perl5.html#Perl5_nn37">Turning Perl references into C pointers</a> 860<li><a href="Perl5.html#Perl5_nn38">Pointer handling</a> 861</ul> 862<li><a href="Perl5.html#Perl5_nn39">Proxy classes</a> 863<ul> 864<li><a href="Perl5.html#Perl5_nn40">Preliminaries</a> 865<li><a href="Perl5.html#Perl5_nn41">Structure and class wrappers</a> 866<li><a href="Perl5.html#Perl5_nn42">Object Ownership</a> 867<li><a href="Perl5.html#Perl5_nn43">Nested Objects</a> 868<li><a href="Perl5.html#Perl5_nn44">Proxy Functions</a> 869<li><a href="Perl5.html#Perl5_nn45">Inheritance</a> 870<li><a href="Perl5.html#Perl5_nn46">Modifying the proxy methods</a> 871</ul> 872</ul> 873</div> 874<!-- INDEX --> 875 876<h3><a href="Php.html#Php">24 SWIG and PHP4</a></h3> 877 878<!-- INDEX --> 879<div class="sectiontoc"> 880<ul> 881<li><a href="Php.html#Php_nn1">Generating PHP4 Extensions</a> 882<ul> 883<li><a href="Php.html#Php_nn1_1">Building a loadable extension</a> 884<li><a href="Php.html#Php_nn1_2">Building extensions into PHP</a> 885<li><a href="Php.html#Php_nn1_3">Using PHP4 Extensions</a> 886</ul> 887<li><a href="Php.html#Php_nn2">Basic PHP4 interface</a> 888<ul> 889<li><a href="Php.html#Php_nn2_1">Constants</a> 890<li><a href="Php.html#Php_nn2_2">Global Variables</a> 891<li><a href="Php.html#Php_nn2_3">Functions</a> 892<li><a href="Php.html#Php_nn2_4">Overloading</a> 893<li><a href="Php.html#Php_nn2_5">Pointers and References</a> 894<li><a href="Php.html#Php_nn2_6">Structures and C++ classes</a> 895<ul> 896<li><a href="Php.html#Php_nn2_6_1">Using <tt>-noproxy</tt></a> 897<li><a href="Php.html#Php_nn2_6_2">Constructors and Destructors</a> 898<li><a href="Php.html#Php_nn2_6_3">Static Member Variables</a> 899<li><a href="Php.html#Php_nn2_6_4">Static Member Functions</a> 900</ul> 901<li><a href="Php.html#Php_nn2_7">PHP4 Pragmas, Startup and Shutdown code</a> 902</ul> 903</ul> 904</div> 905<!-- INDEX --> 906 907<h3><a href="Pike.html#Pike">25 SWIG and Pike</a></h3> 908 909<!-- INDEX --> 910<div class="sectiontoc"> 911<ul> 912<li><a href="Pike.html#Pike_nn2">Preliminaries</a> 913<ul> 914<li><a href="Pike.html#Pike_nn3">Running SWIG</a> 915<li><a href="Pike.html#Pike_nn4">Getting the right header files</a> 916<li><a href="Pike.html#Pike_nn5">Using your module</a> 917</ul> 918<li><a href="Pike.html#Pike_nn6">Basic C/C++ Mapping</a> 919<ul> 920<li><a href="Pike.html#Pike_nn7">Modules</a> 921<li><a href="Pike.html#Pike_nn8">Functions</a> 922<li><a href="Pike.html#Pike_nn9">Global variables</a> 923<li><a href="Pike.html#Pike_nn10">Constants and enumerated types</a> 924<li><a href="Pike.html#Pike_nn11">Constructors and Destructors</a> 925<li><a href="Pike.html#Pike_nn12">Static Members</a> 926</ul> 927</ul> 928</div> 929<!-- INDEX --> 930 931<h3><a href="Python.html#Python">26 SWIG and Python</a></h3> 932 933<!-- INDEX --> 934<div class="sectiontoc"> 935<ul> 936<li><a href="Python.html#Python_nn2">Overview</a> 937<li><a href="Python.html#Python_nn3">Preliminaries</a> 938<ul> 939<li><a href="Python.html#Python_nn4">Running SWIG</a> 940<li><a href="Python.html#Python_nn5">Getting the right header files</a> 941<li><a href="Python.html#Python_nn6">Compiling a dynamic module</a> 942<li><a href="Python.html#Python_nn7">Using distutils</a> 943<li><a href="Python.html#Python_nn8">Static linking</a> 944<li><a href="Python.html#Python_nn9">Using your module</a> 945<li><a href="Python.html#Python_nn10">Compilation of C++ extensions</a> 946<li><a href="Python.html#Python_nn11">Compiling for 64-bit platforms</a> 947<li><a href="Python.html#Python_nn12">Building Python Extensions under Windows</a> 948</ul> 949<li><a href="Python.html#Python_nn13">A tour of basic C/C++ wrapping</a> 950<ul> 951<li><a href="Python.html#Python_nn14">Modules</a> 952<li><a href="Python.html#Python_nn15">Functions</a> 953<li><a href="Python.html#Python_nn16">Global variables</a> 954<li><a href="Python.html#Python_nn17">Constants and enums</a> 955<li><a href="Python.html#Python_nn18">Pointers</a> 956<li><a href="Python.html#Python_nn19">Structures</a> 957<li><a href="Python.html#Python_nn20">C++ classes</a> 958<li><a href="Python.html#Python_nn21">C++ inheritance</a> 959<li><a href="Python.html#Python_nn22">Pointers, references, values, and arrays</a> 960<li><a href="Python.html#Python_nn23">C++ overloaded functions</a> 961<li><a href="Python.html#Python_nn24">C++ operators</a> 962<li><a href="Python.html#Python_nn25">C++ namespaces</a> 963<li><a href="Python.html#Python_nn26">C++ templates</a> 964<li><a href="Python.html#Python_nn27">C++ Smart Pointers</a> 965<li><a href="Python.html#Python_nn27a">C++ Reference Counted Objects (ref/unref)</a> 966</ul> 967<li><a href="Python.html#Python_nn28">Further details on the Python class interface</a> 968<ul> 969<li><a href="Python.html#Python_nn29">Proxy classes</a> 970<li><a href="Python.html#Python_nn30">Memory management</a> 971<li><a href="Python.html#Python_nn31">Python 2.2 and classic classes</a> 972</ul> 973<li><a href="Python.html#directors">Cross language polymorphism</a> 974<ul> 975<li><a href="Python.html#Python_nn33">Enabling directors</a> 976<li><a href="Python.html#Python_nn34">Director classes</a> 977<li><a href="Python.html#Python_nn35">Ownership and object destruction</a> 978<li><a href="Python.html#Python_nn36">Exception unrolling</a> 979<li><a href="Python.html#Python_nn37">Overhead and code bloat</a> 980<li><a href="Python.html#Python_nn38">Typemaps</a> 981<li><a href="Python.html#Python_nn39">Miscellaneous</a> 982</ul> 983<li><a href="Python.html#Python_nn40">Common customization features</a> 984<ul> 985<li><a href="Python.html#Python_nn41">C/C++ helper functions</a> 986<li><a href="Python.html#Python_nn42">Adding additional Python code</a> 987<li><a href="Python.html#Python_nn43">Class extension with %extend</a> 988<li><a href="Python.html#Python_nn44">Exception handling with %exception</a> 989</ul> 990<li><a href="Python.html#Python_nn45">Tips and techniques</a> 991<ul> 992<li><a href="Python.html#Python_nn46">Input and output parameters</a> 993<li><a href="Python.html#Python_nn47">Simple pointers</a> 994<li><a href="Python.html#Python_nn48">Unbounded C Arrays</a> 995<li><a href="Python.html#Python_nn49">String handling</a> 996<li><a href="Python.html#Python_nn50">Arrays</a> 997<li><a href="Python.html#Python_nn51">String arrays</a> 998<li><a href="Python.html#Python_nn52">STL wrappers</a> 999</ul> 1000<li><a href="Python.html#Python_nn53">Typemaps</a> 1001<ul> 1002<li><a href="Python.html#Python_nn54">What is a typemap?</a> 1003<li><a href="Python.html#Python_nn55">Python typemaps</a> 1004<li><a href="Python.html#Python_nn56">Typemap variables</a> 1005<li><a href="Python.html#Python_nn57">Useful Python Functions</a> 1006</ul> 1007<li><a href="Python.html#Python_nn58">Typemap Examples</a> 1008<ul> 1009<li><a href="Python.html#Python_nn59">Converting Python list to a char ** </a> 1010<li><a href="Python.html#Python_nn60">Expanding a Python object into multiple arguments</a> 1011<li><a href="Python.html#Python_nn61">Using typemaps to return arguments</a> 1012<li><a href="Python.html#Python_nn62">Mapping Python tuples into small arrays</a> 1013<li><a href="Python.html#Python_nn63">Mapping sequences to C arrays</a> 1014<li><a href="Python.html#Python_nn64">Pointer handling</a> 1015</ul> 1016<li><a href="Python.html#Python_nn65">Docstring Features</a> 1017<ul> 1018<li><a href="Python.html#Python_nn66">Module docstring</a> 1019<li><a href="Python.html#Python_nn67">%feature("autodoc")</a> 1020<ul> 1021<li><a href="Python.html#Python_nn68">%feature("autodoc", "0")</a> 1022<li><a href="Python.html#Python_nn69">%feature("autodoc", "1")</a> 1023<li><a href="Python.html#Python_nn70">%feature("autodoc", "docstring")</a> 1024</ul> 1025<li><a href="Python.html#Python_nn71">%feature("docstring")</a> 1026</ul> 1027<li><a href="Python.html#Python_nn72">Python Packages</a> 1028</ul> 1029</div> 1030<!-- INDEX --> 1031 1032<h3><a href="Ruby.html#Ruby">27 SWIG and Ruby</a></h3> 1033 1034<!-- INDEX --> 1035<div class="sectiontoc"> 1036<ul> 1037<li><a href="Ruby.html#Ruby_nn2">Preliminaries</a> 1038<ul> 1039<li><a href="Ruby.html#Ruby_nn3">Running SWIG</a> 1040<li><a href="Ruby.html#Ruby_nn4">Getting the right header files</a> 1041<li><a href="Ruby.html#Ruby_nn5">Compiling a dynamic module</a> 1042<li><a href="Ruby.html#Ruby_nn6">Using your module</a> 1043<li><a href="Ruby.html#Ruby_nn7">Static linking</a> 1044<li><a href="Ruby.html#Ruby_nn8">Compilation of C++ extensions</a> 1045</ul> 1046<li><a href="Ruby.html#Ruby_nn9">Building Ruby Extensions under Windows 95/NT</a> 1047<ul> 1048<li><a href="Ruby.html#Ruby_nn10">Running SWIG from Developer Studio</a> 1049</ul> 1050<li><a href="Ruby.html#Ruby_nn11">The Ruby-to-C/C++ Mapping</a> 1051<ul> 1052<li><a href="Ruby.html#Ruby_nn12">Modules</a> 1053<li><a href="Ruby.html#Ruby_nn13">Functions</a> 1054<li><a href="Ruby.html#Ruby_nn14">Variable Linking</a> 1055<li><a href="Ruby.html#Ruby_nn15">Constants</a> 1056<li><a href="Ruby.html#Ruby_nn16">Pointers</a> 1057<li><a href="Ruby.html#Ruby_nn17">Structures</a> 1058<li><a href="Ruby.html#Ruby_nn18">C++ classes</a> 1059<li><a href="Ruby.html#Ruby_nn19">C++ Inheritance</a> 1060<li><a href="Ruby.html#Ruby_nn20">C++ Overloaded Functions</a> 1061<li><a href="Ruby.html#Ruby_nn21">C++ Operators</a> 1062<li><a href="Ruby.html#Ruby_nn22">C++ namespaces</a> 1063<li><a href="Ruby.html#Ruby_nn23">C++ templates</a> 1064<li><a href="Ruby.html#ruby_cpp_smart_pointers">C++ Smart Pointers</a> 1065<li><a href="Ruby.html#Ruby_nn25">Cross-Language Polymorphism</a> 1066<ul> 1067<li><a href="Ruby.html#Ruby_nn26">Exception Unrolling</a> 1068</ul> 1069</ul> 1070<li><a href="Ruby.html#Ruby_nn27">Input and output parameters</a> 1071<li><a href="Ruby.html#Ruby_nn29">Typemaps</a> 1072<ul> 1073<li><a href="Ruby.html#Ruby_nn30">What is a typemap?</a> 1074<li><a href="Ruby.html#Ruby_nn31">Ruby typemaps</a> 1075<li><a href="Ruby.html#Ruby_nn32">Typemap variables</a> 1076<li><a href="Ruby.html#Ruby_nn33">Useful Functions</a> 1077<ul> 1078<li><a href="Ruby.html#Ruby_nn34">C Datatypes to Ruby Objects</a> 1079<li><a href="Ruby.html#Ruby_nn35">Ruby Objects to C Datatypes</a> 1080<li><a href="Ruby.html#Ruby_nn36">Macros for VALUE</a> 1081<li><a href="Ruby.html#Ruby_nn37">Exceptions</a> 1082<li><a href="Ruby.html#Ruby_nn38">Iterators</a> 1083</ul> 1084<li><a href="Ruby.html#ruby_typemap_examples">Typemap Examples</a> 1085<li><a href="Ruby.html#Ruby_nn40">Converting a Ruby array to a char **</a> 1086<li><a href="Ruby.html#Ruby_nn41">Collecting arguments in a hash</a> 1087<li><a href="Ruby.html#Ruby_nn42">Pointer handling</a> 1088<ul> 1089<li><a href="Ruby.html#Ruby_nn43">Ruby Datatype Wrapping</a> 1090</ul> 1091</ul> 1092<li><a href="Ruby.html#ruby_operator_overloading">Operator overloading</a> 1093<ul> 1094<li><a href="Ruby.html#Ruby_nn45">Example: STL Vector to Ruby Array</a> 1095</ul> 1096<li><a href="Ruby.html#Ruby_nn46">Advanced Topics</a> 1097<ul> 1098<li><a href="Ruby.html#Ruby_nn47">Creating Multi-Module Packages</a> 1099<li><a href="Ruby.html#Ruby_nn48">Defining Aliases</a> 1100<li><a href="Ruby.html#Ruby_nn49">Predicate Methods</a> 1101<li><a href="Ruby.html#Ruby_nn50">Specifying Mixin Modules</a> 1102</ul> 1103<li><a href="Ruby.html#Ruby_nn51">Memory Management</a> 1104<ul> 1105<li><a href="Ruby.html#Ruby_nn53">Object Ownership</a> 1106<li><a href="Ruby.html#Ruby_nn54">Object Tracking</a> 1107<li><a href="Ruby.html#Ruby_nn55">Mark Functions</a> 1108<li><a href="Ruby.html#Ruby_nn56">Free Functions</a> 1109</ul> 1110</ul> 1111</div> 1112<!-- INDEX --> 1113 1114<h3><a href="Tcl.html#Tcl">28 SWIG and Tcl</a></h3> 1115 1116<!-- INDEX --> 1117<div class="sectiontoc"> 1118<ul> 1119<li><a href="Tcl.html#Tcl_nn2">Preliminaries</a> 1120<ul> 1121<li><a href="Tcl.html#Tcl_nn3">Getting the right header files</a> 1122<li><a href="Tcl.html#Tcl_nn4">Compiling a dynamic module</a> 1123<li><a href="Tcl.html#Tcl_nn5">Static linking</a> 1124<li><a href="Tcl.html#Tcl_nn6">Using your module</a> 1125<li><a href="Tcl.html#Tcl_nn7">Compilation of C++ extensions</a> 1126<li><a href="Tcl.html#Tcl_nn8">Compiling for 64-bit platforms</a> 1127<li><a href="Tcl.html#Tcl_nn9">Setting a package prefix</a> 1128<li><a href="Tcl.html#Tcl_nn10">Using namespaces</a> 1129</ul> 1130<li><a href="Tcl.html#Tcl_nn11">Building Tcl/Tk Extensions under Windows 95/NT</a> 1131<ul> 1132<li><a href="Tcl.html#Tcl_nn12">Running SWIG from Developer Studio</a> 1133<li><a href="Tcl.html#Tcl_nn13">Using NMAKE</a> 1134</ul> 1135<li><a href="Tcl.html#Tcl_nn14">A tour of basic C/C++ wrapping</a> 1136<ul> 1137<li><a href="Tcl.html#Tcl_nn15">Modules</a> 1138<li><a href="Tcl.html#Tcl_nn16">Functions</a> 1139<li><a href="Tcl.html#Tcl_nn17">Global variables</a> 1140<li><a href="Tcl.html#Tcl_nn18">Constants and enums</a> 1141<li><a href="Tcl.html#Tcl_nn19">Pointers</a> 1142<li><a href="Tcl.html#Tcl_nn20">Structures</a> 1143<li><a href="Tcl.html#Tcl_nn21">C++ classes</a> 1144<li><a href="Tcl.html#Tcl_nn22">C++ inheritance</a> 1145<li><a href="Tcl.html#Tcl_nn23">Pointers, references, values, and arrays</a> 1146<li><a href…
Large files files are truncated, but you can click here to view the full file