On 02/12/2012 01:25 PM, Avi Bahra wrote:
Does boost python support context management using the with statement? In my case I need to manage __enter__/__exit__ on the c++ side. Could not find any examples for this in the documentation.
Do you mean that you want to create an object that *has* __enter__ and __exit__ methods in C++, or that you want to write something like a "with" statement in C++?
If it's the former, you can do that pretty easily - just call your methods "__enter__" and "__exit__" and give them the right signatures, and Python will use them quite happily.
If it's the latter, I'm afraid there's no syntactic sugar for it. It's probably easiest to fake it by calling __enter__ and __exit__ and wrapping it all in a C++ try/catch block (if you raise a Python exception, it gets thrown in C++ as boost::python::error_already_set). But C++ itself doesn't really have a context management syntax, so there isn't really a good way to simulate the Python one.
HTH Jim _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig