General difference from original USCXML
It means that data starts from 0, but arrays in some datamodels may start from 1 or other digit, or may be like 1,3,5 etc
2) Critical issues like #179 were corrected
Original USCXML master branch stopped support in 2017 but has critical issues like #179 and others
Original USCXML has poor Windows support but this branch is completely tested and has Windows as the only target.
- null
- lua
- ecmascript (JavaScriptCore)
uSCXML is a platform to work with state-charts given as SCXML files. It consists of three principal components:
-
libuscxml
: C++ library containing an interpreter and accompanying functionality. -
uscxml-browser
: A standards compliant command-line interpreter of SCXML documents. -
uscxml-transform
: A collection of transformation implementations to transpile SCXML, e.g. onto ANSI-C and VHDL.
The status of the various datamodels, bindings and generators with regard to the W3C IRP tests can be checked in the test table.
There are no installers yet and we do not feature any releases. Just check for open issues and build from source. If you did download and build locally, you can create installers via make packages
though.
Documentation is available at our github pages. It is created from inline comments in the source along with some dedicated markdown pages via doxygen
. We try to keep it current and will update it ever again. For the most current documentation, you can run make docs
in your build directory.
uSCXML itself is distributed under the Simplified BSD license as in, do not sue us and do not misrepresent authorship. There are currently four additional libraries that are required to compile uSCXML.
Project | License | Comment |
---|---|---|
libcurl | MIT/X derivate | Used in uSCXML to fetch remote content |
Xerces-C++ | Apache v2 | XML parser and DOM implementation |
libevent | 3-clause BSD | Delayed event queues |
uriparser | New BSD | Referring and resolving URIs |
At configure time, the uSCXML build-process will attempt to find and link several other libraries (e.g. Lua, v8) and additional licensing terms may apply.
For more detailled information, refer to the documentation.
uscxml::Interpreter scxml = uscxml::Interpreter::fromURL("...");
while(scxml.step() != uscxml::USCXML_FINISHED) {
...
}
# interpret state-chart from url
$ uscxml-browser https://raw.githubusercontent.com/tklab-tud/uscxml/master/test/w3c/null/test436.scxml
# transform given SCXML document into ANSI-C fragment
$ uscxml-transform -tc -i https://raw.githubusercontent.com/tklab-tud/uscxml/master/test/w3c/null/test436.scxml