BaseData.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef SOFA_CORE_OBJECTMODEL_BASEDATA_H
00028 #define SOFA_CORE_OBJECTMODEL_BASEDATA_H
00029
00030 #if !defined(__GNUC__) || (__GNUC__ > 3 || (_GNUC__ == 3 && __GNUC_MINOR__ > 3))
00031 #pragma once
00032 #endif
00033
00034 #include <list>
00035 #include <iostream>
00036 #include <typeinfo>
00037 namespace sofa
00038 {
00039
00040 namespace core
00041 {
00042
00043 namespace objectmodel
00044 {
00045
00050 class BaseData
00051 {
00052 public:
00058 BaseData( const char* h)
00059 : help(h)
00060 , m_isSet(false), m_isDisplayed(true)
00061 {}
00062
00064 virtual ~BaseData(){}
00065
00067 virtual bool read( std::string& str ) = 0;
00068
00070 virtual void printValue( std::ostream& ) const =0;
00071
00073 virtual std::string getValueString() const=0;
00074
00076 virtual std::string getValueTypeString() const=0;
00077
00079 const char* help;
00080
00082 inline bool isSet() const { return m_isSet; }
00083
00085 inline bool isDisplayed() const { return m_isDisplayed; }
00086
00088 void setDisplayed(bool b){m_isDisplayed = b;}
00089 protected:
00091 bool m_isSet;
00093 bool m_isDisplayed;
00094
00096 static std::string decodeTypeName(const std::type_info& t);
00097
00099 template<class T>
00100 static std::string typeName(const T* = NULL)
00101 {
00102 return decodeTypeName(typeid(T));
00103 }
00104 };
00105
00106 }
00107
00108 }
00109
00110 }
00111
00112 #endif