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

#include <disti_metadata.h>

Inheritance diagram for DistiAttribute< T >:
DistiAttributeBase WeakReferenceableMixin WeakReferenceable DistiAttributeNeverWrite< T > DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >

Public Member Functions

 DistiAttribute (CallbackMethodCallerBase *callback, const AttributeName &name, T *attribPtr)
 
 DistiAttribute (CallbackMethodCallerBase *callback, const AttributeName &name, const T &initialValue)
 
bool Copyable () const override
 
long ValueInt () override
 
void ValueInt (long val) override
 
double ValueFloat () override
 
void ValueFloat (double val) override
 
DistiAttributeBaseoperator= (const DistiAttributeBase &oldClass) override
 
std::ostream & WriteValue (std::ostream &outstr) override
 
std::istream & ReadValue (std::istream &instr) override
 
virtual T Value ()
 
virtual void Value (const T &val)
 
bool operator== (const DistiAttributeBase &rArg) override
 
 ~DistiAttribute () override
 
template<>
long ValueInt ()
 
template<>
void ValueInt (long val)
 
template<>
std::ostream & WriteValue (std::ostream &outstr)
 
template<>
std::istream & ReadValue (std::istream &instr)
 
template<>
long ValueInt ()
 
template<>
void ValueInt (long val)
 
template<>
long ValueInt ()
 
template<>
void ValueInt (long val)
 
template<>
long ValueInt ()
 
template<>
void ValueInt (long val)
 
template<>
long ValueInt ()
 
template<>
void ValueInt (long val)
 
template<>
std::ostream & WriteValue (std::ostream &outstr)
 
template<>
std::istream & ReadValue (std::istream &instr)
 
template<>
std::istream & ReadValue (std::istream &instr)
 
template<>
std::istream & ReadValue (std::istream &instr)
 
template<>
long ValueInt ()
 
template<>
void ValueInt (long val)
 
- Public Member Functions inherited from DistiAttributeBase
 DistiAttributeBase (CallbackMethodCallerBase *callback, const AttributeName &name, bool localStorage)
 
const AttributeNameName () const
 
AttributeNameName ()
 
bool LocalStorage () const
 
virtual bool OkToWrite () const
 
virtual bool ValueChanged ()
 
virtual void ResetValueChanged ()
 
virtual std::string ValueString ()
 
virtual void ValueString (const std::string &s)
 
virtual void CallCallback ()
 
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
 

Protected Attributes

T * _attribPtr
 
int _precision
 
- 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

- Public Types inherited from DistiAttributeBase
typedef unsigned int CallbackID
 Type for unique identifiers.
 
- Protected Member Functions inherited from WeakReferenceableMixin
 WeakReferenceableMixin (void)
 
virtual ~WeakReferenceableMixin ()
 

Detailed Description

template<class T>
class disti::DistiAttribute< T >

A templated class for creating attributes.

Constructor & Destructor Documentation

DistiAttribute ( CallbackMethodCallerBase callback,
const AttributeName name,
T *  attribPtr 
)
inline

Constructor Keeps a pointer to the specified type

Parameters
callbackThe method to call when the value changes. A duplicate of the CallbackMethodCallerBase is created and stored internally.
nameThe name of the attribute
attribPtrThe address of the storage.
DistiAttribute ( CallbackMethodCallerBase callback,
const AttributeName name,
const T &  initialValue 
)
inline

Constructor Actually creates storage of the specified type

Parameters
callbackThe method to call when the value changes. A duplicate of the CallbackMethodCallerBase is created and stored internally.
nameThe name of the attribute
initialValueThe initial value of the intenally stored variable.
~DistiAttribute ( )
inlineoverride

Destructor deletes local storage if we created it

Member Function Documentation

bool Copyable ( ) const
inlineoverridevirtual

Its not a word, but it means able to be copied This should return true if it makes sense for the data to be copied. By default, will return true for this template. It is overridden here to allow for template specialization

Reimplemented from DistiAttributeBase.

DistiAttributeBase& operator= ( const DistiAttributeBase oldClass)
inlineoverridevirtual

This will perform the copy using Value() and Value(val)

Reimplemented from DistiAttributeBase.

bool operator== ( const DistiAttributeBase rArg)
inlineoverridevirtual

Performs type specific comparison. This results in faster comparisons than the base class

Reimplemented from DistiAttributeBase.

std::istream & ReadValue ( std::istream &  instr)
inlinevirtual

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.

Implements DistiAttributeBase.

std::istream & ReadValue ( std::istream &  instr)
inlinevirtual

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.

Implements DistiAttributeBase.

std::istream & ReadValue ( std::istream &  instr)
inlinevirtual

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.

Implements DistiAttributeBase.

std::istream & ReadValue ( std::istream &  instr)
inlinevirtual

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.

Implements DistiAttributeBase.

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

Reads the data from the stream The ReadValue call shall consume only what it needs. It is the responsibility of the calling function to read to the end of line, or to clean up from a bad read. The calling function will also ensure that the data starts as the next byte in the stream.

Implements DistiAttributeBase.

Reimplemented in DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >.

virtual T Value ( )
inlinevirtual

Allows for type specific access to the data

Reimplemented in DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >.

virtual void Value ( const T &  val)
inlinevirtual

Allows for type specific access to the data

Reimplemented in DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >.

double ValueFloat ( )
inlineoverridevirtual

Gets the value as a float

Reimplemented from DistiAttributeBase.

Reimplemented in DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >.

void ValueFloat ( double  val)
inlineoverridevirtual

Sets the value as a float

Reimplemented from DistiAttributeBase.

Reimplemented in DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >.

long ValueInt ( )
inlinevirtual

Allows for faster access to integer types than the more generic stream operators. However, it is only faster if it is overridden.

Reimplemented from DistiAttributeBase.

void ValueInt ( long  val)
inlinevirtual

Allows for faster access to integer types than the more generic stream operator. However, it is only faster if it is overridden.

Reimplemented from DistiAttributeBase.

long ValueInt ( )
inlinevirtual

Allows for faster access to integer types than the more generic stream operators. However, it is only faster if it is overridden.

Reimplemented from DistiAttributeBase.

void ValueInt ( long  val)
inlinevirtual

Allows for faster access to integer types than the more generic stream operator. However, it is only faster if it is overridden.

Reimplemented from DistiAttributeBase.

long ValueInt ( )
inlinevirtual

Allows for faster access to integer types than the more generic stream operators. However, it is only faster if it is overridden.

Reimplemented from DistiAttributeBase.

void ValueInt ( long  val)
inlinevirtual

Allows for faster access to integer types than the more generic stream operator. However, it is only faster if it is overridden.

Reimplemented from DistiAttributeBase.

long ValueInt ( )
inlinevirtual

Allows for faster access to integer types than the more generic stream operators. However, it is only faster if it is overridden.

Reimplemented from DistiAttributeBase.

void ValueInt ( long  val)
inlinevirtual

Allows for faster access to integer types than the more generic stream operator. However, it is only faster if it is overridden.

Reimplemented from DistiAttributeBase.

long ValueInt ( )
inlinevirtual

Allows for faster access to integer types than the more generic stream operators. However, it is only faster if it is overridden.

Reimplemented from DistiAttributeBase.

void ValueInt ( long  val)
inlinevirtual

Allows for faster access to integer types than the more generic stream operator. However, it is only faster if it is overridden.

Reimplemented from DistiAttributeBase.

long ValueInt ( )
inlinevirtual

Allows for faster access to integer types than the more generic stream operators. However, it is only faster if it is overridden.

Reimplemented from DistiAttributeBase.

void ValueInt ( long  val)
inlinevirtual

Allows for faster access to integer types than the more generic stream operator. However, it is only faster if it is overridden.

Reimplemented from DistiAttributeBase.

long ValueInt ( )
inlineoverridevirtual

Gets the value as an integer.

Reimplemented from DistiAttributeBase.

Reimplemented in DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >.

void ValueInt ( long  val)
inlineoverridevirtual

Sets the value as an int

Reimplemented from DistiAttributeBase.

Reimplemented in DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >.

std::ostream & WriteValue ( std::ostream &  outstr)
inlinevirtual

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.

Implements DistiAttributeBase.

std::ostream & WriteValue ( std::ostream &  outstr)
inlinevirtual

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.

Implements DistiAttributeBase.

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

Writes the data to the stream

Implements DistiAttributeBase.

Reimplemented in DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >.

Member Data Documentation

T* _attribPtr
protected

Points to the actual storage

int _precision
protected

Allows for setting of precision for floating point numbers


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