SimObjectAttributes.cpp

Go to the documentation of this file.
00001 
00009 #include "SimObjectAttributes.h"
00010 #include <string.h>
00011 
00012 SimObjectAttributes::SimObjectAttributes( shared_ptr<SimObjectAttributesDefinition> attrDef ) {
00013     this->attrDef = attrDef;
00014     attrDef->lock();
00015     this->mem = (char*)calloc( attrDef->mem_size(), 1 );
00016 }
00017 
00018 SimObjectAttributes::SimObjectAttributes( SimObjectAttributes const& attr) {
00019     this->attrDef = attr.attrDef;
00020     this->mem = (char*)calloc( attrDef->mem_size(), 1 );
00021     memcpy( this->mem, attr.mem, attrDef->mem_size() );
00022 }
00023 
00024 SimObjectAttributes::~SimObjectAttributes() {
00025     free( this->mem );
00026 }
00027 
00028 template< typename T >
00029 T SimObjectAttributes::get( string name ) const 
00030 {
00031     return *( (T*)( mem + attrDef->offset(name) ) );
00032 }
00033 
00034 template< typename T >
00035 void SimObjectAttributes::set( string name, T value )
00036 {
00037     *( (T*)( mem + attrDef->offset(name) ) ) = value;
00038 }
00039 
00040 template int SimObjectAttributes::get<int>( string name ) const;
00041 template float SimObjectAttributes::get<float>( string name ) const;
00042 template double SimObjectAttributes::get<double>( string name ) const;
00043 template long SimObjectAttributes::get<long>( string name ) const;
00044 template long long SimObjectAttributes::get<long long>( string name ) const;
00045 
00046 template void SimObjectAttributes::set<int>( string name, int value );
00047 template void SimObjectAttributes::set<float>( string name, float value );
00048 template void SimObjectAttributes::set<double>( string name, double value );
00049 template void SimObjectAttributes::set<long>( string name, long value );
00050 template void SimObjectAttributes::set<long long>( string name, long long value );
00051 

Generated on Wed Jul 9 16:34:37 2008 for PCSIM by  doxygen 1.5.5