mirror of
https://github.com/boostorg/python.git
synced 2026-01-20 04:42:28 +00:00
Also port some "glaringly obvious" bugfixes from HEAD. Hope it doesn't cause problems. [SVN r35237]
91 lines
4.3 KiB
HTML
91 lines
4.3 KiB
HTML
<html>
|
|
<head>
|
|
<!-- Generated by the Spirit (http://spirit.sf.net) QuickDoc -->
|
|
<title>Policies</title>
|
|
<link rel="stylesheet" href="theme/style.css" type="text/css">
|
|
<link rel="prev" href="renaming_and_excluding.html">
|
|
<link rel="next" href="templates.html">
|
|
</head>
|
|
<body>
|
|
<table width="100%" height="48" border="0" cellspacing="2">
|
|
<tr>
|
|
<td><img src="../../../../boost.png">
|
|
</td>
|
|
<td width="85%">
|
|
<font size="6" face="Verdana, Arial, Helvetica, sans-serif"><b>Policies</b></font>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<table border="0">
|
|
<tr>
|
|
<td width="30"><a href="../index.html"><img src="theme/u_arr.gif" border="0"></a></td>
|
|
<td width="30"><a href="renaming_and_excluding.html"><img src="theme/l_arr.gif" border="0"></a></td>
|
|
<td width="20"><a href="templates.html"><img src="theme/r_arr.gif" border="0"></a></td>
|
|
</tr>
|
|
</table>
|
|
<p>
|
|
Even thought Pyste can identify various elements in the C++ code, like virtual
|
|
member functions, attributes, and so on, one thing that it can't do is to
|
|
guess the semantics of functions that return pointers or references. In this
|
|
case, the user must manually specify the policy. Policies are explained in the
|
|
<a href="../../doc/tutorial/doc/html/python/functions.html#python.call_policies">
|
|
tutorial</a>.</p>
|
|
<p>
|
|
The policies in Pyste are named exactly as in <a href="../../index.html">
|
|
Boost.Python</a>, only the syntax is
|
|
slightly different. For instance, this policy:</p>
|
|
<code><pre>
|
|
<span class=identifier>return_internal_reference</span><span class=special><</span><span class=number>1</span><span class=special>, </span><span class=identifier>with_custodian_and_ward</span><span class=special><</span><span class=number>1</span><span class=special>, </span><span class=number>2</span><span class=special>> >()
|
|
</span></pre></code>
|
|
<p>
|
|
becomes in Pyste: </p>
|
|
<code><pre>
|
|
<span class=identifier>return_internal_reference</span><span class=special>(</span><span class=number>1</span><span class=special>, </span><span class=identifier>with_custodian_and_ward</span><span class=special>(</span><span class=number>1</span><span class=special>, </span><span class=number>2</span><span class=special>))
|
|
</span></pre></code>
|
|
<p>
|
|
The user can specify policies for functions and virtual member functions with
|
|
the <tt>set_policy</tt> function:</p>
|
|
<code><pre>
|
|
<span class=identifier>set_policy</span><span class=special>(</span><span class=identifier>f</span><span class=special>, </span><span class=identifier>return_internal_reference</span><span class=special>())
|
|
</span><span class=identifier>set_policy</span><span class=special>(</span><span class=identifier>C</span><span class=special>.</span><span class=identifier>foo</span><span class=special>, </span><span class=identifier>return_value_policy</span><span class=special>(</span><span class=identifier>manage_new_object</span><span class=special>))
|
|
</span></pre></code>
|
|
<table width="80%" border="0" align="center">
|
|
<tr>
|
|
<td class="note_box">
|
|
|
|
<img src="theme/note.gif"></img> <b>What if a function or member function needs a policy and
|
|
the user doesn't set one?</b><br><br> If a function needs a policy and one
|
|
was not set, Pyste will issue a error. The user should then go in the
|
|
interface file and set the policy for it, otherwise the generated cpp won't
|
|
compile.
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table width="80%" border="0" align="center">
|
|
<tr>
|
|
<td class="note_box">
|
|
|
|
<img src="theme/note.gif"></img>
|
|
Note that for functions that return <tt>const T&</tt>, the policy
|
|
<tt>return_value_policy<copy_const_reference>()</tt> wil be used by default, because
|
|
that's normally what you want. You can change it to something else if you need
|
|
to, though.
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table border="0">
|
|
<tr>
|
|
<td width="30"><a href="../index.html"><img src="theme/u_arr.gif" border="0"></a></td>
|
|
<td width="30"><a href="renaming_and_excluding.html"><img src="theme/l_arr.gif" border="0"></a></td>
|
|
<td width="20"><a href="templates.html"><img src="theme/r_arr.gif" border="0"></a></td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<hr size="1"><p class="copyright">Copyright © 2003 Bruno da Silva de Oliveira<br>Copyright © 2002-2003 Joel de Guzman<br><br>
|
|
<font size="2">Distributed under
|
|
the Boost Software License, Version 1.0. (See accompanying file
|
|
LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) </font> </p>
|
|
</body>
|
|
</html>
|