openDAQ
Open data acquisition platform
StructTypePtr Class Reference

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...

+ Inheritance diagram for StructTypePtr:
+ Collaboration diagram for StructTypePtr:

Detailed Description

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< IStringgetFieldNames () const
 Gets the list of field names. More...
 
ListPtr< IBaseObjectgetFieldDefaultValues () const
 Gets the list of field default values. More...
 
ListPtr< ITypegetFieldTypes () const
 Gets the list of field types. More...
 
- Public Member Functions inherited from GenericTypePtr< IStructType >
StringPtr getName () const
 Gets the name of the Type. More...
 
- Public Member Functions inherited from ObjectPtr< T >
 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< IBaseObjectconvertTo (CoreType ct) const
 Converts the object to the specified CoreType. More...
 
SizeT getHashCode () const
 Returns hash code of the object. More...
 
ObjectPtr< IStringtoString () 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 > &params) 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< IBaseObjectcall (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

- Static Public Member Functions inherited from ObjectPtr< T >
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...
 

Member Function Documentation

◆ getFieldDefaultValues()

ListPtr<IBaseObject> getFieldDefaultValues ( ) const
inline

Gets the list of field default values.

Returns
The list of field default values (Base objects)

◆ getFieldNames()

ListPtr<IString> getFieldNames ( ) const
inline

Gets the list of field names.

Returns
The list of field names (String objects)

◆ getFieldTypes()

ListPtr<IType> getFieldTypes ( ) const
inline

Gets the list of field types.

Returns
The list of field types (Type objects)