Welcome to
www.SmartStateStudio.com

Frequently Asked Questions (FAQ)

Is upgrades charged extra? 
As of now all the upgrades to latest versions are FREE. Existing customers can download the latest version and use the same license key.

Is SmartState supported in other languages? 
SmartState is supported in English, German, French & Spanish languages. One can choose the language of interest during installation. Note: The support is only through emails in English.

Do I need to link with any library for the state machine?
The state machine code is distributed in source form. This gives highest flexibility for the developers to DEBUG, compile for a specific compiler setting or optimization. Also in some cases the framework can be customized to suit specific requirements.

Is the generated code in C++ compile-able on Unix and Linux?
The generated code follows ANSI standard. It is primarily tested with Microsoft Visual Studio compiler and GNU gcc compiler on Windows. Since it is ANSI compliant it will get compiled on other platforms like UNIX & Linux.

Does SmartState support Fork & Join for state charts?
Yes. But the notation is slightly different from UML notation. Please refer to the user guide for more information on how to achieve the Fork & Join behavior. Also there is an example to demonstrate the usage.

Can we compile the state chart from the Studio tool itself?
Yes. The option to compile the chart for various targets are found under CodeGen menu. This is useful for validating the model for errors and also for frequent compilation while in development mode.

Is SmartState state machine persistent?
Yes. It is a feature and programmer has to explicitly specify the stream (can be a text file or custom stream) for serializing the state machine. Later it can be brought back to the same state even after program shutdown. This is a very useful feature for developing state based messaging workflows. The serialized data is very lightweight and it contains mainly the information about all currently active states.
Refer to the examples for usage.

Can we order SmartState through Purchase Order?
It is very well possible. Shareit.com accepts purchase orders from corporate customers.

Please read ShareIt.com FAQ :
http://www.shareit.com/ccc/index.html

Does SmartState support super states and concurrent states ?
Yes. It also support nested super states and concurrent states. We can also send signals from one concurrent state to the other within the state machine itself.

How do I define super states and concurrent states ?
Detailed information with samples are given in user guide. User guide comes along with SmartState installation. Please download and install SmartState.

I created a model, now how do I generate code from it ?
Run the code generation compiler smc2cpp for C++ / smc2c for C / smc2java for Java by specifying the saved model file name. For more information checkout the in user guide or step-by-step procedure guide shipped along with the installer.

What does internal state message mean ?
Usually states are changed or actions are carried out when an event occur on the context object. This is done by sending a message to the State Handler object. But in some situations, when we enter a state we may execute some action and depends on its result we may change our state to a different one. To achieve this internal message are really helpful.

Also in concurrent state machines, one of the concurrent state can send messages to the other concurrent states which is really a necessary in real life design.

Is the generated code thread safe ?
Usually, the state pattern describes the state of the context object at any point of time, all we need to do is to protect the state handler object from accepting more than one message at a time. So if more than one thread is sending messages to the same state handler object, The object needs to be protected.
So the generated code is not thread safe as such. Put sending of messages in a critical section so that multiple threads wont send messages at a time and it will become thread safe. Its not done in the generated code, because this is platform dependant.

How do I get SmartState ?
Download the free evaluation copy from download center. This trial version is fully functional and will be expired after 30 runs. You need to register the software for further use. Also registration gives you free future upgrades and support.

What is SmartState?
SmartState is a realization of state pattern for Object Oriented World. It includes a graphic modeler for designing or modeling the state diagrams and C / C++ / Java code generator which generates ready to compile code from the model. The generated code along with the given frame work library, can be used to implement or achieve state design pattern.