From 2ec8f26f31d13bf3c3bbda24ea5e1cace6a819a2 Mon Sep 17 00:00:00 2001 From: Teddy Date: Mon, 5 Aug 2013 23:31:48 +0800 Subject: added support for string --- model.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'model.cpp') diff --git a/model.cpp b/model.cpp index 3703f1d..4f0e1c5 100644 --- a/model.cpp +++ b/model.cpp @@ -94,7 +94,7 @@ RetAddr::RetAddr(Cons *_addr) : FrameObj(CLS_RET_ADDR), addr(_addr) {} string RetAddr::_debug_repr() { return string("#"); } #endif -UnspecObj::UnspecObj() : EvalObj() {} +UnspecObj::UnspecObj() : EvalObj(CLS_SIM_OBJ) {} string UnspecObj::ext_repr() { return string("#"); } @@ -150,7 +150,7 @@ string ProcObj::_debug_repr() { return ext_repr(); } SpecialOptObj::SpecialOptObj() : OptObj() {} -BoolObj::BoolObj(bool _val) : EvalObj(), val(_val) {} +BoolObj::BoolObj(bool _val) : EvalObj(CLS_SIM_OBJ), val(_val) {} bool BoolObj::is_true() { return val; } @@ -161,6 +161,17 @@ NumObj::NumObj(NumLvl _level, bool _exactness) : bool NumObj::is_exact() { return exactness; } +StrObj::StrObj(string _str) : EvalObj(CLS_SIM_OBJ), str(_str) {} + +string StrObj::ext_repr() { return str; } + +StrObj *StrObj::from_string(string repr) { + int len = repr.length(); + if (repr[0] == '\"' && repr[len - 1] == '\"') + return new StrObj(repr.substr(1, len - 2)); + return NULL; +} + BuiltinProcObj::BuiltinProcObj(BuiltinProc f, string _name) : OptObj(), handler(f), name(_name) {} -- cgit v1.2.3