Repository.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
00028 #ifndef KEYVALUE_MNGT_REPOSITORY_H_
00029 #define KEYVALUE_MNGT_REPOSITORY_H_
00030
00031 #include <map>
00032
00033 #include <boost/utility.hpp>
00034
00035 #include "keyvalue/extern/SharedPtr.h"
00036 #include "keyvalue/sys/exception/Exception.h"
00037 #include "keyvalue/value/Vector.h"
00038
00039 namespace keyvalue {
00040
00041
00042
00043 class DataSet;
00044
00053 class Repository : private boost::noncopyable {
00054
00055 public:
00056
00062 static Repository&
00063 getInstance();
00064
00080 void
00081 add(shared_ptr<DataSet> dataSet);
00082
00091 bool
00092 erase(const string& name);
00093
00099 size_t
00100 clear();
00101
00110 shared_ptr<DataSet>
00111 find(const string& name) const;
00112
00122 shared_ptr<DataSet>
00123 getDataSet(const string& name) const;
00124
00130 size_t
00131 getSize() const;
00132
00139 value::Vector
00140 getList() const;
00141
00145 class NotFound : public RuntimeError {
00146
00147 public:
00148
00149
00150
00151
00152
00153
00154 explicit
00155 NotFound(string name);
00156
00157 ~NotFound() throw();
00158
00159
00160
00161
00162
00163
00164 const string&
00165 getName() const;
00166
00167 private:
00168
00169 const string name_;
00170 };
00171
00172 private:
00173
00174 typedef std::map <string, shared_ptr<DataSet> > Map_;
00175 typedef Map_::value_type Pair_;
00176 Map_ map_;
00177
00178 Repository();
00179
00180 };
00181
00182 }
00183
00184 #endif // KEYVALUE_MNGT_REPOSITORY_H_