librime 1.2
Rime Input Method Engine, the core library
db_utils.h
Go to the documentation of this file.
1//
2// Copyright RIME Developers
3// Distributed under the BSD License
4//
5// 2013-04-18 GONG Chen <chen.sst@gmail.com>
6//
7#ifndef RIME_DB_UTILS_H_
8#define RIME_DB_UTILS_H_
9
10#include <rime/common.h>
11
12namespace rime {
13
14class Sink {
15 public:
16 virtual ~Sink() = default;
17 virtual bool MetaPut(const string& key, const string& value) = 0;
18 virtual bool Put(const string& key, const string& value) = 0;
19
20 template <class SourceType>
21 int operator<<(SourceType& source);
22};
23
24class Source {
25 public:
26 virtual ~Source() = default;
27 virtual bool MetaGet(string* key, string* value) = 0;
28 virtual bool Get(string* key, string* value) = 0;
29
30 template <class SinkType>
31 int operator>>(SinkType& sink);
32
33 int Dump(Sink* sink);
34};
35
36template <class SourceType>
37int Sink::operator<<(SourceType& source) {
38 return source.Dump(this);
39}
40
41template <class SinkType>
42int Source::operator>>(SinkType& sink) {
43 return Dump(&sink);
44}
45
46class Db;
47class DbAccessor;
48
49class DbSink : public Sink {
50 public:
51 explicit DbSink(Db* db);
52
53 virtual bool MetaPut(const string& key, const string& value);
54 virtual bool Put(const string& key, const string& value);
55
56 protected:
58};
59
60class DbSource : public Source {
61 public:
62 explicit DbSource(Db* db);
63
64 virtual bool MetaGet(string* key, string* value);
65 virtual bool Get(string* key, string* value);
66
67 protected:
71};
72
73} // namespace rime
74
75#endif // RIME_DB_UTILS_H_
Definition algebra.cc:12
std::shared_ptr< T > an
Definition common.h:60
Definition db.h:16
Definition db.h:33
Definition db_utils.h:14
virtual bool Put(const string &key, const string &value)=0
virtual bool MetaPut(const string &key, const string &value)=0
virtual ~Sink()=default
int operator<<(SourceType &source)
Definition db_utils.h:37
Definition db_utils.h:24
virtual bool Get(string *key, string *value)=0
virtual bool MetaGet(string *key, string *value)=0
virtual ~Source()=default
int Dump(Sink *sink)
Definition db_utils.cc:12
int operator>>(SinkType &sink)
Definition db_utils.h:42
virtual bool Put(const string &key, const string &value)
Definition db_utils.cc:34
DbSink(Db *db)
Definition db_utils.cc:28
Db * db_
Definition db_utils.h:57
virtual bool MetaPut(const string &key, const string &value)
Definition db_utils.cc:30
DbSource(Db *db)
Definition db_utils.cc:38
an< DbAccessor > metadata_
Definition db_utils.h:69
virtual bool Get(string *key, string *value)
Definition db_utils.cc:45
an< DbAccessor > data_
Definition db_utils.h:70
Db * db_
Definition db_utils.h:68
virtual bool MetaGet(string *key, string *value)
Definition db_utils.cc:41