Scheduler: Implement Timer helper
[senf.git] / Console / Parse.cci
index 74b54f3..322fc44 100644 (file)
@@ -73,9 +73,68 @@ prefix_ senf::console::Token::Token(TokenType type, std::string token)
     : type_(type), token_ (token)
 {}
 
+prefix_ senf::console::Token senf::console::NoneToken()
+{
+    return Token(Token::None,"");
+}
+
+prefix_ senf::console::Token senf::console::PathSeparatorToken()
+{
+    return Token(Token::PathSeparator,"/");
+}
+
+prefix_ senf::console::Token senf::console::ArgumentGroupOpenToken()
+{
+    return Token(Token::ArgumentGroupOpen,"(");
+}
+
+prefix_ senf::console::Token senf::console::ArgumentGroupCloseToken()
+{
+    return Token(Token::ArgumentGroupClose,")");
+}
+
+prefix_ senf::console::Token senf::console::DirectoryGroupOpenToken()
+{
+    return Token(Token::DirectoryGroupOpen,"{");
+}
+
+prefix_ senf::console::Token senf::console::DirectoryGroupCloseToken()
+{
+    return Token(Token::DirectoryGroupClose,"}");
+}
+
+prefix_ senf::console::Token senf::console::CommandTerminatorToken()
+{
+    return Token(Token::CommandTerminator,";");
+}
+
+prefix_ senf::console::Token senf::console::OtherPunctuationToken(std::string const & value)
+{
+    return Token(Token::OtherPunctuation, value);
+}
+
+prefix_ senf::console::Token senf::console::BasicStringToken(std::string const & value)
+{
+    return Token(Token::BasicString, value);
+}
+
+prefix_ senf::console::Token senf::console::HexStringToken(std::string const & value)
+{
+    return Token(Token::HexString, value);
+}
+
+prefix_ senf::console::Token senf::console::WordToken(std::string const & value)
+{
+    return Token(Token::Word, value);
+}
+
 ///////////////////////////////////////////////////////////////////////////
 // senf::console::ParseCommandInfo
 
+prefix_ senf::console::ParseCommandInfo::ParseCommandInfo()
+    : builtin_ (NoBuiltin)
+{}
+
 prefix_ senf::console::ParseCommandInfo::BuiltinCommand
 senf::console::ParseCommandInfo::builtin()
     const
@@ -104,26 +163,30 @@ prefix_ senf::console::ParseCommandInfo::TokensRange senf::console::ParseCommand
     return boost::make_iterator_range(tokens_.begin(), tokens_.end());
 }
 
-////////////////////////////////////////
-// private members
-
-prefix_ void senf::console::ParseCommandInfo::init()
+prefix_ void senf::console::ParseCommandInfo::clear()
 {
     builtin_ = NoBuiltin;
     commandPath_.clear();
     tokens_.clear();
 }
 
-prefix_ void senf::console::ParseCommandInfo::setBuiltin(BuiltinCommand builtin)
+prefix_ bool senf::console::ParseCommandInfo::empty()
+{
+    return builtin_ == NoBuiltin && commandPath_.empty();
+}
+
+prefix_ void senf::console::ParseCommandInfo::builtin(BuiltinCommand builtin)
 {
     builtin_ = builtin;
+    commandPath_.clear();
 }
 
 prefix_ void
-senf::console::ParseCommandInfo::setCommand(std::vector<Token> & commandPath)
+senf::console::ParseCommandInfo::command(std::vector<Token> & commandPath)
 {
     commandPath_.clear();
     commandPath_.swap(commandPath);
+    builtin_ = NoBuiltin;
 }
 
 prefix_ void senf::console::ParseCommandInfo::addToken(Token const & token)
@@ -166,6 +229,23 @@ prefix_ void senf::console::ParseCommandInfo::ArgumentIterator::increment()
 }
 
 ///////////////////////////////////////////////////////////////////////////
+// senf::console::SyntaxErrorException
+
+prefix_ senf::console::SyntaxErrorException::SyntaxErrorException(std::string const & msg)
+    : message_(msg)
+{}
+
+prefix_ senf::console::SyntaxErrorException::~SyntaxErrorException()
+    throw()
+{}
+
+prefix_ std::string const & senf::console::SyntaxErrorException::message()
+    const
+{
+    return message_;
+}
+
+///////////////////////////////////////////////////////////////////////////
 
 prefix_ senf::console::CheckedArgumentIteratorWrapper::
 CheckedArgumentIteratorWrapper(ParseCommandInfo::ArgumentsRange const & range,