GL Studio C++ Runtime API
|
#include <disti_metadata.h>
Public Types | |
typedef unsigned int | CallbackID |
Type for unique identifiers. | |
Public Member Functions | |
DistiAttributeBase (CallbackMethodCallerBase *callback, const AttributeName &name, bool localStorage) | |
virtual DistiAttributeBase & | operator= (const DistiAttributeBase &oldClass) |
const AttributeName & | Name () const |
AttributeName & | Name () |
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 > | |
DistiAttributeBase & | operator<< (const valType &val) |
template<class valType > | |
DistiAttributeBase & | operator>> (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 | |
AttributeName | _name |
CallbackMethodCallerBase * | _callback |
ScopedPtr< DistiAttributeObserverList > | _observerList |
bool | _localStorage |
Protected Attributes inherited from WeakReferenceableMixin | |
DynamicArray< WeakReference * > * | _weakRefs |
Friends | |
std::ostream & | operator<< (std::ostream &outstr, const DistiAttributeBase &attribute) |
std::istream & | operator>> (std::istream &instr, DistiAttributeBase &attribute) |
Additional Inherited Members | |
Protected Member Functions inherited from WeakReferenceableMixin | |
WeakReferenceableMixin () | |
virtual | ~WeakReferenceableMixin () |
This is the base class for all Disti Attributes.
DistiAttributeBase | ( | CallbackMethodCallerBase * | callback, |
const AttributeName & | name, | ||
bool | localStorage | ||
) |
Constructor
callback | The method to call when the value changes. A duplicate of the CallbackMethodCallerBase is created and stored internally. |
name | The name of the attribute |
localStorage | True if this DistiAttribute contains actual storage, rather than just a pointer to somebody elses storage |
|
virtual |
It is not a word, but it means it is able to be copied.
Reimplemented in DistiAttribute< T >, DistiAttribute< std::string >, DistiAttribute< Vertex >, and DistiAttribute< unsigned char >.
bool LocalStorage | ( | ) | const |
AttributeName & Name | ( | ) |
const AttributeName & Name | ( | ) | const |
|
virtual |
Triggers all observers to have their callbacks called. Typically called by the class that owns the DistiAttributeBase
Reimplemented in DistiAttributeAlias.
|
virtual |
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.
Reimplemented in DistiAttributeConnectionGlsAngularScaleDataArray, DistiAttributeConnectionGlsLinearScaleDataArray, DistiAttributeFloatArray, DistiAttributeDoubleArray, DistiAttributeColorMaterialModeEnum< containerClass >, DistiAttributeString, DistiAttributeEncodedStdString, DistiAttributeStdString, DistiAttributeDictionaryAttribute, DistiAttributeDictionaryAttributeSibling, DistiAttributeStdMap< Map_t >, DistiAttributeVertexArray< T >, DistiAttributeVertexArray< Vector >, DistiAttributeVertexArray< Vertex >, DistiAttributeNeverWrite< T >, DistiAttributeStdStringNeverWrite, DistiAttributeAlias, DistiAttributeDynamicArray< T, showIndex >, DistiAttributeStdVector< T, showIndex >, DistiAttributeHomogeneousItemArray< T >, DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >, GlsTextCharAttr, DistiAttributeMeshFaceArray, and TexturePalette::DistiAttributeTexturePalette_V21.
|
inline |
Allow for generic access to some data types. This will NOT work for types which: s << val does not work. In general if the WriteValue is overridden, then it probably will not work.
val | The new value to set. |
|
virtual |
This will perform the copy using ReadValue() and WriteValue() It can be overridden by any dervied classes to do a smarter more efficent copy.
oldClass | The object to copy from. |
Reimplemented in DistiAttributeViewDataArray, DistiAttribute< T >, DistiAttribute< std::string >, DistiAttribute< Vertex >, DistiAttribute< unsigned char >, DistiAttributeEnum< containerClass, setType, getType >, DistiAttributeEnum< containerClass, const int, int >, DistiAttributeEnum< GlsEyePoint, GlsEyePoint::FovConstraintType, GlsEyePoint::FovConstraintType >, DistiAttributeEnum< GlsLightSource, int, int >, DistiAttributeEnum< containerClass, int, int >, DistiAttributeEnum< GlsSphere, glsSphereMapping_e, glsSphereMapping_e >, DistiAttributeFilePathClass, DistiAttributeUCharOrBool, DistiAttributeEnumDirect< enumType >, DistiAttributeEnumDirect< glsImageCodec >, and TexturePalette::DistiAttributeTexturePalette.
|
virtual |
Compares name and value.
r | The attribute to compare. |
Reimplemented in DistiAttributeAlias, DistiAttribute< T >, DistiAttribute< std::string >, DistiAttribute< Vertex >, DistiAttribute< unsigned char >, DistiAttributeVertexArray< T >, DistiAttributeVertexArray< Vector >, and DistiAttributeVertexArray< Vertex >.
|
inline |
Allows for generic access to some data types. This will NOT work for types which: s >> val does not work. In general if the ReadValue is overridden, then it probably will not work.
val | The value to be returned. |
|
pure virtual |
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.
instr | The stream to read from. |
Implemented in DistiAttributeMeshFaceArray, DistiAttributeConnectionGlsAngularScaleDataArray, DistiAttributeConnectionGlsLinearScaleDataArray, DistiAttributeViewDataArray, DistiAttribute< T >, DistiAttribute< std::string >, DistiAttribute< Vertex >, DistiAttribute< unsigned char >, DistiAttributeEnum< containerClass, setType, getType >, DistiAttributeEnum< containerClass, const int, int >, DistiAttributeEnum< GlsEyePoint, GlsEyePoint::FovConstraintType, GlsEyePoint::FovConstraintType >, DistiAttributeEnum< GlsLightSource, int, int >, DistiAttributeEnum< containerClass, int, int >, DistiAttributeEnum< GlsSphere, glsSphereMapping_e, glsSphereMapping_e >, DistiAttributeFilePathClass, DistiAttributeCWDRelativePath, DistiAttributeUCharOrBool, DistiAttributeFloatArray, DistiAttributeDoubleArray, DistiAttributeString, DistiAttributeEncodedString, DistiAttributeEncodedStdString, DistiAttributeFixedString, DistiAttributeStdString, DistiAttributeLocation, DistiAttributeDictionaryAttribute, DistiAttributeDictionaryAttributeSibling, DistiAttributeStdMap< Map_t >, DistiAttributeVertexArray< T >, DistiAttributeVertexArray< Vector >, DistiAttributeVertexArray< Vertex >, DistiAttributeTexturePointArray, DistiAttributeAlias, DistiAttributeDynamicArray< T, showIndex >, DistiAttributeStdVector< T, showIndex >, DistiAttributeHomogeneousItemArray< T >, DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >, DistiEmptyAttribute, DistiAttributeEnumDirect< enumType >, DistiAttributeEnumDirect< glsImageCodec >, GlsTextCharAttr, TexturePalette::DistiAttributeTexturePalette_V21, and TexturePalette::DistiAttributeTexturePalette.
|
virtual |
Register a callback that is called when the value of the attribute changes. If multiple oservers are registered, they will be notified in the order they registered. DistiAttributeBase takes ownership of the observer and will delete it.
observer | the observer to notify. It is automatically unregistered and destroyed when it becomes invalid. |
Reimplemented in DistiAttributeAlias.
|
virtual |
Saves the current value for later comparison by ValueChanged().
Reimplemented in DistiAttributeAlias.
|
virtual |
Unregister an observer
id | the id returned when the observer was registered |
Reimplemented in DistiAttributeAlias.
|
virtual |
Reimplemented in DistiAttributeAlias.
|
virtual |
Allows for faster access to floating-point types than the more generic stream operators.
Reimplemented in DistiAttribute< T >, DistiAttribute< std::string >, DistiAttribute< Vertex >, DistiAttribute< unsigned char >, DistiAttributeAlias, and DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >.
|
virtual |
Allows for faster access to floating-point types than the more generic stream operator.
val | The new double value to set. |
Reimplemented in DistiAttribute< T >, DistiAttribute< std::string >, DistiAttribute< Vertex >, DistiAttribute< unsigned char >, DistiAttributeAlias, and DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >.
|
virtual |
Allows for faster access to integer types than the more generic stream operators.
Reimplemented in DistiAttribute< T >, DistiAttribute< std::string >, DistiAttribute< Vertex >, DistiAttribute< unsigned char >, DistiAttributeEnum< containerClass, setType, getType >, DistiAttributeEnum< containerClass, const int, int >, DistiAttributeEnum< GlsEyePoint, GlsEyePoint::FovConstraintType, GlsEyePoint::FovConstraintType >, DistiAttributeEnum< GlsLightSource, int, int >, DistiAttributeEnum< containerClass, int, int >, DistiAttributeEnum< GlsSphere, glsSphereMapping_e, glsSphereMapping_e >, DistiAttributeUCharOrBool, DistiAttributeAlias, DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >, DistiAttributeEnumDirect< enumType >, and DistiAttributeEnumDirect< glsImageCodec >.
|
virtual |
Allows for faster access to integer types than the more generic stream operator.
val | The new integer value to set. |
Reimplemented in DistiAttribute< T >, DistiAttribute< std::string >, DistiAttribute< Vertex >, DistiAttribute< unsigned char >, DistiAttributeEnum< containerClass, setType, getType >, DistiAttributeEnum< containerClass, const int, int >, DistiAttributeEnum< GlsEyePoint, GlsEyePoint::FovConstraintType, GlsEyePoint::FovConstraintType >, DistiAttributeEnum< GlsLightSource, int, int >, DistiAttributeEnum< containerClass, int, int >, DistiAttributeEnum< GlsSphere, glsSphereMapping_e, glsSphereMapping_e >, DistiAttributeUCharOrBool, DistiAttributeAlias, DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >, DistiAttributeEnumDirect< enumType >, and DistiAttributeEnumDirect< glsImageCodec >.
|
virtual |
Here in the base class it uses WriteValue(). If this particular attribute's underlying type is a string, this returns the unencoded value, suitable for users. If a file encoded value is required, call WriteValue instead.
Reimplemented in DistiAttributeEncodedString, DistiAttributeEncodedStdString, DistiAttributeAlias, and DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >.
|
virtual |
Sets the value from a std::string argument. Here in the base class it uses ReadValue(). If this particular attribute's underlying type is a string, this should not be set to an encoded value. If needing to set from an encoded value, call ReadValue instead.
s | The string value to set. |
Reimplemented in DistiAttributeEncodedString, DistiAttributeEncodedStdString, DistiAttributeAlias, and DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >.
|
pure virtual |
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.
outstr | The stream to write to. |
Implemented in DistiAttributeMeshFaceArray, DistiAttributeConnectionGlsAngularScaleDataArray, DistiAttributeConnectionGlsLinearScaleDataArray, DistiAttributeViewDataArray, DistiAttribute< T >, DistiAttribute< std::string >, DistiAttribute< Vertex >, DistiAttribute< unsigned char >, DistiAttributeEnum< containerClass, setType, getType >, DistiAttributeEnum< containerClass, const int, int >, DistiAttributeEnum< GlsEyePoint, GlsEyePoint::FovConstraintType, GlsEyePoint::FovConstraintType >, DistiAttributeEnum< GlsLightSource, int, int >, DistiAttributeEnum< containerClass, int, int >, DistiAttributeEnum< GlsSphere, glsSphereMapping_e, glsSphereMapping_e >, DistiAttributeFilePathClass, DistiAttributeCWDRelativePath, DistiAttributeUCharOrBool, DistiAttributeFloatArray, DistiAttributeDoubleArray, DistiAttributeString, DistiAttributeEncodedString, DistiAttributeEncodedStdString, DistiAttributeFixedString, DistiAttributeStdString, DistiAttributeLocation, DistiAttributeDictionaryAttribute, DistiAttributeDictionaryAttributeSibling, DistiAttributeStdMap< Map_t >, DistiAttributeVertexArray< T >, DistiAttributeVertexArray< Vector >, DistiAttributeVertexArray< Vertex >, DistiAttributeTexturePointArray, DistiAttributeAlias, DistiAttributeDynamicArray< T, showIndex >, DistiAttributeStdVector< T, showIndex >, DistiAttributeHomogeneousItemArray< T >, DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >, DistiEmptyAttribute, DistiAttributeEnumDirect< enumType >, DistiAttributeEnumDirect< glsImageCodec >, GlsTextCharAttr, TexturePalette::DistiAttributeTexturePalette_V21, and TexturePalette::DistiAttributeTexturePalette.
|
friend |
Stream out operator.
outstr | Stream to write path to. |
attribute | The value to write to the stream. |
|
friend |
Stream in operator.
instr | The stream to read from. |
attribute | The returned value read from the stream. |
|
protected |
The callback which is called when the value of this object changes
|
protected |
_localStorage is true if this attributes data should be copied. It would typically be set false if the data is stored externally, and there is no need to copy the data through metadata. It is also used to determine if storage should be deleted.
|
protected |
The name of this attribute
|
protected |
The list of observers to be notified when this property changes.