#include #include #include "evaluate.h" using namespace std; Value::Value(double numval) :type(Type::number),numval(numval){} Value::Value(const string &strval) :type(Type::string),strval(strval){} Value::Value(const Scope &scope) :type(Type::scope),scope(scope){} namespace A { map collection; template Value* ref_create(Args... args){ Value *value=new Value(args...); return ref(value); } Value* ref(Value *value){ auto it=collection.find(value); if(it==collection.end()){ collection.emplace(value,1); } else { it->second++; } return value; } void unref(Value *value){ auto it=collection.find(value); assert(it!=collection.end()); if(it->second==1){ delete value; collection.erase(it); } else { it->second--; } } } void evaluateSTL(const StatementList &stl){ ; }