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
00034 #ifndef KEYVALUE_MNGT_REPOSITORY_H_
00035 #define KEYVALUE_MNGT_REPOSITORY_H_
00036
00037 #include <map>
00038
00039 #include <boost/utility.hpp>
00040
00041 #include "keyvalue/extern/SharedPtr.h"
00042 #include "keyvalue/sys/exception/Exception.h"
00043 #include "keyvalue/value/Vector.h"
00044
00045 namespace keyvalue {
00046
00047
00048
00049 class DataSet;
00050
00058 class Repository : private ::boost::noncopyable {
00059
00060 public:
00061
00077 void
00078 add(shared_ptr<DataSet> dataSet);
00079
00088 bool
00089 erase(const string& name);
00090
00096 size_t
00097 clear();
00098
00107 shared_ptr<DataSet>
00108 find(const string& name) const;
00109
00119 shared_ptr<DataSet>
00120 getDataSet(const string& name) const;
00121
00127 size_t
00128 getSize() const;
00129
00135 value::Vector
00136 getList() const;
00137
00141 class NotFound : public RuntimeError {
00142
00143 public:
00144
00145
00146
00147
00148
00149
00150 explicit
00151 NotFound(string name);
00152
00153 ~NotFound() throw();
00154
00155
00156
00157
00158
00159
00160 const string&
00161 getName() const;
00162
00163 private:
00164
00165 const string name_;
00166 };
00167
00168 private:
00169
00170 typedef ::std::map <string, shared_ptr<DataSet> > Map_;
00171 typedef Map_::value_type Pair_;
00172 Map_ map_;
00173
00174 };
00175
00176 }
00177
00178 #endif // KEYVALUE_MNGT_REPOSITORY_H_