diff options
author | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2014-05-14 16:51:56 (GMT) |
---|---|---|
committer | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2014-05-14 16:51:56 (GMT) |
commit | 49127140ed2ad91bfcf532b3d2265582cb80b0db (patch) | |
tree | b31c1537973792f4ac9216de82c0f041e9e8aeae /src/bindings/swig | |
parent | 6920a312918f989cd2970277a853fbed52cf0c38 (diff) | |
download | uscxml-49127140ed2ad91bfcf532b3d2265582cb80b0db.zip uscxml-49127140ed2ad91bfcf532b3d2265582cb80b0db.tar.gz uscxml-49127140ed2ad91bfcf532b3d2265582cb80b0db.tar.bz2 |
Retain interpreter instance for DataModels in Java (Rhino)
Diffstat (limited to 'src/bindings/swig')
-rw-r--r-- | src/bindings/swig/java/JavaDataModel.h | 7 | ||||
-rw-r--r-- | src/bindings/swig/java/uscxml.i | 12 |
2 files changed, 17 insertions, 2 deletions
diff --git a/src/bindings/swig/java/JavaDataModel.h b/src/bindings/swig/java/JavaDataModel.h index fcfb665..4fe6cbe 100644 --- a/src/bindings/swig/java/JavaDataModel.h +++ b/src/bindings/swig/java/JavaDataModel.h @@ -12,12 +12,13 @@ public: JavaDataModel(); virtual ~JavaDataModel(); - virtual JavaDataModel* create(Interpreter interpreter) { + virtual JavaDataModel* create(const Interpreter& interpreter) { return new JavaDataModel(); } virtual boost::shared_ptr<DataModelImpl> create(InterpreterImpl* interpreter) { - return boost::shared_ptr<DataModelImpl>(create(interpreter->shared_from_this())); + _interpreter = interpreter->shared_from_this(); + return boost::shared_ptr<DataModelImpl>(create(_interpreter)); } virtual std::set<std::string> getNames() { return std::set<std::string>(); @@ -131,6 +132,8 @@ public: virtual void assign(const std::string& assignElem, const std::string& location, const std::string& content) {} virtual void eval(const std::string& scriptElem, const std::string& expr) {} +private: + Interpreter _interpreter; }; } diff --git a/src/bindings/swig/java/uscxml.i b/src/bindings/swig/java/uscxml.i index a88ebf1..5dac9d2 100644 --- a/src/bindings/swig/java/uscxml.i +++ b/src/bindings/swig/java/uscxml.i @@ -101,6 +101,7 @@ using namespace Arabica::DOM; %template(ParamPair) std::pair<std::string, uscxml::Data>; %template(ParamPairVector) std::vector<std::pair<std::string, uscxml::Data> >; %template(IOProcMap) std::map<std::string, uscxml::IOProcessor>; +%template(InvokerMap) std::map<std::string, uscxml::Invoker>; %rename Data DataNative; # %typemap(jstype) uscxml::Data "Data" @@ -140,6 +141,17 @@ using namespace Arabica::DOM; } return keys; } + + std::vector<std::string> getInvokerKeys() { + std::vector<std::string> keys; + std::map<std::string, Invoker>::const_iterator iter = self->getInvokers().begin(); + while(iter != self->getInvokers().end()) { + keys.push_back(iter->first); + iter++; + } + return keys; + } + }; %extend uscxml::Data { |