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

Reply via email to