Pattern.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
00029 #ifndef KEYVALUE_PATTERN_PATTERN_H_
00030 #define KEYVALUE_PATTERN_PATTERN_H_
00031
00032 #include <boost/utility.hpp>
00033
00034 #include "keyvalue/extern/String.h"
00035 #include "keyvalue/value/Value.h"
00036
00037 namespace keyvalue {
00038
00039
00040
00041 namespace frontend {
00042 class Queue;
00043 }
00044
00049 namespace pattern {
00050
00063 class Pattern : private boost::noncopyable {
00064
00065 public:
00066
00079 virtual bool
00080 parse(frontend::Queue& queue) = 0;
00081
00093 virtual std::pair<string, value::Value>
00094 pop() = 0;
00095
00102 virtual bool
00103 isEmpty() const = 0;
00104
00105 protected:
00106
00116 class QueueRaii {
00117
00118 public:
00119
00126 QueueRaii(frontend::Queue& queue);
00127 ~QueueRaii();
00128
00129 private:
00130
00131 frontend::Queue& queue_;
00132
00133 };
00134
00135 };
00136
00153 bool
00154 isKey(const value::Variant& variant);
00155
00179 string
00180 getKey(const value::Variant& variant);
00181
00182 }
00183 }
00184
00185 #endif // KEYVALUE_PATTERN_PATTERN_H_