C
Charles Rapp
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
http://java.sun.com/j2se/1.4.2/system-configurations.html
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
defined.
+ 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.
Enjoy!
Charles Rapp
mailto:[email protected]
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
http://java.sun.com/j2se/1.4.2/system-configurations.html
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
defined.
+ 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.
Enjoy!
Charles Rapp
mailto:[email protected]