Parameters
There are two kind of parameters in SMI. Action parameters and object parameters. Object parameters are essentially additional dynamical attributes that any SMI object (either abstract or associated) can posses. They can be modified during an execution of an object action and in future it will be possible to test (at SML level) on their values. They can be also 'shipped' to other objects (either local or remote) and this way to remote State Managers and proxies. There are 3 types of parameters:
- Integer
- Floating Point
- Strings
At SML level they are encountered at the following places:
- OBJECT Parameters declaration
- ACTION Parameters declaration
OBJECT parameters declaration
If object posses parameters, they must be declared before the first declaration of the object state. The format of the declarative statement, which can span over as many lines as necessary, is as follows :
PARAMETERS : <parameter-declaration1>,<parameter-declaration2>,....,<parameter-declarationn>
where
< parameter-declarationi > has the following format: [<type-declaration>] <parameter-name> [=<value>]
<type-declaration> is either INT or FLOAT or STRING. It's absence is equivalent to STRING.
<value> when specified, is the value to which the parameter is going to be set before the State Manager starts executing. It has to follow C++/C conventions for integer,floating-point and string constants. In particular string values have to be enclosed in double quotes. Inside the double quotes any ASCII characters, except 'null', are allowed. However all non-printable characters have to be escaped. Also some printable characters have to be escaped...explain escaping, show table...etc.
ACTION parameters declaration
Action can have parameters associated with it. When an action has a parameter, it means that it will accept values for this parameter arriving with the command. How this parameter is used it depends on the action instructions, see below. The format of the declarative statement is as follows.
ACTION : <action-name>
( <parameter-declaration1>,....,<parameter-declarationn>
)
where
< parameter-declarationi > has the same format as that of object parameters. The meaning of <value> is however different. When present and parameter does not arrive with the command, this value is used. When it is missing, then the value of the parameter is expected to be delivered with the action. If it does not arrive, a warning is issued and the action continues regardless. This tolerant behaviour is necessary for backward compatibility wit the old SML code.
DO instruction
DO <action-name>
( <item1>,....,<itemn>
) <object-name>
where
<itemi> has format <parameter-name> = <X>
where <parameter-name> is a parameter name of the action parameter that is required by the target object <object-name> for the execution of the action <action-name>.
and <X> is either ‘local’ parameter name or a value. If ‘local’ parameter of such a name does not exists, then for backward compatibility the do will proceed regardless.
SET instruction
SET <object-parameter-name> = <X>
where <X> is either
- a value (sets object parameter <object-parameter-name> to the value) or
- parameter name of an action parameter associated with the action to which the set instruction belongs (sets object parameter
<object-parameter-name> to the value of the delivered action parameter) or
- has a format: <object-name>.<par-name> (sets object parameter <object-parameter-name> to the value of the parameter <par-name> of object <object-name>).
--
BohumilFranek - 07 Dec 2007