diff options
author | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-06-06 03:52:48 +0900 |
---|---|---|
committer | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-06-18 11:25:42 +0900 |
commit | 776ca3085c44e6570813270df75278849c37d400 (patch) | |
tree | 6dc3f2d468cfd860347f2f9d519f49c2a38d4c64 /value.h | |
parent | a3caa8166baeb348f817eb1b4fa2e81672b3d77f (diff) | |
download | kati-776ca3085c44e6570813270df75278849c37d400.tar.gz |
[C++] The first commit for C++ version
16 tests out of 169 are passing.
Diffstat (limited to 'value.h')
-rw-r--r-- | value.h | 41 |
1 files changed, 41 insertions, 0 deletions
@@ -0,0 +1,41 @@ +#ifndef VALUE_H_ +#define VALUE_H_ + +#include <memory> +#include <string> +#include <vector> + +#include "string_piece.h" + +using namespace std; + +class Evaluator; + +class Evaluable { + public: + virtual void Eval(Evaluator* ev, string* s) const = 0; + virtual shared_ptr<string> Eval(Evaluator*) const; + + protected: + Evaluable(); + virtual ~Evaluable(); +}; + +class Value : public Evaluable { + public: + virtual ~Value(); + + virtual Value* Compact() { return this; } + + string DebugString() const; + + protected: + Value(); + virtual string DebugString_() const = 0; +}; + +Value* ParseExpr(StringPiece s, bool is_command); + +string JoinValues(const vector<Value*> vals, const char* sep); + +#endif // VALUE_H_ |