// 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 CLASS_DWA20011214_HPP | |
# define CLASS_DWA20011214_HPP | |
# include <boost/python/detail/prefix.hpp> | |
# include <boost/utility.hpp> | |
# include <boost/python/object_core.hpp> | |
# include <boost/python/type_id.hpp> | |
# include <cstddef> | |
namespace boost { namespace python { | |
namespace objects { | |
struct BOOST_PYTHON_DECL class_base : python::api::object | |
{ | |
// constructor | |
class_base( | |
char const* name // The name of the class | |
, std::size_t num_types // A list of class_ids. The first is the type | |
, type_info const*const types // this is wrapping. The rest are the types of | |
// any bases. | |
, char const* doc = 0 // Docstring, if any. | |
); | |
// Implementation detail. Hiding this in the private section would | |
// require use of template friend declarations. | |
void enable_pickling_(bool getstate_manages_dict); | |
protected: | |
void add_property( | |
char const* name, object const& fget, char const* docstr); | |
void add_property(char const* name, | |
object const& fget, object const& fset, char const* docstr); | |
void add_static_property(char const* name, object const& fget); | |
void add_static_property(char const* name, object const& fget, object const& fset); | |
// Retrieve the underlying object | |
void setattr(char const* name, object const&); | |
// Set a special attribute in the class which tells Boost.Python | |
// to allocate extra bytes for embedded C++ objects in Python | |
// instances. | |
void set_instance_size(std::size_t bytes); | |
// Set an __init__ function which throws an appropriate exception | |
// for abstract classes. | |
void def_no_init(); | |
// Effects: | |
// setattr(self, staticmethod(getattr(self, method_name))) | |
void make_method_static(const char *method_name); | |
}; | |
}}} // namespace boost::python::objects | |
#endif // CLASS_DWA20011214_HPP |