[mark@toy ~/PP2ndEd/dev/examples/Part3/Extend/Swig/Shadow]$ g++ main.cxx number.cxx [mark@toy ~/PP2ndEd/dev/examples/Part3/Extend/Swig/Shadow]$ a.out Number: 1 add 4 Number = 5 sub 2 Number = 3 99 Number = 99 ~Number: 99 ------------------------------------------------------------------------------- [mark@toy ~/PP2ndEd/dev/examples/Part3/Extend/Swig/Shadow]$ ls main.cxx main_low.py makefile.number-swig number.h output main.py main_subclass.py number.cxx number.i [mark@toy ~/PP2ndEd/dev/examples/Part3/Extend/Swig/Shadow]$ source ../setup-swig.csh [mark@toy ~/PP2ndEd/dev/examples/Part3/Extend/Swig/Shadow]$ swig -c++ -python -shadow number.i Generating wrappers for Python [mark@toy ~/PP2ndEd/dev/examples/Part3/Extend/Swig/Shadow]$ ls main.cxx main_subclass.py number.h number_wrap.c main.py makefile.number-swig number.i number_wrap.doc main_low.py number.cxx number.py output ------------------------------------------------------------------------------- [mark@toy ~/PP2ndEd/dev/examples/Part3/Extend/Swig/Shadow]$ make -f makefile.number-swig force rm -f *.pyc *.o *.so core a.out number.py number_wrap.c number_wrap.doc [mark@toy ~/PP2ndEd/dev/examples/Part3/Extend/Swig/Shadow]$ make -f makefile.number-swig /home/mark/PP2ndEd/dev/examples/SWIG/SWIG1.1p5/swig -c++ -python -shadow number.i Generating wrappers for Python g++ number_wrap.c -c -g -I/home/mark/python1.5.2-ddjcd/Python-1.5.2/Include -I/home/mark/python1.5.2-ddjcd/Python-1.5.2 g++ -c -g number.cxx g++ -shared number_wrap.o number.o -o numberc.so [mark@toy ~/PP2ndEd/dev/examples/Part3/Extend/Swig/Shadow]$ make -f makefile.number-swig cxxtest g++ main.cxx number.cxx [mark@toy ~/PP2ndEd/dev/examples/Part3/Extend/Swig/Shadow]$ a.out Number: 1 add 4 Number = 5 sub 2 Number = 3 99 Number = 99 ~Number: 99 [mark@toy ~/PP2ndEd/dev/examples/Part3/Extend/Swig/Shadow]$ python main.py Number: 1 add 4 Number = 5 sub 2 Number = 3 99 Number = 99 ~Number: 99 [mark@toy ~/PP2ndEd/dev/examples/Part3/Extend/Swig/Shadow]$ python main_low.py Number: 1 add 4 Number = 5 sub 2 Number = 3 99 Number = 99 ~Number: 99 [mark@toy ~/PP2ndEd/dev/examples/Part3/Extend/Swig/Shadow]$ python main_subclass.py Number: 1 in Python add... add 4 Number = 5 sub 2 Number = 3 99 Number = 99 in Python mul... Number = 198 ~Number: 198 ------------------------------------------------------------------------------- [mark@toy ~/PP2ndEd/dev/examples/Part3/Extend/Swig/Shadow]$ python Python 1.5.2 (#14, Sep 12 1999, 00:55:49) [GCC egcs-2.91.66 19990314/Linux (egcs- on linux2 Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam >>> import numberc >>> numberc.__file__ './numberc.so' >>> import number >>> number.__file__ 'number.pyc' >>> >>> >>> x = number.Number(2) Number: 2 >>> y = number.Number(4) Number: 4 >>> x, y (, ) >>> >>> x.display() Number = 2 >>> x.add(y.data) add 4 >>> x.display() Number = 6 >>> >>> y.data = x.data + y.data + 36 >>> y.display() Number = 46 >>> >>> >>> x.add('abc') Traceback (innermost last): File "", line 1, in ? File "number.py", line 11, in add val = numberc.Number_add(self.this,arg0) TypeError: illegal argument type for built-in operation >>> >>> x.data = 'abc' Traceback (innermost last): File "", line 1, in ? File "number.py", line 21, in __setattr__ numberc.Number_data_set(self.this,value) TypeError: illegal argument type for built-in operation >>> del x; del y >>> x Traceback (innermost last): File "", line 1, in ? NameError: x >>> ~Number: 46 ~Number: 6 [mark@toy ~/PP2ndEd/dev/examples/Part3/Extend/Swig/Shadow]$ python Python 1.5.2 (#14, Sep 12 1999, 00:55:49) [GCC egcs-2.91.66 19990314/Linux (egcs- on linux2 Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam >>> from number import Number >>> a, b, c, d = Number(1), Number(2), Number(3), Number(4) Number: 1 Number: 2 Number: 3 Number: 4 >>> >>> >>> a = 0 ~Number: 1 >>> del b ~Number: 2 >>> >>> c.data = None Traceback (innermost last): File "", line 1, in ? File "number.py", line 21, in __setattr__ numberc.Number_data_set(self.this,value) TypeError: illegal argument type for built-in operation >>> d.inc() Traceback (innermost last): File "", line 1, in ? File "number.py", line 27, in __getattr__ raise AttributeError,name AttributeError: inc >>> del c ~Number: 3 >>> del d >>> ~Number: 4 ------------------------------------------------------------------------------- [mark@toy ~/PP2ndEd/dev/examples/Part3/Extend/Swig/Shadow]$ make -f makefile.number-swig force rm -f *.pyc *.o *.so core a.out number.py number_wrap.c number_wrap.doc [mark@toy ~/PP2ndEd/dev/examples/Part3/Extend/Swig/Shadow]$ ls main.cxx main_low.py makefile.number-swig number.h output main.py main_subclass.py number.cxx number.i [mark@toy ~/PP2ndEd/dev/examples/Part3/Extend/Swig/Shadow]$ make -f makefile.number-swig ../myswig -c++ -python -shadow number.i Generating wrappers for Python g++ number_wrap.c -c -g -I/home/mark/python1.5.2-ddjcd/Python-1.5.2/Include -I/home/mark/python1.5.2-ddjcd/Python-1.5.2 g++ -c -g number.cxx g++ -shared number_wrap.o number.o -o numberc.so [mark@toy ~/PP2ndEd/dev/examples/Part3/Extend/Swig/Shadow]$ ls main.cxx main_subclass.py number.h number.py number_wrap.o main.py makefile.number-swig number.i number_wrap.c numberc.so main_low.py number.cxx number.o number_wrap.doc output [mark@toy ~/PP2ndEd/dev/examples/Part3/Extend/Swig/Shadow]$ make -f makefile.number-swig clean rm -f *.pyc *.o *.so core a.out [mark@toy ~/PP2ndEd/dev/examples/Part3/Extend/Swig/Shadow]$ ls main.cxx main_subclass.py number.h number_wrap.c main.py makefile.number-swig number.i number_wrap.doc main_low.py number.cxx number.py output ------------------------------------------------------------------------------