use unittest include from util!! /grrr!/
[senf.git] / Console / Parse.cc
index a631f0f..c06a2bc 100644 (file)
@@ -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<std::string> & path)
+            { ParserAccess::init(info_);
+              ParserAccess::setBuiltin(info_, ParseCommandInfo::BuiltinHELP);
+              setBuiltinPathArg(path);
+              ParserAccess::finalize(info_); cb_(info_); }
+
         void setBuiltinPathArg(std::vector<std::string> & 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<detail::ParseDispatcher> 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())
 {}