00001
00002
00003 #ifndef ASGTOOLS_PROPERTY_H
00004 #define ASGTOOLS_PROPERTY_H
00005
00006
00007 #include <string>
00008 #include <vector>
00009
00010 class StatusCode;
00011
00021 class Property {
00022
00023 public:
00025 enum Type {
00026 UNKNOWNTYPE,
00027 BOOL,
00028 INT,
00029 FLOAT,
00030 DOUBLE,
00031 STRING,
00032 INTVECTOR,
00033 FLOATVECTOR,
00034 STRINGVECTOR,
00035 TOOLHANDLE,
00036 TOOLHANDLEARRAY
00037 };
00038
00040 typedef std::vector< int > IntVector;
00042 typedef std::vector< float > FloatVector;
00044 typedef std::vector< std::string > StringVector;
00045
00047 static const std::string& name( Type type );
00048
00050 Property();
00052 Property( Type type );
00054 virtual ~Property() {}
00055
00058 bool isValid() const;
00059
00061 Type type() const;
00062
00064 const std::string& typeName() const;
00065
00066
00067
00068
00069 virtual int setFrom( const Property& rhs );
00070
00071
00077 virtual StatusCode getString (std::string& result) const;
00078
00085 virtual StatusCode setString (const std::string& value);
00086
00087
00088 private:
00090 Type m_type;
00091
00092 };
00093
00094 #endif // ASGTOOLS_PROPERTY_H