sl@0: // Copyright David Abrahams 2002.
sl@0: // Distributed under the Boost Software License, Version 1.0. (See
sl@0: // accompanying file LICENSE_1_0.txt or copy at
sl@0: // http://www.boost.org/LICENSE_1_0.txt)
sl@0: #ifndef ARGS_FWD_DWA2002927_HPP
sl@0: # define ARGS_FWD_DWA2002927_HPP
sl@0: 
sl@0: # include <boost/python/detail/prefix.hpp>
sl@0: 
sl@0: # include <boost/python/handle.hpp>
sl@0: # include <boost/config.hpp>
sl@0: # include <cstddef>
sl@0: # include <utility>
sl@0: 
sl@0: namespace boost { namespace python { 
sl@0: 
sl@0: namespace detail
sl@0: {
sl@0:   struct keyword
sl@0:   {
sl@0:       keyword(char const* name_=0)
sl@0:        : name(name_)
sl@0:       {}
sl@0:       
sl@0:       char const* name;
sl@0:       handle<> default_value;
sl@0:   };
sl@0:   
sl@0:   template <std::size_t nkeywords = 0> struct keywords;
sl@0:   
sl@0:   typedef std::pair<keyword const*, keyword const*> keyword_range;
sl@0:   
sl@0:   template <>
sl@0:   struct keywords<0>
sl@0:   {
sl@0:       BOOST_STATIC_CONSTANT(std::size_t, size = 0);
sl@0:       static keyword_range range() { return keyword_range(); }
sl@0:   };
sl@0: 
sl@0:   namespace error
sl@0:   {
sl@0:     template <int keywords, int function_args>
sl@0:     struct more_keywords_than_function_arguments
sl@0:     {
sl@0:         typedef char too_many_keywords[keywords > function_args ? -1 : 1];
sl@0:     };
sl@0:   }
sl@0: }
sl@0: 
sl@0: }} // namespace boost::python
sl@0: 
sl@0: #endif // ARGS_FWD_DWA2002927_HPP