[ANN] SMC - State Machine Compiler v. 2.2.0

Discussion in 'C++' started by Charles Rapp, Sep 1, 2003.

  1. Charles Rapp

    Charles Rapp Guest

    SMC - The State Machine Compiler v. 2.2.0

    Requires: Java 1.4.1 SE (Standard Edition) or better.
    Download: http://sourceforge.net/projects/smc
    Home Page: http://smc.sourceforge.net

    What's New?

    + SMC now requires Java SE 1.4.1. This is a stable production
    release and available on Windows, Linux, Solaris. See
    for supported Windows, Linux and Solaris version. Java SE 1.4.1
    comes with Max OS X, v. 10.2 (see http://developer.apple.com/java).

    + Added the "-cast <cast_type>" command line option. Usable only
    with the "-c++", it tells SMC how to downcast the current state
    object to a subcalss. SMC uses dynamic_cast<> by default but
    this requires runtime type information (RTTI) to be generated
    by the C++ compiler. If RTTI is not generated, then
    dynamic_cast<> cannot be used and either static_cast<> or
    reinterpret_cast<> must be used.

    + Added the "-nocatch" command line option. SMC-generated code
    uses a try/catch/rethrow block to protect the FSM against
    application-thrown exceptions. This guarantees the FSM's state
    is set before leaving the transition method. If the FSM's state
    were left unset, the FSM becomes unusable.

    Certain applications cannot afford this overhead. The
    "-nocatch" option prevents this try/catch/rethrow code from
    being generated. Some developers thought the "-noex" option
    performed this function. The "-noex" option only prevents
    SMC-generated code from initiating exceptions.

    + Added the "-serial" command line option. This causes SMC to
    associate a unique 4-byte integer ID with each state. When
    storing an FSM, you need to store the current state and the
    state stack (if you use push/pop transitions). So you store
    each state's unique integer ID. On restore you use the
    application context class' valueOf() method to convert the
    integer ID back into a state object reference.

    Bug fixes

    + SMC generated the local ctxt variable even though it was never
    used. When that is the case, the ctxt variable is no longer

    + SMC reports an error when parsing a .sm file with a %header
    construct and a -table target. The error states that %header
    can only be used with a -c++ target. This is not true. It
    can also be used with -table.

    What is SMC?

    SMC takes a state machine description (stored in a .sm file) and
    generates State pattern classes in a target language (C++, Java
    and Tcl are currently supported). SMC is a console-based app
    written in Java which means SMC can run anywhere Java (1.4.1 or
    better) can run. The download package includes an example
    directory showing how SMC can used with C++, Java and Tcl
    (requires [incr Tcl] package). The examples range from trivial to
    GUI apps.

    How can I learn more?

    At http://smc.sourceforge.net. You can access the SMC
    Programmer's Manual there as well. While you're there, check out
    the SMC demo applet at http://smc.sourceforge.net/SmcDemo.htm.

    Where can I get it?

    SMC and the Programmer's Manual can be downloaded from
    http://sourceforge.net/projects/smc. You can also use this
    website to:

    + Ask questions (via the Public Forum's Help discussion)
    + Submit a bug.
    + Join a mailing list.
    + Access SMC documentation.
    + Access SMC's source code in the CVS repository.

    (Note: in order to make full use of SourceForge capabilities,
    you must be a SourceForge member. If you are not a member,
    head over to http://sourceforge.net/account/register.php
    and sign up. SourceForge membership is free - no money, no
    requirements and NO SPAM! Membership has its benefits.)

    If you have any problems, surf over to
    http://sourceforge.net/forum/forum.php?forum_id=27865 and report
    the problem. I will try and answer you via the Help forum as
    quickly as I can.


    Charles Rapp
    Charles Rapp, Sep 1, 2003
    1. Advertisements

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Charles Rapp
    Charles Rapp
    Jul 9, 2003
  2. Charles Rapp
    Charles Rapp
    May 31, 2004
  3. Charles Rapp
    Charles Rapp
    Sep 6, 2004
  4. Charles Rapp
    Charles Rapp
    Oct 3, 2004
  5. Charles Rapp
    Charles Rapp
    Oct 9, 2004