[C++-sig] Exposing c++ class template to Python (known template instances)

dbarak dbarak at gmail.com
Sun Mar 17 06:49:05 CET 2013


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.


More information about the Cplusplus-sig mailing list