40 #ifndef _GLS_METADATA_ATTRIBUTES_H 
   41 #define _GLS_METADATA_ATTRIBUTES_H 
   75     *_attribPtr = ( val != 0 );
 
   82     outstr << *_attribPtr;
 
   89 T ConvertToIntOrBool( 
int value )
 
   94 inline bool ConvertToIntOrBool( 
int value )
 
  100 T ReadValueAsIntOrBool( std::istream& instr )
 
  105     if( strcasecmp( value.c_str(), 
"TRUE" ) == 0 )
 
  109     else if( strcasecmp( value.c_str(), 
"FALSE" ) == 0 )
 
  116         temp = ConvertToIntOrBool<T>( atoi( value.c_str() ) );
 
  124     *_attribPtr = ReadValueAsIntOrBool<bool>( instr );
 
  135     *_attribPtr = (int)val;
 
  145     *_attribPtr = (short)val;
 
  155     *_attribPtr = (
unsigned short)val;
 
  165     *_attribPtr = (
unsigned char)val;
 
  173     outstr << (int)*_attribPtr;
 
  182     *_attribPtr = 
static_cast<unsigned char>( ReadValueAsIntOrBool<int>( instr ) );
 
  191     *_attribPtr = ReadValueAsIntOrBool<int>( instr );
 
  200     *_attribPtr = ReadValueAsIntOrBool<unsigned int>( instr );
 
  212     *_attribPtr = (float)val;
 
  228     virtual GLS_EXPORT 
long ValueInt();
 
  229     virtual GLS_EXPORT 
void ValueInt( 
long val );
 
  231     virtual GLS_EXPORT std::ostream& WriteValue( std::ostream& outstr );
 
  232     virtual GLS_EXPORT std::istream& ReadValue( std::istream& instr );
 
  244     virtual GLS_EXPORT ~DistiAttributeFloatArray();
 
  246     virtual GLS_EXPORT 
bool OkToWrite() 
const;
 
  248     virtual GLS_EXPORT std::ostream& WriteValue( std::ostream& outstr );
 
  249     virtual GLS_EXPORT std::istream& ReadValue( std::istream& instr );
 
  261     virtual GLS_EXPORT ~DistiAttributeDoubleArray();
 
  263     virtual GLS_EXPORT 
bool OkToWrite() 
const;
 
  265     virtual GLS_EXPORT std::ostream& WriteValue( std::ostream& outstr );
 
  266     virtual GLS_EXPORT std::istream& ReadValue( std::istream& instr );
 
  278 template<
class containerClass>
 
  283     using _BaseClass::_pairList;
 
  285     typedef void ( containerClass::*SetMethodType )( 
const int );
 
  286     typedef int ( containerClass::*GetMethodType )();
 
  291         _pairList = &TextureModeEnumList;
 
  306 template<
class containerClass>
 
  311     using _BaseClass::_pairList;
 
  313     typedef void ( containerClass::*SetMethodType )( 
const int );
 
  314     typedef int ( containerClass::*GetMethodType )();
 
  319         _pairList = &TextureFilterEnumList;
 
  333 template<
class containerClass>
 
  338     using _BaseClass::_pairList;
 
  340     typedef void ( containerClass::*SetMethodType )( 
const int );
 
  341     typedef int ( containerClass::*GetMethodType )();
 
  346         _pairList = &PolyModeEnumList;
 
  357 template<
class containerClass>
 
  362     using _BaseClass::_pairList;
 
  364     typedef void ( containerClass::*SetMethodType )( int );
 
  365     typedef int ( containerClass::*GetMethodType )();
 
  370         _pairList = &PolyEndEnumList;
 
  381 template<
class containerClass>
 
  386     using _BaseClass::_pairList;
 
  388     typedef void ( containerClass::*SetMethodType )( 
const int );
 
  389     typedef int ( containerClass::*GetMethodType )();
 
  394         _pairList = &ShadingEnumList;
 
  399 template<
class containerClass>
 
  404     using _BaseClass::_pairList;
 
  406     typedef void ( containerClass::*SetMethodType )( 
const int );
 
  407     typedef int ( containerClass::*GetMethodType )();
 
  421         _pairList = &ColorMaterialModeEnum;
 
  424     virtual GLS_EXPORT 
bool OkToWrite()
 const { 
return false; }
 
  428 template<
class containerClass>
 
  433     using _BaseClass::_pairList;
 
  435     typedef void ( containerClass::*SetMethodType )( 
const int );
 
  436     typedef int ( containerClass::*GetMethodType )();
 
  446         _pairList = &ProtectionEnumList;
 
  459 template<
class containerClass>
 
  464     using _BaseClass::_pairList;
 
  466     typedef void ( containerClass::*SetMethodType )( 
const int );
 
  467     typedef int ( containerClass::*GetMethodType )();
 
  472         _pairList = &AlphaModeEnumList;
 
  492     virtual GLS_EXPORT ~DistiAttributeString();
 
  495     GLS_EXPORT 
char*        LocalStorageString();
 
  496     virtual GLS_EXPORT 
bool OkToWrite() 
const;
 
  498     virtual GLS_EXPORT std::ostream& WriteValue( std::ostream& outstr );
 
  499     virtual GLS_EXPORT std::istream& ReadValue( std::istream& instr );
 
  515     virtual GLS_EXPORT std::string ValueString();
 
  516     virtual GLS_EXPORT 
void        ValueString( 
const std::string& s );
 
  518     virtual GLS_EXPORT std::ostream& WriteValue( std::ostream& outstr );
 
  519     virtual GLS_EXPORT std::istream& ReadValue( std::istream& instr );
 
  533     virtual GLS_EXPORT 
bool OkToWrite() 
const;
 
  537     virtual GLS_EXPORT std::string ValueString();
 
  538     virtual GLS_EXPORT 
void        ValueString( 
const std::string& s );
 
  540     virtual GLS_EXPORT std::ostream& WriteValue( std::ostream& outstr );
 
  541     virtual GLS_EXPORT std::istream& ReadValue( std::istream& instr );
 
  551     virtual GLS_EXPORT ~DistiAttributeFixedString();
 
  553     virtual GLS_EXPORT std::ostream& WriteValue( std::ostream& outstr );
 
  554     virtual GLS_EXPORT std::istream& ReadValue( std::istream& instr );
 
  560     std::string _localStorageString;
 
  568     virtual GLS_EXPORT ~DistiAttributeStdString();
 
  571     GLS_EXPORT std::string* LocalStorageString();
 
  573     virtual GLS_EXPORT 
bool OkToWrite() 
const;
 
  575     virtual GLS_EXPORT std::ostream& WriteValue( std::ostream& outstr );
 
  576     virtual GLS_EXPORT std::istream& ReadValue( std::istream& instr );
 
  584     virtual GLS_EXPORT ~DistiAttributeLocation();
 
  586     virtual GLS_EXPORT std::ostream& WriteValue( std::ostream& outstr );
 
  587     virtual GLS_EXPORT std::istream& ReadValue( std::istream& instr );
 
  599     virtual GLS_EXPORT 
bool OkToWrite() 
const;
 
  602     virtual GLS_EXPORT std::ostream& WriteValue( std::ostream& outstr );
 
  603     virtual GLS_EXPORT std::istream& ReadValue( std::istream& instr );
 
  617     virtual GLS_EXPORT 
bool OkToWrite() 
const;
 
  620     virtual GLS_EXPORT std::ostream& WriteValue( std::ostream& outstr );
 
  621     virtual GLS_EXPORT std::istream& ReadValue( std::istream& instr );
 
  629 template<
class Map_t>
 
  639         , _attribPtr( attribPtr )
 
  645         , _attribPtr( 
new Map_t() )
 
  658         return _attribPtr != 0 && _attribPtr->size();
 
  661     static std::string GetEmptyValue() { 
return "$$DISTI_EMPTY$$"; }
 
  666                << DistiAttribDict::SpacingString() << 
"{\n";
 
  667         DistiAttribDict::SpacingInc();
 
  671             typename Map_t::iterator i;
 
  672             for( i = _attribPtr->begin(); i != _attribPtr->end(); ++i )
 
  674                 std::ostringstream str;
 
  676                 const std::string second = str.str();
 
  678                 outstr << DistiAttribDict::SpacingString() << i->first << 
" " 
  679                        << ( second.empty() ? GetEmptyValue() : second ) << 
'\n';
 
  683         DistiAttribDict::SpacingDec();
 
  684         outstr << DistiAttribDict::SpacingString() << 
"}\n";
 
  691         instr.ignore( INT_MAX, 
'{' );
 
  695             std::stringstream fontStream;
 
  696             instr.get( *fontStream.rdbuf(), 
'}' );
 
  700                 while( fontStream.good() )
 
  704                     std::stringstream::char_type c;
 
  712                     } 
while( fontStream.good() && isspace( c ) );
 
  714                     if( fontStream.good() )
 
  716                         fontStream.putback( c );
 
  718 #if _WIN32 && _MSC_VER < 1300 // if _MSC_VER < vc70 
  720                         Map_t::referent_type value;
 
  722                         typename Map_t::key_type    key;
 
  723                         typename Map_t::mapped_type value;
 
  727                         std::getline( fontStream >> std::ws, strVal );
 
  729                         if( strVal != GetEmptyValue() )
 
  731                             std::istringstream str( strVal );
 
  735                         ( *_attribPtr )[ key ] = value;
 
  753     unsigned int* _numVertices;
 
  754     unsigned int  _numElements;
 
  756     bool          _compatabilityMode;
 
  759     void SetCompatabilityMode( 
bool mode ) { _compatabilityMode = mode; }
 
  763         , _attribPtr( attribPtr )
 
  764         , _numVertices( numVertices )
 
  766         , _fixedArray( 
false )
 
  768         _compatabilityMode = 
true;
 
  773         , _attribPtr( 
new Tptr( attribPtr ) )
 
  774         , _numVertices( NULL )
 
  775         , _numElements( numElements )
 
  776         , _fixedArray( 
true )
 
  778         _compatabilityMode = 
true;
 
  783         if( ( _fixedArray || _localStorage ) && _attribPtr )
 
  790         return ( *_attribPtr != NULL );
 
  795         if( *_attribPtr != NULL )
 
  797             unsigned int numVerts = _numElements;
 
  800                 outstr << *_numVertices;
 
  801                 numVerts = *_numVertices;
 
  803             DistiAttribDict::SpacingInc();
 
  804             for( 
unsigned int i = 0; i < numVerts; i++ )
 
  807                 outstr << ( *_attribPtr )[ i ];
 
  809             DistiAttribDict::SpacingDec();
 
  815         unsigned int numVerts = _numElements;
 
  820             *_numVertices = numVerts;
 
  823             if( *_attribPtr != NULL )
 
  824                 delete[] * _attribPtr;
 
  828                 *_attribPtr = 
new T[ numVerts ];
 
  833         if( !_compatabilityMode )
 
  837             instr.getline( buf, 1024 );
 
  840         for( 
unsigned int i = 0; i < numVerts; i++ )
 
  842             if( !_compatabilityMode )
 
  845                 instr.getline( buf, 1024 );
 
  849                     sscanf( buf, 
"%f %f %f",
 
  850                         &( ( *_attribPtr )[ i ].x ),
 
  851                         &( ( *_attribPtr )[ i ].y ),
 
  852                         &( ( *_attribPtr )[ i ].z ) );
 
  854                 assert( 3 == count );
 
  859                 instr >> ( *_attribPtr )[ i ];
 
  871             return DistiAttributeBase::operator==( rArg );
 
  874         if( !( _name == r->
_name ) || _numElements != r->_numElements )
 
  877         for( 
unsigned int i = 0u; i < _numElements; ++i )
 
  879             T leftVert  = ( *_attribPtr )[ i ];
 
  880             T rightVert = ( *r->_attribPtr )[ i ];
 
  898     unsigned int*   _numVertices;
 
  899     unsigned int    _numElements;
 
  901     bool            _compatabilityMode;
 
  904     void SetCompatabilityMode( 
bool mode ) { _compatabilityMode = mode; }
 
  908         , _attribPtr( attribPtr )
 
  909         , _numVertices( numVertices )
 
  911         , _fixedArray( 
false )
 
  913         _compatabilityMode = 
true;
 
  918         , _attribPtr( 
new Tptr( attribPtr ) )
 
  919         , _numVertices( NULL )
 
  920         , _numElements( numElements )
 
  921         , _fixedArray( 
true )
 
  923         _compatabilityMode = 
true;
 
  928         if( ( _fixedArray || _localStorage ) && _attribPtr )
 
  935         return ( *_attribPtr != NULL );
 
  940         if( *_attribPtr != NULL )
 
  942             unsigned int numVerts = _numElements;
 
  945                 outstr << *_numVertices;
 
  946                 numVerts = *_numVertices;
 
  948             DistiAttribDict::SpacingInc();
 
  949             for( 
unsigned int i = 0; i < numVerts; i++ )
 
  952                 outstr << ( *_attribPtr )[ i ];
 
  954             DistiAttribDict::SpacingDec();
 
  960         unsigned int numVerts = _numElements;
 
  965             *_numVertices = numVerts;
 
  968             if( *_attribPtr != NULL )
 
  969                 delete[] * _attribPtr;
 
  972             *_attribPtr = 
new Vertex[ numVerts ];
 
  975         if( !_compatabilityMode )
 
  979             instr.getline( buf, 1024 );
 
  982         for( 
unsigned int i = 0; i < numVerts; i++ )
 
  984             if( !_compatabilityMode )
 
  987                 instr.getline( buf, 1024 );
 
  992                     sscanf( buf, 
"%f %f %f %d %d %d %d",
 
  993                         &( ( *_attribPtr )[ i ].x ),
 
  994                         &( ( *_attribPtr )[ i ].y ),
 
  995                         &( ( *_attribPtr )[ i ].z ),
 
  998                 assert( 7 == count );
 
 1001                 ( *_attribPtr )[ i ].color.RGBA( (
unsigned char)r, (
unsigned char)g, (
unsigned char)b, (
unsigned char)a );
 
 1005                 instr >> ( *_attribPtr )[ i ];
 
 1017             return DistiAttributeBase::operator==( rArg );
 
 1020         if( !( _name == r->
_name ) || _numElements != r->_numElements )
 
 1023         for( 
unsigned int i = 0u; i < _numElements; ++i )
 
 1025             Vertex leftVert  = ( *_attribPtr )[ i ];
 
 1026             Vertex rightVert = ( *r->_attribPtr )[ i ];
 
 1051         unsigned int numVerts = _numElements;
 
 1053         for( 
unsigned int i = 0; i < numVerts; i++ )
 
 1055             outstr << std::endl;
 
 1056             outstr << ( *_attribPtr )[ i ];
 
 1063         unsigned int numVerts = _numElements;
 
 1065         for( 
unsigned int i = 0; i < numVerts; i++ )
 
 1073             std::getline( instr, line );
 
 1075             if( i == 0 && line.length() == 0 )
 
 1076                 std::getline( instr, line );
 
 1078             std::stringstream strm( line );
 
 1079             strm >> ( *_attribPtr )[ i ];
 
 1115         , _originalAttribName( originalName )
 
 1116         , _dictionary( dict )
 
 1121     virtual DISTI_EXPORT 
bool OkToWrite() 
const DISTI_METHOD_OVERRIDE;
 
 1124     virtual DISTI_EXPORT 
bool ValueChanged() DISTI_METHOD_OVERRIDE;
 
 1127     virtual DISTI_EXPORT 
void ResetValueChanged() DISTI_METHOD_OVERRIDE;
 
 1130     virtual DISTI_EXPORT std::string ValueString() DISTI_METHOD_OVERRIDE;
 
 1133     virtual DISTI_EXPORT 
void ValueString( 
const std::string& s ) DISTI_METHOD_OVERRIDE;
 
 1136     virtual DISTI_EXPORT 
long ValueInt() DISTI_METHOD_OVERRIDE;
 
 1139     virtual DISTI_EXPORT 
void ValueInt( 
long val ) DISTI_METHOD_OVERRIDE;
 
 1142     virtual DISTI_EXPORT 
double ValueFloat() DISTI_METHOD_OVERRIDE;
 
 1145     virtual DISTI_EXPORT 
void ValueFloat( 
double val ) DISTI_METHOD_OVERRIDE;
 
 1148     virtual DISTI_EXPORT std::ostream& WriteValue( std::ostream& outstr ) DISTI_METHOD_OVERRIDE;
 
 1151     virtual DISTI_EXPORT std::istream& ReadValue( std::istream& instr ) DISTI_METHOD_OVERRIDE;
 
 1154     virtual DISTI_EXPORT 
bool operator==( 
const DistiAttributeBase& r ) DISTI_METHOD_OVERRIDE;
 
 1159     virtual DISTI_EXPORT 
void UnregisterObserver( 
CallbackID id ) DISTI_METHOD_OVERRIDE;
 
 1161     virtual DISTI_EXPORT 
void NotifyObservers() DISTI_METHOD_OVERRIDE;
 
 1172 template<
class T, 
bool showIndex >
 
 1180         , _attribPtr( attribPtr )
 
 1186         , _attribPtr( 
new T() )
 
 1198         return ( _attribPtr != NULL && _attribPtr->Size() );
 
 1203         if( _attribPtr != NULL )
 
 1205             int numEntries = _attribPtr->Count();
 
 1206             outstr << numEntries;
 
 1208             DistiAttribDict::SpacingInc();
 
 1210             for( 
int i = 0; i < numEntries; i++ )
 
 1212                 outstr << std::endl;
 
 1216                     outstr << DistiAttribDict::SpacingString() << i << 
"    ";
 
 1219                 outstr << DistiAttribDict::SpacingString() << ( *_attribPtr )[ i ] << 
" ";
 
 1221             DistiAttribDict::SpacingDec();
 
 1228         instr >> numEntries;
 
 1230         _attribPtr->Count( numEntries ); 
 
 1232         for( 
int i = 0; i < numEntries; i++ )
 
 1239             instr >> ( *_attribPtr )[ entry ];
 
 1250 template<
class T, 
bool showIndex >
 
 1261         , _attribPtr( attribPtr )
 
 1268         , _attribPtr( 
new T() )
 
 1283         return ( _attribPtr != NULL && _attribPtr->size() );
 
 1288         if( _attribPtr != NULL )
 
 1290             int numEntries = _attribPtr->size();
 
 1291             outstr << numEntries;
 
 1293             DistiAttribDict::SpacingInc();
 
 1295             for( 
int i = 0; i < numEntries; i++ )
 
 1297                 outstr << std::endl;
 
 1301                     outstr << DistiAttribDict::SpacingString() << i << 
"    ";
 
 1304                 outstr << DistiAttribDict::SpacingString() << ( *_attribPtr )[ i ] << 
" ";
 
 1306             DistiAttribDict::SpacingDec();
 
 1313         if( _attribPtr != NULL )
 
 1316             instr >> numEntries;
 
 1318             _attribPtr->resize( numEntries ); 
 
 1320             for( 
int i = 0; i < numEntries; i++ )
 
 1327                 instr >> ( *_attribPtr )[ entry ];
 
 1344     typedef T* ( *CreateItemCb )();
 
 1348     CreateItemCb      _createCb;
 
 1355         , _createCb( createCb )
 
 1365                << DistiAttribDict::SpacingString() << 
"{\n";
 
 1366         DistiAttribDict::SpacingInc();
 
 1367         for( 
unsigned int i = 0; i < _array->
Count(); i++ )
 
 1369             if( ( *_array )[ i ] )
 
 1371                 outstr << DistiAttribDict::SpacingString();
 
 1373                 ( ( *_array )[ i ] )->WriteValue( outstr );
 
 1377         DistiAttribDict::SpacingDec();
 
 1378         outstr << DistiAttribDict::SpacingString() << 
"}\n";
 
 1386         while( DistiAttribDict::ScanToken( instr, buf ) )
 
 1396                 T* temp = 
dynamic_cast<T*
>( _createCb() );
 
 1400                     ( *_array )[ _array->
Count() - 1 ]->ReadValue( instr );
 
 1417 template<
class containerT, 
class T, 
class SetArgT = const T&>
 
 1422     typedef void ( containerT::*SetMethodType )( SetArgT );
 
 1423     typedef T ( containerT::*GetMethodType )();
 
 1424     typedef T ( containerT::*GetMethodConstType )() 
const;
 
 1428     containerT*   _container;
 
 1429     SetMethodType _setMethod;
 
 1430     GetMethodType _getMethod;
 
 1434         : _BaseClass( NULL, name, attribPtr )
 
 1436         , _container( frame )
 
 1437         , _setMethod( setMethod )
 
 1438         , _getMethod( getMethod )
 
 1441         if( 
typeid( T ) == 
typeid( 
float ) || 
typeid( T ) == 
typeid( 
double ) || 
typeid( T ) == 
typeid( 
long double ) )
 
 1449         return ( this->_attribPtr || _getMethod );
 
 1454     virtual std::string 
ValueString() DISTI_METHOD_OVERRIDE { 
return DistiAttributeBase::ValueString(); }
 
 1455     virtual void        ValueString( 
const std::string& s ) DISTI_METHOD_OVERRIDE { DistiAttributeBase::ValueString( s ); }
 
 1457     virtual long ValueInt() DISTI_METHOD_OVERRIDE { 
return DistiAttributeBase::ValueInt(); }
 
 1458     virtual void ValueInt( 
long val ) DISTI_METHOD_OVERRIDE { DistiAttributeBase::ValueInt( val ); }
 
 1460     virtual double ValueFloat() DISTI_METHOD_OVERRIDE { 
return DistiAttributeBase::ValueFloat(); }
 
 1461     virtual void   ValueFloat( 
double val ) DISTI_METHOD_OVERRIDE { DistiAttributeBase::ValueFloat( val ); }
 
 1463     virtual std::ostream& 
WriteValue( std::ostream& outstr ) DISTI_METHOD_OVERRIDE
 
 1465         if( _precision > 0 )
 
 1466             outstr.precision( 
int( _precision ) );
 
 1468         if( _getMethod && _container )
 
 1471             T* tempAttribPtr = this->_attribPtr;
 
 1474             T temp( ( _container->*_getMethod )() );
 
 1477             this->_attribPtr = &temp;
 
 1480             _BaseClass::WriteValue( outstr );
 
 1483             this->_attribPtr = tempAttribPtr;
 
 1485         else if( this->_attribPtr )
 
 1487             _BaseClass::WriteValue( outstr );
 
 1493     virtual std::istream& 
ReadValue( std::istream& instr ) DISTI_METHOD_OVERRIDE
 
 1495         if( _setMethod && _container )
 
 1498             T* tempAttribPtr = this->_attribPtr;
 
 1502             this->_attribPtr = &temp;
 
 1505             _BaseClass::ReadValue( instr );
 
 1508             ( _container->*_setMethod )( temp );
 
 1510             this->_attribPtr = tempAttribPtr;
 
 1512         else if( this->_attribPtr )
 
 1514             _BaseClass::ReadValue( instr );
 
 1522         if( _getMethod && _container )
 
 1525             return ( _container->*_getMethod )();
 
 1527         else if( this->_attribPtr )
 
 1529             return _BaseClass::Value();
 
 1537     virtual void Value( 
const T& val ) DISTI_METHOD_OVERRIDE 
 
 1539         if( _setMethod && _container )
 
 1541             ( _container->*_setMethod )( val );
 
 1543         else if( this->_attribPtr )
 
 1545             _BaseClass::Value( val );
 
 1562 template<
typename Type, 
class Class>
 
 1573 template<
typename Type, 
class Class>
 
 1585 template<
typename Type, 
class Class>
 
 1596 template<
typename Type, 
class Class>
 
 1606 template<
typename Type, 
class Class>
 
 1617 template<
typename Type, 
class Class>
 
 1654 template<
class enumType>
 
 1658     enumType* _attribPtr;
 
 1665         , _attribPtr( attribPtr )
 
 1666         , _pairList( pairList )
 
 1671         , _attribPtr( 
new enumType( value ) )
 
 1672         , _pairList( pairList )
 
 1678         if( _localStorage && _attribPtr )
 
 1684     virtual void ValueInt( 
long val ) { *_attribPtr = (enumType)val; };
 
 1691             *_attribPtr = ( enumType ) * ( ptr->_attribPtr );
 
 1696             return DistiAttributeBase::operator=( oldClass );
 
 1702         bool foundIt = 
false;
 
 1704         typename DistiAttributeEnumDefList::iterator item = _pairList->begin();
 
 1705         while( item != _pairList->end() )
 
 1707             if( ( *item )->_enum == *_attribPtr )
 
 1709                 outstr << ( *item )->_string;
 
 1718             outstr << (int)*_attribPtr;
 
 1730         bool                                         foundIt = 
false;
 
 1731         typename DistiAttributeEnumDefList::iterator item    = _pairList->begin();
 
 1734         while( item != _pairList->end() )
 
 1736             if( strcmp( ( *item )->_string, value ) == 0 )
 
 1738                 *_attribPtr = ( enumType )( *item )->_enum;
 
 1750             *_attribPtr = (enumType)atoi( value );
 
 1777 #define DISTI_REGISTER_METHOD_CALLBACK( instance, Class, Method )                                             \ 
 1779         typedef CallbackMethodCallerTemplate<Class, Class> Caller;                                            \ 
 1780         typedef typename Caller::MethodType1               MethodType;                                        \ 
 1781         const MethodType                                   callback = reinterpret_cast<MethodType>( Method ); \ 
 1782         ThisClass::CallbackCaller( new Caller( callback, instance ) );                                        \ 
 1792 #define DISTI_SET_OBJECT_CALLBACK1( object, method, parent )            \ 
 1793     ( object )->CallbackCaller(                                         \ 
 1794         new CallbackMethodCallerTemplate<DisplayObject, DisplayObject>( \ 
 1795             ( disti::CallbackMethodCallerTemplate<DisplayObject, DisplayObject>::MethodType1 )( method ), ( parent ) ) ); 
 1806 #define DISTI_ADD_ATTRIBUTE( Type, name, memberVarAddr )                                        \ 
 1808         static const AttributeName           attr( name );                                      \ 
 1809         CallbackAttributeNotifier<ThisClass> cb( this, attr );                                  \ 
 1810         this->Attributes().Add( new DistiAttribute<Type>( &cb, ( attr ), ( memberVarAddr ) ) ); \ 
 1825 #define DISTI_ADD_ATTRIBUTE_CALLBACK( Type, name, memberVarAddr, callbackFunction )                          \ 
 1827         typedef void ( ThisClass::*Method )();                                  \ 
 1828         static const AttributeName           attr( name );                                                   \ 
 1829         CallbackAttributeNotifier<ThisClass> cb( this, attr, reinterpret_cast<Method>( callbackFunction ) ); \ 
 1830         this->Attributes().Add( new DistiAttribute<Type>( &cb, ( attr ), ( memberVarAddr ) ) );              \ 
 1843 #define DISTI_ADD_ATTRIBUTE_SET_GET( Type, name, setter, getter )                                   \ 
 1845         static const AttributeName attr( name );                                                    \ 
 1846         this->Attributes().Add( CreateDistiAttributeProperty<Type>( attr, this, setter, getter ) ); \ 
 1856 #define DISTI_ADD_ATTRIBUTE_STRING( name, memberVarAddr )                                         \ 
 1858         static const AttributeName           attr( name );                                        \ 
 1859         CallbackAttributeNotifier<ThisClass> cb( this, attr );                                    \ 
 1860         this->Attributes().Add( new DistiAttributeEncodedStdString( &cb, attr, memberVarAddr ) ); \ 
 1872 #define DISTI_ADD_ATTRIBUTE_STRING_CALLBACK( name, memberVarAddr, callbackFunction )                         \ 
 1874         typedef void ( ThisClass::*Method )();                                  \ 
 1875         static const AttributeName           attr( name );                                                   \ 
 1876         CallbackAttributeNotifier<ThisClass> cb( this, attr, reinterpret_cast<Method>( callbackFunction ) ); \ 
 1877         this->Attributes().Add( new DistiAttributeEncodedStdString( &cb, attr, memberVarAddr ) );            \ 
Definition: display_types.h:75
Definition: gls_metadata_attributes.h:237
Definition: gls_metadata_attributes.h:580
Definition: gls_metadata_attributes.h:254
Definition: display_types.h:100
virtual std::ostream & WriteValue(std::ostream &outstr)
Definition: gls_metadata_attributes.h:1362
Definition: display_types.h:73
virtual std::istream & ReadValue(std::istream &instr)
Definition: gls_metadata_attributes.h:1225
Definition: gls_metadata_attributes.h:1631
virtual std::ostream & WriteValue(std::ostream &outstr)
Definition: gls_metadata_attributes.h:793
virtual std::ostream & WriteValue(std::ostream &outstr)
Definition: gls_metadata_attributes.h:1049
The disti::Material class. 
Definition: gls_metadata_attributes.h:558
virtual std::istream & ReadValue(std::istream &instr)
Definition: gls_metadata_attributes.h:813
Definition: gls_metadata_attributes.h:279
virtual std::ostream & WriteValue(std::ostream &outstr)
Definition: gls_metadata_attributes.h:938
virtual std::istream & ReadValue(std::istream &instr)
Definition: gls_metadata_attributes.h:1061
DistiAttributeProperty< Class, Type, const Type & > * CreateDistiAttributeProperty(const AttributeName &attrName, Class *const obj, const typename DistiAttributeProperty< Class, Type, const Type & >::SetMethodType setMethod, const typename DistiAttributeProperty< Class, Type, const Type & >::GetMethodConstType getMethod)
Definition: gls_metadata_attributes.h:1618
The disti::DynamicArray class. A templated array of objects capable of dynamically growing...
Definition: gls_metadata_attributes.h:1251
Definition: gls_metadata_attributes.h:220
Definition: gls_metadata_attributes.h:460
Definition: gls_metadata_attributes.h:382
Definition: display_types.h:152
Definition: gls_metadata_attributes.h:505
Definition: gls_metadata_attributes.h:630
virtual long ValueInt()
Definition: gls_metadata_attributes.h:1683
Definition: display_types.h:150
Definition: display_types.h:91
virtual bool OkToWrite() const 
Definition: gls_metadata_attributes.h:656
virtual bool OkToWrite() const 
Definition: gls_metadata_attributes.h:1196
Definition: display_types.h:103
Definition: gls_metadata_attributes.h:1655
Definition: display_types.h:92
virtual std::ostream & WriteValue(std::ostream &outstr)
Definition: disti_metadata.h:576
virtual bool operator==(const DistiAttributeBase &rArg)
Definition: gls_metadata_attributes.h:1012
virtual T Value()
Definition: gls_metadata_attributes.h:1520
Definition: gls_metadata_attributes.h:1040
virtual std::istream & ReadValue(std::istream &instr)
Definition: disti_metadata.h:590
virtual std::ostream & WriteValue(std::ostream &outstr)
Definition: gls_metadata_attributes.h:663
virtual std::istream & ReadValue(std::istream &instr)
Definition: gls_metadata_attributes.h:1311
Definition: display_types.h:102
virtual std::string ValueString()
Definition: gls_metadata_attributes.h:1454
void InsertObject(const T &obj, unsigned int loc)
Definition: dynamic_array.h:225
Definition: display_types.h:110
A file for all GL Studio files to include. 
Definition: display_types.h:63
Definition: display_types.h:116
The disti::DisplayObject class and global enumerations. 
Definition: gls_metadata_attributes.h:893
virtual void ValueString(const std::string &s)
Definition: gls_metadata_attributes.h:1455
unsigned int CallbackID
Type for unique identifiers. 
Definition: disti_metadata.h:330
Definition: display_types.h:90
Definition: gls_metadata_attributes.h:1173
Definition: gls_metadata_attributes.h:1341
virtual std::istream & ReadValue(std::istream &instr)
Definition: gls_metadata_attributes.h:1381
Definition: gls_metadata_attributes.h:307
virtual bool OkToWrite() const 
Definition: gls_metadata_attributes.h:424
Definition: gls_metadata_attributes.h:1110
Definition: display_types.h:101
Definition: disti_metadata.h:898
Definition: display_types.h:123
virtual void ValueInt(long val)
Definition: gls_metadata_attributes.h:1684
The List_c class. Generic linked list. 
virtual std::ostream & WriteValue(std::ostream &outstr)
Definition: gls_metadata_attributes.h:1640
void Count(const unsigned int count)
Definition: dynamic_array.h:115
virtual void Add(DistiAttributeBase *attr)
Definition: display_types.h:151
Definition: display_types.h:64
Definition: display_types.h:62
Definition: gls_metadata_attributes.h:1091
Definition: disti_metadata.h:476
The disti::Vertex class. A class for manipulating 3D vertices. 
Generally useful defines, macros, enumerations and function prototypes. 
Definition: gls_metadata_attributes.h:1418
Definition: gls_metadata_attributes.h:429
virtual std::ostream & WriteValue(std::ostream &outstr)
Definition: gls_metadata_attributes.h:1700
Definition: disti_metadata.h:174
virtual long ValueInt()
Definition: disti_metadata.h:531
virtual std::ostream & WriteValue(std::ostream &outstr)
Definition: gls_metadata_attributes.h:1463
virtual std::istream & ReadValue(std::istream &instr)
Definition: gls_metadata_attributes.h:958
Definition: disti_metadata.h:157
Definition: display_types.h:61
Definition: gls_metadata_attributes.h:478
virtual double ValueFloat()
Definition: gls_metadata_attributes.h:1460
Definition: disti_metadata.h:667
Definition: disti_metadata.h:886
Definition: callback_caller_base.h:55
virtual bool OkToWrite() const 
Definition: gls_metadata_attributes.h:1360
virtual std::istream & ReadValue(std::istream &instr)
Definition: gls_metadata_attributes.h:1645
Definition: display_types.h:94
virtual std::istream & ReadValue(std::istream &instr)
Definition: gls_metadata_attributes.h:1493
bool Equal(T1 x, T2 y, float precision=0.001f)
Definition: util.h:228
Definition: display_types.h:71
virtual std::ostream & WriteValue(std::ostream &outstr)
Definition: gls_metadata_attributes.h:1201
virtual bool OkToWrite() const 
Definition: gls_metadata_attributes.h:1447
Definition: display_types.h:149
Definition: gls_metadata_attributes.h:591
AttributeName _name
Definition: disti_metadata.h:181
virtual long ValueInt()
Definition: gls_metadata_attributes.h:1457
virtual bool OkToWrite() const 
Definition: gls_metadata_attributes.h:933
Definition: display_types.h:117
virtual void ValueFloat(double val)
Definition: gls_metadata_attributes.h:1461
virtual std::istream & ReadValue(std::istream &instr)
Definition: gls_metadata_attributes.h:689
virtual std::ostream & WriteValue(std::ostream &outstr)
Definition: gls_metadata_attributes.h:1286
Definition: display_types.h:93
Definition: gls_metadata_attributes.h:544
Definition: gls_metadata_attributes.h:748
Definition: display_types.h:74
virtual DistiAttributeBase & operator=(const DistiAttributeBase &oldClass)
Definition: gls_metadata_attributes.h:1686
Definition: display_types.h:70
virtual void Value(const T &val)
Definition: gls_metadata_attributes.h:1537
Definition: display_types.h:72
virtual bool OkToWrite() const 
Definition: gls_metadata_attributes.h:1103
virtual std::istream & ReadValue(std::istream &instr)
Definition: gls_metadata_attributes.h:1724
Definition: gls_metadata_attributes.h:607
Definition: gls_metadata_attributes.h:400
Definition: gls_metadata_attributes.h:525
Definition: display_types.h:153
Definition: gls_metadata_attributes.h:334
Definition: disti_metadata.h:79
Definition: display_types.h:125
Definition: display_types.h:124
Definition: gls_metadata_attributes.h:358
unsigned int Size() const 
Definition: dynamic_array.h:133
Definition: bmpimage.h:46
Definition: display_types.h:148
virtual void ValueInt(long val)
Definition: gls_metadata_attributes.h:1458
virtual bool OkToWrite() const 
Definition: gls_metadata_attributes.h:1281
virtual bool operator==(const DistiAttributeBase &rArg)
Definition: gls_metadata_attributes.h:866
Definition: display_types.h:109
virtual bool OkToWrite() const 
Definition: gls_metadata_attributes.h:788