Container class based on std::vector<cValue> objects.
The added value is ownership handling of object values (cObject* pointers) contained in cValue objects. Guidelines: owned objects are those that subclass from cOwnedObject and getOwner() returns this object, and all cObjects that are non-cOwnedObject.
Public Member Functions | |
Constructors, destructor, assignment. | |
cValueArray (const cValueArray &other) | |
cValueArray (const char *name=nullptr, int capacity=0) | |
virtual | ~cValueArray () |
cValueArray & | operator= (const cValueArray &other) |
Redefined cObject member functions | |
virtual cValueArray * | dup () const override |
virtual std::string | str () const override |
virtual void | forEachChild (cVisitor *v) override |
Container functions. | |
virtual int | size () const |
virtual void | clear () |
virtual int | getCapacity () const |
virtual void | setCapacity (int capacity) |
virtual void | add (const cValue &value) |
virtual void | insert (int k, const cValue &value) |
const virtual cValue & | get (int k) const |
void | set (int k, const cValue &value) |
const cValue & | operator[] (int k) const |
virtual void | erase (int k) |
virtual cValue | remove (int k) |
const std::vector< cValue > & | getArray () const |
Convenience getters. | |
std::vector< bool > | asBoolVector () const |
std::vector< intval_t > | asIntVector () const |
std::vector< intval_t > | asIntVectorInUnit (const char *targetUnit) const |
std::vector< double > | asDoubleVector () const |
std::vector< double > | asDoubleVectorInUnit (const char *targetUnit) const |
std::vector< std::string > | asStringVector () const |
template<typename T > | |
std::vector< T * > | asObjectVector () const |
Public Member Functions inherited from cValueContainer | |
cValueContainer (const char *name=nullptr) | |
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) |
|
inline |
Copy constructor. Contained objects will be duplicated so that the new cValueArray will have its own copy of them.
Note that this behavior is different from most other container classes in the simulation library like cQueue, which only duplicate the objects they own, and leave externally owned objects alone.
|
inlineexplicit |
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.
cValueArray& operator= | ( | const cValueArray & | other | ) |
Assignment operator. The name member is not copied; see cNamedObject::operator=() for details. Contained objects that are owned by cValueArray will be duplicated so that the new cValueArray will have its own copy of them.
|
inlineoverridevirtual |
Creates and returns an exact copy of this object. Contained objects will be duplicated so that the new cValueArray will have its own copy of them.
Note that this behavior is different from most other container classes in the simulation library like cQueue, which only duplicate the objects they own, and leave externally owned objects alone.
Reimplemented from cObject.
|
overridevirtual |
|
overridevirtual |
|
inlinevirtual |
Returns the number of elements.
|
virtual |
Makes the container empty.
|
inlinevirtual |
Returns number of elements the array can hold without having to reallocate the underlying storage.
|
inlinevirtual |
Reserves place for the given number of elements without changing the contents of the array.
|
virtual |
Adds the value at the end of the array.
|
virtual |
Inserts the value at the given position. Subsequent elements will be shifted up.
|
virtual |
Returns the kth element in the array.
void set | ( | int | k, |
const cValue & | value | ||
) |
Replaces the kth element in the array.
|
inline |
Equivalent to get(int) const.
|
virtual |
Erases the value given with its index. Subsequent elements will be shifted down.
|
virtual |
Removes the kth element from the array, and replaces its slot with the undefined value.
|
inline |
Provides readonly access to the underlying std::vector.
std::vector<bool> asBoolVector | ( | ) | const |
Converts each element to bool, and returns the result. If an element cannot be converted (see cValue API), an exception is thrown.
std::vector<intval_t> asIntVector | ( | ) | const |
Converts each element to integer, and returns the result. If an element cannot be converted (see cValue API), an exception is thrown.
std::vector<intval_t> asIntVectorInUnit | ( | const char * | targetUnit | ) | const |
Converts each element to integer, and returns the result. If an element cannot be converted (see cValue API), an exception is thrown.
std::vector<double> asDoubleVector | ( | ) | const |
Converts each element to double, and returns the result. If an element cannot be converted (see cValue API), an exception is thrown.
std::vector<double> asDoubleVectorInUnit | ( | const char * | targetUnit | ) | const |
Converts each element to double, and returns the result. If an element cannot be converted (see cValue API), an exception is thrown.
std::vector<std::string> asStringVector | ( | ) | const |
Converts each element to string, and returns the result. If an element cannot be converted (see cValue API), an exception is thrown.
std::vector< T * > asObjectVector |
Converts each element to object of the given type, and returns the result. If an element cannot be converted (see cValue API), an exception is thrown.
References omnetpp::opp_typename().