// TODO: How much of this is useful anyway? %module(directors="1") SwigExtras %include "typemaps.i" %include "carrays.i" %array_functions(unsigned long, ULArray); %array_functions(long, LArray); %array_functions(int, IArray); %array_functions(float, FArray); %array_functions(double, DArray); %array_class(unsigned long, ULArrayClass); %array_class(long, LArrayClass); %array_class(int, IArrayClass); %array_class(float, FArrayClass); %array_class(double, DArrayClass); #ifdef SWIGTCL Tcl_Interp* GetInterp(Tcl_Interp* interp); %{ Tcl_Interp* GetInterp(Tcl_Interp* interp) { return interp; } %} #endif // Create swig version of std::list with // a specialization for std::string. // This is because list is used // in the wrapper interface of ITK and for java // this creates SWIGTYPE_p_*.java files that are // too big for windows file systems. But if the // class is wrapped, the shorter name StringList is used. %{ #include %} namespace std { template class list { public: list(); unsigned int size() const; bool empty() const; void clear(); void push_back(std::string x); }; template<> class list { // add specialized typemaps here public: list(); unsigned int size() const; bool empty() const; void clear(); void push_back(std::string x); %extend { std::string get(int i) { std::list::iterator j = self->begin(); while(i) { j++; i--; } return *j; } } }; } /* See wrap_SwigExtras.cxx. */ %include stl.i %template(StringVector) std::vector; %template(StringList) std::list; #ifdef SWIGJAVA %feature("director") itkJavaCommand; %{ #include "itkJavaCommand.h" %} // import fake itk command // because itkCommand will be wrapped elsewhere by swig %import "itkCommand.i" // create an itkJavaCommand that has an Execute method that // can be overriden in java, and used as an itkCommand class itkJavaCommand : public itkCommand { public: virtual void Execute(); }; %pragma(java) jniclasscode=%{ static { InsightToolkit.itkbase.LoadLibrary("BaseJava"); } %} #endif