From 367a827b8d2451279596e9ac58123ed15b34c316 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20K=C3=B6the?= Date: Mon, 6 Nov 2000 15:39:49 +0000 Subject: [PATCH] *** empty log message *** [SVN r8152] --- gen_extclass.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/gen_extclass.py b/gen_extclass.py index ebd2fc78..2146e9c5 100644 --- a/gen_extclass.py +++ b/gen_extclass.py @@ -87,6 +87,9 @@ class ExtensionClassBase : public Class void* try_base_class_conversions(InstanceHolderBase*) const; void* try_derived_class_conversions(InstanceHolderBase*) const; + void set_attribute(const char* name, PyObject* x_); + void set_attribute(const char* name, Ptr x); + private: virtual void* extract_object_from_holder(InstanceHolderBase* v) const = 0; virtual std::vector const& base_classes() const = 0; @@ -425,7 +428,11 @@ class ExtensionClass detail::BaseClassInfo baseInfo(base, &detail::DefineConversion::downcast_ptr); ClassRegistry::register_base_class(baseInfo); - add_base(Ptr(as_object(base), Ptr::new_ref)); + + Class* target = (bases().size() == 0) + ? this + : Downcast >(bases()[0].get()).get(); + target->add_base(Ptr(as_object(base), Ptr::new_ref)); detail::DerivedClassInfo derivedInfo(this, &detail::DefineConversion::upcast_ptr); @@ -441,7 +448,11 @@ class ExtensionClass // conversion functions detail::BaseClassInfo baseInfo(base, 0); ClassRegistry::register_base_class(baseInfo); - add_base(Ptr(as_object(base), Ptr::new_ref)); + + Class* target = (bases().size() == 0) + ? this + : Downcast >(bases()[0].get()).get(); + target->add_base(Ptr(as_object(base), Ptr::new_ref)); detail::DerivedClassInfo derivedInfo(this, &detail::DefineConversion::upcast_ptr);