FOMUS also provides several functions that are wrappers to the first method described above. They create and store the objects internally so the user doesn't have to maintain lists of objects and data. The functions are:
(FOMUS-INIT
&key
setting
value
...)
(FOMUS-NEWPART
partid
&key slot
value
...)
(FOMUS-NEWTIMESIG
partids
&key slot
value
...)
(FOMUS-NEWNOTE
partid
&key slot
value
...)
(FOMUS-NEWREST
partid
&key slot
value
...)
(FOMUS-NEWMARK
partid
&key slot
value
...)
(FOMUS-EXEC
&key
setting
value
...)
The user first calls FOMUS-INIT
, which initializes settings and insures that FOMUS is ready to
accept new data.
Setting values may be passed to this function in exactly the same way as the FOMUS
function above, though it isn't necessary in this case to include GLOBAL
,
PARTS
or EVENTS
.
The functions FOMUS-NEWPART
,
FOMUS-NEWTIMESIG
,
FOMUS-NEWNOTE
,
FOMUS-NEWREST
and
FOMUS-NEWMARK
are then used to create and store all of the
objects that are normally included in the GLOBAL
,
PARTS
and EVENTS
settings.
The required partid
or partids
arguments correspond directly to the
slots of the corresponding objects (see the documentation for each of these in Objects for more information).
The PARTID
argument to FOMUS-NEWPART
must be unique or objects that use them to refer to parts will refer to more than one.
The slot
keywords can be any of the constructor slot keywords in the corresponding object, and the value
argument is the appropriate value for that slot.
Internally, FOMUS stores all TIMESIG
objects
in the GLOBAL
setting list, all
PART
objects in the PARTS
list and all other objects (NOTE
,
REST
and MARK
)
in the EVENTS
list.
This means that the user may specify NIL
or a list of part IDs in the PARTID
/PARTIDS
slots of TIMESIG
and MARK
objects.
When the user is finished calling the FOMUS-NEW
functions, the last thing to do is call
FOMUS-EXEC
.
This again accepts setting keywords and values (overriding any previous setting values) and passes all information to the
FOMUS
function which does the rest of the processing.
After FOMUS-EXEC
is called, all internal data is reinitialized as if
FOMUS-INIT
were called with no arguments.
Following are the interface 2 equivalents to some of the examples above: