From 2eb2e52a79dbd4d24be54cda2b1cd864e8ca8e31 Mon Sep 17 00:00:00 2001 From: Dave Abrahams Date: Fri, 28 Dec 2001 23:52:01 +0000 Subject: [PATCH] workaround some compiler limitations [SVN r12165] --- .../boost/python/detail/extension_class.hpp | 54 +++++++++++-------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/include/boost/python/detail/extension_class.hpp b/include/boost/python/detail/extension_class.hpp index 00f9b6b4..05ebe229 100644 --- a/include/boost/python/detail/extension_class.hpp +++ b/include/boost/python/detail/extension_class.hpp @@ -38,20 +38,45 @@ template struct right_operand; enum without_downcast_t { without_downcast }; -namespace detail { +namespace detail +{ // forward declarations -class extension_instance; -class extension_class_base; -template class instance_holder; -template class instance_value_holder; -template class instance_ptr_holder; -template struct operand_select; + class extension_instance; + class extension_class_base; + template class instance_holder; + template class instance_value_holder; + template class instance_ptr_holder; + template struct operand_select; template struct choose_op; template struct choose_rop; template struct choose_unary_op; template struct define_operator; + class BOOST_PYTHON_DECL extension_instance : public instance + { + public: + extension_instance(PyTypeObject* class_); + ~extension_instance(); + + void add_implementation(std::auto_ptr holder); + + typedef std::vector held_objects; + const held_objects& wrapped_objects() const + { return m_wrapped_objects; } + private: + held_objects m_wrapped_objects; + }; + +} // namespace detail + +# ifndef BOOST_PYTHON_NO_TEMPLATE_EXPORT +BOOST_PYTHON_EXPORT_TEMPLATE_CLASS class_t; +BOOST_PYTHON_EXPORT_TEMPLATE_CLASS meta_class; +# endif + +namespace detail { + BOOST_PYTHON_DECL meta_class* extension_meta_class(); BOOST_PYTHON_DECL extension_instance* get_extension_instance(PyObject* p); BOOST_PYTHON_DECL void report_missing_instance_data(extension_instance*, class_t*, const std::type_info&); @@ -813,21 +838,6 @@ class instance_ptr_holder : public instance_holder PtrType m_ptr; }; -class BOOST_PYTHON_DECL extension_instance : public instance -{ - public: - extension_instance(PyTypeObject* class_); - ~extension_instance(); - - void add_implementation(std::auto_ptr holder); - - typedef std::vector held_objects; - const held_objects& wrapped_objects() const - { return m_wrapped_objects; } - private: - held_objects m_wrapped_objects; -}; - // // Template function implementations //