OMNeT++ Simulation Library
6.0.3
|
#include <carray.h>
Vector-like container for objects derived from cObject.
cArray stores pointers of objects. When the array is full, the its capacity grows automatically by a delta.
Ownership of cOwnedObjects may be controlled by invoking setTakeOwnership() prior to inserting objects. Objects that cannot track their ownership (cObject but not cOwnedObject) are always treated as owned. Whether an object is owned or not affects the operation of the destructor, clean(), the copy constructor and the dup() method.
Classes | |
class | Iterator |
Iterates through elements in a cArray, skipping holes (slots containing nullptr). More... | |
Public Member Functions | |
Constructors, destructor, assignment. | |
cArray (const cArray &list) | |
cArray (const char *name=nullptr, int capacity=0, int delta=10) | |
virtual | ~cArray () |
cArray & | operator= (const cArray &list) |
Redefined cObject member functions | |
virtual cArray * | dup () const override |
virtual std::string | str () const override |
virtual void | forEachChild (cVisitor *v) override |
virtual void | parsimPack (cCommBuffer *buffer) const override |
virtual void | parsimUnpack (cCommBuffer *buffer) override |
Container functions. | |
virtual int | size () const |
virtual void | clear () |
virtual int | getCapacity () const |
virtual void | setCapacity (int capacity) |
virtual int | add (cObject *obj) |
virtual int | addAt (int m, cObject *obj) |
virtual int | set (cObject *obj) |
virtual int | find (cObject *obj) const |
virtual int | find (const char *objname) const |
virtual cObject * | get (int m) |
virtual cObject * | get (const char *objname) |
virtual const cObject * | get (int m) const |
virtual const cObject * | get (const char *objname) const |
cObject * | operator[] (int m) |
cObject * | operator[] (const char *objname) |
const cObject * | operator[] (int m) const |
const cObject * | operator[] (const char *objname) const |
virtual bool | exist (int m) const |
virtual bool | exist (const char *objname) const |
virtual cObject * | remove (int m) |
virtual cObject * | remove (const char *objname) |
virtual cObject * | remove (cObject *obj) |
Ownership control flag. | |
The ownership control flag is to be used by derived container classes. If the flag is set, the container should take() any object that is inserted into it. | |
void | setTakeOwnership (bool tk) |
bool | getTakeOwnership () const |
Public Member Functions inherited from cOwnedObject | |
cOwnedObject () | |
cOwnedObject (const char *name, bool namepooling=true) | |
cOwnedObject (const cOwnedObject &obj) | |
virtual | ~cOwnedObject () |
cOwnedObject & | operator= (const cOwnedObject &o) |
virtual cObject * | getOwner () const override |
virtual bool | isOwnedObject () const override |
Public Member Functions inherited from cNamedObject | |
cNamedObject () | |
cNamedObject (const char *name, bool namepooling=true) | |
cNamedObject (const cNamedObject &obj) | |
virtual | ~cNamedObject () |
cNamedObject & | operator= (const cNamedObject &o) |
virtual void | setName (const char *s) |
virtual const char * | getName () const override |
virtual void | setNamePooling (bool b) |
virtual bool | getNamePooling () |
Public Member Functions inherited from cObject | |
cObject () | |
cObject (const cObject &other)=default | |
virtual | ~cObject () |
virtual const char * | getClassName () const |
bool | isName (const char *s) const |
virtual const char * | getFullName () const |
virtual std::string | getFullPath () const |
virtual std::string | getClassAndFullName () const |
virtual std::string | getClassAndFullPath () const |
const cObject * | getThisPtr () const |
virtual std::ostream & | printOn (std::ostream &os) const |
virtual bool | isSoftOwner () const |
cObject * | findObject (const char *name, bool deep=true) |
virtual cClassDescriptor * | getDescriptor () const |
void | copyNotSupported () const |
Additional Inherited Members | |
Static Public Member Functions inherited from cOwnedObject | |
static long | getTotalObjectCount () |
static long | getLiveObjectCount () |
static void | resetObjectCounters () |
static cSoftOwner * | getOwningContext () |
Protected Member Functions inherited from cObject | |
virtual void | take (cOwnedObject *obj) |
virtual void | drop (cOwnedObject *obj) |
void | dropAndDelete (cOwnedObject *obj) |
|
explicit |
Constructor. The initial capacity of the container and the delta (by which the capacity will grow if it gets full) can be specified.
|
virtual |
Destructor. The contained objects that were owned by the container will be deleted.
Assignment operator. The name member is not copied; see cNamedObject::operator=() for details. Contained objects that are owned by cArray will be duplicated so that the new cArray will have its own copy of them.
|
inlineoverridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
Serializes the object into an MPI send buffer. Used by the simulation kernel for parallel execution. See cObject for more details.
Reimplemented from cOwnedObject.
|
overridevirtual |
Deserializes the object from an MPI receive buffer Used by the simulation kernel for parallel execution. See cObject for more details.
Reimplemented from cOwnedObject.
|
inlinevirtual |
Returns the index of last used position+1. This only equals the number of contained objects if there are no "holes" (nullptr elements) in the array.
Referenced by cArray::Iterator::end().
|
virtual |
Makes the container empty. Contained objects that were owned by the container will be deleted.
|
inlinevirtual |
Returns the allocated size of the underlying array.
|
virtual |
Resizes the the underlying array, without changing the contents of this array. The specified capacity cannot be less than size().
|
virtual |
Inserts the object into the array. Only the pointer of the object will be stored. The return value is the object's index in the array.
|
virtual |
Inserts the object into the array at the given position. If the position is occupied, the function throws a cRuntimeError. The return value is the object's index in the array.
|
virtual |
Inserts the object into the array. If the array already contains an object with the same name, it will be replaced (hashtable-like behavior.) The replaced object, if it was owned by the container, is deleted using discard(). The return value is the object's index in the array.
|
virtual |
Searches the array for the pointer of the object passed and returns the index of the first match. If the object was not found, -1 is returned.
Referenced by cMessage::hasObject().
|
virtual |
Returns the index of the first item in the array that has the name pointed to by s (cObject::isName() is used.) If no such item was found, -1 is returned.
|
virtual |
Returns reference to the mth object in the array. Returns nullptr if the mth position is not used.
Referenced by cArray::Iterator::operator*().
|
virtual |
Returns reference to the first object in the array with name s. Returns nullptr if no object with the given name was found.
|
virtual |
Returns reference to the mth object in the array. Returns nullptr if the mth position is not used.
|
virtual |
Returns reference to the first object in the array with name s. Returns nullptr if no object with the given name was found.
|
inline |
|
inline |
The same as get(const char *). With the indexing operator, cArray can be used as a vector.
|
inline |
|
inline |
The same as get(const char *). With the indexing operator, cArray can be used as a vector.
|
inlinevirtual |
Returns true if position m is used in the array, otherwise false.
|
inlinevirtual |
Returns true if the array contains an object with the given name, otherwise false.
|
virtual |
Removes the object given with its index/name/pointer from the container. (If the object was owned by the container, drop() is called.)
|
virtual |
Removes the object given with its index/name/pointer from the container. (If the object was owned by the container, drop() is called.)
Removes the object given with its index/name/pointer from the container, and returns the same pointer. If the object was not found, nullptr is returned. (If the object was owned by the container, drop() is called.)
|
inline |
Sets the flag which determines whether the container object should automatically take ownership of the objects that are inserted into it. It does not affect objects already in the queue. When an inserted object is owned by the container, that means it will be deleted when the container object is deleted or cleared, and will be duplicated when the container object is duplicated or copied.
Setting the flag to false does not affect the treatment of objects that are NOT cOwnedObject. Since they do not support the ownership protocol, they will always be treated by the container.
|
inline |
Returns the flag which determines whether the container object should automatically take ownership of the objects that are inserted into it. See setTakeOwnedship() for more details.