Coin Logo Coin3D is Free Software,
published under the BSD 3-clause license.
https://bitbucket.org/Coin3D/
http://www.kongsberg.com/kogt/
State Chart XML Classes

This set of classes is a basic implementation of State Chart XML. More...

Classes

class  ScXML
 namespace for static ScXML-related functions. More...
 
class  ScXMLObject
 Base class for all SCXML objects. More...
 
class  ScXMLEvent
 Base class for events sent to SCXML state machines. More...
 
class  ScXMLEventTarget
 base class for event targets for inter-system event communication More...
 
class  ScXMLStateMachine
 Manager for processing events and setting states in SCXML structures. More...
 
class  ScXMLElt
 base class for all SCXML elements. More...
 
class  ScXMLEltReader
 base class for element reader objects More...
 
class  ScXMLScxmlElt
 implements the <scxml> SCXML element. More...
 
class  ScXMLInitialElt
 implements the <initial> SCXML element. More...
 
class  ScXMLAbstractStateElt
 abstract base class for the SCXML 'state' elements. More...
 
class  ScXMLStateElt
 implements the <state> SCXML element. More...
 
class  ScXMLParallelElt
 implements the <parallel> SCXML element. More...
 
class  ScXMLFinalElt
 implements the <final> SCXML element. More...
 
class  ScXMLOnEntryElt
 implements the <onentry> SCXML element. More...
 
class  ScXMLOnExitElt
 implements the <onexit> SCXML element. More...
 
class  ScXMLTransitionElt
 the <transition> SCXML element. More...
 
class  ScXMLHistoryElt
 implements the <history> SCXML element. More...
 
class  ScXMLExecutableElt
 base class for all SCXML elements with executable content. More...
 
class  ScXMLEventElt
 implements the <event> SCXML element. More...
 
class  ScXMLIfElt
 implements the <if> SCXML element. More...
 
class  ScXMLElseIfElt
 implements the <elseif> SCXML element. More...
 
class  ScXMLElseElt
 implements the <else> SCXML element. More...
 
class  ScXMLLogElt
 implements the <log> SCXML element. More...
 
class  ScXMLDataModelElt
 implements the <datamodel> SCXML element. More...
 
class  ScXMLDataElt
 the <data> SCXML element. More...
 
class  ScXMLAssignElt
 the <assign> SCXML element. More...
 
class  ScXMLValidateElt
 implements the <validate> SCXML element. More...
 
class  ScXMLSendElt
 the < send> SCXML element. More...
 
class  ScXMLInvokeElt
 implements the <invoke> SCXML element. More...
 
class  ScXMLParamElt
 implements the <param> SCXML element. More...
 
class  ScXMLFinalizeElt
 implements the <finalize> SCXML element. More...
 
class  ScXMLContentElt
 implements the <content> SCXML element. More...
 
class  ScXMLAnchorElt
 implements the <anchor> SCXML element. More...
 
class  ScXMLScriptElt
 implements the <script> SCXML element. More...
 
class  ScXMLEvaluator
 defines an interface for profile-dependent evaluators. More...
 
class  ScXMLDataObj
 base class for evaluator data objects in the SCXML data module More...
 
class  ScXMLConstantDataObj
 base class for immediate data values More...
 
class  ScXMLReferenceDataObj
 A data object representing a reference to another object in the data model. More...
 
class  ScXMLAndOpExprDataObj
 Implements the logical AND operator. More...
 
class  ScXMLMinimumExprDataObj
 implements the data objects for the evaluator for the minimum profile. More...
 
class  ScXMLMinimumEvaluator
 implements the evaluator for the minimum profile. More...
 
class  ScXMLXPathEvaluator
 implements the XPath evaluator. More...
 
class  ScXMLECMAScriptEvaluator
 evaluator for the ECMAScript profile. More...
 

Detailed Description

This set of classes is a basic implementation of State Chart XML.

It is not complete, nor is it necessary conformant to those parts it implements.

Currently Coin uses SCXML for managing 3D viewer user interaction (the non-model-interaction part) - the examiner navigation mode in layman terms.

The Draft Specification for SCXML is at http://www.w3.org/TR/scxml/.

See also
Navigation Classes
Since
Coin 3.0

State Chart XML

The ScXML part of Coin is a basic, non-conformant, partial implementation of State Chart XML, based on the W3C Working Draft 16 May 2008 of SCXML http://www.w3.org/TR/2008/WD-scxml-20080516/. The latest version should be at http://www.w3.org/TR/scxml/. Read that document for a basic understanding how SCXML documents should be constructed.Coin uses SCXML for setting up its navigation systems, to be able to remove hardcoded logic for user navigation and externalize it into XML files. This makes it easy for users to customize the navigation system for their own purposes.Unsupported Items:
  • The <parallel> element is not supported as intended with parallel states. Coin will just treat it as an ordinary <state> element for now. Parallel states is not high up on the priority list, so expect this to be handled after a lot of other functionality is in place.
  • The <datamodel>-related part of the specification is not fully supported.
  • The 'target' attribute in the <transition> element can only identify a single state currently, not multiple as you would have to when having support for <parallel> elements (which we don't have).
  • The virtual state elements like <history> and <anchor> are just implemented as dummy states for now and do not do anything in relation to what they should actually do.
For learning more about how ScXML is implemented and used in Coin, take a look at $COINDIR/scxml/navigation/examiner.xml (or in the Coin source directory, data/scxml/navigation/examiner.xml) for an example of how an SCXML system for camera navigation looks, and look at the source files in src/navigation/ for the C++ counterparts to the same SCXML navigation system.
Since
Coin 3.0