This container holds a set of objects of a particular type. It creates notifications using the standard Multi_listener<Interface> interface when a primitive changes or is added or deleted. Objects which are listening for events can then ask which primitives changed.
For speed, modifications to the Kinetic::ActiveObjectsTable can be grouped into editing sessions. A session is begun by calling set_is_editing(true) and ended by calling set_is_editing(false). There is one type of notification, namely, Listener::IS_EDITING which occurs when the editing mode is set to false, signaling that a batch of changes is completed.
As an convenience, the change methods can be called without setting the editing state to true, this acts as if it were set to true for that one function call.
The following types are iterators. Each type, Foo_iterator has two corresponding methods foo_begin and foo_end which allow you to iterate through the objects in the set Foo.
Data | mot [ Key key ] const | Access the object referenced by the key. |
Data | mot.at ( Key key) const | Access the object referenced by the key. |
void | mot.set_is_editing ( bool is_editing) | |
Set the editing state of the object. A notification is sent when the editing state is set to false after it has been true, i.e. the editing session is finished. This allows changes to be batched together. | ||
bool | mot.is_editing () const | Access the editing state. |
void | mot.set ( Key key, Data object) | This method changes the motion of one moving object. The position at the current time should not be different from the previous current position. However, at the moment I do not check this as there is no reference to time in the Kinetic::ActiveObjectsTable. If is_editing() is not true, then it is as if the calls set_is_editing(true), set(key, value) and finally set_is_editing(false) were made. If it is true, then no notifications are created. |
Key | mot.insert_object ( Data ob) | Insert a new object into the table and return a Key which can be used to refer to it. See set(Key, Data) for a description of editing modes. |
void | mot.erase ( Key key) | Delete an object from the table. The object with Key key must already be in the table. This does not necessarily decrease the amount of storage used at all. In fact, it is unlikely to do so. See set(Key,Data) for an explainating of how the editing modes are used. |
void | mot.clear () | Remove all objects from the table and free all storage. |
void | mot.is_set ( Key) const | Returns true if the object has been set in the currently notified editing session. Note that this method can only be saftely called when processing an IS_EDITING notification. |
void | mot.is_new ( Key) const | Returns true if the object has been set in the currently notified editing session. |
void | mot.clear ( Key) const | Returns true if the object has been set in the currently notified editing session. |
Kinetic::Active_objects_vector<MovingObject>
Multi_listener<Interface>, Kinetic::Active_objects_listener_helper<ActiveObjectsTable, KDS>