|
30 | 30 | <dt><span class="section"><a href="object.html#python.derived_object_types">Derived Object types</a></span></dt> |
31 | 31 | <dt><span class="section"><a href="object.html#python.extracting_c___objects">Extracting C++ objects</a></span></dt> |
32 | 32 | <dt><span class="section"><a href="object.html#python.enums">Enums</a></span></dt> |
| 33 | +<dt><span class="section"><a href="object.html#python.creating_python_object">Creating <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">python</span><span class="special">::</span><span class="identifier">object</span></code> from <code class="computeroutput"><span class="identifier">PyObject</span><span class="special">*</span></code></a></span></dt> |
33 | 34 | </dl></div> |
34 | 35 | <p> |
35 | 36 | Python is dynamically typed, unlike C++ which is statically typed. Python variables |
@@ -314,6 +315,32 @@ <h3> |
314 | 315 | <span class="special">;</span> |
315 | 316 | </pre> |
316 | 317 | </div> |
| 318 | +<div class="section"> |
| 319 | +<div class="titlepage"><div><div><h3 class="title"> |
| 320 | +<a name="python.creating_python_object"></a>Creating <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">python</span><span class="special">::</span><span class="identifier">object</span></code> from <code class="computeroutput"><span class="identifier">PyObject</span><span class="special">*</span></code> |
| 321 | +</h3></div></div></div> |
| 322 | +<p> |
| 323 | + When you want a <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">python</span><span class="special">::</span><span class="identifier">object</span></code> to manage a pointer to <code class="computeroutput"><span class="identifier">PyObject</span><span class="special">*</span></code> |
| 324 | + pyobj one does: |
| 325 | + </p> |
| 326 | +<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">python</span><span class="special">::</span><span class="identifier">object</span> <span class="identifier">o</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">python</span><span class="special">::</span><span class="identifier">handle</span><span class="special"><>(</span><span class="identifier">pyobj</span><span class="special">));</span> |
| 327 | +</pre> |
| 328 | +<p> |
| 329 | + In this case, the <code class="computeroutput"><span class="identifier">o</span></code> object, |
| 330 | + manages the <code class="computeroutput"><span class="identifier">pyobj</span></code>, it won’t |
| 331 | + increase the reference count on construction. |
| 332 | + </p> |
| 333 | +<p> |
| 334 | + Otherwise, to use a borrowed reference: |
| 335 | + </p> |
| 336 | +<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">python</span><span class="special">::</span><span class="identifier">object</span> <span class="identifier">o</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">python</span><span class="special">::</span><span class="identifier">handle</span><span class="special"><>(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">python</span><span class="special">::</span><span class="identifier">borrowed</span><span class="special">(</span><span class="identifier">pyobj</span><span class="special">)));</span> |
| 337 | +</pre> |
| 338 | +<p> |
| 339 | + In this case, <code class="computeroutput"><span class="identifier">Py_INCREF</span></code> is |
| 340 | + called, so <code class="computeroutput"><span class="identifier">pyobj</span></code> is not destructed |
| 341 | + when object o goes out of scope. |
| 342 | + </p> |
| 343 | +</div> |
317 | 344 | </div> |
318 | 345 | <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> |
319 | 346 | <td align="left"></td> |
|
0 commit comments