It is basically a logger policy and the idea is to create cross platform
logger that can be accessed from C++ and from python.
Except from the creation point I don't rely care what is the policy and
that is why I can't drag the template argument.
I think I understand what you mean by using an base class interface to a
template class I will try this.

Thanks
-Dotan


On Sun, Mar 17, 2013 at 3:13 PM, Holger Brandsmeier <brandsme...@gmx.de>wrote:

> Dotan,
>
> Well, you can derive your template class BarWithPolicy from a
> non-template class IBarWithPolicy and maybe that interface is enough
> to work with. Otherwise I usually drag the template arguments along on
> the C++ side.
>
> What exactly do you want to do with that object, that can then either
> be a `BarWithPolicy<FooFilePolicy >` or `BarWithPolicy<FooIoPolicy >`?
>
> -Holger
>
> On Sun, Mar 17, 2013 at 1:50 PM, Dotan Barak <dba...@gmail.com> wrote:
> > 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
> _______________________________________________
> 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