GL Studio C++ Runtime API
DistiAttributeHomogeneousItemArray< T > Class Template Reference

#include <gls_metadata_attributes.h>

Inheritance diagram for DistiAttributeHomogeneousItemArray< T >:
DistiAttributeBase WeakReferenceableMixin WeakReferenceable

Public Types

typedef T *(* CreateItemCb) ()
 Typedef for a function pointer used to create new items for the list.
 
- Public Types inherited from DistiAttributeBase
typedef unsigned int CallbackID
 Type for unique identifiers.
 

Public Member Functions

 DistiAttributeHomogeneousItemArray (const AttributeName &name, DynamicArray< T * > *array, CreateItemCb createCb)
 
virtual bool OkToWrite () const override
 
virtual std::ostream & WriteValue (std::ostream &outstr) override
 
virtual std::istream & ReadValue (std::istream &instr) override
 
- Public Member Functions inherited from DistiAttributeBase
 DistiAttributeBase (CallbackMethodCallerBase *callback, const AttributeName &name, bool localStorage)
 
virtual DistiAttributeBaseoperator= (const DistiAttributeBase &oldClass)
 
const AttributeNameName () const
 
AttributeNameName ()
 
bool LocalStorage () const
 
virtual bool Copyable () const
 
virtual bool OkToWrite () const
 
virtual bool ValueChanged ()
 
virtual void ResetValueChanged ()
 
virtual std::string ValueString ()
 
virtual void ValueString (const std::string &s)
 
virtual long ValueInt ()
 
virtual void ValueInt (long val)
 
virtual double ValueFloat ()
 
virtual void ValueFloat (double val)
 
virtual void CallCallback ()
 Calls callback CallType3 if it has been set.
 
virtual std::ostream & WriteValue (std::ostream &outstr)=0
 
virtual std::istream & ReadValue (std::istream &instr)=0
 
virtual bool operator== (const DistiAttributeBase &r)
 
template<class valType >
DistiAttributeBaseoperator<< (const valType &val)
 
template<class valType >
DistiAttributeBaseoperator>> (valType &val)
 
virtual CallbackID RegisterObserver (AttributeObserver *observer)
 
virtual void UnregisterObserver (CallbackID id)
 
virtual void NotifyObservers ()
 
- Public Member Functions inherited from WeakReferenceableMixin
void AddWeakReference (WeakReference *weakRef) override
 
void NotifyWeakReferenceDestroyed (WeakReference *ref) override
 
virtual void AddWeakReference (WeakReference *weakRef)=0
 
virtual void NotifyWeakReferenceDestroyed (WeakReference *weakReference)=0
 

Protected Attributes

DynamicArray< T * > * _array
 Underlying storage for this attribute.
 
CreateItemCb _createCb
 Function pointer called to create new items in the list.
 
- Protected Attributes inherited from DistiAttributeBase
AttributeName _name
 
CallbackMethodCallerBase_callback
 
ScopedPtr< DistiAttributeObserverList > _observerList
 
bool _localStorage
 
- Protected Attributes inherited from WeakReferenceableMixin
DynamicArray< WeakReference * > * _weakRefs
 

Additional Inherited Members

- Protected Member Functions inherited from WeakReferenceableMixin
 WeakReferenceableMixin ()
 
virtual ~WeakReferenceableMixin ()
 

Detailed Description

template<class T>
class disti::DistiAttributeHomogeneousItemArray< T >

An attribute for a DynamicArray of homogeneous items T must have ReadValue and WriteValue methods Replacement for DistiAttributeHomogeneousAttributeArray

Constructor & Destructor Documentation

◆ DistiAttributeHomogeneousItemArray()

DistiAttributeHomogeneousItemArray ( const AttributeName name,
DynamicArray< T * > *  array,
CreateItemCb  createCb 
)
inline

Constructor requires a dynamic array of T*. Uses existing storage.

Parameters
nameThe name for this new attribute.
arrayThe underlying storage for this property.
createCbThe function pointer called to generate new objects of T for the list.

Member Function Documentation

◆ OkToWrite()

virtual bool OkToWrite ( ) const
inlineoverridevirtual

This SHOULD be overriden by any derived objects that may not be ready to write at any point. The reason for this is the data is often written "NAME: VALUE". If Value is not available, we don't want to write "NAME: " first, so before writing "NAME: ", OkToWrite() can be called to see if it will have a valid value.

Returns
True if this object is ready to have its WriteValue() called.

Reimplemented from DistiAttributeBase.

◆ ReadValue()

virtual std::istream & ReadValue ( std::istream &  instr)
inlineoverridevirtual

Pure virtual because this is specific to the data type to be contained. This should be overridden to read the data from the stream. The value read could be encoded for being read from a file as a single string, or have its own special encoding specific to its underlying type. In the case of attribute strings, this will be the GLS file encoded value. The user is responsible for encoding the value themselves, or using WriteValue which should perform encoding to maintain symmetry.

Parameters
instrThe stream to read from.
Returns
The input stream in its current state.

Implements DistiAttributeBase.

◆ WriteValue()

virtual std::ostream & WriteValue ( std::ostream &  outstr)
inlineoverridevirtual

Pure virtual because this is specific to the data type to be contained. This should be overridden to write the data to the stream. The value written could be encoded for writing to a file as a single string, or have its own special encoding specific to its underlying type. In the case of attribute strings, this will be the GLS file encoded value. The user is responsible for decoding the value themselves, or using ReadValue which should perform decoding to maintain symmetry.

Parameters
outstrThe stream to write to.
Returns
The output stream in its current state.

Implements DistiAttributeBase.


The documentation for this class was generated from the following file: