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 () |
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 |
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 (void) | |
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 |
Calls callback CallType3 if it has been set
|
virtual |
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 only copy if it contains local storage
Reimplemented in DistiAttribute< T >, DistiAttribute< std::string >, DistiAttribute< Vertex >, and DistiAttribute< unsigned char >.
bool LocalStorage | ( | ) | const |
Returns true if this object has local storage
const AttributeName& Name | ( | ) | const |
Returns the name of this object
AttributeName& Name | ( | ) |
Returns the name of this object
|
virtual |
Triggers all observers to have their callbacks called. Typically called by the class that owns the DistiAttributeBase
Reimplemented in DistiAttributeAlias.
|
virtual |
Returns true if this object is ready to have its WriteValue() called 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 writting "NAME: ", OkToWrite() can be called to see if it will have a valid value
Reimplemented in DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >, DistiAttributeHomogeneousItemArray< T >, DistiAttributeStdVector< T, showIndex >, DistiAttributeDynamicArray< T, showIndex >, DistiAttributeAlias, DistiAttributeNeverWrite< T >, GlsTextCharAttr, DistiAttributeVertexArray< Vertex >, DistiAttributeVertexArray< T >, DistiAttributeVertexArray< Vector >, DistiAttributeStdMap< Map_t >, DistiAttributeDictionaryAttributeSibling, DistiAttributeDictionaryAttribute, DistiAttributeStdString, DistiAttributeEncodedStdString, DistiAttributeString, DistiAttributeConnectionGlsAngularScaleDataArray, TexturePalette::DistiAttributeTexturePalette_V21, DistiAttributeConnectionGlsLinearScaleDataArray, DistiAttributeColorMaterialModeEnum< containerClass >, DistiAttributeMeshFaceArray, DistiAttributeDoubleArray, and DistiAttributeFloatArray.
|
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.
|
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.
Reimplemented in DistiAttributeEnumDirect< enumType >, DistiAttributeEnumDirect< glsImageCodec >, DistiAttributeEnum< containerClass, setType, getType >, DistiAttributeEnum< GlsLightSource, int, int >, DistiAttributeEnum< GlsSphere, glsSphereMapping_e, glsSphereMapping_e >, DistiAttributeEnum< containerClass, const int, int >, DistiAttributeEnum< GlsEyePoint, GlsEyePoint::FovConstraintType, GlsEyePoint::FovConstraintType >, DistiAttributeEnum< containerClass, int, int >, DistiAttribute< T >, DistiAttribute< std::string >, DistiAttribute< Vertex >, DistiAttribute< unsigned char >, TexturePalette::DistiAttributeTexturePalette, DistiAttributeViewDataArray, DistiAttributeFilePathClass, and DistiAttributeUCharOrBool.
|
virtual |
Compares name and value This can be overriden to improve speed.
Reimplemented in DistiAttributeAlias, DistiAttributeVertexArray< Vertex >, DistiAttributeVertexArray< T >, DistiAttributeVertexArray< Vector >, DistiAttribute< T >, DistiAttribute< std::string >, DistiAttribute< Vertex >, and DistiAttribute< unsigned char >.
|
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.
|
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.
Implemented in DistiAttributeEnumDirect< enumType >, DistiAttributeEnumDirect< glsImageCodec >, DistiEmptyAttribute, DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >, DistiAttributeHomogeneousItemArray< T >, DistiAttributeStdVector< T, showIndex >, DistiAttributeDynamicArray< T, showIndex >, DistiAttributeAlias, DistiAttributeTexturePointArray, GlsTextCharAttr, DistiAttributeEnum< containerClass, setType, getType >, DistiAttributeVertexArray< Vertex >, DistiAttributeEnum< GlsLightSource, int, int >, DistiAttributeEnum< GlsSphere, glsSphereMapping_e, glsSphereMapping_e >, DistiAttributeEnum< containerClass, const int, int >, DistiAttributeEnum< GlsEyePoint, GlsEyePoint::FovConstraintType, GlsEyePoint::FovConstraintType >, DistiAttributeEnum< containerClass, int, int >, DistiAttributeVertexArray< T >, DistiAttributeVertexArray< Vector >, DistiAttributeStdMap< Map_t >, DistiAttributeDictionaryAttributeSibling, DistiAttributeDictionaryAttribute, DistiAttributeLocation, DistiAttributeStdString, DistiAttribute< T >, DistiAttribute< std::string >, DistiAttribute< Vertex >, DistiAttribute< unsigned char >, DistiAttributeFixedString, DistiAttributeEncodedStdString, DistiAttributeEncodedString, DistiAttributeString, TexturePalette::DistiAttributeTexturePalette, DistiAttributeConnectionGlsAngularScaleDataArray, TexturePalette::DistiAttributeTexturePalette_V21, DistiAttributeConnectionGlsLinearScaleDataArray, DistiAttributeViewDataArray, DistiAttributeCWDRelativePath, DistiAttributeMeshFaceArray, DistiAttributeFilePathClass, DistiAttributeDoubleArray, DistiAttributeFloatArray, DistiAttributeUCharOrBool, DistiAttribute< T >, DistiAttribute< T >, DistiAttribute< T >, and DistiAttribute< T >.
|
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() This does nothing in the base class
Reimplemented in DistiAttributeAlias.
|
virtual |
Unregister an observer
id | the id returned when the observer was registered |
Reimplemented in DistiAttributeAlias.
|
virtual |
Returns true if the object's value has changed since calling ResetValueChanged() However, it is not implmented in the base class and will always return true if not overridden
Reimplemented in DistiAttributeAlias.
|
virtual |
Allows for faster access to floating-point types than the more generic stream operators. However, it is only faster if it is overridden.
Reimplemented in DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >, DistiAttributeAlias, DistiAttribute< T >, DistiAttribute< std::string >, DistiAttribute< Vertex >, and DistiAttribute< unsigned char >.
|
virtual |
Allows for faster access to floating-point types than the more generic stream operator. However, it is only faster if it is overridden.
Reimplemented in DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >, DistiAttributeAlias, DistiAttribute< T >, DistiAttribute< std::string >, DistiAttribute< Vertex >, and DistiAttribute< unsigned char >.
|
virtual |
Allows for faster access to integer types than the more generic stream operators. However, it is only faster if it is overridden.
Reimplemented in DistiAttributeEnumDirect< enumType >, DistiAttributeEnumDirect< glsImageCodec >, DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >, DistiAttributeAlias, DistiAttributeEnum< containerClass, setType, getType >, DistiAttributeEnum< GlsLightSource, int, int >, DistiAttributeEnum< GlsSphere, glsSphereMapping_e, glsSphereMapping_e >, DistiAttributeEnum< containerClass, const int, int >, DistiAttributeEnum< GlsEyePoint, GlsEyePoint::FovConstraintType, GlsEyePoint::FovConstraintType >, DistiAttributeEnum< containerClass, int, int >, DistiAttribute< T >, DistiAttribute< std::string >, DistiAttribute< Vertex >, DistiAttribute< unsigned char >, DistiAttributeUCharOrBool, DistiAttribute< T >, DistiAttribute< T >, DistiAttribute< T >, DistiAttribute< T >, DistiAttribute< T >, and DistiAttribute< T >.
|
virtual |
Allows for faster access to integer types than the more generic stream operator. However, it is only faster if it is overridden.
Reimplemented in DistiAttributeEnumDirect< enumType >, DistiAttributeEnumDirect< glsImageCodec >, DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >, DistiAttributeAlias, DistiAttributeEnum< containerClass, setType, getType >, DistiAttributeEnum< GlsLightSource, int, int >, DistiAttributeEnum< GlsSphere, glsSphereMapping_e, glsSphereMapping_e >, DistiAttributeEnum< containerClass, const int, int >, DistiAttributeEnum< GlsEyePoint, GlsEyePoint::FovConstraintType, GlsEyePoint::FovConstraintType >, DistiAttributeEnum< containerClass, int, int >, DistiAttribute< T >, DistiAttribute< std::string >, DistiAttribute< Vertex >, DistiAttribute< unsigned char >, DistiAttributeUCharOrBool, DistiAttribute< T >, DistiAttribute< T >, DistiAttribute< T >, DistiAttribute< T >, DistiAttribute< T >, and DistiAttribute< T >.
|
virtual |
Returns the std::string version of the attribute data. 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 DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >, DistiAttributeAlias, DistiAttributeEncodedStdString, and DistiAttributeEncodedString.
|
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.
Reimplemented in DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >, DistiAttributeAlias, DistiAttributeEncodedStdString, and DistiAttributeEncodedString.
|
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.
Implemented in DistiAttributeEnumDirect< enumType >, DistiAttributeEnumDirect< glsImageCodec >, DistiEmptyAttribute, DistiAttributeProperty< containerT, T, SetArgT, GetReturnT >, DistiAttributeHomogeneousItemArray< T >, DistiAttributeStdVector< T, showIndex >, DistiAttributeDynamicArray< T, showIndex >, DistiAttributeAlias, DistiAttributeTexturePointArray, GlsTextCharAttr, DistiAttributeVertexArray< Vertex >, DistiAttributeEnum< containerClass, setType, getType >, DistiAttributeEnum< GlsLightSource, int, int >, DistiAttributeEnum< GlsSphere, glsSphereMapping_e, glsSphereMapping_e >, DistiAttributeEnum< containerClass, const int, int >, DistiAttributeEnum< GlsEyePoint, GlsEyePoint::FovConstraintType, GlsEyePoint::FovConstraintType >, DistiAttributeEnum< containerClass, int, int >, DistiAttributeVertexArray< T >, DistiAttributeVertexArray< Vector >, DistiAttributeStdMap< Map_t >, DistiAttributeDictionaryAttributeSibling, DistiAttributeDictionaryAttribute, DistiAttributeLocation, DistiAttributeStdString, DistiAttributeFixedString, DistiAttribute< T >, DistiAttribute< std::string >, DistiAttribute< Vertex >, DistiAttribute< unsigned char >, DistiAttributeEncodedStdString, DistiAttributeEncodedString, DistiAttributeString, TexturePalette::DistiAttributeTexturePalette, DistiAttributeConnectionGlsAngularScaleDataArray, TexturePalette::DistiAttributeTexturePalette_V21, DistiAttributeConnectionGlsLinearScaleDataArray, DistiAttributeViewDataArray, DistiAttributeCWDRelativePath, DistiAttributeMeshFaceArray, DistiAttributeFilePathClass, DistiAttributeDoubleArray, DistiAttributeFloatArray, DistiAttributeUCharOrBool, DistiAttribute< T >, and DistiAttribute< T >.
|
friend |
Allows this class to send to a stream. Internally it uses WriteValue()
|
friend |
Allows this class to receive from a stream. Internally it uses ReadValue()
|
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.