From: <rt...@us...> - 2009-03-28 00:10:49
|
Revision: 7554 http://playerstage.svn.sourceforge.net/playerstage/?rev=7554&view=rev Author: rtv Date: 2009-03-28 00:10:37 +0000 (Sat, 28 Mar 2009) Log Message: ----------- cleaned up property API Modified Paths: -------------- code/stage/trunk/libstage/model_load.cc code/stage/trunk/libstage/model_props.cc code/stage/trunk/libstage/stage.hh Modified: code/stage/trunk/libstage/model_load.cc =================================================================== --- code/stage/trunk/libstage/model_load.cc 2009-03-27 23:50:18 UTC (rev 7553) +++ code/stage/trunk/libstage/model_load.cc 2009-03-28 00:10:37 UTC (rev 7554) @@ -354,31 +354,14 @@ assert( type ); assert( value ); - //printf( "\nkey: %s type: %s value: %s\n", - // key, type, value ); - if( strcmp( type, "int" ) == 0 ) - { - int* i = new int( atoi(value) ); - SetProperty( strdup(key), (void*)i ); - } + SetPropertyInt( strdup(key), atoi(value) ); else if( strcmp( type, "float" ) == 0 ) - { - float* f = new float( strtod(value, NULL) ); - SetProperty( strdup(key), (void*)f ); - } + SetPropertyFloat( strdup(key), strtod(value, NULL) ); else if( strcmp( type, "string" ) == 0 ) - SetProperty( strdup(key), (void*)strdup(value) ); + SetPropertyStr( strdup(key), value ); else - PRINT_ERR1( "unknown database entry type \"%s\"\n", type ); - -// int* i = (int*)GetProperty( key ); -// float* f = (float*)GetProperty( key ); -// char* c = (char*)GetProperty( key ); - -// printf( "property %s has int value %d\n", key, *i ); -// printf( "property %s has float value %.2f\n", key, *f ); -// printf( "property %s has char* value %s\n", key, c ); + PRINT_ERR1( "unknown database entry type \"%s\"\n", type ); } } Modified: code/stage/trunk/libstage/model_props.cc =================================================================== --- code/stage/trunk/libstage/model_props.cc 2009-03-27 23:50:18 UTC (rev 7553) +++ code/stage/trunk/libstage/model_props.cc 2009-03-28 00:10:37 UTC (rev 7554) @@ -26,8 +26,8 @@ return g_datalist_get_data( &this->props, key ); } -int Model::SetProperty( char* key, - void* data ) +int Model::SetProperty( const char* key, + const void* data ) { // see if the key has the predefined-property prefix if( strncmp( key, MP_PREFIX, strlen(MP_PREFIX)) == 0 ) @@ -80,15 +80,74 @@ } // otherwise it's an arbitary property and we store the pointer - g_datalist_set_data( &this->props, key, data ); + g_datalist_set_data( &this->props, key, (void*)data ); return 0; // ok } -void Model::UnsetProperty( char* key ) +void Model::UnsetProperty( const char* key ) { if( strncmp( key, MP_PREFIX, strlen(MP_PREFIX)) == 0 ) PRINT_WARN1( "Attempt to unset a model core property \"%s\" has no effect", key ); else g_datalist_remove_data( &this->props, key ); } + + +bool Model::GetPropertyFloat( const char* key, float* f, float defaultval ) +{ + float* fp = (float*)GetProperty( key ); + if( fp ) + { + *f = *fp; + return true; + } + + *f = defaultval; + return false; +} + +bool Model::GetPropertyInt( const char* key, int* i, int defaultval ) +{ + int* ip = (int*)GetProperty( key ); + if( ip ) + { + *i = *ip; + return true; + } + + *i = defaultval; + return false; +} + +bool Model::GetPropertyStr( const char* key, char** c, char* defaultval ) +{ + char* cp = (char*)GetProperty( key ); + + if( cp ) + { + *c = cp; + return true; + } + + *c = defaultval; + return false; +} + +void Model::SetPropertyInt( const char* key, int i ) +{ + int* ip = new int(i); + SetProperty( key, (void*)ip ); +} + +void Model::SetPropertyFloat( const char* key, float f ) +{ + float* fp = new float(f); + SetProperty( key, (void*)fp ); +} + +void Model::SetPropertyStr( const char* key, const char* str ) +{ + SetProperty( key, (void*)strdup(str) ); +} + Modified: code/stage/trunk/libstage/stage.hh =================================================================== --- code/stage/trunk/libstage/stage.hh 2009-03-27 23:50:18 UTC (rev 7553) +++ code/stage/trunk/libstage/stage.hh 2009-03-28 00:10:37 UTC (rev 7554) @@ -2035,61 +2035,18 @@ { RemoveCallback( &hooks.save, cb ); } void AddUpdateCallback( stg_model_callback_t cb, void* user ) - { - AddCallback( &hooks.update, cb, user ); - //Subscribe(); // if attaching a callback here, assume we want updates to happen - } + { AddCallback( &hooks.update, cb, user ); } void RemoveUpdateCallback( stg_model_callback_t cb ) - { - RemoveCallback( &hooks.update, cb ); - //Unsubscribe(); - } + { RemoveCallback( &hooks.update, cb ); } /** named-property interface */ - void* GetProperty( const char* key ); - - bool GetPropertyFloat( const char* key, float* f, float defaultval ) - { - float* fp = (float*)GetProperty( key ); - if( fp ) - { - *f = *fp; - return true; - } - - *f = defaultval; - return false; - } + void* GetProperty( const char* key ); + bool GetPropertyFloat( const char* key, float* f, float defaultval ); + bool GetPropertyInt( const char* key, int* i, int defaultval ); + bool GetPropertyStr( const char* key, char** c, char* defaultval ); - bool GetPropertyInt( const char* key, int* i, int defaultval ) - { - int* ip = (int*)GetProperty( key ); - if( ip ) - { - *i = *ip; - return true; - } - - *i = defaultval; - return false; - } - - bool GetPropertyStr( const char* key, char** c, char* defaultval ) - { - char* cp = (char*)GetProperty( key ); - - if( cp ) - { - *c = cp; - return true; - } - - *c = defaultval; - return false; - } - /** @brief Set a named property of a Stage model. Set a property of a Stage model. @@ -2120,8 +2077,12 @@ stg_model_set_<property>() function definition to see the type of data required for each property. */ - int SetProperty( char* key, void* data ); - void UnsetProperty( char* key ); + int SetProperty( const char* key, const void* data ); + void SetPropertyInt( const char* key, int i ); + void SetPropertyFloat( const char* key, float f ); + void SetPropertyStr( const char* key, const char* str ); + + void UnsetProperty( const char* key ); virtual void Print( char* prefix ); virtual const char* PrintWithPose(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |