52 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			52 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								// Copyright David Abrahams 2002.
							 | 
						||
| 
								 | 
							
								// 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 INSTANCE_DWA200295_HPP
							 | 
						||
| 
								 | 
							
								# define INSTANCE_DWA200295_HPP
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# include <boost/python/detail/prefix.hpp>
							 | 
						||
| 
								 | 
							
								# include <boost/type_traits/alignment_traits.hpp>
							 | 
						||
| 
								 | 
							
								# include <cstddef>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace boost { namespace python
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  struct BOOST_PYTHON_DECL_FORWARD instance_holder;
							 | 
						||
| 
								 | 
							
								}} // namespace boost::python
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace boost { namespace python { namespace objects { 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Each extension instance will be one of these
							 | 
						||
| 
								 | 
							
								template <class Data = char>
							 | 
						||
| 
								 | 
							
								struct instance
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    PyObject_VAR_HEAD
							 | 
						||
| 
								 | 
							
								    PyObject* dict;
							 | 
						||
| 
								 | 
							
								    PyObject* weakrefs; 
							 | 
						||
| 
								 | 
							
								    instance_holder* objects;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    typedef typename type_with_alignment<
							 | 
						||
| 
								 | 
							
								        ::boost::alignment_of<Data>::value
							 | 
						||
| 
								 | 
							
								    >::type align_t;
							 | 
						||
| 
								 | 
							
								          
							 | 
						||
| 
								 | 
							
								    union
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        align_t align;
							 | 
						||
| 
								 | 
							
								        char bytes[sizeof(Data)];
							 | 
						||
| 
								 | 
							
								    } storage;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								template <class Data>
							 | 
						||
| 
								 | 
							
								struct additional_instance_size
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    typedef instance<Data> instance_data;
							 | 
						||
| 
								 | 
							
								    typedef instance<char> instance_char;
							 | 
						||
| 
								 | 
							
								    BOOST_STATIC_CONSTANT(
							 | 
						||
| 
								 | 
							
								        std::size_t, value = sizeof(instance_data)
							 | 
						||
| 
								 | 
							
								                           - BOOST_PYTHON_OFFSETOF(instance_char,storage));
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}}} // namespace boost::python::object
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif // INSTANCE_DWA200295_HPP
							 |