diff options
Diffstat (limited to 'src/resp.hpp')
-rw-r--r-- | src/resp.hpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/resp.hpp b/src/resp.hpp index d524aae..899f4fb 100644 --- a/src/resp.hpp +++ b/src/resp.hpp @@ -573,13 +573,11 @@ struct PEnv : private map<const string, ASymbol*> { PEnv() : symID(0) {} typedef const AST* (*PF)(PEnv&, const AST*, void*); ///< Parse Function struct Handler { Handler(PF f, void* a=0) : func(f), arg(a) {} PF func; void* arg; }; - map<const string, Handler> aHandlers; ///< Atom parse functions - map<const string, Handler> lHandlers; ///< List parse functions - void reg(bool list, const string& s, const Handler& h) { - (list ? lHandlers : aHandlers).insert(make_pair(sym(s)->str(), h)); + map<const string, Handler> handlers; ///< List parse functions + void reg(const string& s, const Handler& h) { + handlers.insert(make_pair(sym(s)->str(), h)); } - const Handler* handler(bool list, const string& s) const { - const map<const string, Handler>& handlers = list ? lHandlers : aHandlers; + const Handler* handler(const string& s) const { map<string, Handler>::const_iterator i = handlers.find(s); return (i != handlers.end()) ? &i->second : NULL; } |