diff --git a/example/interpreter.hpp b/example/interpreter.hpp index 20e0c2f..9e75bf7 100644 --- a/example/interpreter.hpp +++ b/example/interpreter.hpp @@ -14,11 +14,11 @@ // ========================== // // When a function is registered, an 'invoker' template is instantiated with -// the function's type. The 'invoker' fetches a value from the 'token_parser' +// the function's type. The 'invoker' fetches a value from the 'token_parser' // for each parameter of the function into a tuple and finally invokes the the // function with these values as arguments. The invoker's entrypoint, which // is a function of the callable builtin that describes the function to call and -// a reference to the 'token_parser', is partially bound to the registered +// a reference to the 'token_parser', is partially bound to the registered // function and put into a map so it can be found by name during parsing. #include @@ -36,9 +36,9 @@ #include #include -#include -#include -#include +#include +#include +#include #include #include @@ -58,7 +58,7 @@ namespace example class interpreter { - class token_parser; + class token_parser; typedef boost::function invoker_function; typedef std::map dictionary; @@ -66,7 +66,7 @@ namespace example public: // Registers a function with the interpreter. template - typename boost::enable_if< ft::is_nonmember_callable_builtin + typename boost::enable_if< ft::is_nonmember_callable_builtin >::type register_function(std::string const & name, Function f); // Parse input for functions to call. @@ -76,13 +76,13 @@ namespace example template< typename Function , class From = typename mpl::begin< ft::parameter_types >::type , class To = typename mpl::end< ft::parameter_types >::type - > + > struct invoker; }; class interpreter::token_parser { - typedef boost::token_iterator_generator< + typedef boost::token_iterator_generator< boost::char_separator >::type token_iterator; token_iterator itr_at, itr_to; @@ -101,7 +101,7 @@ namespace example // Returns a token of given type. // We just apply boost::lexical_cast to whitespace separated string tokens // for simplicity. - template + template typename remove_cv_ref::type get() { if (! this->has_more_tokens()) @@ -111,8 +111,8 @@ namespace example { typedef typename remove_cv_ref::type result_type; result_type result = boost::lexical_cast - ::type>(*this->itr_at); - ++this->itr_at; + ::type>(*this->itr_at); + ++this->itr_at; return result; } @@ -129,7 +129,7 @@ namespace example { // add an argument to a Fusion cons-list for each parameter type template - static inline + static inline void apply(Function func, token_parser & parser, Args const & args) { typedef typename mpl::deref::type arg_type; @@ -144,7 +144,7 @@ namespace example { // the argument list is complete, now call the function template - static inline + static inline void apply(Function func, token_parser &, Args const & args) { fusion::invoke(func,args); @@ -156,7 +156,7 @@ namespace example interpreter::register_function(std::string const & name, Function f) { // instantiate and store the invoker by name - this->map_invokers[name] = boost::bind( + this->map_invokers[name] = boost::bind( & invoker::template apply, f,_1,fusion::nil() ); } @@ -177,9 +177,9 @@ namespace example // look up function dictionary::const_iterator entry = map_invokers.find( func_name ); if (entry == map_invokers.end()) - throw std::runtime_error("unknown function: " + func_name); - - // call the invoker which controls argument parsing + throw std::runtime_error("unknown function: " + func_name); + + // call the invoker which controls argument parsing entry->second(parser); } }