summaryrefslogtreecommitdiffstats
path: root/src/uscxml/transform/ChartToJava.cpp
diff options
context:
space:
mode:
authorStefan Radomski <github@mintwerk.de>2016-11-28 17:03:31 (GMT)
committerStefan Radomski <github@mintwerk.de>2016-11-28 17:03:31 (GMT)
commita6313d4ab2005196f376870c9ca945c691948416 (patch)
tree5345422d235e7c511885601854b6a2923db09e2e /src/uscxml/transform/ChartToJava.cpp
parentfcfc842a1ccee7a6b2579889f3236d50849c0679 (diff)
downloaduscxml-a6313d4ab2005196f376870c9ca945c691948416.zip
uscxml-a6313d4ab2005196f376870c9ca945c691948416.tar.gz
uscxml-a6313d4ab2005196f376870c9ca945c691948416.tar.bz2
Refactored Java into bindings and generated
Diffstat (limited to 'src/uscxml/transform/ChartToJava.cpp')
-rw-r--r--src/uscxml/transform/ChartToJava.cpp55
1 files changed, 54 insertions, 1 deletions
diff --git a/src/uscxml/transform/ChartToJava.cpp b/src/uscxml/transform/ChartToJava.cpp
index da9c4d6..f31db71 100644
--- a/src/uscxml/transform/ChartToJava.cpp
+++ b/src/uscxml/transform/ChartToJava.cpp
@@ -42,6 +42,59 @@ ChartToJava::~ChartToJava() {
}
void ChartToJava::writeTo(std::ostream& stream) {
+ std::string className;
+ std::string packageName = "org.uscxml.gen";
+
+ if (_extensions.find("packageName") != _extensions.end()) {
+ packageName = _extensions.equal_range("packageName").first->second;
+ }
+
+ if (_extensions.find("outputFile") != _extensions.end()) {
+ URL outputFileURL(_extensions.equal_range("outputFile").first->second);
+ className = outputFileURL.pathComponents().back();
+ } else if (_baseURL.pathComponents().size() > 0) {
+ className = _baseURL.pathComponents().back();
+ } else {
+ className = "StateChartBase";
+ }
+
+ std::string javaVersion = "5";
+ if (_extensions.find("javaVersion") != _extensions.end()) {
+ javaVersion = _extensions.equal_range("javaVersion").first->second;
+ }
+ std::string baseClass = "StateChartJava" + javaVersion + "Impl";
+
+
+ size_t dotPos = std::string::npos;
+ if ((dotPos = className.find(".")) != std::string::npos) {
+ className = className.substr(0, dotPos);
+ }
+
+ stream << "package " << packageName << ";" << std::endl;
+ stream << std::endl;
+
+ stream << "/**" << std::endl;
+ stream << " Generated from source:" << std::endl;
+ stream << " " << (std::string)_baseURL << std::endl;
+ stream << "*/" << std::endl;
+ stream << std::endl;
+
+
+ stream << std::endl;
+ stream << "import java.util.ArrayList;" << std::endl;
+ stream << "import java.util.HashMap;" << std::endl;
+ stream << "import org.uscxml.*;" << std::endl;
+ stream << std::endl;
+ stream << "public abstract class " << className << " extends " << baseClass << " {" << std::endl;
+ stream << std::endl;
+ stream << " public " << className << "() {" << std::endl;
+ stream << " transitions = new ArrayList<Transition>();" << std::endl;
+ stream << " states = new ArrayList<State>();" << std::endl;
+ stream << " stateNamesToIndex = new HashMap<String, Integer>();" << std::endl;
+ stream << " /* TODO: initialize all members */" << std::endl;
+ stream << " }" << std::endl;
+ stream << "}" << std::endl;
+
}
-} \ No newline at end of file
+}