switch to new MPL based Fraunhofer FOKUS Public License
[senf.git] / senf / Utils / Console / ParsedCommand.mpp
index 340e073..dc644d1 100644 (file)
@@ -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 <g0dil@berlios.de>
 //
-// 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 <g0dil@berlios.de>
+
 
 /** \file
     \brief ParsedCommand Boost.Preprocesser external iteration include */
 #include <boost/bind.hpp>
 #include <boost/mpl/vector.hpp>
 #include <boost/mpl/at.hpp>
+#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<FunctionTraits, ReturnValue, BOOST_PP_ITERATION() >::
 arg() const
 {
-    return static_cast< detail::ArgumentInfo< 
+    return static_cast< detail::ArgumentInfo<
         typename boost::mpl::at_c<arg_types, n>::type > & >(arg(n));
 }
 
@@ -195,7 +201,7 @@ template <class FunctionTraits, class ReturnValue>
 prefix_
 senf::console::ParsedCommandOverload<FunctionTraits, ReturnValue, BOOST_PP_ITERATION()>::
 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<FunctionTraits, void, BOOST_PP_ITERATION() >::
 arg() const
 {
-    return static_cast< detail::ArgumentInfo< 
+    return static_cast< detail::ArgumentInfo<
         typename boost::mpl::at_c<arg_types, n>::type > & >(arg(n));
 }
 
@@ -236,16 +242,16 @@ template <class FunctionTraits>
 prefix_
 senf::console::ParsedCommandOverload<FunctionTraits, void, BOOST_PP_ITERATION() >::
 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<const ParseCommandInfo::ArgumentsRange>::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<const ParseCommandInfo::ArgumentsRange>::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<Traits, true, BOOST_PP_ITERATION()>
 
 };
 
-// ////////////////////////////////////////////////////////////////////////
-#elif BOOST_PP_ITERATION_FLAGS()==5 // ////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#elif BOOST_PP_ITERATION_FLAGS()==5 //-////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
 
 // Create keyword arg forwarding functions
 
-template <BOOST_PP_ENUM_PARAMS( BOOST_PP_ITERATION(), class A ) > 
+template <BOOST_PP_ENUM_PARAMS( BOOST_PP_ITERATION(), class A ) >
 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()) const {
+                    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////////////////////////////////////////
 
 \f
 // Local Variables: