diff options
author | Stefan Radomski <github@mintwerk.de> | 2016-11-28 17:03:31 (GMT) |
---|---|---|
committer | Stefan Radomski <github@mintwerk.de> | 2016-11-28 17:03:31 (GMT) |
commit | a6313d4ab2005196f376870c9ca945c691948416 (patch) | |
tree | 5345422d235e7c511885601854b6a2923db09e2e /src/uscxml/transform/ChartToJava.cpp | |
parent | fcfc842a1ccee7a6b2579889f3236d50849c0679 (diff) | |
download | uscxml-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.cpp | 55 |
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 +} |