The great merge
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@4141 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
6fcc22a1f8
commit
516036631c
1508 changed files with 125983 additions and 44037 deletions
9
SWIG/Examples/ruby/funcptr2/.cvsignore
Normal file
9
SWIG/Examples/ruby/funcptr2/.cvsignore
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
*_wrap.c
|
||||
*_wrap.cxx
|
||||
*.dll
|
||||
*.dsw
|
||||
*.ncb
|
||||
*.opt
|
||||
*.plg
|
||||
Release
|
||||
Debug
|
||||
18
SWIG/Examples/ruby/funcptr2/Makefile
Normal file
18
SWIG/Examples/ruby/funcptr2/Makefile
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
TOP = ../..
|
||||
SWIG = $(TOP)/../swig
|
||||
SRCS = example.c
|
||||
TARGET = example
|
||||
INTERFACE = example.i
|
||||
|
||||
all::
|
||||
$(MAKE) -f $(TOP)/Makefile SRCS='$(SRCS)' SWIG='$(SWIG)' \
|
||||
TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' ruby
|
||||
|
||||
static::
|
||||
$(MAKE) -f $(TOP)/Makefile SRCS='$(SRCS)' SWIG='$(SWIG)' \
|
||||
TARGET='myruby' INTERFACE='$(INTERFACE)' ruby_static
|
||||
|
||||
clean::
|
||||
$(MAKE) -f $(TOP)/Makefile ruby_clean
|
||||
|
||||
check: all
|
||||
19
SWIG/Examples/ruby/funcptr2/example.c
Normal file
19
SWIG/Examples/ruby/funcptr2/example.c
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
/* File : example.c */
|
||||
|
||||
int do_op(int a, int b, int (*op)(int,int)) {
|
||||
return (*op)(a,b);
|
||||
}
|
||||
|
||||
int add(int a, int b) {
|
||||
return a+b;
|
||||
}
|
||||
|
||||
int sub(int a, int b) {
|
||||
return a-b;
|
||||
}
|
||||
|
||||
int mul(int a, int b) {
|
||||
return a*b;
|
||||
}
|
||||
|
||||
int (*funcvar)(int,int) = add;
|
||||
7
SWIG/Examples/ruby/funcptr2/example.h
Normal file
7
SWIG/Examples/ruby/funcptr2/example.h
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
/* file: example.h */
|
||||
|
||||
extern int do_op(int,int, int (*op)(int,int));
|
||||
extern int add(int,int);
|
||||
extern int sub(int,int);
|
||||
extern int mul(int,int);
|
||||
|
||||
18
SWIG/Examples/ruby/funcptr2/example.i
Normal file
18
SWIG/Examples/ruby/funcptr2/example.i
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
/* File : example.i */
|
||||
%module example
|
||||
%{
|
||||
#include "example.h"
|
||||
%}
|
||||
|
||||
/* Wrap a function taking a pointer to a function */
|
||||
extern int do_op(int a, int b, int (*op)(int, int));
|
||||
|
||||
/* Now install a bunch of "ops" as constants */
|
||||
%callback("%(upper)s")
|
||||
int add(int, int);
|
||||
int sub(int, int);
|
||||
int mul(int, int);
|
||||
%nocallback
|
||||
|
||||
extern int (*funcvar)(int,int);
|
||||
|
||||
18
SWIG/Examples/ruby/funcptr2/runme.rb
Normal file
18
SWIG/Examples/ruby/funcptr2/runme.rb
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
require 'example'
|
||||
|
||||
a = 37
|
||||
b = 42
|
||||
|
||||
# Now call our C function with a bunch of callbacks
|
||||
|
||||
puts "Trying some C callback functions"
|
||||
puts " a = #{a}"
|
||||
puts " b = #{b}"
|
||||
puts " ADD(a,b) = #{Example.do_op(a,b,Example::ADD)}"
|
||||
puts " SUB(a,b) = #{Example.do_op(a,b,Example::SUB)}"
|
||||
puts " MUL(a,b) = #{Example.do_op(a,b,Example::MUL)}"
|
||||
|
||||
puts "Here is what the C callback function objects look like in Ruby"
|
||||
puts " ADD = #{Example::ADD}"
|
||||
puts " SUB = #{Example::SUB}"
|
||||
puts " MUL = #{Example::MUL}"
|
||||
Loading…
Add table
Add a link
Reference in a new issue