The commands described in this section are used during the compilation of GENESIS libraries. They are used within library startup scripts, and are not recognized by the SLI at run time. A description of their use is given in Defining New Objects and Commands.
Command Name: addfunc Description: Binds a compiled C function to a name for reference as a routine in the Genesis shell. Usage: addfunc name function [type] Example: addfunc do_myfunction myfunction addfunc do_return_index getindex int Notes: This library initialization command binds a compiled C function to a name within GENESIS by which the function can be called. It is used when compiling new GENESIS libraries, and is not recognized by the SLI when GENESIS is running.See also: listcommands , showcommand
Command Name: newclass Description: Adds a new class to list of currently recognized GENESIS element classes. Usage: newclass class-name Example: newclass NEWCLASS Notes: The newclass routine is used to add new element classes to the working set of GENESIS objects. Objects can be grouped into named classes. This grouping can be used to facilitate the specification of operations to be performed on functionally related elements. See the documentation on scheduling and the addtask routine for an example of class use. This class name can be used in subsequent specification of new objects using the object routine or in the modification of object classes using the class field of the object routine. Classes are simply used for grouping of related elements and do not alter the element functionality in any way. Classes in GENESIS don't carry the full connotations of classes within a true object-oriented programming environment. They are simply convenient ways of created named groupings to which objects can be assigned. This initialization command is used when compiling new GENESIS libraries, and is not recognized by the SLI when GENESIS is running.See also: listclasses, object , addtask, Schedules
Command Name: object Description: Defines the attributes of a GENESIS element type ("object"). Usage: object name datatype function class [class] ... -actions names -messages name type case-num arg-names -readwrite field-name field-desc [default-value] -readonly field-name field-desc [default-value] -hidden field-name field-desc [default-value] -fields names -defaults args -description text -author text name object name (must be unique) datatype name of the object data structure defining object fields (must be the same name as that used in the structure definition; see example_struct.h) function default object function (must be the same name used for the function in the code definition; see example.c) class class to which this object belongs; can be one or more of existing classes (see listclasses) -actions flag indicating that following arguments are actions that the object can perform; action names must correspond to predefined or newly added actions (see addaction); actions listed must be consistent with actions defined in code definition (see SELECT_ACTION in example.c) -messages flag indicating that following arguments are messages for object, in the following order: 1. name of message (any string), as can be used by 'addmsg' routine 2. case number of message type, must correspond to value defined in code definition (see MSGLOOP of example.c) If omitted, one will be automatically generated. 3. number of arguments to message 4. names of arguments (arbitrary, used for documentation purposes, but there MUST be as many names as there are arguments defined in 3) -readwrite make field-name both readable and setable -readonly make field-name readable, but not setable -hidden hide field-name from view by showfield The remaining fields are added for the purpose of documenting the object and are optional. Example: object nernst nernst_type Nernst device channel \ -author "M.Wilson Caltech 3/89" \ -actions PROCESS RESET CHECK \ -messages CIN 0 1 Cin \ COUT 1 1 Cout \ TEMP 2 1 T \ -fields "E = equilibrium potential" \ "T = temperature in degrees celsius" \ "valency = ionic valency z" \ "scale = voltage scale factor" \ -description \ "Calculates Nernst potential for the given" \ "ionic concentrations and temperature." \ "E = scale*(RT/zF)*ln(Cout/Cin)" \ "A scale factor of 1 gives E in volts." \ "A scale factor of 1e3 gives E in millivolts." Notes: The object command is used to define the attributes of a GENESIS object. An object command is executed for each type of GENESIS element and defines the function associated with that element, the actions which are valid to perform on the element, any special GENESIS environment variables tagged to the element, any messages which can be passed to or from the element, and a brief description of that element. This initialization command is used when compiling new GENESIS libraries, and is not recognized by the SLI when GENESIS is running.See also: listobjects , addaction , newclass , showobject