From 01b2c905872ff38d5d8291f2f8de92c2771f183f Mon Sep 17 00:00:00 2001 From: Teddy Date: Fri, 9 Aug 2013 12:41:49 +0800 Subject: removed `skip` field from Pair, use `next` to make jumps instead --- model.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'model.cpp') diff --git a/model.cpp b/model.cpp index 6c5e4a0..f5ed609 100644 --- a/model.cpp +++ b/model.cpp @@ -89,9 +89,13 @@ string EvalObj::ext_repr() { { top_ptr--; obj = (*top_ptr)->next(""); - *(++top_ptr) = obj->get_repr_cons(); - if (hash.count((*top_ptr)->ori)) - *top_ptr = new ReprStr("#inf#"); + if (obj) + { + *(++top_ptr) = obj->get_repr_cons(); + if (hash.count((*top_ptr)->ori)) + *top_ptr = new ReprStr("#inf#"); + } + else *top_ptr = new ReprStr((*top_ptr)->repr); } top_ptr++; } @@ -102,7 +106,7 @@ string EvalObj::ext_repr() { } Pair::Pair(EvalObj *_car, EvalObj *_cdr) : - EvalObj(CLS_PAIR_OBJ), car(_car), cdr(_cdr), skip(false), + EvalObj(CLS_PAIR_OBJ), car(_car), cdr(_cdr), next(NULL) {} ReprCons *Pair::get_repr_cons() { -- cgit v1.2.3