X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Console%2FParse.cc;h=c06a2bc9b9f42a9b0f1cd47844dc765e5c2f27bf;hb=fe92380af7b511d398290e4ab0c535025006b57b;hp=a631f0f1ca4618a6bacc5d6b3c49b68e91744928;hpb=31fb20bd535cd2d65595a7d37bd100ff16f13df8;p=senf.git diff --git a/Console/Parse.cc b/Console/Parse.cc index a631f0f..c06a2bc 100644 --- a/Console/Parse.cc +++ b/Console/Parse.cc @@ -41,6 +41,8 @@ namespace senf { namespace console { namespace detail { +#ifndef DOXYGEN + struct ParserAccess { static void init(ParseCommandInfo & info) @@ -133,6 +135,12 @@ namespace detail { ParserAccess::setBuiltin(info_, ParseCommandInfo::BuiltinEXIT); ParserAccess::finalize(info_); cb_(info_); } + void builtin_help(std::vector & path) + { ParserAccess::init(info_); + ParserAccess::setBuiltin(info_, ParseCommandInfo::BuiltinHELP); + setBuiltinPathArg(path); + ParserAccess::finalize(info_); cb_(info_); } + void setBuiltinPathArg(std::vector & path) { ParserAccess::startArgument(info_); @@ -143,11 +151,15 @@ namespace detail { } }; +#endif + }}} /////////////////////////////////////////////////////////////////////////// // senf::console::ParseCommandInfo +#ifndef DOXYGEN + struct senf::console::ParseCommandInfo::MakeRange { typedef ParseCommandInfo::argument_value_type result_type; @@ -162,6 +174,8 @@ struct senf::console::ParseCommandInfo::MakeRange } }; +#endif + prefix_ void senf::console::ParseCommandInfo::finalize() { arguments_.resize( tempArguments_.size() ); @@ -181,7 +195,7 @@ prefix_ std::ostream & senf::console::operator<<(std::ostream & stream, if (info.builtin() == ParseCommandInfo::NoBuiltin) stream << senf::stringJoin(info.commandPath(), "/"); else { - char const * builtins[] = { "", "cd", "ls", "pushd", "popd", "exit" }; + char const * builtins[] = { "", "cd", "ls", "pushd", "popd", "exit", "help" }; stream << "builtin-" << builtins[info.builtin()]; } @@ -205,6 +219,8 @@ prefix_ std::ostream & senf::console::operator<<(std::ostream & stream, /////////////////////////////////////////////////////////////////////////// // senf::console::CommandParser +#ifndef DOXYGEN + struct senf::console::CommandParser::Impl { typedef detail::CommandGrammar Grammar; @@ -216,6 +232,8 @@ struct senf::console::CommandParser::Impl Impl() : dispatcher(), context(), grammar(dispatcher, context) {} }; +#endif + prefix_ senf::console::CommandParser::CommandParser() : impl_ (new Impl()) {}