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
2
SWIG/Examples/ruby/functor/.cvsignore
Normal file
2
SWIG/Examples/ruby/functor/.cvsignore
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
example_wrap.cxx
|
||||
example.dll
|
||||
18
SWIG/Examples/ruby/functor/Makefile
Normal file
18
SWIG/Examples/ruby/functor/Makefile
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
TOP = ../..
|
||||
SWIG = $(TOP)/../swig
|
||||
TARGET = example
|
||||
INTERFACE = example.i
|
||||
LIBS = -lm
|
||||
|
||||
all::
|
||||
$(MAKE) -f $(TOP)/Makefile CXXSRCS='$(CXXSRCS)' SWIG='$(SWIG)' \
|
||||
TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' ruby_cpp
|
||||
|
||||
static::
|
||||
$(MAKE) -f $(TOP)/Makefile CXXSRCS='$(CXXSRCS)' SWIG='$(SWIG)' \
|
||||
TARGET='myruby' INTERFACE='$(INTERFACE)' ruby_cpp_static
|
||||
|
||||
clean::
|
||||
$(MAKE) -f $(TOP)/Makefile ruby_clean
|
||||
|
||||
check: all
|
||||
26
SWIG/Examples/ruby/functor/example.i
Normal file
26
SWIG/Examples/ruby/functor/example.i
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
/* 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() for Ruby.
|
||||
* Note: this is normally automatic, but if you had to do it yourself
|
||||
* you would use this directive:
|
||||
*
|
||||
* %rename(call) *::operator();
|
||||
*/
|
||||
|
||||
// Instantiate a few versions
|
||||
%template(IntSum) Sum<int>;
|
||||
%template(DoubleSum) Sum<double>;
|
||||
17
SWIG/Examples/ruby/functor/runme.rb
Normal file
17
SWIG/Examples/ruby/functor/runme.rb
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# Operator overloading example
|
||||
require 'example'
|
||||
|
||||
a = Example::IntSum.new(0)
|
||||
b = Example::DoubleSum.new(100.0)
|
||||
|
||||
# Use the objects. They should be callable just like a normal
|
||||
# Ruby function.
|
||||
|
||||
(0..100).each do |i|
|
||||
a.call(i) # note: function call
|
||||
b.call(Math.sqrt(i)) # note: function call
|
||||
end
|
||||
|
||||
puts a.result
|
||||
puts b.result
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue