X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Flisp%2Flisp.hpp;h=099e13b82baeec50e427dca8d4832031e24f4b19;hb=47c58b6b5d40807eee7bd37fa2fd5d2188a333fd;hp=2f1464155c36fbbaa2ea6a7cbe4da632b5ee94a3;hpb=c307442e4bf1352cf1807b171b5ab175ba063b31;p=supertux.git diff --git a/src/lisp/lisp.hpp b/src/lisp/lisp.hpp index 2f1464155..099e13b82 100644 --- a/src/lisp/lisp.hpp +++ b/src/lisp/lisp.hpp @@ -44,9 +44,9 @@ public: LispType get_type() const { return type; } - Lisp* get_car() const + const Lisp* get_car() const { return v.cons.car; } - Lisp* get_cdr() const + const Lisp* get_cdr() const { return v.cons.cdr; } bool get(std::string& val) const @@ -57,6 +57,12 @@ public: return true; } + std::string get_symbol() const + { + assert(type == TYPE_SYMBOL); + return v.string; + } + std::string get_string() const { assert(type == TYPE_STRING); @@ -118,13 +124,13 @@ public: return v.boolean; } - /** conveniance functions which traverse the list until a child with a + /** convenience functions which traverse the list until a child with a * specified name is found. The value part is then interpreted in a specific * way. The functions return true, if a child was found and could be * interpreted correctly, otherwise false is returned and the variable value * is not changed. * (Please note that searching the lisp structure is O(n) so these functions - * are no good idea for performance critical areas) + * are not a good idea for performance critical areas) */ template bool get(const char* name, T& val) const @@ -142,7 +148,7 @@ public: } template - bool get_vector(const char* name, std::vector& vec) const + bool get(const char* name, std::vector& vec) const { vec.clear(); @@ -162,8 +168,8 @@ public: return true; } - Lisp* get_lisp(const char* name) const; - Lisp* get_lisp(const std::string& name) const + const Lisp* get_lisp(const char* name) const; + const Lisp* get_lisp(const std::string& name) const { return get_lisp(name.c_str()); } // for debugging @@ -178,8 +184,8 @@ private: { struct { - Lisp* car; - Lisp* cdr; + const Lisp* car; + const Lisp* cdr; } cons; char* string;