PageRenderTime 113ms CodeModel.GetById 44ms app.highlight 52ms RepoModel.GetById 1ms app.codeStats 1ms

/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-&gt;()</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