// $Id$ // // Copyright (C) 2008 // Fraunhofer Institute for Open Communication Systems (FOKUS) // Competence Center NETwork research (NET), St. Augustin, GERMANY // Stefan Bund // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the // Free Software Foundation, Inc., // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /** \file \brief Parse inline non-template implementation */ // We do NOT want to include the complete parser definition into every other compilation unit // (disabled) #include "Parse.ih" // Custom includes #include "../Utils/senfassert.hh" #define prefix_ inline ///////////////////////////////cci.p/////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// // senf::console::ArgumentToken prefix_ std::string const & senf::console::ArgumentToken::value() const { return token_; } prefix_ senf::console::ArgumentToken::ArgumentToken(std::string token) : token_ (token) {} /////////////////////////////////////////////////////////////////////////// // senf::console::ParseCommandInfo prefix_ senf::console::ParseCommandInfo::BuiltinCommand senf::console::ParseCommandInfo::builtin() const { return builtin_; } prefix_ senf::console::ParseCommandInfo::CommandPathRange senf::console::ParseCommandInfo::commandPath() const { return boost::make_iterator_range(commandPath_.begin(), commandPath_.end()); } prefix_ senf::console::ParseCommandInfo::ArgumentsRange senf::console::ParseCommandInfo::arguments() const { return boost::make_iterator_range(arguments_.begin(), arguments_.end()); } prefix_ senf::console::ParseCommandInfo::TokensRange senf::console::ParseCommandInfo::tokens() const { return boost::make_iterator_range(tokens_.begin(), tokens_.end()); } //////////////////////////////////////// // private members prefix_ void senf::console::ParseCommandInfo::init() { builtin_ = NoBuiltin; commandPath_.clear(); tokens_.clear(); arguments_.clear(); tempArguments_.clear(); } prefix_ void senf::console::ParseCommandInfo::setBuiltin(BuiltinCommand builtin) { builtin_ = builtin; } prefix_ void senf::console::ParseCommandInfo::setCommand(std::vector & commandPath) { commandPath_.clear(); commandPath_.swap(commandPath); } prefix_ void senf::console::ParseCommandInfo::startArgument() { tempArguments_.push_back( TempArgumentRange( tokens_.size(), tokens_.size() ) ); } prefix_ void senf::console::ParseCommandInfo::endArgument() { tempArguments_.back().second = tokens_.size(); } prefix_ void senf::console::ParseCommandInfo::addToken(ArgumentToken const & token) { tokens_.push_back(token); } /////////////////////////////////////////////////////////////////////////// // senf::console::SingleCommandParser prefix_ senf::console::CommandParser::Impl & senf::console::CommandParser::impl() { SENF_ASSERT(impl_); return *impl_; } ///////////////////////////////cci.e/////////////////////////////////////// #undef prefix_ // Local Variables: // mode: c++ // fill-column: 100 // comment-column: 40 // c-file-style: "senf" // indent-tabs-mode: nil // ispell-local-dictionary: "american" // compile-command: "scons -u test" // End: