ntState
, derived from State
, has an integer current value. Its initialize()
function uses the evalIntExpression
function to read an integer expression from the initial value string. If successful, it attempts to read another token from the string; if there is another token, it reports the error "extra text after valid expression". An assignment operator is provided that accepts an integer value and loads it into the current value. A cast to integer is also defined for accessing the current value. The virtual function currentValue
is overloaded to return a printed version of the current value. In addition to the setInitValue
from class State, a second form is provided that takes an integer argument. Standard overrides for isA
, className
, and clone
are provided. Class FloatState
is almost identical to class IntState except that its data field is a double precision value; where IntState functions have an argument or return value of int, FloatState has a corresponding argument or return value of double. Both are generated from the same pseudo-template files. The type()
function for IntState returns "INT". For FloatState, "FLOAT" is returned. For both implementations, a prototype object is added to the KnownState list.
State::evalFloatExpression
), or a string of the form (
floatexp1
,
floatexp2
)
where both floatexp1
and floatexp2
are floating expressions. For the second form, the imaginary part will always be zero. For the third form, the first expression gives the real part and the second gives the imaginary part.
const char*
). The current value is created by the initialize()
function by scanning the initial value string. This string is copied literally, except that curly braces are special. If a pair of curly braces surrounds the name of a galaxy state, the printed representation of that state's current value (returned by the currentValue
function) is substituted. To get a literal curly brace in the current value, prefix it with a backslash. Class StringState defines assignment operators so that different string values can be copied to the current value; the value is copied with saveString
and deleted by the destructor.
TRUE
to isArray, provide an array element selection operator (operator[](int)), and an operator that converts the state into a pointer to the first element of its data (much like arrays in C). The expression parser for FloatArrayState accepts a series of "subarray expressions", which are concatenated together to get the current value when initialize()
is called. Subarray expressions may specify a single element, some number of copies of a single element, or a galaxy array state of the same type (another FloatArrayState). A single element specifier may either be a floating point value, a scalar (integer or floating) galaxy state name, or a general floating expression enclosed in parentheses. A number of copies of this single element can be specified by appending an integer expression enclosed in square brackets. The expression parsers for IntArrayState and ComplexArrayState differ only that where FloatArrayState wants a floating expression, IntArrayState wants an integer expression and ComplexArrayState wants a complex expression (an expression suitable for initializing a ComplexState).
initialize()
into a separate array element. Quotes can be use to permit "words" to have white space. Current values of galaxy states can be converted into single elements of the StringArrayState value by surrounding their names with curly braces in the initial value. Galaxy StringArrayState names will be translated into a series of values. There is currently no provision for modifying the current value of a StringArrayState other than calling of initialize to parse the current value string.