]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/boost/python/object/class.hpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / boost / python / object / class.hpp
1 // Copyright David Abrahams 2001.
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 CLASS_DWA20011214_HPP
6 # define CLASS_DWA20011214_HPP
7
8 # include <boost/python/detail/prefix.hpp>
9 # include <boost/python/object_core.hpp>
10 # include <boost/python/type_id.hpp>
11 # include <cstddef>
12
13 namespace boost { namespace python {
14
15 namespace objects {
16
17 struct BOOST_PYTHON_DECL class_base : python::api::object
18 {
19 // constructor
20 class_base(
21 char const* name // The name of the class
22
23 , std::size_t num_types // A list of class_ids. The first is the type
24 , type_info const*const types // this is wrapping. The rest are the types of
25 // any bases.
26
27 , char const* doc = 0 // Docstring, if any.
28 );
29
30
31 // Implementation detail. Hiding this in the private section would
32 // require use of template friend declarations.
33 void enable_pickling_(bool getstate_manages_dict);
34
35 protected:
36 void add_property(
37 char const* name, object const& fget, char const* docstr);
38 void add_property(char const* name,
39 object const& fget, object const& fset, char const* docstr);
40
41 void add_static_property(char const* name, object const& fget);
42 void add_static_property(char const* name, object const& fget, object const& fset);
43
44 // Retrieve the underlying object
45 void setattr(char const* name, object const&);
46
47 // Set a special attribute in the class which tells Boost.Python
48 // to allocate extra bytes for embedded C++ objects in Python
49 // instances.
50 void set_instance_size(std::size_t bytes);
51
52 // Set an __init__ function which throws an appropriate exception
53 // for abstract classes.
54 void def_no_init();
55
56 // Effects:
57 // setattr(self, staticmethod(getattr(self, method_name)))
58 void make_method_static(const char *method_name);
59 };
60
61 }}} // namespace boost::python::objects
62
63 #endif // CLASS_DWA20011214_HPP