%module(directors="1", allprotected="1") uscxmlNativeJava // provide a macro for the header files #define SWIGIMPORTED 1 // import swig typemaps //%include //%include %include %include %include "std_string.i" %include %include "stl_set.i" %include "stl_list.i" %include typedef uscxml::Data Data; typedef uscxml::Event Event; typedef uscxml::InvokeRequest InvokeRequest; typedef uscxml::SendRequest SendRequest; // disable warning related to unknown base class #pragma SWIG nowarn=401 //%ignore boost::enable_shared_from_this; %javaconst(1); # %shared_ptr(uscxml::dom::Element); # %shared_ptr(uscxml::dom::Executable); %rename(equals) operator==; %rename(isValid) operator bool; %ignore operator!=; %ignore operator<; %ignore operator=; %ignore operator[]; %ignore operator std::list; %ignore operator std::string; %ignore operator std::map; %ignore operator<<; //************************************************** // This ends up in the generated wrapper code //************************************************** %{ #include "../../../uscxml/Message.h" #include "../../../uscxml/Factory.h" #include "../../../uscxml/Interpreter.h" //#include //#include //#include //#include //#include #include "JavaInvoker.h" #include "JavaDataModel.h" using namespace uscxml; using namespace Arabica::DOM; #include "JavaInvoker.cpp" #include "JavaDataModel.cpp" %} %ignore uscxml::NumAttr; %ignore uscxml::SCXMLParser; %ignore uscxml::InterpreterImpl; %ignore create(); %ignore uscxml::Interpreter::getDelayQueue(); %ignore uscxml::JavaInvoker::create(InterpreterImpl*); %ignore uscxml::JavaDataModel::create(InterpreterImpl*); %ignore uscxml::JavaDataModel::init(const Arabica::DOM::Element&, const Arabica::DOM::Document&, const std::string&); %ignore uscxml::JavaDataModel::init(const std::string&, const Data&); %ignore uscxml::JavaDataModel::assign(const Arabica::DOM::Element&, const Arabica::DOM::Document&, const std::string&); %ignore uscxml::JavaDataModel::assign(const std::string&, const Data&); %ignore uscxml::JavaDataModel::eval(const Arabica::DOM::Element&, const std::string&); %ignore uscxml::Event::Event(const Arabica::DOM::Node&); %ignore uscxml::Event::getStrippedDOM; %ignore uscxml::Event::getFirstDOMElement; %ignore uscxml::Event::getDOM(); %ignore uscxml::Event::setDOM(const Arabica::DOM::Document&); %ignore uscxml::Event::toDocument(); %template(DataList) std::list; %template(DataMap) std::map; %template(StringSet) std::set; %template(StringVector) std::vector; %template(ParamPair) std::pair; %template(ParamPairVector) std::vector >; %template(IOProcMap) std::map; %rename Data DataNative; # %typemap(jstype) uscxml::Data "Data" # %typemap(javaout) uscxml::Data { # return new Data(new DataNative($jnicall, $owner)); # } # %typemap(javadirectorin) uscxml::Data "new Data($jniinput)" # %typemap(javadirectorout) uscxml::Data "new Data($jniinput)" %feature("director") uscxml::JavaInvoker; %feature("director") uscxml::JavaDataModel; // translate param multimap to Map > %rename(getParamsNative) uscxml::Event::getParams(); %javamethodmodifiers uscxml::Event::getParams() "private"; %extend uscxml::Event { std::vector > getParamPairs() { std::vector > pairs; std::multimap::iterator paramPairIter = self->getParams().begin(); while(paramPairIter != self->getParams().end()) { pairs.push_back(*paramPairIter); paramPairIter++; } return pairs; } }; %extend uscxml::Interpreter { std::vector getIOProcessorKeys() { std::vector keys; std::map::const_iterator iter = self->getIOProcessors().begin(); while(iter != self->getIOProcessors().end()) { keys.push_back(iter->first); iter++; } return keys; } }; %extend uscxml::Data { std::vector getCompundKeys() { std::vector keys; std::map::const_iterator iter = self->compound.begin(); while(iter != self->compound.end()) { keys.push_back(iter->first); iter++; } return keys; } }; //*********************************************** // Parse the header file to generate wrappers //*********************************************** %include "../../../uscxml/Common.h" %include "../../../uscxml/Factory.h" %include "../../../uscxml/Message.h" %include "../../../uscxml/Interpreter.h" #include "../../../uscxml/DOMUtils.h" # %include # %include # %include # %include # %include %include "JavaInvoker.h" %include "JavaDataModel.h" # %template(XMLDocument) Arabica::DOM::Document; # %template(XMLNode) Arabica::DOM::Node; # %template(XMLElement) Arabica::DOM::Element; # %template(XMLAttr) Arabica::DOM::Attr; # %template(XMLText) Arabica::DOM::Text;