From: Mark G. <mgo...@us...> - 2006-10-24 06:26:51
|
Update of /cvsroot/swig/SWIG/Examples/lua/functor In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv1041/Examples/lua/functor Added Files: .cvsignore Makefile example.i runme.lua Log Message: added support for native methods & member function pointers. fixed test cases arrays_dimensionless & cpp_basic. Added new example (functor). --- NEW FILE: runme.lua --- -- 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 --- NEW FILE: example.i --- /* 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>; --- NEW FILE: Makefile --- 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 --- NEW FILE: .cvsignore --- *wrap* *.so *.dll *.exp *.lib |