added support for native methods & member function pointers.

fixed test cases arrays_dimensionless & cpp_basic. Added new example (functor).


git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@9472 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Mark Gossage 2006-10-24 06:26:48 +00:00
commit fec2f8f9b7
11 changed files with 279 additions and 75 deletions

View file

@ -1,8 +1,9 @@
# see top-level Makefile.in
class
constants
functest
funcptr3
functest
functor
pointer
simple
variables

View file

@ -0,0 +1,5 @@
*wrap*
*.so
*.dll
*.exp
*.lib

View file

@ -0,0 +1,20 @@
TOP = ../..
SWIG = $(TOP)/../preinst-swig
CXXSRCS =
TARGET = example
INTERFACE = example.i
LIBS = -lm
SWIGOPT =
all::
$(MAKE) -f $(TOP)/Makefile CXXSRCS='$(CXXSRCS)' SWIG='$(SWIG)' \
SWIGOPT='$(SWIGOPT)' TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' lua_cpp
static::
$(MAKE) -f $(TOP)/Makefile CXXSRCS='$(CXXSRCS)' SWIG='$(SWIG)' \
TARGET='mylua' INTERFACE='$(INTERFACE)' lua_cpp_static
clean::
$(MAKE) -f $(TOP)/Makefile lua_clean
check: all

View file

@ -0,0 +1,29 @@
/* File : example.i */
%module example
%inline %{
// From B. Strousjoup, "The C++ Programming Language, Third Edition", p. 514
template<class T> class Sum {
T res;
public:
Sum(T i = 0) : res(i) { }
void operator() (T x) { res += x; }
T result() const { return res; }
};
%}
// Rename the application operator to __call.
// Note: this is normally automatic, but if you had to do it yourself
// you would use this directive:
//
// %rename(__call) *::operator(); // the fn call operator
// Instantiate a few versions
%template(intSum) Sum<int>;
%template(doubleSum) Sum<double>;

View file

@ -0,0 +1,24 @@
-- Operator overloading example
---- importing ----
if string.sub(_VERSION,1,7)=='Lua 5.0' then
-- lua5.0 doesnt have a nice way to do this
lib=loadlib('example.dll','Example_Init') or loadlib('example.so','Example_Init')
assert(lib)()
else
-- lua 5.1 does
require('example')
end
a = example.intSum(0)
b = example.doubleSum(100.0)
-- Use the objects. They should be callable just like a normal
-- lua function.
for i=0,100 do
a(i) -- Note: function call
b(math.sqrt(i)) -- Note: function call
end
print(a:result()) -- should be 5050
print(b:result()) -- should be ~771.46