[C++-sig] boost python & context manager/with statement
Jim Bosch
talljimbo at gmail.com
Sun Feb 12 19:43:31 CET 2012
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
More information about the Cplusplus-sig
mailing list