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
00028 #ifndef CSimpleDatabase_H
00029 #define CSimpleDatabase_H
00030
00031 #include <mrpt/utils/utils_defs.h>
00032 #include <mrpt/utils/CSerializable.h>
00033
00034 namespace mrpt
00035 {
00036 namespace utils
00037 {
00038
00039
00040 DEFINE_SERIALIZABLE_PRE( CSimpleDatabase )
00041
00042 DEFINE_SERIALIZABLE_PRE( CSimpleDatabaseTable )
00043
00047 class MRPTDLLIMPEXP CSimpleDatabaseTable : public mrpt::utils::CSerializable
00048 {
00049
00050 DEFINE_SERIALIZABLE( CSimpleDatabaseTable )
00051 public:
00054 CSimpleDatabaseTable( );
00055
00058 virtual ~CSimpleDatabaseTable();
00059
00062 size_t fieldsCount() const;
00063
00066 size_t appendRecord();
00067
00070 void addField(const char *fieldName);
00071
00075 std::string getFieldName(size_t fieldIndex) const;
00076
00080 size_t fieldIndex(const char *fieldName) const;
00081
00084 size_t getRecordCount() const;
00085
00089 std::string get(size_t recordIndex, std::string field) const;
00090
00094 std::string get(size_t recordIndex, size_t fieldIndex) const;
00095
00099 void set(size_t recordIndex, std::string field, std::string value);
00100
00104 void set(size_t recordIndex, size_t fieldIndex, std::string value);
00105
00108 int query(std::string field, std::string value) const;
00109
00110 private:
00113 vector_string field_names;
00114
00117 std::vector<vector_string> data;
00118
00119 };
00120
00130 class MRPTDLLIMPEXP CSimpleDatabase : public mrpt::utils::CSerializable
00131 {
00132
00133 DEFINE_SERIALIZABLE( CSimpleDatabase )
00134
00135 public:
00138 CSimpleDatabase( );
00139
00142 virtual ~CSimpleDatabase( );
00143
00146 void clear();
00147
00150 CSimpleDatabaseTable * createTable(const std::string &name);
00151
00155 CSimpleDatabaseTable * getTable(const char *tableName);
00156
00160 CSimpleDatabaseTable * getTable(size_t tableIndex);
00161
00164 size_t tablesCount() const;
00165
00169 std::string tablesName(size_t tableIndex) const;
00170
00175 bool saveAsXML( const std::string &fileName ) const;
00176
00181 bool loadFromXML( const std::string &fileName );
00182
00183
00184 private:
00187 std::vector<CSimpleDatabaseTable*> tables;
00188 vector_string table_names;
00189
00190
00191 };
00192
00193
00194 }
00195 }
00196
00197
00198 #endif