12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- // Copyright David Abrahams 2001.
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- #ifndef FUNCTION_DWA20011214_HPP
- # define FUNCTION_DWA20011214_HPP
- # include <boost/python/detail/prefix.hpp>
- # include <boost/python/args_fwd.hpp>
- # include <boost/python/handle.hpp>
- # include <boost/function/function2.hpp>
- # include <boost/python/object_core.hpp>
- # include <boost/python/object/py_function.hpp>
- namespace boost { namespace python { namespace objects {
- struct BOOST_PYTHON_DECL function : PyObject
- {
- function(
- py_function const&
- , python::detail::keyword const* names_and_defaults
- , unsigned num_keywords);
-
- ~function();
-
- PyObject* call(PyObject*, PyObject*) const;
- // Add an attribute to the name_space with the given name. If it is
- // a function object (this class), and an existing function is
- // already there, add it as an overload.
- static void add_to_namespace(
- object const& name_space, char const* name, object const& attribute);
- static void add_to_namespace(
- object const& name_space, char const* name, object const& attribute, char const* doc);
- object const& doc() const;
- void doc(object const& x);
-
- object const& name() const;
- object const& get_namespace() const { return m_namespace; }
-
- private: // helper functions
- object signature(bool show_return_type=false) const;
- object signatures(bool show_return_type=false) const;
- void argument_error(PyObject* args, PyObject* keywords) const;
- void add_overload(handle<function> const&);
-
- private: // data members
- py_function m_fn;
- handle<function> m_overloads;
- object m_name;
- object m_namespace;
- object m_doc;
- object m_arg_names;
- unsigned m_nkeyword_values;
- friend class function_doc_signature_generator;
- };
- //
- // implementations
- //
- inline object const& function::doc() const
- {
- return this->m_doc;
- }
- inline void function::doc(object const& x)
- {
- this->m_doc = x;
- }
- inline object const& function::name() const
- {
- return this->m_name;
- }
-
- }}} // namespace boost::python::objects
- #endif // FUNCTION_DWA20011214_HPP
|