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
return true;
}
+ std::string get_symbol() const
+ {
+ assert(type == TYPE_SYMBOL);
+ return v.string;
+ }
+
std::string get_string() const
{
assert(type == TYPE_STRING);
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<class T>
bool get(const char* name, T& val) const
}
template<class T>
- bool get_vector(const char* name, std::vector<T>& vec) const
+ bool get(const char* name, std::vector<T>& vec) const
{
vec.clear();
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
{
struct
{
- Lisp* car;
- Lisp* cdr;
+ const Lisp* car;
+ const Lisp* cdr;
} cons;
char* string;