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.