Thanks for the response

That trick can help me out in the python level since python is has a duck
typing attribute.

do you familiar with any a procedure for the C++ ?. what I mean is this : I
would like to have some generic pointer that can either point to
BarWithPolicy<FooFilePolicy
> nor to BarWithPolicy<FooIoPolicy > ?


thanks
-Dotan

On Sun, Mar 17, 2013 at 9:36 AM, Holger Brandsmeier <brandsme...@gmx.de>wrote:

> Dotan,
>
> in
>   >>> barPolicy = GetBarWithPolic(Io)
>   >>> barPolicy = GetBarWithPolic(File)
> what type of object would you imaginge `Io` and `File` to be?
>
> You already exported the functions as `GetBarWithPolicIo` and
> `GetBarWithPolicFile` and then you could implement in python
> `GetBarWithPolic(str)` and there use something like `return
> globals()["GetBarWithPolic%s" % (str,)]()` where you would now do
>   barPolicy = GetBarWithPolic("Io")
>   barPolicy = GetBarWithPolic("File")
>
> -Holger
>
> On Sun, Mar 17, 2013 at 6:49 AM, dbarak <dba...@gmail.com> wrote:
> > Assume I have this Interface:
> > class FooInterface
> > {
> > public:
> >     ...
> >
> > };
> >
> > class FooFilePolicy : public FooInterface
> > {
> >  ...
> > };
> >
> > class FooIoPolicy : public FooInterface
> > {
> >  ...
> > };
> >
> > And I have this template using the upper interface policy:
> >
> > template< typename FooPolicy >
> > class BarWithPolicy
> > {
> > ...
> >     FooPolicy* policy;
> > ...
> > };
> >
> > How can I expose BarWithPolicy to python that can be generically
> instantiate
> > with both  FooIoPolicy and FooFilePolicy ?
> >
> >
> > I don't want to do this :
> >
> > BarWithPolicy<FooFilePolicy >& GetBarWithPolicyFile()
> > {
> >     return new BarWithPolicy<FooFilePolicy >;
> > }
> >
> > BarWithPolicy<FooIoPolicy>& GetBarWithPolicyIo()
> > {
> >     return new BarWithPolicy<FooIoPolicy >;
> > }
> >
> > BOOST_PYTHON_MODULE(PyBar)
> > {
> >     def("GetBarWithPolicyFile",
> >         &GetBarWithPolicyFile,
> >         return_value_policy<reference_existing_object>(),
> >         ""
> >         );
> >     def("GetBarWithPolicyIo",
> >         &GetBarWithPolicyIo,
> >         return_value_policy<reference_existing_object>(),
> >         ""
> >         );
> > }
> >
> > I would like to have some thing like this in python:
> >
> >>>> barPolicy = GetBarWithPolic(Io)
> > Or
> >>>> barPolicy = GetBarWithPolic(File)
> >
> > Thanks
> > -Dotan
> >
> >
> >
> >
> >
> > --
> > View this message in context:
> http://boost.2283326.n4.nabble.com/Exposing-c-class-template-to-Python-known-template-instances-tp4644238.html
> > Sent from the Python - c++-sig mailing list archive at Nabble.com.
> > _______________________________________________
> > Cplusplus-sig mailing list
> > Cplusplus-sig@python.org
> > http://mail.python.org/mailman/listinfo/cplusplus-sig
> _______________________________________________
> Cplusplus-sig mailing list
> Cplusplus-sig@python.org
> http://mail.python.org/mailman/listinfo/cplusplus-sig
>



-- 
Dotan Barak
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to