<html>
<head>
<title>SWIG:Examples:python:funcptr</title>
</head>

<body bgcolor="#ffffff">


<tt>SWIG/Examples/python/funcptr/</tt>
<hr>

<H2>Pointers to Functions</H2>

<p>
Okay, just what in the heck does SWIG do with a declaration like this?

<blockquote>
<pre>
int do_op(int a, int b, int (*op)(int, int));
</pre>
</blockquote>

Well, it creates a wrapper as usual.  Of course, that does raise some
questions about the third argument (the pointer to a function). 

<p>
In this case, SWIG will wrap the function pointer as it does for all other
pointers.  However, in order to actually call this function from a script,
you will need to pass some kind of C function pointer object.  In C,
this is easy, you just supply a function name as an argument like this:

<blockquote>
<pre>
/* Some callback function */
int add(int a, int b) {
   return a+b;
} 
...
int r = do_op(x,y,add);
</pre>
</blockquote>

To make this work with SWIG, you will need to do a little extra work.  Specifically,
you need to create some function pointer objects using the %constant directive like this:

<blockquote>
<pre>
%constant(int (*)(int,int)) ADD = add;
</pre>
</blockquote>

Now, in a script, you would do this:

<blockquote>
<pre>
r = do_op(x,y, ADD)
</pre>
</blockquote>

<h2>An Example</h2>

Here are some files that illustrate this with a simple example:

<ul>
<li><a href="example.c">example.c</a>
<li><a href="example.h">example.h</a>
<li><a href="example.i">example.i</a> (SWIG interface)
<li><a href="example.py">example.py</a> (Sample script)
</ul>

<h2>Notes</h2>

<ul>
<li>The value of a function pointer must correspond to a function written in C or C++.
It is not possible to pass an arbitrary Python function object in as a substitute for a C 
function pointer.

<p>
<li>A python function can be used as a C/C++ callback if you write some
clever typemaps and are very careful about how you create your extension.
This is an advanced topic not covered here.
</ul>

<hr>
</body>
</html>




