1 // Copyright David Abrahams 2002.
2 // Distributed under the Boost Software License, Version 1.0. (See
3 // accompanying file LICENSE_1_0.txt or copy at
4 // http://www.boost.org/LICENSE_1_0.txt)
5 #ifndef ARGS_FWD_DWA2002927_HPP
6 # define ARGS_FWD_DWA2002927_HPP
7 
8 # include <boost/python/detail/prefix.hpp>
9 
10 # include <boost/python/handle.hpp>
11 # include <boost/config.hpp>
12 # include <cstddef>
13 # include <utility>
14 
15 namespace boost { namespace python {
16 
17 namespace detail
18 {
19   struct keyword
20   {
keywordboost::python::detail::keyword21       keyword(char const* name_=0)
22        : name(name_)
23       {}
24 
25       char const* name;
26       handle<> default_value;
27   };
28 
29   template <std::size_t nkeywords = 0> struct keywords;
30 
31   typedef std::pair<keyword const*, keyword const*> keyword_range;
32 
33   template <>
34   struct keywords<0>
35   {
36       BOOST_STATIC_CONSTANT(std::size_t, size = 0);
rangeboost::python::detail::keywords37       static keyword_range range() { return keyword_range(); }
38   };
39 
40   namespace error
41   {
42     template <int keywords, int function_args>
43     struct more_keywords_than_function_arguments
44     {
45         typedef char too_many_keywords[keywords > function_args ? -1 : 1];
46     };
47   }
48 }
49 
50 }} // namespace boost::python
51 
52 #endif // ARGS_FWD_DWA2002927_HPP
53