X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FUtils%2FConsole%2FParsedCommand.mpp;h=dc644d104ab3a11c611954285ee14c643ba27b51;hb=f08685d9795a3be20ce5c7a337087358ccd77eb5;hp=ab3caa6fc514377516a52dd0f96c7554970d2dab;hpb=f13780e9e4da7df981d6f6542fbdc714beb34765;p=senf.git diff --git a/senf/Utils/Console/ParsedCommand.mpp b/senf/Utils/Console/ParsedCommand.mpp index ab3caa6..dc644d1 100644 --- a/senf/Utils/Console/ParsedCommand.mpp +++ b/senf/Utils/Console/ParsedCommand.mpp @@ -1,24 +1,29 @@ // $Id$ // -// Copyright (C) 2008 +// 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. +// The contents of this file are subject to the Fraunhofer FOKUS Public License +// Version 1.0 (the "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// http://senf.berlios.de/license.html // -// 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. +// The Fraunhofer FOKUS Public License Version 1.0 is based on, +// but modifies the Mozilla Public License Version 1.1. +// See the full license text for the amendments. // -// 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. +// Software distributed under the License is distributed on an "AS IS" basis, +// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +// for the specific language governing rights and limitations under the License. +// +// The Original Code is Fraunhofer FOKUS code. +// +// The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. +// (registered association), Hansastraße 27 c, 80686 Munich, Germany. +// +// Contributor(s): +// Stefan Bund + /** \file \brief ParsedCommand Boost.Preprocesser external iteration include */ @@ -40,10 +45,11 @@ #include #include #include +#include "senf/Utils/IgnoreValue.hh" -// ///////////////////////////mpp.p//////////////////////////////////////// -#elif BOOST_PP_IS_ITERATING // //////////////////////////////////////////// -// //////////////////////////////////////////////////////////////////////// +//-///////////////////////////mpp.p//////////////////////////////////////// +#elif BOOST_PP_IS_ITERATING //-//////////////////////////////////////////// +//-//////////////////////////////////////////////////////////////////////// // Local Macros #define mpp_ArgTypeN(n) BOOST_PP_CAT(BOOST_PP_CAT(arg, BOOST_PP_INC(n)), _type) @@ -61,9 +67,9 @@ #define mpp_BindArgs_(z,n,d) BOOST_PP_CAT( _, BOOST_PP_INC(BOOST_PP_INC(n))) #define mpp_TrailingBindArgs() BOOST_PP_ENUM_TRAILING( BOOST_PP_ITERATION(), mpp_BindArgs_, _ ) -// //////////////////////////////////////////////////////////////////////// -#if BOOST_PP_ITERATION_FLAGS()==1 // ////////////////////////////////////// -// //////////////////////////////////////////////////////////////////////// +//-//////////////////////////////////////////////////////////////////////// +#if BOOST_PP_ITERATION_FLAGS()==1 //-////////////////////////////////////// +//-//////////////////////////////////////////////////////////////////////// // Header file (.hh) @@ -102,7 +108,7 @@ protected: private: ParsedCommandOverload(Function fn); - virtual void v_execute(boost::any & rv, std::ostream & os, ParseCommandInfo const & command) + virtual void v_execute(boost::any & rv, std::ostream & os, ParseCommandInfo const & command) const; Function function_; @@ -141,15 +147,15 @@ protected: private: ParsedCommandOverload(Function fn); - virtual void v_execute(boost::any & rv, std::ostream & os, ParseCommandInfo const & command) + virtual void v_execute(boost::any & rv, std::ostream & os, ParseCommandInfo const & command) const; Function function_; }; -// //////////////////////////////////////////////////////////////////////// -#elif BOOST_PP_ITERATION_FLAGS()==2 // //////////////////////////////////// -// //////////////////////////////////////////////////////////////////////// +//-//////////////////////////////////////////////////////////////////////// +#elif BOOST_PP_ITERATION_FLAGS()==2 //-//////////////////////////////////// +//-//////////////////////////////////////////////////////////////////////// // inline template implementation (.cti) @@ -179,7 +185,7 @@ senf::console::detail::ArgumentInfo< senf::console::ParsedCommandOverload:: arg() const { - return static_cast< detail::ArgumentInfo< + return static_cast< detail::ArgumentInfo< typename boost::mpl::at_c::type > & >(arg(n)); } @@ -195,7 +201,7 @@ template prefix_ senf::console::ParsedCommandOverload:: ParsedCommandOverload(Function fn) - : function_ (fn) + : function_ (fn) { # define mpp_l(z,n,d) addParameter< mpp_ArgTypeN(n) >(); BOOST_PP_REPEAT( BOOST_PP_ITERATION(), mpp_l, _ ) @@ -220,7 +226,7 @@ senf::console::detail::ArgumentInfo< senf::console::ParsedCommandOverload:: arg() const { - return static_cast< detail::ArgumentInfo< + return static_cast< detail::ArgumentInfo< typename boost::mpl::at_c::type > & >(arg(n)); } @@ -236,16 +242,16 @@ template prefix_ senf::console::ParsedCommandOverload:: ParsedCommandOverload(Function fn) - : function_ (fn) + : function_ (fn) { # define mpp_l(z,n,d) addParameter< mpp_ArgTypeN(n) >(); BOOST_PP_REPEAT( BOOST_PP_ITERATION(), mpp_l, _ ) # undef mpp_l } -// //////////////////////////////////////////////////////////////////////// -#elif BOOST_PP_ITERATION_FLAGS()==3 // //////////////////////////////////// -// //////////////////////////////////////////////////////////////////////// +//-//////////////////////////////////////////////////////////////////////// +#elif BOOST_PP_ITERATION_FLAGS()==3 //-//////////////////////////////////// +//-//////////////////////////////////////////////////////////////////////// // non-inline template implementation (.ct) @@ -260,7 +266,7 @@ v_execute(boost::any & rv, std::ostream & os, ParseCommandInfo const & command) if ( nArgs > BOOST_PP_ITERATION() ) throw SyntaxErrorException("invalid number of arguments"); int nDefaults ( BOOST_PP_ITERATION() - nArgs ); - (void) nDefaults; + senf::IGNORE( nDefaults ); typedef typename boost::range_reverse_iterator::type riterator; @@ -278,7 +284,7 @@ v_execute(boost::any & rv, std::ostream & os, ParseCommandInfo const & command) ArgumentTraits< mpp_ArgTypeN(n) >::parse( *(i++), mpp_ArgN(n) ); \ } # define mpp_l_(z,n,d) mpp_l(z, BOOST_PP_SUB(BOOST_PP_DEC(BOOST_PP_ITERATION()), n), d) - BOOST_PP_REPEAT( BOOST_PP_ITERATION(), mpp_l_, _ ) + BOOST_PP_REPEAT( BOOST_PP_ITERATION(), mpp_l_, _ ) # undef mpp_l # undef mpp_l_ @@ -302,7 +308,7 @@ v_execute(boost::any & rv, std::ostream & os, ParseCommandInfo const & command) if ( nArgs > BOOST_PP_ITERATION() ) throw SyntaxErrorException("invalid number of arguments"); int nDefaults ( BOOST_PP_ITERATION() - nArgs ); - (void) nDefaults; + senf::IGNORE( nDefaults ); typedef typename boost::range_reverse_iterator::type riterator; @@ -320,16 +326,16 @@ v_execute(boost::any & rv, std::ostream & os, ParseCommandInfo const & command) ArgumentTraits< mpp_ArgTypeN(n) >::parse( *(i++), mpp_ArgN(n) ); \ } # define mpp_l_(z,n,d) mpp_l(z, BOOST_PP_SUB(BOOST_PP_DEC(BOOST_PP_ITERATION()), n), d) - BOOST_PP_REPEAT( BOOST_PP_ITERATION(), mpp_l_, _ ) + BOOST_PP_REPEAT( BOOST_PP_ITERATION(), mpp_l_, _ ) # undef mpp_l # undef mpp_l_ function_(os mpp_TrailingArgs()); } -// //////////////////////////////////////////////////////////////////////// -#elif BOOST_PP_ITERATION_FLAGS()==4 // //////////////////////////////////// -// //////////////////////////////////////////////////////////////////////// +//-//////////////////////////////////////////////////////////////////////// +#elif BOOST_PP_ITERATION_FLAGS()==4 //-//////////////////////////////////// +//-//////////////////////////////////////////////////////////////////////// // CreateParsedCommandOverload @@ -347,22 +353,22 @@ struct CreateParsedCommandOverload }; -// //////////////////////////////////////////////////////////////////////// -#elif BOOST_PP_ITERATION_FLAGS()==5 // //////////////////////////////////// -// //////////////////////////////////////////////////////////////////////// +//-//////////////////////////////////////////////////////////////////////// +#elif BOOST_PP_ITERATION_FLAGS()==5 //-//////////////////////////////////// +//-//////////////////////////////////////////////////////////////////////// // Create keyword arg forwarding functions -template +template next_type arg ( BOOST_PP_ENUM_BINARY_PARAMS( BOOST_PP_ITERATION(), A, const & a ), typename arg_params::match< BOOST_PP_ENUM_PARAMS( BOOST_PP_ITERATION(), A ) >::type kw = arg_params()) { return argInfo( kw(BOOST_PP_ENUM_PARAMS( BOOST_PP_ITERATION(), a )) ); } -// //////////////////////////////////////////////////////////////////////// -#endif // ///////////////////////////////////////////////////////////////// -// //////////////////////////////////////////////////////////////////////// +//-//////////////////////////////////////////////////////////////////////// +#endif //-///////////////////////////////////////////////////////////////// +//-//////////////////////////////////////////////////////////////////////// // Undefine local Macros #undef mpp_TrailingBindArgs @@ -380,9 +386,9 @@ next_type arg ( BOOST_PP_ENUM_BINARY_PARAMS( BOOST_PP_ITERATION(), A, const & a #undef mpp_ArgN #undef mpp_ArgTypeN -// //////////////////////////////////////////////////////////////////////// -#endif // ///////////////////////////////////////////////////////////////// -// ///////////////////////////mpp.e//////////////////////////////////////// +//-//////////////////////////////////////////////////////////////////////// +#endif //-///////////////////////////////////////////////////////////////// +//-///////////////////////////mpp.e//////////////////////////////////////// // Local Variables: