40#ifndef INCLUDED_GLS_METADATA_ATTRIBUTES_H
41#define INCLUDED_GLS_METADATA_ATTRIBUTES_H
80 return static_cast<T
>( value );
101 if( strcasecmp( value.c_str(),
"TRUE" ) == 0 )
105 else if( strcasecmp( value.c_str(),
"FALSE" ) == 0 )
112 temp = ConvertToIntOrBool<T>( atoi( value.c_str() ) );
129 *_attribPtr = ( val != 0 );
136 outstr << *_attribPtr;
144 *_attribPtr = ReadValueAsIntOrBool<bool>( instr );
155 *_attribPtr = (int)val;
165 *_attribPtr = (short)val;
175 *_attribPtr = (
unsigned short)val;
185 *_attribPtr = (
unsigned char)val;
193 outstr << (int)*_attribPtr;
202 *_attribPtr =
static_cast<unsigned char>( ReadValueAsIntOrBool<int>( instr ) );
208inline std::istream& DistiAttribute<int>::ReadValue( std::istream& instr )
211 *_attribPtr = ReadValueAsIntOrBool<int>( instr );
217inline std::istream& DistiAttribute<unsigned int>::ReadValue( std::istream& instr )
220 *_attribPtr = ReadValueAsIntOrBool<unsigned int>( instr );
227inline long DistiAttribute<float>::ValueInt() {
return (
long)*_attribPtr; }
230inline void DistiAttribute<float>::ValueInt(
long val )
232 *_attribPtr = (float)val;
324template<class containerClass>
328 DISTI_DEPRECATED(
"This identifier is forbidden by the C++ standard. Use BaseClass instead." )
333 typedef
void ( containerClass::*SetMethodType )( const
int );
334 typedef
int ( containerClass::*GetMethodType )();
342 :
DistiAttributeEnum<containerClass, const
int,
int>( frame, setMethod, getMethod, name )
344 _pairList = &TextureModeEnumList;
349 return Demangle<TextureMap_e>();
354static DistiAttributeEnumDefList TextureFilterEnumList(
364template<
class containerClass>
368 DISTI_DEPRECATED(
"This identifier is forbidden by the C++ standard. Use BaseClass instead." )
373 typedef
void ( containerClass::*SetMethodType )( const
int );
374 typedef
int ( containerClass::*GetMethodType )();
382 :
DistiAttributeEnum<containerClass, const
int,
int>( frame, setMethod, getMethod, name )
384 _pairList = &TextureFilterEnumList;
389 return Demangle<TextureFilter_e>();
394static DistiAttributeEnumDefList PolyModeEnumList(
403template<
class containerClass>
407 DISTI_DEPRECATED(
"This identifier is forbidden by the C++ standard. Use BaseClass instead." )
412 typedef
void ( containerClass::*SetMethodType )( const
int );
413 typedef
int ( containerClass::*GetMethodType )();
421 :
DistiAttributeEnum<containerClass, const
int,
int>( frame, setMethod, getMethod, name )
423 _pairList = &PolyModeEnumList;
428 return Demangle<PolygonMode_e>();
433static DistiAttributeEnumDefList PolyEndEnumList(
439template<
class containerClass>
443 DISTI_DEPRECATED(
"This identifier is forbidden by the C++ standard. Use BaseClass instead." )
448 typedef
void ( containerClass::*SetMethodType )(
int );
449 typedef
int ( containerClass::*GetMethodType )();
459 _pairList = &PolyEndEnumList;
464 return Demangle<PolygonClose_e>();
469static DistiAttributeEnumDefList ShadingEnumList(
475template<
class containerClass>
479 DISTI_DEPRECATED(
"This identifier is forbidden by the C++ standard. Use BaseClass instead." )
484 typedef
void ( containerClass::*SetMethodType )( const
int );
485 typedef
int ( containerClass::*GetMethodType )();
493 :
DistiAttributeEnum<containerClass, const
int,
int>( frame, setMethod, getMethod, name )
495 _pairList = &ShadingEnumList;
500 return Demangle<ShadingType_e>();
505template<
class containerClass>
509 DISTI_DEPRECATED(
"This identifier is forbidden by the C++ standard. Use BaseClass instead." )
514 typedef
void ( containerClass::*SetMethodType )( const
int );
515 typedef
int ( containerClass::*GetMethodType )();
523 :
DistiAttributeEnum<containerClass, const
int,
int>( frame, setMethod, getMethod, name )
534 _pairList = &ColorMaterialModeEnum;
541 return Demangle<ColorMaterialMode_e>();
546template<
class containerClass>
550 DISTI_DEPRECATED(
"This identifier is forbidden by the C++ standard. Use BaseClass instead." )
555 typedef
void ( containerClass::*SetMethodType )( const
int );
556 typedef
int ( containerClass::*GetMethodType )();
564 :
DistiAttributeEnum<containerClass, const
int,
int>( frame, setMethod, getMethod, name )
571 _pairList = &ProtectionEnumList;
576 return Demangle<MemberAccess_e>();
581static DistiAttributeEnumDefList AlphaModeEnumList(
589template<
class containerClass>
593 DISTI_DEPRECATED(
"This identifier is forbidden by the C++ standard. Use BaseClass instead." )
598 typedef
void ( containerClass::*SetMethodType )( const
int );
599 typedef
int ( containerClass::*GetMethodType )();
607 :
DistiAttributeEnum<containerClass, const
int,
int>( frame, setMethod, getMethod, name )
609 _pairList = &AlphaModeEnumList;
614 return Demangle<AlphaMode_e>();
734 std::string _localStorageString;
846 , _attribPtr( attribPtr )
855 , _attribPtr( new Map_t() )
868 return _attribPtr != 0 && _attribPtr->size();
877 << DistiAttribDict::SpacingString() <<
"{\n";
878 DistiAttribDict::SpacingInc();
882 typename Map_t::iterator i;
883 for( i = _attribPtr->begin(); i != _attribPtr->end(); ++i )
885 std::ostringstream str;
887 const std::string second = str.str();
889 outstr << DistiAttribDict::SpacingString() << i->first <<
" "
890 << ( second.empty() ? GetEmptyValue() : second ) <<
'\n';
894 DistiAttribDict::SpacingDec();
895 outstr << DistiAttribDict::SpacingString() <<
"}\n";
900#if defined( _MSC_VER )
901# pragma warning( push )
902# pragma warning( disable : 4701 )
906 instr.ignore( INT_MAX,
'{' );
910 std::stringstream fontStream;
911 instr.get( *fontStream.rdbuf(),
'}' );
915 while( fontStream.good() )
919 std::stringstream::char_type c;
928 }
while( fontStream.good() && std::isspace( c ) );
930 }
while( fontStream.good() && isspace( c ) );
933 if( fontStream.good() )
935 fontStream.putback( c );
937 typename Map_t::key_type key;
938 typename Map_t::mapped_type value;
942 std::getline( fontStream >> std::ws, strVal );
944 if( strVal != GetEmptyValue() )
946 std::istringstream str( strVal );
950 ( *_attribPtr )[ key ] = value;
960 return Demangle<Map_t>();
963#if defined( _MSC_VER )
964# pragma warning( pop )
994 , _attribPtr( attribPtr )
995 , _numVertices( numVertices )
997 , _fixedArray( false )
999 _compatabilityMode =
true;
1009 , _attribPtr( new
Tptr( attribPtr ) )
1010 , _numVertices( NULL )
1011 , _numElements( numElements )
1012 , _fixedArray( true )
1014 _compatabilityMode =
true;
1019 if( ( _fixedArray || _localStorage ) && _attribPtr )
1027 return ( *_attribPtr != NULL );
1035 if( *_attribPtr != NULL )
1037 unsigned int numVerts = _numElements;
1040 outstr << *_numVertices;
1041 numVerts = *_numVertices;
1043 DistiAttribDict::SpacingInc();
1044 for(
unsigned int i = 0; i < numVerts; i++ )
1047 outstr << ( *_attribPtr )[ i ];
1049 DistiAttribDict::SpacingDec();
1059 unsigned int numVerts = _numElements;
1064 *_numVertices = numVerts;
1067 if( *_attribPtr != NULL )
1068 delete[] * _attribPtr;
1072 *_attribPtr =
new T[ numVerts ];
1077 if( !_compatabilityMode )
1081 instr.getline( buf, 1024 );
1084 for(
unsigned int i = 0; i < numVerts; i++ )
1086 if( !_compatabilityMode )
1089 instr.getline( buf, 1024 );
1093 std::sscanf( buf,
"%f %f %f",
1094 &( ( *_attribPtr )[ i ].x ),
1095 &( ( *_attribPtr )[ i ].y ),
1096 &( ( *_attribPtr )[ i ].z ) );
1098 assert( 3 == count );
1103 instr >> ( *_attribPtr )[ i ];
1124 for(
unsigned int i = 0u; i < _numElements; ++i )
1126 T leftVert = ( *_attribPtr )[ i ];
1143 return Demangle<Tptr>();
1171 , _attribPtr( attribPtr )
1172 , _numVertices( numVertices )
1174 , _fixedArray( false )
1176 _compatabilityMode =
true;
1186 , _attribPtr( new
Tptr( attribPtr ) )
1187 , _numVertices( NULL )
1188 , _numElements( numElements )
1189 , _fixedArray( true )
1191 _compatabilityMode =
true;
1196 if( ( _fixedArray || _localStorage ) && _attribPtr )
1203 return ( *_attribPtr != NULL );
1208 if( *_attribPtr != NULL )
1210 unsigned int numVerts = _numElements;
1213 outstr << *_numVertices;
1214 numVerts = *_numVertices;
1216 DistiAttribDict::SpacingInc();
1217 for(
unsigned int i = 0; i < numVerts; i++ )
1220 outstr << ( *_attribPtr )[ i ];
1222 DistiAttribDict::SpacingDec();
1229 unsigned int numVerts = _numElements;
1234 *_numVertices = numVerts;
1237 if( *_attribPtr != NULL )
1238 delete[] * _attribPtr;
1241 *_attribPtr =
new Vertex[ numVerts ];
1244 if( !_compatabilityMode )
1248 instr.getline( buf, 1024 );
1251 for(
unsigned int i = 0; i < numVerts; i++ )
1253 if( !_compatabilityMode )
1256 instr.getline( buf, 1024 );
1261 std::sscanf( buf,
"%f %f %f %d %d %d %d",
1262 &( ( *_attribPtr )[ i ].x ),
1263 &( ( *_attribPtr )[ i ].y ),
1264 &( ( *_attribPtr )[ i ].z ),
1267 assert( 7 == count );
1270 ( *_attribPtr )[ i ].color.RGBA( (
unsigned char)r, (
unsigned char)g, (
unsigned char)b, (
unsigned char)a );
1274 instr >> ( *_attribPtr )[ i ];
1292 for(
unsigned int i = 0u; i < _numElements; ++i )
1294 Vertex leftVert = ( *_attribPtr )[ i ];
1307 return Demangle<Tptr>();
1329 unsigned int numVerts = _numElements;
1331 for(
unsigned int i = 0; i < numVerts; i++ )
1334 outstr << ( *_attribPtr )[ i ];
1341 unsigned int numVerts = _numElements;
1343 for(
unsigned int i = 0; i < numVerts; i++ )
1351 std::getline( instr, line );
1353 if( i == 0 && line.length() == 0 )
1354 std::getline( instr, line );
1356 std::stringstream strm( line );
1357 strm >> ( *_attribPtr )[ i ];
1435 , _originalAttribName( originalName )
1436 , _dictionary( dict )
1466template<class T,
bool showIndex >
1478 , _attribPtr( attribPtr )
1487 , _attribPtr( new T() )
1500 return ( _attribPtr != NULL && _attribPtr->Capacity() );
1505 if( _attribPtr != NULL )
1507 unsigned numEntries = _attribPtr->Count();
1508 outstr << numEntries;
1510 DistiAttribDict::SpacingInc();
1512 for(
unsigned i = 0; i < numEntries; i++ )
1518 outstr << DistiAttribDict::SpacingString() << i <<
" ";
1521 outstr << DistiAttribDict::SpacingString() << ( *_attribPtr )[ i ] <<
" ";
1523 DistiAttribDict::SpacingDec();
1530 unsigned numEntries = 0;
1531 instr >> numEntries;
1533 _attribPtr->Count( numEntries );
1534 for(
unsigned i = 0; i < numEntries; i++ )
1542 instr >> ( *_attribPtr )[ entry ];
1550 return Demangle<T>();
1558template<
class T,
bool showIndex >
1573 , _attribPtr( attribPtr )
1582 , _attribPtr( new T() )
1597 return ( _attribPtr != NULL && _attribPtr->size() );
1602 if( _attribPtr != NULL )
1604 const std::size_t numEntries = _attribPtr->size();
1605 outstr << numEntries;
1607 DistiAttribDict::SpacingInc();
1609 for( std::size_t i = 0; i < numEntries; i++ )
1615 outstr << DistiAttribDict::SpacingString() << i <<
" ";
1618 outstr << DistiAttribDict::SpacingString() << ( *_attribPtr )[ i ] <<
" ";
1620 DistiAttribDict::SpacingDec();
1627 if( _attribPtr != NULL )
1630 instr >> numEntries;
1632 _attribPtr->resize( numEntries );
1634 for(
int i = 0; i < numEntries; i++ )
1641 instr >> ( *_attribPtr )[ entry ];
1651 return Demangle<T>();
1663 typedef T* ( *CreateItemCb )();
1678 , _createCb( createCb )
1689 << DistiAttribDict::SpacingString() <<
"{\n";
1690 DistiAttribDict::SpacingInc();
1691 for(
unsigned int i = 0; i < _array->
Count(); i++ )
1693 if( ( *_array )[ i ] )
1695 outstr << DistiAttribDict::SpacingString();
1697 ( ( *_array )[ i ] )->WriteValue( outstr );
1701 DistiAttribDict::SpacingDec();
1702 outstr << DistiAttribDict::SpacingString() <<
"}\n";
1711 while( DistiAttribDict::ScanToken( instr, buf ) )
1721 if( T*
const createdItem =
dynamic_cast<T*
>( _createCb() ) )
1724 _array->
Back()->ReadValue( instr );
1734 return Demangle< DynamicArray<T*> >();
1750template<
class containerT,
class T,
class SetArgT = const T&,
class GetReturnT = T>
1754 DISTI_DEPRECATED(
"This identifier is forbidden by the C++ standard. Use BaseClass instead." )
1757 typedef
void ( containerT::*SetMethodType )( SetArgT );
1758 typedef GetReturnT ( containerT::*GetMethodType )();
1759 typedef GetReturnT ( containerT::*GetMethodConstType )() const;
1762 containerT* _container;
1763 SetMethodType _setMethod;
1764 GetMethodType _getMethod;
1775 , _container( frame )
1776 , _setMethod( setMethod )
1777 , _getMethod( getMethod )
1780 if(
typeid( T ) ==
typeid(
float ) ||
typeid( T ) ==
typeid(
double ) ||
typeid( T ) ==
typeid(
long double ) )
1788 return ( this->_attribPtr || _getMethod );
1803 if( _precision > 0 )
1804 outstr.precision(
int( _precision ) );
1806 if( _getMethod && _container )
1809 T* tempAttribPtr = this->_attribPtr;
1812 T temp( ( _container->*_getMethod )() );
1815 this->_attribPtr = &temp;
1818 BaseClass::WriteValue( outstr );
1821 this->_attribPtr = tempAttribPtr;
1823 else if( this->_attribPtr )
1825 BaseClass::WriteValue( outstr );
1833 if( _setMethod && _container )
1836 T* tempAttribPtr = this->_attribPtr;
1840 this->_attribPtr = &temp;
1843 BaseClass::ReadValue( instr );
1846 ( _container->*_setMethod )(
static_cast<SetArgT
>( temp ) );
1848 this->_attribPtr = tempAttribPtr;
1850 else if( this->_attribPtr )
1852 BaseClass::ReadValue( instr );
1860 return Demangle<T>();
1865 if( _getMethod && _container )
1868 return ( _container->*_getMethod )();
1870 else if( this->_attribPtr )
1872 return BaseClass::Value();
1882 if( _setMethod && _container )
1884 ( _container->*_setMethod )(
static_cast<SetArgT
>( val ) );
1886 else if( this->_attribPtr )
1888 BaseClass::Value( val );
1904template<
typename Type,
class Class>
1922template<
typename Type,
class Class>
1940template<
typename Type,
class Class>
1957template<
typename Type,
class Class>
1974template<
typename Type,
class Class>
1992template<
typename Type,
class Class>
2011template<
typename GetReturnT,
typename SetArgT,
class Class>
2029template<
class Class>
2067template<
class enumType>
2083 , _attribPtr( attribPtr )
2084 , _pairList( pairList )
2095 , _attribPtr( new enumType( value ) )
2096 , _pairList( pairList )
2102 if( _localStorage && _attribPtr )
2121 *_attribPtr = ( enumType ) * ( ptr->
_attribPtr );
2126 return DistiAttributeBase::operator=( oldClass );
2136 bool foundIt =
false;
2138 typename DistiAttributeEnumDefList::iterator item = _pairList->begin();
2139 while( item != _pairList->end() )
2141 if( ( *item )->_enum == *_attribPtr )
2143 outstr << ( *item )->_string;
2152 outstr << (int)*_attribPtr;
2168 bool foundIt =
false;
2169 typename DistiAttributeEnumDefList::iterator item = _pairList->begin();
2172 while( item != _pairList->end() )
2174 if( strcmp( ( *item )->_string, value ) == 0 )
2176 *_attribPtr = (enumType)( *item )->_enum;
2188 *_attribPtr = (enumType)atoi( value );
2202 return Demangle<enumType>();
2224#define DISTI_REGISTER_METHOD_CALLBACK( instance, Class, Method ) \
2226 typedef CallbackMethodCallerTemplate<Class, Class> Caller; \
2227 typedef typename Caller::MethodType1 MethodType; \
2228 const MethodType callback = reinterpret_cast<MethodType>( Method ); \
2229 ThisClass::CallbackCaller( new Caller( callback, instance ) ); \
2239#define DISTI_SET_OBJECT_CALLBACK1( object, method, parent ) \
2240 ( object )->CallbackCaller( \
2241 new CallbackMethodCallerTemplate<DisplayObject, DisplayObject>( \
2242 (disti::CallbackMethodCallerTemplate<DisplayObject, DisplayObject>::MethodType1)( method ), ( parent ) ) );
2253#define DISTI_ADD_ATTRIBUTE( Type, name, memberVarAddr ) \
2255 static const AttributeName attr( name ); \
2256 CallbackAttributeNotifier<ThisClass> cb( this, attr ); \
2257 this->Attributes().Add( new DistiAttribute<Type>( &cb, ( attr ), ( memberVarAddr ) ) ); \
2272#define DISTI_ADD_ATTRIBUTE_CALLBACK( Type, name, memberVarAddr, callbackFunction ) \
2274 typedef void ( ThisClass::*Method )(); \
2275 static const AttributeName attr( name ); \
2276 CallbackAttributeNotifier<ThisClass> cb( this, attr, reinterpret_cast<Method>( callbackFunction ) ); \
2277 this->Attributes().Add( new DistiAttribute<Type>( &cb, ( attr ), ( memberVarAddr ) ) ); \
2290#define DISTI_ADD_ATTRIBUTE_SET_GET( Type, name, setter, getter ) \
2292 static const AttributeName attr( name ); \
2293 this->Attributes().Add( CreateDistiAttributeProperty<Type>( attr, this, setter, getter ) ); \
2303#define DISTI_ADD_ATTRIBUTE_STRING( name, memberVarAddr ) \
2305 static const AttributeName attr( name ); \
2306 CallbackAttributeNotifier<ThisClass> cb( this, attr ); \
2307 this->Attributes().Add( new DistiAttributeEncodedStdString( &cb, attr, memberVarAddr ) ); \
2319#define DISTI_ADD_ATTRIBUTE_STRING_CALLBACK( name, memberVarAddr, callbackFunction ) \
2321 typedef void ( ThisClass::*Method )(); \
2322 static const AttributeName attr( name ); \
2323 CallbackAttributeNotifier<ThisClass> cb( this, attr, reinterpret_cast<Method>( callbackFunction ) ); \
2324 this->Attributes().Add( new DistiAttributeEncodedStdString( &cb, attr, memberVarAddr ) ); \
2334#define DISTI_ADD_ATTRIBUTE_ALIAS( aliasName, origName, obj ) \
2336 static const AttributeName aliasAttr( aliasName ); \
2337 static const AttributeName origAttr( origName ); \
2338 DistiAttribDict& attributes = ( obj )->Attributes(); \
2339 this->Attributes().Add( new DistiAttributeAlias( NULL, aliasAttr, origAttr, &attributes ) ); \
2342#ifdef DISTI_HAS_CPP11
2353 : _func( std::move( func ) )
2369 return !_object.IsNull() && _func;
2384 const std::function<
void()>& func )
2397 auto& res = obj->
Resource( resource.c_str() );
2400 std::cout <<
"Unknown attribute name: " << resource << std::endl;
2415template<
class Class>
2421 std::cout <<
"Unknown attribute name: " << resource << std::endl;
Definition: gls_metadata_attributes.h:2346
AttributeFnCallback(WeakReferenceable *object, std::function< void()> func)
Definition: gls_metadata_attributes.h:2352
virtual bool IsValid() const override
Definition: gls_metadata_attributes.h:2367
std::function< void()> _func
The callback function pointer to call.
Definition: gls_metadata_attributes.h:2373
WeakRef< WeakReferenceable > _object
The object associated with this callback, callback will only be called if this object is valid.
Definition: gls_metadata_attributes.h:2374
void Call(DistiAttributeBase &ev) override
Definition: gls_metadata_attributes.h:2359
Definition: disti_metadata.h:424
Definition: disti_metadata.h:87
Definition: disti_metadata.h:201
Definition: callback_caller_base.h:56
virtual DistiAttributeBase & Resource(const char *name)
Definition: disti_metadata.h:750
void Add(DistiAttributeBase *attr)
Definition: gls_metadata_attributes.h:1426
DistiAttributeAlias(CallbackMethodCallerBase *callback, const AttributeName &name, const AttributeName &originalName, DistiAttribDict *dict)
Definition: gls_metadata_attributes.h:1433
Definition: gls_metadata_attributes.h:591
std::string Type() const override
Definition: gls_metadata_attributes.h:612
Definition: disti_metadata.h:220
virtual CallbackID RegisterObserver(AttributeObserver *observer)
virtual void UnregisterObserver(CallbackID id)
AttributeName _name
Definition: disti_metadata.h:226
unsigned int CallbackID
Type for unique identifiers.
Definition: disti_metadata.h:401
Definition: gls_metadata_attributes.h:507
std::string Type() const override
Definition: gls_metadata_attributes.h:539
virtual bool OkToWrite() const override
Definition: gls_metadata_attributes.h:537
Definition: gls_metadata_attributes.h:803
bool _hasRead
If true, ReadValue will be called on the sibling when ReadValue is called on this attribute.
Definition: gls_metadata_attributes.h:807
std::string Type() const override
DistiAttributeDictionaryAttributeSibling(const AttributeName &name, DistiAttribDict *dict, DistiAttributeBase *sibling)
DistiAttribDict * _dict
An observing pointer to a dictionary of attributes.
Definition: gls_metadata_attributes.h:805
virtual std::istream & ReadValue(std::istream &instr) override
virtual bool OkToWrite() const override
DistiAttributeBase * _sibling
An observing pointer to this attribute's sibling.
Definition: gls_metadata_attributes.h:806
virtual std::ostream & WriteValue(std::ostream &outstr) override
Definition: gls_metadata_attributes.h:779
std::string Type() const override
DistiAttribDict * _dict
An observing pointer to a dictionary of attributes.
Definition: gls_metadata_attributes.h:781
virtual std::istream & ReadValue(std::istream &instr) override
DistiAttributeDictionaryAttribute(const AttributeName &name, DistiAttribDict *dict)
virtual bool OkToWrite() const override
virtual std::ostream & WriteValue(std::ostream &outstr) override
Definition: gls_metadata_attributes.h:293
DistiAttributeDoubleArray(CallbackMethodCallerBase *callback, const AttributeName &name, double *doubleArray, int length)
virtual bool OkToWrite() const override
Definition: gls_metadata_attributes.h:1468
bool OkToWrite() const override
Definition: gls_metadata_attributes.h:1498
std::istream & ReadValue(std::istream &instr) override
Definition: gls_metadata_attributes.h:1528
std::string Type() const override
Definition: gls_metadata_attributes.h:1548
DistiAttributeDynamicArray(CallbackMethodCallerBase *callback, const AttributeName &name)
Definition: gls_metadata_attributes.h:1485
std::ostream & WriteValue(std::ostream &outstr) override
Definition: gls_metadata_attributes.h:1503
DistiAttributeDynamicArray(CallbackMethodCallerBase *callback, const AttributeName &name, T *attribPtr)
Definition: gls_metadata_attributes.h:1476
Definition: gls_metadata_attributes.h:686
DistiAttributeEncodedStdString(CallbackMethodCallerBase *callback, const AttributeName &name, std::string initialValue)
bool OkToWrite() const override
DistiAttributeEncodedStdString(CallbackMethodCallerBase *callback, const AttributeName &name, std::string *attribPtr)
Definition: gls_metadata_attributes.h:659
DistiAttributeEncodedString(CallbackMethodCallerBase *callback, const AttributeName &name, char **attribPtr)
DistiAttributeEncodedString(CallbackMethodCallerBase *callback, const AttributeName &name, char *initialValue)
virtual std::string ValueString() override
Definition: disti_metadata.h:1002
Definition: gls_metadata_attributes.h:2069
virtual void ValueInt(long val) override
Definition: gls_metadata_attributes.h:2111
enumType * _attribPtr
Underlying storage for this attribute.
Definition: gls_metadata_attributes.h:2071
DistiAttributeEnumDefList * _pairList
Observing pointer to the enum string to integer conversion data.
Definition: gls_metadata_attributes.h:2074
std::string Type() const override
Definition: gls_metadata_attributes.h:2200
DistiAttributeEnumDirect(CallbackMethodCallerBase *callback, const AttributeName &name, enumType *attribPtr, DistiAttributeEnumDefList *pairList)
Definition: gls_metadata_attributes.h:2081
DistiAttributeEnumDirect(CallbackMethodCallerBase *callback, const AttributeName &name, const enumType &value, DistiAttributeEnumDefList *pairList)
Definition: gls_metadata_attributes.h:2093
virtual std::istream & ReadValue(std::istream &instr) override
Definition: gls_metadata_attributes.h:2162
virtual long ValueInt() override
Definition: gls_metadata_attributes.h:2107
virtual DistiAttributeBase & operator=(const DistiAttributeBase &oldClass) override
Definition: gls_metadata_attributes.h:2116
virtual std::ostream & WriteValue(std::ostream &outstr) override
Definition: gls_metadata_attributes.h:2134
Definition: disti_metadata.h:1021
Definition: gls_metadata_attributes.h:713
virtual std::istream & ReadValue(std::istream &instr) override
DistiAttributeFixedString(CallbackMethodCallerBase *callback, const AttributeName &name, char *string, int length)
virtual std::ostream & WriteValue(std::ostream &outstr) override
Definition: gls_metadata_attributes.h:268
DistiAttributeFloatArray(CallbackMethodCallerBase *callback, const AttributeName &name, float *floatArray, int length)
virtual bool OkToWrite() const override
Definition: gls_metadata_attributes.h:1661
DistiAttributeHomogeneousItemArray(const AttributeName &name, DynamicArray< T * > *array, CreateItemCb createCb)
Definition: gls_metadata_attributes.h:1675
CreateItemCb _createCb
Function pointer called to create new items in the list.
Definition: gls_metadata_attributes.h:1667
std::string Type() const override
Definition: gls_metadata_attributes.h:1731
virtual std::istream & ReadValue(std::istream &instr) override
Definition: gls_metadata_attributes.h:1706
DynamicArray< T * > * _array
Underlying storage for this attribute.
Definition: gls_metadata_attributes.h:1666
virtual bool OkToWrite() const override
Definition: gls_metadata_attributes.h:1684
virtual std::ostream & WriteValue(std::ostream &outstr) override
Definition: gls_metadata_attributes.h:1686
Definition: gls_metadata_attributes.h:763
DistiAttributeLocation(CallbackMethodCallerBase *callback, const AttributeName &name, Vertex *attribPtr)
virtual std::istream & ReadValue(std::istream &instr) override
virtual std::ostream & WriteValue(std::ostream &outstr) override
Definition: gls_metadata_attributes.h:1370
DistiAttributeNeverWrite(CallbackMethodCallerBase *callback, const AttributeName &name, const T &initialValue)
Definition: gls_metadata_attributes.h:1385
virtual bool OkToWrite() const override
Definition: gls_metadata_attributes.h:1390
DistiAttributeNeverWrite(CallbackMethodCallerBase *callback, const AttributeName &name, T *attribPtr)
Definition: gls_metadata_attributes.h:1376
Definition: gls_metadata_attributes.h:441
std::string Type() const override
Definition: gls_metadata_attributes.h:462
Definition: gls_metadata_attributes.h:405
std::string Type() const override
Definition: gls_metadata_attributes.h:426
Definition: gls_metadata_attributes.h:1752
virtual void ValueInt(long val) override
Definition: gls_metadata_attributes.h:1796
virtual double ValueFloat() override
Definition: gls_metadata_attributes.h:1798
std::string Type() const override
Definition: gls_metadata_attributes.h:1858
virtual T Value() override
Definition: gls_metadata_attributes.h:1863
virtual std::string ValueString() override
Definition: gls_metadata_attributes.h:1792
virtual std::istream & ReadValue(std::istream &instr) override
Definition: gls_metadata_attributes.h:1831
virtual void ValueString(const std::string &s) override
Definition: gls_metadata_attributes.h:1793
virtual void Value(const T &val) override
Definition: gls_metadata_attributes.h:1880
virtual void ValueFloat(double val) override
Definition: gls_metadata_attributes.h:1799
virtual long ValueInt() override
Definition: gls_metadata_attributes.h:1795
virtual bool OkToWrite() const override
Definition: gls_metadata_attributes.h:1786
virtual std::ostream & WriteValue(std::ostream &outstr) override
Definition: gls_metadata_attributes.h:1801
Definition: gls_metadata_attributes.h:548
std::string Type() const override
Definition: gls_metadata_attributes.h:574
Definition: gls_metadata_attributes.h:477
std::string Type() const override
Definition: gls_metadata_attributes.h:498
Definition: gls_metadata_attributes.h:835
DistiAttributeStdMap(CallbackMethodCallerBase *callback, const AttributeName &name, Map_t *attribPtr)
Definition: gls_metadata_attributes.h:843
std::string Type() const override
Definition: gls_metadata_attributes.h:958
virtual std::istream & ReadValue(std::istream &instr) override
Definition: gls_metadata_attributes.h:904
DistiAttributeStdMap(CallbackMethodCallerBase *callback, const AttributeName &name)
Definition: gls_metadata_attributes.h:853
static std::string GetEmptyValue()
Definition: gls_metadata_attributes.h:872
virtual bool OkToWrite() const override
Definition: gls_metadata_attributes.h:866
virtual std::ostream & WriteValue(std::ostream &outstr) override
Definition: gls_metadata_attributes.h:874
Definition: gls_metadata_attributes.h:1398
DistiAttributeStdStringNeverWrite(CallbackMethodCallerBase *callback, const AttributeName &name, const std::string &initialValue)
Definition: gls_metadata_attributes.h:1413
DistiAttributeStdStringNeverWrite(CallbackMethodCallerBase *callback, const AttributeName &name, std::string *attribPtr)
Definition: gls_metadata_attributes.h:1404
virtual bool OkToWrite() const override
Definition: gls_metadata_attributes.h:1418
Definition: gls_metadata_attributes.h:733
DistiAttributeStdString(CallbackMethodCallerBase *callback, const AttributeName &name, std::string *attribPtr)
DistiAttributeStdString(CallbackMethodCallerBase *callback, const AttributeName &name, std::string initialValue)
virtual bool OkToWrite() const override
std::string * LocalStorageString()
Definition: gls_metadata_attributes.h:1560
DistiAttributeStdVector(CallbackMethodCallerBase *callback, const AttributeName &name)
Definition: gls_metadata_attributes.h:1580
DistiAttributeStdVector(CallbackMethodCallerBase *callback, const AttributeName &name, T *attribPtr)
Definition: gls_metadata_attributes.h:1571
std::string Type() const override
Definition: gls_metadata_attributes.h:1649
virtual std::istream & ReadValue(std::istream &instr) override
Definition: gls_metadata_attributes.h:1625
virtual bool OkToWrite() const override
Definition: gls_metadata_attributes.h:1595
virtual std::ostream & WriteValue(std::ostream &outstr) override
Definition: gls_metadata_attributes.h:1600
Definition: gls_metadata_attributes.h:621
DistiAttributeString(CallbackMethodCallerBase *callback, const AttributeName &name, char **attribPtr)
char * LocalStorageString()
DistiAttributeString(CallbackMethodCallerBase *callback, const AttributeName &name, char *initialValue)
char ** _attribPtr
A pointer to the pointer containing the underlying storage for this attribute.
Definition: gls_metadata_attributes.h:625
virtual bool OkToWrite() const override
Definition: gls_metadata_attributes.h:366
std::string Type() const override
Definition: gls_metadata_attributes.h:387
Definition: gls_metadata_attributes.h:326
std::string Type() const override
Definition: gls_metadata_attributes.h:347
Definition: gls_metadata_attributes.h:1315
virtual std::istream & ReadValue(std::istream &instr) override
Definition: gls_metadata_attributes.h:1339
DistiAttributeTexturePointArray(CallbackMethodCallerBase *callback, const AttributeName &name, Vector *attribPtr, unsigned int numElements)
Definition: gls_metadata_attributes.h:1322
virtual std::ostream & WriteValue(std::ostream &outstr) override
Definition: gls_metadata_attributes.h:1327
Definition: gls_metadata_attributes.h:242
DistiAttributeUCharOrBool(CallbackMethodCallerBase *callback, const AttributeName &name, unsigned char *attribPtr)
virtual long ValueInt() override
virtual DistiAttributeBase & operator=(const DistiAttributeBase &oldClass) override
DistiAttributeUCharOrBool(CallbackMethodCallerBase *callback, const AttributeName &name, unsigned char value)
Definition: gls_metadata_attributes.h:1150
Vertex * Tptr
Shorthand typedef for a pointer to a vertex.
Definition: gls_metadata_attributes.h:1153
void SetCompatabilityMode(bool mode)
Definition: gls_metadata_attributes.h:1162
unsigned int * _numVertices
The number of vertices in a variable length array.
Definition: gls_metadata_attributes.h:1154
DistiAttributeVertexArray(CallbackMethodCallerBase *callback, const AttributeName &name, Vertex *attribPtr, unsigned int numElements)
Definition: gls_metadata_attributes.h:1184
std::string Type() const override
Definition: gls_metadata_attributes.h:1305
bool _fixedArray
If true, this array is not resizable.
Definition: gls_metadata_attributes.h:1156
virtual std::istream & ReadValue(std::istream &instr) override
Definition: gls_metadata_attributes.h:1227
Vertex ** _attribPtr
Underlying storage for this attribute.
Definition: gls_metadata_attributes.h:1152
unsigned int _numElements
The number of vertices in a fixed length array.
Definition: gls_metadata_attributes.h:1155
virtual bool operator==(const DistiAttributeBase &rArg) override
Definition: gls_metadata_attributes.h:1281
bool _compatabilityMode
If true, backward compatibility mode will be used, values will be read with scanf.
Definition: gls_metadata_attributes.h:1157
virtual bool OkToWrite() const override
Definition: gls_metadata_attributes.h:1201
DistiAttributeVertexArray(CallbackMethodCallerBase *callback, const AttributeName &name, Vertex **attribPtr, unsigned int *numVertices)
Definition: gls_metadata_attributes.h:1169
virtual std::ostream & WriteValue(std::ostream &outstr) override
Definition: gls_metadata_attributes.h:1206
Definition: gls_metadata_attributes.h:973
void SetCompatabilityMode(bool mode)
Definition: gls_metadata_attributes.h:985
T ** _attribPtr
Underlying storage for this attribute.
Definition: gls_metadata_attributes.h:975
unsigned int * _numVertices
The number of vertices in a variable length array.
Definition: gls_metadata_attributes.h:977
std::string Type() const override
Definition: gls_metadata_attributes.h:1141
DistiAttributeVertexArray(CallbackMethodCallerBase *callback, const AttributeName &name, T **attribPtr, unsigned int *numVertices)
Definition: gls_metadata_attributes.h:992
DistiAttributeVertexArray(CallbackMethodCallerBase *callback, const AttributeName &name, T *attribPtr, unsigned int numElements)
Definition: gls_metadata_attributes.h:1007
T * Tptr
Shorthand typedef for a pointer to the template type.
Definition: gls_metadata_attributes.h:976
bool _fixedArray
If true, this array is not resizable.
Definition: gls_metadata_attributes.h:979
virtual std::istream & ReadValue(std::istream &instr) override
Definition: gls_metadata_attributes.h:1057
unsigned int _numElements
The number of vertices in a fixed length array.
Definition: gls_metadata_attributes.h:978
virtual bool operator==(const DistiAttributeBase &rArg) override
Definition: gls_metadata_attributes.h:1113
bool _compatabilityMode
If true, backward compatibility mode will be used, values will be read with scanf.
Definition: gls_metadata_attributes.h:980
virtual bool OkToWrite() const override
Definition: gls_metadata_attributes.h:1025
virtual std::ostream & WriteValue(std::ostream &outstr) override
Definition: gls_metadata_attributes.h:1033
Definition: disti_metadata.h:554
std::istream & ReadValue(std::istream &instr) override
Definition: disti_metadata.h:654
std::ostream & WriteValue(std::ostream &outstr) override
Definition: disti_metadata.h:641
long ValueInt() override
Definition: disti_metadata.h:594
Definition: gls_metadata_attributes.h:2044
virtual std::istream & ReadValue(std::istream &instr) override
Definition: gls_metadata_attributes.h:2058
virtual std::ostream & WriteValue(std::ostream &outstr) override
Definition: gls_metadata_attributes.h:2052
unsigned Count() const
Definition: dynamic_array.h:218
T & Back()
Definition: dynamic_array.h:357
unsigned PushBack(const T &object)
Definition: dynamic_array.h:340
float y
The Y component.
Definition: vertex.h:88
float x
The X component.
Definition: vertex.h:87
float z
The Z component.
Definition: vertex.h:89
GlsColor color
The RGBA color component.
Definition: vertex.h:422
Definition: weak_reference.h:92
Definition: weak_reference.h:65
The disti::DisplayObject class and global enumerations.
#define GLS_VERIFY(exp)
Definition: disti_assert.h:170
The disti::DynamicArray class. A templated array of objects capable of dynamically growing.
#define DISTI_DEPRECATED(msg)
Defines whether this compiler supports the C++14 deprecated attribute.
Definition: gls_cpp_lang_support.h:457
#define DISTI_METHOD_OVERRIDE
Macro to wrap the override keyword, removed on compilers that don't support it.
Definition: gls_cpp_lang_support.h:214
A file for all GL Studio files to include.
#define GLS_EXPORT
Macro denoting which functions should be visible from the runtime library.
Definition: gls_include.h:52
The List_c class. Generic linked list.
The disti::Material class.
Force inclusion of the DirectShow library.
Definition: bmpimage.h:47
DistiAttributeProperty< Class, GetReturnT, SetArgT > * CreateDistiAttributeProperty(const AttributeName &attrName, Class *const obj, const typename DistiAttributeProperty< Class, GetReturnT, SetArgT >::SetMethodType setMethod, const typename DistiAttributeProperty< Class, GetReturnT, SetArgT >::GetMethodType getMethod)
Definition: gls_metadata_attributes.h:2012
bool Equal(T1 x, T2 y, float precision=0.001f)
Definition: util.h:495
@ TEXTURE_MAP_BLEND
Definition: display_types.h:56
@ TEXTURE_MAP_DECAL
Definition: display_types.h:55
@ TEXTURE_MAP_MODULATE
Definition: display_types.h:54
@ TEXTURE_MAP_REPLACE
Definition: display_types.h:57
@ TEXTURE_FILTER_NEAREST
Definition: display_types.h:63
@ TEXTURE_FILTER_LINEAR_MIPMAP_LINEAR
Definition: display_types.h:66
@ TEXTURE_FILTER_NEAREST_MIPMAP_NEAREST
Definition: display_types.h:65
@ TEXTURE_FILTER_LINEAR_MIPMAP_NEAREST
Definition: display_types.h:68
@ TEXTURE_FILTER_LINEAR
Definition: display_types.h:64
@ TEXTURE_FILTER_NEAREST_MIPMAP_LINEAR
Definition: display_types.h:67
@ POLY_MODE_FILLED
Definition: display_types.h:86
@ POLY_MODE_POINTS
Definition: display_types.h:84
@ POLY_MODE_OUTLINE
Definition: display_types.h:85
@ POLY_MODE_UNDEFINED
Definition: display_types.h:83
@ POLY_MODE_FILL_AND_OUTLINE
Definition: display_types.h:87
AttributeObserver * CreateAttributeFnCallback(WeakReferenceable *const obj, const std::function< void()> &func)
Definition: gls_metadata_attributes.h:2382
@ ALPHA_MODE_256_LEVEL
Definition: display_types.h:96
@ ALPHA_MODE_UNDEFINED
Definition: display_types.h:93
@ ALPHA_MODE_2_LEVEL
Definition: display_types.h:95
@ ALPHA_MODE_OPAQUE
Definition: display_types.h:94
void Disconnect(DisplayObject *obj, const std::string &resource, DistiAttributeBase::CallbackID id)
Definition: gls_metadata_attributes.h:2432
@ EMISSION_COLOR_MATERIAL
Definition: display_types.h:146
@ NO_COLOR_MATERIAL
Definition: display_types.h:142
@ DIFFUSE_COLOR_MATERIAL
Definition: display_types.h:143
@ SPECULAR_COLOR_MATERIAL
Definition: display_types.h:147
@ DIFFUSE_AND_AMBIENT_COLOR_MATERIAL
Definition: display_types.h:145
@ AMBIENT_COLOR_MATERIAL
Definition: display_types.h:144
DistiAttributeProperty< Class, Vector, const Vertex &, const Vertex & > * CreateDistiAttributePropertyVertexToVector(const AttributeName &attrName, Class *const obj, const typename DistiAttributeProperty< Class, Vector, const Vertex &, const Vertex & >::SetMethodType setMethod, const typename DistiAttributeProperty< Class, Vector, const Vertex &, const Vertex & >::GetMethodConstType getMethod)
Definition: gls_metadata_attributes.h:2030
AttributeObserver * CreateAttributeMethodCallback(Class *const obj, const typename AttributeMethodCallback< Class >::Callback method)
Definition: disti_metadata.h:462
const DistiAttributeBase::CallbackID DISTI_INVALID_CALLBACK_ID
Value to represent that a given callback was not successfully created.
Definition: gls_metadata_attributes.h:72
bool operator==(const AttributeName &attr1, const AttributeName &attr2)
Definition: disti_metadata.h:154
T ReadValueAsIntOrBool(std::istream &instr)
Definition: gls_metadata_attributes.h:96
@ PRIVATE
Definition: display_types.h:117
@ PROTECTED
Definition: display_types.h:118
@ PUBLIC
Definition: display_types.h:116
@ SHADING_FLAT
Definition: display_types.h:109
@ SHADING_GOURAUD
Definition: display_types.h:110
DistiAttributeBase::CallbackID Connect(DisplayObject *obj, const std::string &resource, Class *const methodInstance, const typename AttributeMethodCallback< Class >::Callback method)
Definition: gls_metadata_attributes.h:2416
@ POLY_OPEN
Definition: display_types.h:102
@ POLY_CLOSED
Definition: display_types.h:103
T ConvertToIntOrBool(int value)
Definition: gls_metadata_attributes.h:78
Generally useful defines, macros, enumerations and function prototypes.
The disti::Vertex class. A class for manipulating 3D vertices.