Struct types define the fields (names and value types, as well as optional default values) of Structs with a name matching that of the Struct type. More...
Struct types define the fields (names and value types, as well as optional default values) of Structs with a name matching that of the Struct type.
A Struct type contains a String-type name, a list of field names (list of Strings), a list of field types (list of Type objects), and an optional list of Default values (list of Base objects). The Struct types should be added to the Type manager to be used for Struct validation on creation. Alternatively, if a Struct is created with no matching Struct type in the manager, a default Struct type is created based on the field names and types of the Created struct. Said Struct type is then added to the manager.
The field types are a list of Type objects. These determine the types of values that should be used to fill in the corresponding field value. The Type objects at the moment available in openDAQ are Simple types and Struct types. When adding any field other than a Struct type, the Simple type corresponding to the Core type of the value should be created. When adding Struct fields, a Struct type should be added to the field types.
A Struct can only have fields of Core type: ctBool
, ctInt
, ctFloat
, ctString
, ctList
, ctDict
, ctRatio
, ctComplexNumber
, ctStruct
, ctEnumeration
, or ctUndefined
. Additionally, all Container types (ctList
, ctDict
) should only have values of the aforementioned types.
Public Member Functions | |
ListPtr< IString > | getFieldNames () const |
Gets the list of field names. More... | |
ListPtr< IBaseObject > | getFieldDefaultValues () const |
Gets the list of field default values. More... | |
ListPtr< IType > | getFieldTypes () const |
Gets the list of field types. More... | |
![]() | |
StringPtr | getName () const |
Gets the name of the Type. More... | |
![]() | |
ObjectPtr () | |
Creates a smart pointer with no wrapped interface. | |
ObjectPtr (std::nullptr_t) | |
Creates a smart pointer with no wrapped interface. | |
ObjectPtr (const ObjectPtr< T > &objPtr) | |
Creates a smart pointer from another smart pointer. More... | |
ObjectPtr (ObjectPtr< T > &&objPtr) noexcept | |
Creates a smart pointer from another smart pointer with move semantics. More... | |
template<class U > | |
ObjectPtr (const ObjectPtr< U > &objPtr) | |
Creates a smart pointer from another smart pointer of a different interface type. More... | |
template<class U > | |
ObjectPtr (ObjectPtr< U > &&objPtr) | |
Creates a smart pointer from another smart pointer of a different interface type with move semantics. More... | |
ObjectPtr (T *&obj) | |
Creates a smart pointer from an interface pointer. More... | |
ObjectPtr (T *&&obj) | |
Creates a smart pointer from an interface pointer with move semantics. More... | |
ObjectPtr (IWeakRef *obj) | |
Creates a smart pointer from a weak reference interface pointer. More... | |
ObjectPtr (const wchar_t *value) | |
Creates a string object smart pointer from UTF16 null terminated sequence. More... | |
ObjectPtr (ConstCharPtr value) | |
Creates a string object smart pointer from UTF8 null terminated sequence. More... | |
template<typename U , std::enable_if_t< is_ct_conv< U >::value &&!std::is_enum_v< U >, int > = 0> | |
ObjectPtr (const U &value) | |
Creates a smart pointer wrapper from value type. More... | |
virtual | ~ObjectPtr () |
Destructor. More... | |
bool | equals (ObjectPtr< IBaseObject > other) const |
Compares object to another object for equality. More... | |
T * | detach () |
Disassociates this smart pointer object from the interface that it represents. More... | |
void | dispose () const |
Disposes all references held by the object. More... | |
void | release () |
Resets the wrapped interface to nullptr. More... | |
T * | addRefAndReturn () const |
Increments the reference count and returns the interface. More... | |
operator T* () const | |
Casts the pointer to the wrapped interface. More... | |
bool | assigned () const |
Checks if the smart pointer is not empty. | |
T * | getObject () const |
Gets the pointer to the wrapped interface. More... | |
T ** | addressOf () |
Gets the address of the pointer to the wrapped interface. More... | |
T ** | operator& () |
Gets the address of the pointer to the wrapped interface. More... | |
template<class U > | |
U * | as (bool borrow=false) const |
Casts the wrapped interface to another interface. More... | |
template<class U > | |
U * | asOrNull (bool borrow=false) const |
Casts the wrapped interface to another interface. More... | |
template<class U , class Ptr = typename InterfaceToSmartPtr<U>::SmartPtr> | |
Ptr | asPtr (bool borrow=false) const |
Casts the wrapped interface to another interface and wraps in a smart pointer. More... | |
template<class U , class Ptr = typename InterfaceToSmartPtr<U>::SmartPtr> | |
Ptr | asPtrOrNull (bool borrow=false) const |
Casts the wrapped interface to another interface and wraps in a smart pointer. More... | |
template<class U > | |
bool | supportsInterface () const |
Checks if the wrapped interface supports another interface. More... | |
bool | supportsInterface (const IntfID &id) const |
Checks if the wrapped interface supports another interface using the interface ID. More... | |
CoreType | getCoreType () const |
Gets the object's CoreType . More... | |
ObjectPtr< IBaseObject > | convertTo (CoreType ct) const |
Converts the object to the specified CoreType . More... | |
SizeT | getHashCode () const |
Returns hash code of the object. More... | |
ObjectPtr< IString > | toString () const |
Converts the object to the string object. More... | |
void | freeze () const |
Freezes the object. More... | |
Bool | isFrozen () const |
Checks if the object is frozen. More... | |
void | dispatch (const ObjectPtr< IBaseObject > ¶ms) const |
Calls the stored callback. More... | |
void | dispatch () const |
Calls the stored callback without any parameters. More... | |
void | execute () const |
Calls the stored callback without any parameters. More... | |
template<typename... Params> | |
void | execute (Params... params) const |
Calls the stored callback. More... | |
template<typename... Params> | |
ObjectPtr< IBaseObject > | call (Params... params) const |
Calls the stored callback and returns the result. More... | |
bool | isBorrowed () const |
Checks if the reference is borrowed. More... | |
Additional Inherited Members | |
![]() | |
template<class U = T> | |
static InterfaceToSmartPtr< U >::SmartPtr | Borrow (T *&obj) |
Borrows an interface. More... | |
template<typename U = T> | |
static InterfaceToSmartPtr< U >::SmartPtr | Adopt (T *obj) |
Adopts an interface. More... | |
template<class U , class V = T, std::enable_if_t< std::is_base_of_v< IBaseObject, U >, int > = 0> | |
static InterfaceToSmartPtr< V >::SmartPtr | Borrow (U *&obj) |
Borrows an interface from the interface of another type. More... | |
static Bool | Equals (const ObjectPtr< IBaseObject > &a, const ObjectPtr< IBaseObject > &b) |
Value based comparison of two objects. If both objects are nullptr, they are considered to be equal. More... | |
|
inline |
Gets the list of field default values.
Gets the list of field names.