https://github.com/leozhang1/QtInterpreter这个链接 Value.h代码 展示
时间: 2023-09-24 18:07:58 浏览: 113
以下是该链接中 Value.h 的代码:
```c++
#ifndef VALUE_H
#define VALUE_H
#include <string>
#include <vector>
#include <unordered_map>
class Value {
public:
enum Type {
UNDEFINED, NULL_TYPE, BOOLEAN, NUMBER, STRING, OBJECT
};
// Constructors
Value();
Value(bool b);
Value(double n);
Value(const std::string& s);
Value(const std::vector<Value>& a);
Value(std::unordered_map<std::string, Value>& o);
// Copy constructor
Value(const Value& other);
// Destructor
~Value();
// Assignment operator
Value& operator=(const Value& rhs);
// Equality operators
bool operator==(const Value& rhs) const;
bool operator!=(const Value& rhs) const;
// Type checking functions
bool isUndefined() const;
bool isNull() const;
bool isBoolean() const;
bool isNumber() const;
bool isString() const;
bool isObject() const;
// Accessor functions
bool getBoolean() const;
double getNumber() const;
std::string getString() const;
std::vector<Value> getArray() const;
std::unordered_map<std::string, Value> getObject() const;
// Object functions
bool hasField(const std::string& field) const;
Value getField(const std::string& field) const;
void setField(const std::string& field, const Value& value);
// Array functions
int getLength() const;
Value getIndex(int index) const;
void setIndex(int index, const Value& value);
private:
Type type_;
union {
bool boolean_;
double number_;
std::string* string_;
std::vector<Value>* array_;
std::unordered_map<std::string, Value>* object_;
} data_;
// Helper functions for safely deleting data
void clear();
void copy(const Value& other);
};
#endif // VALUE_H
```
该头文件中定义了一个类 `Value`,用于表示解释器中各种类型的值。该类包含了构造函数、析构函数、赋值运算符、判等运算符、类型判断函数、访问器函数、对象函数和数组函数等成员函数,用于对值进行操作。其中,使用 `enum` 枚举类型定义了值的类型,使用 `union` 联合类型存储各种类型的值。
阅读全文