boost::python, returning new PyObject references

David Abrahams david.abrahams at rcn.com
Wed Dec 19 18:51:24 CET 2001


It sounds a bit like you want something like Andrei's GenScatterHierarchy.
The idea is to make a new type which inherits from everything in a given
type list.
If you've been following the MPL/Loki discussions on boost you know we have
a lot of implementations of that floating around.

However, be careful not to generalize so much that it's impossible to make
progress ;-)

-Dave


----- Original Message -----
From: "Arnaldur Gylfason" <arnaldur at decode.is>
To: "David Abrahams" <david.abrahams at rcn.com>
Cc: "Alex Martelli" <aleaxit at yahoo.com>; "Barry Scott"
<barry at scottb.demon.co.uk>; "Martin Casado" <casado2 at llnl.gov>; "Mark Evans"
<evans at kandctech.com>; "Anton Gluck" <gluc at midway.uchicago.edu>; "Ullrich
Koethe" <koethe at informatik.uni-hamburg.de>; "Lyle Johnson"
<ljohnson at resgen.com>; "Martin Casado" <mcasado at gmx.net>; "Niklas Blomberg"
<niklas_blomberg at telia.com>; "Ralf W. Grosse-Kunstleve" <rwgk at cci.lbl.gov>;
"scott snyder" <snyder at fnal.gov>; "Xavier Defrang" <xavier at perceval.net>
Sent: Wednesday, December 19, 2001 11:25 AM
Subject: Re: boost::python, returning new PyObject references


>
> Having a generic_object that inherits from several interfaces would be
> helpful.
> Something similar to boost::function maybe
> (
> template<class OT1, class OT2>
> generic_object2 : public OT1, public OT2
> {
> public:
>      explicit generic_object2(ref r) : object(r) , OT1(r) , OT2(r) { }
>
>      ...
>
> };
>
> Similar for generic_object3 etc.
>
> Then have generic_object<OT1,OT2> and generic_object<OT1,OT2,OT3> etc.
>
> (generic_objectN -- functionN
> generic_object -- function)
>
> Often something has to be redefined when two interfaces intersect ( e.g.
in
> seqmap ).
> If it were possible to have a
>      INTERSECT(OT1,OT2)
> that were some kind of macro that gives the correct definitions for
OT1,OT2
> (or INTERSECT<OT1,OT2>)
> we could have:
>
> template<class OT1, class OT2>
> generic_object2 : public OT1, public OT2
> {
> public:
>      explicit generic_object2(ref r) : object(r) , OT1(r) , OT2(r) { }
>
>      INTERSECT(OT1,OT2)
>
> };
>
> template<class OT1, class OT2,class OT3>
> generic_object2 : public OT1, public OT2, public OT3
> {
> public:
>      explicit generic_object2(ref r) : object(r) , OT1(r) , OT2(r) ,
OT3(r)
> { }
>
>      INTERSECT(OT1,OT2)
>      INTERSECT(OT1,OT3)
>      INTERSECT(OT2,OT3)
>
> };
>
>
> The proxies might then inherit from
generic_object<sequence,mapping,number>




More information about the Cplusplus-sig mailing list