2
0
mirror of https://github.com/boostorg/python.git synced 2026-01-22 05:22:45 +00:00

Implemented better error reporting for argument match errors.

[SVN r19271]
This commit is contained in:
Dave Abrahams
2003-07-23 01:31:34 +00:00
parent 8f76b8880e
commit af53ae8329
6 changed files with 104 additions and 49 deletions

View File

@@ -172,9 +172,9 @@ struct caller_arity<N>
static unsigned min_arity() { return N; }
static char const*const* type_names()
static signature_element const* signature()
{
return signature<Sig>::type_names();
return detail::signature<Sig>::elements();
}
private:

View File

@@ -8,7 +8,6 @@
# include <boost/python/detail/prefix.hpp>
# include <boost/utility.hpp>
# include <boost/python/instance_holder.hpp>
# include <boost/python/object_core.hpp>
# include <boost/python/type_id.hpp>
# include <cstddef>

View File

@@ -24,7 +24,7 @@ struct BOOST_PYTHON_DECL py_function_impl_base
virtual PyObject* operator()(PyObject*, PyObject*) = 0;
virtual unsigned min_arity() const = 0;
virtual unsigned max_arity() const;
virtual char const* const* type_names() const = 0;
virtual python::detail::signature_element const* signature() const = 0;
};
template <class Caller>
@@ -44,9 +44,9 @@ struct caller_py_function_impl : py_function_impl_base
return m_caller.min_arity();
}
virtual char const* const* type_names() const
virtual python::detail::signature_element const* signature() const
{
return m_caller.type_names();
return m_caller.signature();
}
private:
@@ -70,9 +70,9 @@ struct signature_py_function_impl : py_function_impl_base
return mpl::size<Sig>::value - 1;
}
virtual char const* const* type_names() const
virtual python::detail::signature_element const* signature() const
{
return python::detail::signature<Sig>::type_names();
return python::detail::signature<Sig>::elements();
}
private:
@@ -103,9 +103,9 @@ struct full_py_function_impl : py_function_impl_base
return m_max_arity;
}
virtual char const* const* type_names() const
virtual python::detail::signature_element const* signature() const
{
return python::detail::signature<Sig>::type_names();
return python::detail::signature<Sig>::elements();
}
private:
@@ -150,6 +150,11 @@ struct py_function
return m_impl->max_arity();
}
python::detail::signature_element const* signature() const
{
return m_impl->signature();
}
private:
mutable std::auto_ptr<py_function_impl_base> m_impl;
};