SUMO - Simulation of Urban MObility
GUIGlObjectStorage Class Reference

A storage for of displayed objects via their numerical id. More...

#include <GUIGlObjectStorage.h>

Public Member Functions

void clear ()
 Clears this container.
std::set< GUIGlIDgetAllIDs () const
 Returns the set of all known ids.
GUIGlObjectgetNetObject () const
 Returns the network object.
GUIGlObjectgetObjectBlocking (GUIGlID id)
 Returns the object from the container locking it.
GUIGlObjectgetObjectBlocking (const std::string &fullName)
 Returns the object from the container locking it.
 GUIGlObjectStorage ()
 Constructor.
GUIGlID registerObject (GUIGlObject *object, const std::string &fullName)
 Registers an object.
bool remove (GUIGlID id)
 Removes the named object from this container.
void setNetObject (GUIGlObject *object)
 Sets the given object as the "network" object.
void unblockObject (GUIGlID id)
 Marks an object as unblocked.
 ~GUIGlObjectStorage ()
 Destructor.

Static Public Attributes

static GUIGlObjectStorage gIDStorage
 A single static instance of this class.

Private Types

typedef std::map< GUIGlID,
GUIGlObject * > 
ObjectMap
 Definition of a container from numerical ids to objects.

Private Member Functions

 GUIGlObjectStorage (const GUIGlObjectStorage &s)
 invalidated copy constructor
GUIGlObjectStorageoperator= (const GUIGlObjectStorage &s)
 invalidate assignment operator

Private Attributes

ObjectMap my2Delete
 Objects to delete.
GUIGlID myAktID
 The next id to give; initially zero, increased by one with each object registration.
ObjectMap myBlocked
 The currently accessed objects.
std::map< std::string,
GUIGlObject * > 
myFullNameMap
MFXMutex myLock
 A lock to avoid parallel access on the storages.
ObjectMap myMap
 The known objects which are not accessed currently.
GUIGlObjectmyNetObject
 The network object.

Detailed Description

A storage for of displayed objects via their numerical id.

This is a container for GUIGlObject - objects, which may be displayed and due to this may generate tooltips or be grapped in other ways.

As in case of vehicles (other, later implemented objects may have this property, too) they may be deleted by the simulation while being accessed

  • for example using a property window or something like that - this container posesses three storages: one containing all objects that are not accessed at all, one for objects currently accessed and one for objects that are accessed but shall be deleted.

Definition at line 60 of file GUIGlObjectStorage.h.


Member Typedef Documentation

typedef std::map<GUIGlID, GUIGlObject*> GUIGlObjectStorage::ObjectMap [private]

Definition of a container from numerical ids to objects.

Definition at line 158 of file GUIGlObjectStorage.h.


Constructor & Destructor Documentation

Constructor.

Definition at line 54 of file GUIGlObjectStorage.cpp.

Destructor.

Definition at line 58 of file GUIGlObjectStorage.cpp.

invalidated copy constructor


Member Function Documentation

Clears this container.

The objects are not deleted.

Definition at line 131 of file GUIGlObjectStorage.cpp.

References MFXMutex::lock(), myAktID, myLock, myMap, and MFXMutex::unlock().

Referenced by GUIRunThread::deleteSim().

std::set< GUIGlID > GUIGlObjectStorage::getAllIDs ( ) const

Returns the set of all known ids.

Definition at line 155 of file GUIGlObjectStorage.cpp.

References myMap.

Returns the network object.

Returns:
The network object

Definition at line 142 of file GUIGlObjectStorage.h.

References myNetObject.

Referenced by GUISUMOAbstractView::openObjectDialog().

Returns the object from the container locking it.

The lock prevents the object from being deleted while it is accessed. The object is moved from "myMap" to "myBlocked".

Parameters:
[in]idThe id of the object to return
Returns:
The object with the given id or 0 if no such object is known

Definition at line 73 of file GUIGlObjectStorage.cpp.

References MFXMutex::lock(), myBlocked, myLock, myMap, and MFXMutex::unlock().

Referenced by GUISUMOAbstractView::centerTo(), GUISelectedStorage::deselect(), GUISUMOAbstractView::getObjectAtPosition(), getObjectBlocking(), GUISelectedStorage::loadIDs(), GUISUMOAbstractView::openObjectDialog(), GUIDialog_GLChosenEditor::rebuildList(), GUISelectedStorage::save(), GUISelectedStorage::select(), GUISUMOAbstractView::showToolTipFor(), and GUISelectedStorage::toggleSelection().

GUIGlObject * GUIGlObjectStorage::getObjectBlocking ( const std::string &  fullName)

Returns the object from the container locking it.

The lock prevents the object from being deleted while it is accessed. The object is moved from "myMap" to "myBlocked".

Parameters:
[in]idThe id of the object to return
Returns:
The object with the given id or 0 if no such object is known

Definition at line 95 of file GUIGlObjectStorage.cpp.

References getObjectBlocking(), MFXMutex::lock(), myFullNameMap, myLock, and MFXMutex::unlock().

GUIGlObjectStorage& GUIGlObjectStorage::operator= ( const GUIGlObjectStorage s) [private]

invalidate assignment operator

GUIGlID GUIGlObjectStorage::registerObject ( GUIGlObject object,
const std::string &  fullName 
)

Registers an object.

This done within the constructor of the GUIGlObject; The object's "setGLID" method is called giving the next free id.

Parameters:
[in]objectThe object to register
[in]fullNameThe full name of the object to register
Returns:
the GUIGlObject under which the object has been registered

Definition at line 62 of file GUIGlObjectStorage.cpp.

References MFXMutex::lock(), myAktID, myFullNameMap, myLock, myMap, and MFXMutex::unlock().

Referenced by GUIGlObject::GUIGlObject().

Removes the named object from this container.

This function returns true if the object may be deleted; otherwise it's kept in an internal storage (for visualisation etc.) and will be removed by this class

Parameters:
[in]idThe id of the object to remove
Returns:
Whether the object could be removed (and may be deleted)

Definition at line 109 of file GUIGlObjectStorage.cpp.

References MFXMutex::lock(), my2Delete, myBlocked, myFullNameMap, myLock, myMap, and MFXMutex::unlock().

Referenced by GUIGlObject::~GUIGlObject().

void GUIGlObjectStorage::setNetObject ( GUIGlObject object) [inline]

Sets the given object as the "network" object.

Parameters:
[in]objectThe object to set as network object

Definition at line 134 of file GUIGlObjectStorage.h.

References myNetObject.

Referenced by GUINet::GUINet().


Field Documentation

Objects to delete.

Definition at line 171 of file GUIGlObjectStorage.h.

Referenced by remove().

The next id to give; initially zero, increased by one with each object registration.

Definition at line 174 of file GUIGlObjectStorage.h.

Referenced by clear(), and registerObject().

The currently accessed objects.

Definition at line 168 of file GUIGlObjectStorage.h.

Referenced by getObjectBlocking(), remove(), and unblockObject().

std::map<std::string, GUIGlObject*> GUIGlObjectStorage::myFullNameMap [private]

Definition at line 165 of file GUIGlObjectStorage.h.

Referenced by getObjectBlocking(), registerObject(), and remove().

A lock to avoid parallel access on the storages.

Definition at line 177 of file GUIGlObjectStorage.h.

Referenced by clear(), getObjectBlocking(), registerObject(), remove(), and unblockObject().

The known objects which are not accessed currently.

Definition at line 161 of file GUIGlObjectStorage.h.

Referenced by clear(), getAllIDs(), getObjectBlocking(), registerObject(), remove(), and unblockObject().

The network object.

Definition at line 180 of file GUIGlObjectStorage.h.

Referenced by getNetObject(), and setNetObject().


The documentation for this class was generated from the following files:
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Defines