An actor selects output signals adaptively according to spur increments supplied to it along with input signals. Those spur increments are indirect and probabilistic assessment of efficiency of output signal selection. An output signal selected does not have one-to-one correspondence with a spur increment followed—an arbitrary number of output signals selected can cause an arbitrary number of spur increments followed in arbitrary delays.
Each spur increment is an increment of spur of a specific type. See Spur-driven Behavior, for the definitions of spur and spur type.
qsmm_actor_create sets the number of spur types for an actor.
Every spur type definition has the following parameters: a way of spur perception, spur weight, and a type of time for computing spur increment velocity.
A list of spur type definitions along with the methods of performing spur increments specify the spur scheme of an actor.
Use the following function to increment the value of spur of a specific type.
This function increments by spur_delta the value of spur of spur_type type an actor has been accumulating. Spur types have zero-based indices. Special spur type -1 of a large actor corresponds to the automatic spur of a small actor associated with the large actor. The value of spur_delta can be negative.
The function returns a non-negative value on success or a negative error code on failure. Currently, the function can return the following error codes.
One of the following conditions is true:
qsmm_actor_desc_sstructure when creating the actor;
The incremented spur value would be infinite.
Use the following function to get the current value of spur of a specific type.
This function sets *spur_p equal to the current value of spur of spur_type type an actor has been accumulating.
Spur types have zero-based indices.
Special spur type -1 of a large actor corresponds to the automatic spur of a small actor associated with the large actor.
If spur_p is
NULL, the function does not set *spur_p.
Otherwise, *spur_p is finite.
On success, the function returns a non-negative value.
If the actor is the small one and spur_type is negative, or if the actor is the large one and spur_type is less than -1, or if spur_type is greater than or equal to the number of spur types specified in the field
qsmm_actor_desc_s structure when creating the actor, the function returns negative error code