A variant-like value class used during evaluating NED expressions.
See notes below.
Pointer values
With type==POINTER, cValue only stored the pointer, and does nothing extra on top of that. If the pointer points to an object, the object's ownership is unaffected, and the object is never deleted or cloned by cValue.
Public Types | |
enum | Type |
Public Member Functions | |
Constructors | |
cValue () | |
cValue (bool b) | |
cValue (int l) | |
cValue (int l, const char *unit) | |
cValue (intval_t l) | |
cValue (intval_t l, const char *unit) | |
cValue (double d) | |
cValue (double d, const char *unit) | |
cValue (const char *s) | |
cValue (const std::string &s) | |
cValue (const opp_string &s) | |
cValue (any_ptr ptr) | |
cValue (cObject *obj) | |
cValue (const void *)=delete | |
cValue (const cValue &)=default | |
void | operator= (const cValue &other) |
Setter functions. Note that overloaded assignment operators also exist. | |
void | set (bool b) |
void | set (intval_t l, const char *unit=nullptr) |
void | set (int l, const char *unit=nullptr) |
void | set (double d, const char *unit=nullptr) |
void | setPreservingUnit (intval_t l) |
void | setPreservingUnit (double d) |
void | setUnit (const char *unit) |
void | convertTo (const char *unit) |
void | convertToDouble () |
void | set (const char *s) |
void | set (const std::string &s) |
void | set (const opp_string &s) |
void | set (any_ptr ptr) |
void | set (cObject *obj) |
void | set (const void *)=delete |
Getter functions. Note that overloaded conversion operators also exist. | |
bool | boolValue () const |
intval_t | intValue () const |
intval_t | intValueRaw () const |
intval_t | intValueInUnit (const char *targetUnit) const |
double | doubleValue () const |
double | doubleValueRaw () const |
double | doubleValueInUnit (const char *targetUnit) const |
const char * | getUnit () const |
const char * | stringValue () const |
const std::string & | stdstringValue () const |
any_ptr | pointerValue () const |
bool | isNullptr () const |
bool | containsObject () const |
bool | containsXML () const |
cObject * | objectValue () const |
cXMLElement * | xmlValue () const |
Overloaded assignment and conversion operators. | |
cValue & | operator= (bool b) |
cValue & | operator= (char c) |
cValue & | operator= (unsigned char c) |
cValue & | operator= (short i) |
cValue & | operator= (unsigned short i) |
cValue & | operator= (int i) |
cValue & | operator= (unsigned int i) |
cValue & | operator= (long l) |
cValue & | operator= (unsigned long l) |
cValue & | operator= (long long l) |
cValue & | operator= (unsigned long long l) |
cValue & | operator= (double d) |
cValue & | operator= (long double d) |
cValue & | operator= (const char *s) |
cValue & | operator= (const std::string &s) |
cValue & | operator= (any_ptr ptr) |
cValue & | operator= (cObject *obj) |
operator bool () const | |
operator char () const | |
operator unsigned char () const | |
operator int () const | |
operator unsigned int () const | |
operator short () const | |
operator unsigned short () const | |
operator long () const | |
operator unsigned long () const | |
operator long long () const | |
operator unsigned long long () const | |
operator double () const | |
operator long double () const | |
operator const char * () const | |
operator std::string () const | |
operator any_ptr () const | |
operator cObject * () const | |
operator cXMLElement * () const | |
Type, unit conversion and misc. | |
static const char * | getTypeName (Type t) |
static double | convertUnit (double d, const char *unit, const char *targetUnit) |
static double | parseQuantity (const char *str, const char *expectedUnit=nullptr) |
static double | parseQuantity (const char *str, std::string &outActualUnit) |
Type | getType () const |
const char * | getTypeName () const |
bool | isNumeric () const |
bool | isSet () const |
std::string | str () const |
bool | operator== (const cValue &other) |
void operator= | ( | const cValue & | other | ) |
Assignment
|
inline |
Returns the value type.
|
inline |
Returns the value type as string.
References cValue::getTypeName().
Referenced by cValue::getTypeName().
|
static |
Returns the given type as a string.
|
inline |
Returns true if the stored value is of a numeric type.
|
inline |
Returns true if the value is not empty, i.e. type is not UNDEF.
std::string str | ( | ) | const |
Returns the value in text form.
Referenced by cValueHolder::str().
bool operator== | ( | const cValue & | other | ) |
Comparison. Note that two cValues are equal if they are of the same type (i.e. there is no implicit int <--> double conversion); if they contain object pointers, they are equal if they point to the same object.
|
static |
Convert the given number into the target unit (e.g. milliwatt to watt). Throws an exception if conversion is not possible (unknown/unrelated units).
|
static |
Invokes parseQuantity(), and converts the result into the given unit. If conversion is not possible (unrelated or unknown units), and error is thrown.
|
static |
Converts a quantity given as string to a double, and returns it, together with the unit it was given in. If there are several numbers and units (see syntax), everything is converted into the last unit.
Syntax: <number> | (<number> <unit>)+
If there is a syntax error, or if unit mismatch is found (i.e. distance is given instead of time), the method throws an exception.
|
inline |
Sets the value to the given bool value.
|
inline |
Sets the value to the given integer value and measurement unit (optional). The unit string pointer is expected to stay valid during the entire duration of the simulation (see related class comment).
|
inline |
Sets the value to the given integer value and measurement unit (optional). The unit string pointer is expected to stay valid during the entire duration of the simulation (see related class comment). This is a convenience method that delegates to the intval_t version.
References cValue::set().
Referenced by cValue::set().
|
inline |
Sets the value to the given double value and measurement unit (optional). The unit string pointer is expected to stay valid during the entire duration of the simulation (see related class comment).
|
inline |
Sets the value to the given integer value, preserving the current measurement unit. The object must already have the INT type.
|
inline |
Sets the value to the given double value, preserving the current measurement unit. The object must already have the DOUBLE type.
void setUnit | ( | const char * | unit | ) |
Sets the measurement unit to the given value, leaving the numeric part of the quantity unchanged. The object must already have the DOUBLE type. The unit string pointer is expected to stay valid during the entire duration of the simulation (see related class comment).
void convertTo | ( | const char * | unit | ) |
Permanently converts this value to the given unit. The value must already have the type DOUBLE. If the current unit cannot be converted to the given one, an error will be thrown. The unit string pointer is expected to stay valid during the entire simulation (see related class comment).
void convertToDouble | ( | ) |
If this value is of type INT, converts it into DOUBLE; has no effect if it is already a DOUBLE; and throws an error otherwise.
|
inline |
Sets the value to the given string value. The string itself will be copied. nullptr is also accepted and treated as an empty string.
|
inline |
Sets the value to the given string value.
|
inline |
Sets the value to the given string value.
References opp_string::c_str().
|
inline |
Sets the value to the given pointer. The pointer is treated by as an opaque value: If it points to an object, the object's ownership is unaffected, and cValue will never delete or clone the object.
|
inline |
Sets the value to the given object, via set(any_ptr). Note that cValue solely stores the object's pointer, and does nothing extra. The object's ownership is unaffected, and cValue will never delete or clone the object.
References cValue::set().
Referenced by cValue::set().
|
delete |
Deleted function to prevent non-cObject pointers from silently being converted to bool.
|
inline |
Returns the value as a boolean. The type must be BOOL.
intval_t intValue | ( | ) | const |
Returns a dimensionless value as an integer. The type must be INT. This method cannot be used for values that have a unit (it will throw an exception); for those, use either intValueInUnit() or intValueRaw()+getUnit().
intval_t intValueRaw | ( | ) | const |
Returns value as an integer. The type must be INT. This method should be used together with getUnit() to be able to make sense of the returned value.
intval_t intValueInUnit | ( | const char * | targetUnit | ) | const |
Returns the numeric value as an integer converted to the given unit. If the current unit cannot be converted to the given one, an error will be thrown. The type must be INT.
double doubleValue | ( | ) | const |
Returns a dimensionless value as a double. The type must be DOUBLE or INT. This method cannot be used for values that have a unit (it will throw an exception); for those, use either doubleValueInUnit() or doubleValueRaw()+getUnit().
double doubleValueRaw | ( | ) | const |
Returns the value as a double. The type must be DOUBLE or INT. This method should be used together with getUnit() to be able to make sense of the returned value.
double doubleValueInUnit | ( | const char * | targetUnit | ) | const |
Returns the numeric value as a double converted to the given unit. If the current unit cannot be converted to the given one, an error will be thrown. The type must be DOUBLE or INT.
|
inline |
Returns the unit ("s", "mW", "Hz", "bps", etc), or nullptr if there was no unit was specified. Unit is only valid for the DOUBLE and INT types.
|
inline |
Returns value as const char *. The type must be STRING.
|
inline |
Returns value as std::string. The type must be STRING.
|
inline |
Returns true if the value is nullptr.
bool containsObject | ( | ) | const |
Returns true if the value contains a (non-null) pointer to a cObject.
bool containsXML | ( | ) | const |
Returns true if the value contains a (non-null) pointer to a cXMLElement.
cObject* objectValue | ( | ) | const |
cXMLElement* xmlValue | ( | ) | const |
Returns value as pointer to cXMLElement. The type must be POINTER, and the pointer must point to an instance of cXMLElement or be nullptr.
|
inline |
Converts the argument to long, and calls set(intval_t).
|
inline |
Converts the argument to long, and calls set(intval_t).
|
inline |
Converts the argument to long, and calls set(intval_t).
|
inline |
Converts the argument to long, and calls set(intval_t).
|
inline |
Converts the argument to long, and calls set(intval_t).
|
inline |
Converts the argument to long, and calls set(intval_t).
|
inline |
Equivalent to set(intval_t).
|
inline |
Converts the argument to long, and calls set(intval_t).
|
inline |
Equivalent to set(intval_t).
|
inline |
Converts the argument to long, and calls set(intval_t).
|
inline |
Equivalent to set(double).
|
inline |
Converts the argument to double, and calls set(double).
|
inline |
Equivalent to set(const char *).
|
inline |
Equivalent to set(const std::string&).
Equivalent to set(any_ptr).
Equivalent to set(cObject *).
|
inline |
Equivalent to boolValue().
|
inline |
Calls intValue() and converts the result to char. An exception is thrown if the conversion would result in a data loss,
|
inline |
Calls intValue() and converts the result to unsigned char. An exception is thrown if the conversion would result in a data loss,
|
inline |
Calls intValue() and converts the result to int. An exception is thrown if the conversion would result in a data loss,
|
inline |
Calls intValue() and converts the result to unsigned int. An exception is thrown if the conversion would result in a data loss,
|
inline |
Calls intValue() and converts the result to short. An exception is thrown if the conversion would result in a data loss,
|
inline |
Calls intValue() and converts the result to unsigned short. An exception is thrown if the conversion would result in a data loss,
|
inline |
Calls intValue() and converts the result to long. An exception is thrown if the conversion would result in a data loss,
|
inline |
Calls intValue() and converts the result to unsigned long. An exception is thrown if the conversion would result in a data loss,
|
inline |
Calls intValue() and converts the result to long long. An exception is thrown if the conversion would result in a data loss,
|
inline |
Calls intValue() and converts the result to unsigned long long. An exception is thrown if the conversion would result in a data loss,
|
inline |
Equivalent to doubleValue().
|
inline |
Calls doubleValue() and converts the result to long double. Note that this is a potentially lossy operation.
|
inline |
Equivalent to stringValue().
|
inline |
Equivalent to stdstringValue().
|
inline |
Equivalent to pointerValue().
|
inline |
Equivalent to objectValue().
|
inline |
Equivalent to xmlValue(). NOTE: The lifetime of the returned object tree is limited; see xmlValue() for details.