• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>boost/python/object.hpp</title>
5<link rel="stylesheet" href="../../boostbook.css" type="text/css">
6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7<link rel="home" href="../index.html" title="Boost.Python Reference Manual">
8<link rel="up" href="../object_wrappers.html" title="Chapter 3. Object Wrappers">
9<link rel="prev" href="boost_python_long_hpp.html" title="boost/python/long.hpp">
10<link rel="next" href="boost_python_str_hpp.html" title="boost/python/str.hpp">
11</head>
12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="" width="" height="" src="../../images/boost.png"></td></tr></table>
14<hr>
15<div class="spirit-nav">
16<a accesskey="p" href="boost_python_long_hpp.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../object_wrappers.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="boost_python_str_hpp.html"><img src="../../images/next.png" alt="Next"></a>
17</div>
18<div class="section">
19<div class="titlepage"><div><div><h2 class="title" style="clear: both">
20<a name="object_wrappers.boost_python_object_hpp"></a><a class="link" href="boost_python_object_hpp.html" title="boost/python/object.hpp">boost/python/object.hpp</a>
21</h2></div></div></div>
22<div class="toc"><dl class="toc">
23<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.introduction">Introduction</a></span></dt>
24<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_slice_nil">Class
25        <code class="computeroutput"><span class="identifier">slice_nil</span></code></a></span></dt>
26<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_const_attribute_policies">Class
27        <code class="computeroutput"><span class="identifier">const_attribute_policies</span></code></a></span></dt>
28<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_const_attribute_policies_s">Class
29        <code class="computeroutput"><span class="identifier">const_attribute_policies</span></code>
30        static functions</a></span></dt>
31<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_attribute_policies">Class
32        <code class="computeroutput"><span class="identifier">attribute_policies</span></code></a></span></dt>
33<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_attribute_policies_static_">Class
34        <code class="computeroutput"><span class="identifier">attribute_policies</span></code> static
35        functions</a></span></dt>
36<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_const_objattribute_policie">Class
37        <code class="computeroutput"><span class="identifier">const_objattribute_policies</span></code></a></span></dt>
38<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_const_objattribute_polici0">Class
39        <code class="computeroutput"><span class="identifier">const_objattribute_policies</span></code>
40        static functions</a></span></dt>
41<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_objattribute_policies">Class
42        <code class="computeroutput"><span class="identifier">objattribute_policies</span></code></a></span></dt>
43<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_objattribute_policies_stat">Class
44        <code class="computeroutput"><span class="identifier">objattribute_policies</span></code> static
45        functions</a></span></dt>
46<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_const_item_policies">Class
47        <code class="computeroutput"><span class="identifier">const_item_policies</span></code></a></span></dt>
48<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_const_item_policies_static">Class
49        <code class="computeroutput"><span class="identifier">const_item_policies</span></code> static
50        functions</a></span></dt>
51<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_item_policies">Class
52        <code class="computeroutput"><span class="identifier">item_policies</span></code></a></span></dt>
53<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_item_policies_static_funct">Class
54        <code class="computeroutput"><span class="identifier">item_policies</span></code> static functions</a></span></dt>
55<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_const_slice_policies">Class
56        <code class="computeroutput"><span class="identifier">const_slice_policies</span></code></a></span></dt>
57<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_const_slice_policies_stati">Class
58        <code class="computeroutput"><span class="identifier">const_slice_policies</span></code> static
59        functions</a></span></dt>
60<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_slice_policies">Class
61        <code class="computeroutput"><span class="identifier">slice_policies</span></code></a></span></dt>
62<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_slice_policies_static_func">Class
63        <code class="computeroutput"><span class="identifier">slice_policies</span></code> static functions</a></span></dt>
64<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_template_object_operators">Class
65        template <code class="computeroutput"><span class="identifier">object_operators</span></code></a></span></dt>
66<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_template_object_operators_">Class
67        template <code class="computeroutput"><span class="identifier">object_operators</span></code>
68        observer functions</a></span></dt>
69<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_object">Class
70        <code class="computeroutput"><span class="identifier">object</span></code></a></span></dt>
71<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_object_constructors_and_de">Class
72        <code class="computeroutput"><span class="identifier">object</span></code> constructors and destructor</a></span></dt>
73<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_object_modifiers">Class
74        <code class="computeroutput"><span class="identifier">object</span></code> modifiers</a></span></dt>
75<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_template_proxy">Class
76        template <code class="computeroutput"><span class="identifier">proxy</span></code></a></span></dt>
77<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_template_proxy_observer_fu">Class
78        template <code class="computeroutput"><span class="identifier">proxy</span></code> observer functions</a></span></dt>
79<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_template_proxy_modifier_fu">Class
80        template <code class="computeroutput"><span class="identifier">proxy</span></code> modifier functions</a></span></dt>
81<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.functions">Functions</a></span></dt>
82<dt><span class="section"><a href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.example">Example</a></span></dt>
83</dl></div>
84<div class="section">
85<div class="titlepage"><div><div><h3 class="title">
86<a name="object_wrappers.boost_python_object_hpp.introduction"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.introduction" title="Introduction">Introduction</a>
87</h3></div></div></div>
88<p>
89          Exposes the generic Python object wrapper class object, and related classes.
90          In order to avoid some potenential problems with argument-dependent lookup
91          and the generalized operators defined on object, all these facilities are
92          defined in namespace boost::python::api, and object is imported into namespace
93          boost::python with a using-declaration.
94        </p>
95</div>
96<div class="section">
97<div class="titlepage"><div><div><h3 class="title">
98<a name="object_wrappers.boost_python_object_hpp.class_slice_nil"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_slice_nil" title="Class slice_nil">Class
99        <code class="computeroutput"><span class="identifier">slice_nil</span></code></a>
100</h3></div></div></div>
101<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">slice_nil</span><span class="special">;</span>
102<span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">_</span> <span class="special">=</span> <span class="identifier">slice_nil</span><span class="special">();</span>
103</pre>
104<p>
105          A type that can be used to get the effect of leaving out an index in a
106          Python slice expression:
107        </p>
108<pre class="programlisting"><span class="special">&gt;&gt;&gt;</span> <span class="identifier">x</span><span class="special">[:-</span><span class="number">1</span><span class="special">]</span>
109<span class="special">&gt;&gt;&gt;</span> <span class="identifier">x</span><span class="special">[::-</span><span class="number">1</span><span class="special">]</span>
110</pre>
111<p>
112          C++ equivalent:
113        </p>
114<pre class="programlisting"><span class="identifier">x</span><span class="special">.</span><span class="identifier">slice</span><span class="special">(</span><span class="identifier">_</span><span class="special">,-</span><span class="number">1</span><span class="special">)</span>
115<span class="identifier">x</span><span class="special">[</span><span class="identifier">slice</span><span class="special">(</span><span class="identifier">_</span><span class="special">,</span><span class="identifier">_</span><span class="special">,-</span><span class="number">1</span><span class="special">)]</span>
116</pre>
117</div>
118<div class="section">
119<div class="titlepage"><div><div><h3 class="title">
120<a name="object_wrappers.boost_python_object_hpp.class_const_attribute_policies"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_const_attribute_policies" title="Class const_attribute_policies">Class
121        <code class="computeroutput"><span class="identifier">const_attribute_policies</span></code></a>
122</h3></div></div></div>
123<p>
124          The policies which are used for proxies representing an attribute access
125          to a const object.
126        </p>
127<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">python</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">api</span>
128<span class="special">{</span>
129  <span class="keyword">struct</span> <span class="identifier">const_attribute_policies</span>
130  <span class="special">{</span>
131      <span class="keyword">typedef</span> <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">key_type</span><span class="special">;</span>
132      <span class="keyword">static</span> <span class="identifier">object</span> <span class="identifier">get</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">target</span><span class="special">,</span> <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">key</span><span class="special">);</span>
133  <span class="special">};</span>
134<span class="special">}}}</span>
135</pre>
136</div>
137<div class="section">
138<div class="titlepage"><div><div><h3 class="title">
139<a name="object_wrappers.boost_python_object_hpp.class_const_attribute_policies_s"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_const_attribute_policies_s" title="Class const_attribute_policies static functions">Class
140        <code class="computeroutput"><span class="identifier">const_attribute_policies</span></code>
141        static functions</a>
142</h3></div></div></div>
143<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">object</span> <span class="identifier">get</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">target</span><span class="special">,</span> <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">key</span><span class="special">);</span>
144</pre>
145<div class="variablelist">
146<p class="title"><b></b></p>
147<dl class="variablelist">
148<dt><span class="term">Requires</span></dt>
149<dd><p>
150                key is an <a class="link" href="../glossary.html#ntbs">ntbs</a>.
151              </p></dd>
152<dt><span class="term">Effects</span></dt>
153<dd><p>
154                accesses the attribute of target named by key.
155              </p></dd>
156<dt><span class="term">Returns</span></dt>
157<dd><p>
158                An object managing the result of the attribute access.
159              </p></dd>
160<dt><span class="term">Throws</span></dt>
161<dd><p>
162                <a class="link" href="../high_level_components/boost_python_errors_hpp.html#high_level_components.boost_python_errors_hpp.class_error_already_set" title="Class error_already_set">error_already_set</a>
163                if a Python exception is raised.
164              </p></dd>
165</dl>
166</div>
167</div>
168<div class="section">
169<div class="titlepage"><div><div><h3 class="title">
170<a name="object_wrappers.boost_python_object_hpp.class_attribute_policies"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_attribute_policies" title="Class attribute_policies">Class
171        <code class="computeroutput"><span class="identifier">attribute_policies</span></code></a>
172</h3></div></div></div>
173<p>
174          The policies which are used for proxies representing an attribute access
175          to a mutable object.
176        </p>
177<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">python</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">api</span>
178<span class="special">{</span>
179  <span class="keyword">struct</span> <span class="identifier">attribute_policies</span> <span class="special">:</span> <span class="identifier">const_attribute_policies</span>
180  <span class="special">{</span>
181      <span class="keyword">static</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">set</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">target</span><span class="special">,</span> <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">key</span><span class="special">,</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">value</span><span class="special">);</span>
182      <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">del</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">target</span><span class="special">,</span> <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">key</span><span class="special">);</span>
183  <span class="special">};</span>
184<span class="special">}}}</span>
185</pre>
186</div>
187<div class="section">
188<div class="titlepage"><div><div><h3 class="title">
189<a name="object_wrappers.boost_python_object_hpp.class_attribute_policies_static_"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_attribute_policies_static_" title="Class attribute_policies static functions">Class
190        <code class="computeroutput"><span class="identifier">attribute_policies</span></code> static
191        functions</a>
192</h3></div></div></div>
193<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">set</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">target</span><span class="special">,</span> <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">key</span><span class="special">,</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">value</span><span class="special">);</span>
194</pre>
195<div class="variablelist">
196<p class="title"><b></b></p>
197<dl class="variablelist">
198<dt><span class="term">Requires</span></dt>
199<dd><p>
200                key is an <a class="link" href="../glossary.html#ntbs">ntbs</a>.
201              </p></dd>
202<dt><span class="term">Effects</span></dt>
203<dd><p>
204                sets the attribute of target named by key to value.
205              </p></dd>
206<dt><span class="term">Throws</span></dt>
207<dd><p>
208                <a class="link" href="../high_level_components/boost_python_errors_hpp.html#high_level_components.boost_python_errors_hpp.class_error_already_set" title="Class error_already_set">error_already_set</a>
209                if a Python exception is raised.
210              </p></dd>
211</dl>
212</div>
213<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">del</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">target</span><span class="special">,</span> <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">key</span><span class="special">);</span>
214</pre>
215<div class="variablelist">
216<p class="title"><b></b></p>
217<dl class="variablelist">
218<dt><span class="term">Requires</span></dt>
219<dd><p>
220                key is an <a class="link" href="../glossary.html#ntbs">ntbs</a>.
221              </p></dd>
222<dt><span class="term">Effects</span></dt>
223<dd><p>
224                deletes the attribute of target named by key.
225              </p></dd>
226<dt><span class="term">Throws</span></dt>
227<dd><p>
228                <a class="link" href="../high_level_components/boost_python_errors_hpp.html#high_level_components.boost_python_errors_hpp.class_error_already_set" title="Class error_already_set">error_already_set</a>
229                if a Python exception is raised.
230              </p></dd>
231</dl>
232</div>
233</div>
234<div class="section">
235<div class="titlepage"><div><div><h3 class="title">
236<a name="object_wrappers.boost_python_object_hpp.class_const_objattribute_policie"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_const_objattribute_policie" title="Class const_objattribute_policies">Class
237        <code class="computeroutput"><span class="identifier">const_objattribute_policies</span></code></a>
238</h3></div></div></div>
239<p>
240          The policies which are used for proxies representing an attribute access
241          to a const object when the attribute name is given as a const object.
242        </p>
243<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">python</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">api</span>
244<span class="special">{</span>
245  <span class="keyword">struct</span> <span class="identifier">const_objattribute_policies</span>
246  <span class="special">{</span>
247      <span class="keyword">typedef</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key_type</span><span class="special">;</span>
248      <span class="keyword">static</span> <span class="identifier">object</span> <span class="identifier">get</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">target</span><span class="special">,</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">);</span>
249  <span class="special">};</span>
250<span class="special">}}}</span>
251</pre>
252</div>
253<div class="section">
254<div class="titlepage"><div><div><h3 class="title">
255<a name="object_wrappers.boost_python_object_hpp.class_const_objattribute_polici0"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_const_objattribute_polici0" title="Class const_objattribute_policies static functions">Class
256        <code class="computeroutput"><span class="identifier">const_objattribute_policies</span></code>
257        static functions</a>
258</h3></div></div></div>
259<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">object</span> <span class="identifier">get</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">target</span><span class="special">,</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">);</span>
260</pre>
261<div class="variablelist">
262<p class="title"><b></b></p>
263<dl class="variablelist">
264<dt><span class="term">Requires</span></dt>
265<dd><p>
266                key is an object holding a string.
267              </p></dd>
268<dt><span class="term">Effects</span></dt>
269<dd><p>
270                accesses the attribute of target named by key.
271              </p></dd>
272<dt><span class="term">Returns</span></dt>
273<dd><p>
274                An object managing the result of the attribute access.
275              </p></dd>
276<dt><span class="term">Throws</span></dt>
277<dd><p>
278                <a class="link" href="../high_level_components/boost_python_errors_hpp.html#high_level_components.boost_python_errors_hpp.class_error_already_set" title="Class error_already_set">error_already_set</a>
279                if a Python exception is raised.
280              </p></dd>
281</dl>
282</div>
283</div>
284<div class="section">
285<div class="titlepage"><div><div><h3 class="title">
286<a name="object_wrappers.boost_python_object_hpp.class_objattribute_policies"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_objattribute_policies" title="Class objattribute_policies">Class
287        <code class="computeroutput"><span class="identifier">objattribute_policies</span></code></a>
288</h3></div></div></div>
289<p>
290          The policies which are used for proxies representing an attribute access
291          to a mutable object when the attribute name is given as a const object.
292        </p>
293<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">python</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">api</span>
294<span class="special">{</span>
295  <span class="keyword">struct</span> <span class="identifier">objattribute_policies</span> <span class="special">:</span> <span class="identifier">const_objattribute_policies</span>
296  <span class="special">{</span>
297      <span class="keyword">static</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">set</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">target</span><span class="special">,</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">,</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">value</span><span class="special">);</span>
298      <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">del</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">target</span><span class="special">,</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">);</span>
299  <span class="special">};</span>
300<span class="special">}}}</span>
301</pre>
302</div>
303<div class="section">
304<div class="titlepage"><div><div><h3 class="title">
305<a name="object_wrappers.boost_python_object_hpp.class_objattribute_policies_stat"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_objattribute_policies_stat" title="Class objattribute_policies static functions">Class
306        <code class="computeroutput"><span class="identifier">objattribute_policies</span></code> static
307        functions</a>
308</h3></div></div></div>
309<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">set</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">target</span><span class="special">,</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">,</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">value</span><span class="special">);</span>
310</pre>
311<div class="variablelist">
312<p class="title"><b></b></p>
313<dl class="variablelist">
314<dt><span class="term">Requires</span></dt>
315<dd><p>
316                key is an object holding a string.
317              </p></dd>
318<dt><span class="term">Effects</span></dt>
319<dd><p>
320                sets the attribute of target named by key to value.
321              </p></dd>
322<dt><span class="term">Throws</span></dt>
323<dd><p>
324                <a class="link" href="../high_level_components/boost_python_errors_hpp.html#high_level_components.boost_python_errors_hpp.class_error_already_set" title="Class error_already_set">error_already_set</a>
325                if a Python exception is raised.
326              </p></dd>
327</dl>
328</div>
329<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">del</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">target</span><span class="special">,</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">);</span>
330</pre>
331<div class="variablelist">
332<p class="title"><b></b></p>
333<dl class="variablelist">
334<dt><span class="term">Requires</span></dt>
335<dd><p>
336                key is an object holding a string.
337              </p></dd>
338<dt><span class="term">Effects</span></dt>
339<dd><p>
340                deletes the attribute of target named by key.
341              </p></dd>
342<dt><span class="term">Throws</span></dt>
343<dd><p>
344                <a class="link" href="../high_level_components/boost_python_errors_hpp.html#high_level_components.boost_python_errors_hpp.class_error_already_set" title="Class error_already_set">error_already_set</a>
345                if a Python exception is raised.
346              </p></dd>
347</dl>
348</div>
349</div>
350<div class="section">
351<div class="titlepage"><div><div><h3 class="title">
352<a name="object_wrappers.boost_python_object_hpp.class_const_item_policies"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_const_item_policies" title="Class const_item_policies">Class
353        <code class="computeroutput"><span class="identifier">const_item_policies</span></code></a>
354</h3></div></div></div>
355<p>
356          The policies which are used for proxies representing an item access (via
357          the Python bracket operators []) to a const object.
358        </p>
359<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">python</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">api</span>
360<span class="special">{</span>
361  <span class="keyword">struct</span> <span class="identifier">const_item_policies</span>
362  <span class="special">{</span>
363      <span class="keyword">typedef</span> <span class="identifier">object</span> <span class="identifier">key_type</span><span class="special">;</span>
364      <span class="keyword">static</span> <span class="identifier">object</span> <span class="identifier">get</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">target</span><span class="special">,</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">);</span>
365  <span class="special">};</span>
366<span class="special">}}}</span>
367</pre>
368</div>
369<div class="section">
370<div class="titlepage"><div><div><h3 class="title">
371<a name="object_wrappers.boost_python_object_hpp.class_const_item_policies_static"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_const_item_policies_static" title="Class const_item_policies static functions">Class
372        <code class="computeroutput"><span class="identifier">const_item_policies</span></code> static
373        functions</a>
374</h3></div></div></div>
375<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">object</span> <span class="identifier">get</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">target</span><span class="special">,</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">);</span>
376</pre>
377<div class="variablelist">
378<p class="title"><b></b></p>
379<dl class="variablelist">
380<dt><span class="term">Effects</span></dt>
381<dd><p>
382                accesses the item of target specified by key.
383              </p></dd>
384<dt><span class="term">Returns</span></dt>
385<dd><p>
386                An object managing the result of the item access.
387              </p></dd>
388<dt><span class="term">Throws</span></dt>
389<dd><p>
390                <a class="link" href="../high_level_components/boost_python_errors_hpp.html#high_level_components.boost_python_errors_hpp.class_error_already_set" title="Class error_already_set">error_already_set</a>
391                if a Python exception is raised.
392              </p></dd>
393</dl>
394</div>
395</div>
396<div class="section">
397<div class="titlepage"><div><div><h3 class="title">
398<a name="object_wrappers.boost_python_object_hpp.class_item_policies"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_item_policies" title="Class item_policies">Class
399        <code class="computeroutput"><span class="identifier">item_policies</span></code></a>
400</h3></div></div></div>
401<p>
402          The policies which are used for proxies representing an item access (via
403          the Python bracket operators []) to a mutable object.
404        </p>
405<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">python</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">api</span>
406<span class="special">{</span>
407  <span class="keyword">struct</span> <span class="identifier">item_policies</span> <span class="special">:</span> <span class="identifier">const_item_policies</span>
408  <span class="special">{</span>
409      <span class="keyword">static</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">set</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">target</span><span class="special">,</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">,</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">value</span><span class="special">);</span>
410      <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">del</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">target</span><span class="special">,</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">);</span>
411  <span class="special">};</span>
412<span class="special">}}}</span>
413</pre>
414</div>
415<div class="section">
416<div class="titlepage"><div><div><h3 class="title">
417<a name="object_wrappers.boost_python_object_hpp.class_item_policies_static_funct"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_item_policies_static_funct" title="Class item_policies static functions">Class
418        <code class="computeroutput"><span class="identifier">item_policies</span></code> static functions</a>
419</h3></div></div></div>
420<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">set</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">target</span><span class="special">,</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">,</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">value</span><span class="special">);</span>
421</pre>
422<div class="variablelist">
423<p class="title"><b></b></p>
424<dl class="variablelist">
425<dt><span class="term">Effects</span></dt>
426<dd><p>
427                sets the item of target specified by key to value.
428              </p></dd>
429<dt><span class="term">Throws</span></dt>
430<dd><p>
431                <a class="link" href="../high_level_components/boost_python_errors_hpp.html#high_level_components.boost_python_errors_hpp.class_error_already_set" title="Class error_already_set">error_already_set</a>
432                if a Python exception is raised.
433              </p></dd>
434</dl>
435</div>
436<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">del</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">target</span><span class="special">,</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">);</span>
437</pre>
438<div class="variablelist">
439<p class="title"><b></b></p>
440<dl class="variablelist">
441<dt><span class="term">Effects</span></dt>
442<dd><p>
443                deletes the item of target specified by key.
444              </p></dd>
445<dt><span class="term">Throws</span></dt>
446<dd><p>
447                <a class="link" href="../high_level_components/boost_python_errors_hpp.html#high_level_components.boost_python_errors_hpp.class_error_already_set" title="Class error_already_set">error_already_set</a>
448                if a Python exception is raised.
449              </p></dd>
450</dl>
451</div>
452</div>
453<div class="section">
454<div class="titlepage"><div><div><h3 class="title">
455<a name="object_wrappers.boost_python_object_hpp.class_const_slice_policies"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_const_slice_policies" title="Class const_slice_policies">Class
456        <code class="computeroutput"><span class="identifier">const_slice_policies</span></code></a>
457</h3></div></div></div>
458<p>
459          The policies which are used for proxies representing an slice access (via
460          the Python slice notation [x:y]) to a const object.
461        </p>
462<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">python</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">api</span>
463<span class="special">{</span>
464  <span class="keyword">struct</span> <span class="identifier">const_slice_policies</span>
465  <span class="special">{</span>
466      <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">handle</span><span class="special">&lt;&gt;,</span> <span class="identifier">handle</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span> <span class="identifier">key_type</span><span class="special">;</span>
467      <span class="keyword">static</span> <span class="identifier">object</span> <span class="identifier">get</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">target</span><span class="special">,</span> <span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">);</span>
468  <span class="special">};</span>
469<span class="special">}}}</span>
470</pre>
471</div>
472<div class="section">
473<div class="titlepage"><div><div><h3 class="title">
474<a name="object_wrappers.boost_python_object_hpp.class_const_slice_policies_stati"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_const_slice_policies_stati" title="Class const_slice_policies static functions">Class
475        <code class="computeroutput"><span class="identifier">const_slice_policies</span></code> static
476        functions</a>
477</h3></div></div></div>
478<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">object</span> <span class="identifier">get</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">target</span><span class="special">,</span> <span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">);</span>
479</pre>
480<div class="variablelist">
481<p class="title"><b></b></p>
482<dl class="variablelist">
483<dt><span class="term">Effects</span></dt>
484<dd><p>
485                accesses the slice of target specified by key.
486              </p></dd>
487<dt><span class="term">Returns</span></dt>
488<dd><p>
489                An object managing the result of the slice access.
490              </p></dd>
491<dt><span class="term">Throws</span></dt>
492<dd><p>
493                <a class="link" href="../high_level_components/boost_python_errors_hpp.html#high_level_components.boost_python_errors_hpp.class_error_already_set" title="Class error_already_set">error_already_set</a>
494                if a Python exception is raised.
495              </p></dd>
496</dl>
497</div>
498</div>
499<div class="section">
500<div class="titlepage"><div><div><h3 class="title">
501<a name="object_wrappers.boost_python_object_hpp.class_slice_policies"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_slice_policies" title="Class slice_policies">Class
502        <code class="computeroutput"><span class="identifier">slice_policies</span></code></a>
503</h3></div></div></div>
504<p>
505          The policies which are used for proxies representing an slice access to
506          a mutable object.
507        </p>
508<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">python</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">api</span>
509<span class="special">{</span>
510  <span class="keyword">struct</span> <span class="identifier">slice_policies</span> <span class="special">:</span> <span class="identifier">const_slice_policies</span>
511  <span class="special">{</span>
512      <span class="keyword">static</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">set</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">target</span><span class="special">,</span> <span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">,</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">value</span><span class="special">);</span>
513      <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">del</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">target</span><span class="special">,</span> <span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">);</span>
514  <span class="special">};</span>
515<span class="special">}}}</span>
516</pre>
517</div>
518<div class="section">
519<div class="titlepage"><div><div><h3 class="title">
520<a name="object_wrappers.boost_python_object_hpp.class_slice_policies_static_func"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_slice_policies_static_func" title="Class slice_policies static functions">Class
521        <code class="computeroutput"><span class="identifier">slice_policies</span></code> static functions</a>
522</h3></div></div></div>
523<pre class="programlisting"><span class="keyword">static</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">set</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">target</span><span class="special">,</span> <span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">,</span> <span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">value</span><span class="special">);</span>
524</pre>
525<div class="variablelist">
526<p class="title"><b></b></p>
527<dl class="variablelist">
528<dt><span class="term">Effects</span></dt>
529<dd><p>
530                sets the slice of target specified by key to value.
531              </p></dd>
532<dt><span class="term">Throws</span></dt>
533<dd><p>
534                <a class="link" href="../high_level_components/boost_python_errors_hpp.html#high_level_components.boost_python_errors_hpp.class_error_already_set" title="Class error_already_set">error_already_set</a>
535                if a Python exception is raised.
536              </p></dd>
537</dl>
538</div>
539<pre class="programlisting"><span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">del</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">target</span><span class="special">,</span> <span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">);</span>
540</pre>
541<div class="variablelist">
542<p class="title"><b></b></p>
543<dl class="variablelist">
544<dt><span class="term">Effects</span></dt>
545<dd><p>
546                deletes the slice of target specified by key.
547              </p></dd>
548<dt><span class="term">Throws</span></dt>
549<dd><p>
550                <a class="link" href="../high_level_components/boost_python_errors_hpp.html#high_level_components.boost_python_errors_hpp.class_error_already_set" title="Class error_already_set">error_already_set</a>
551                if a Python exception is raised.
552              </p></dd>
553</dl>
554</div>
555</div>
556<div class="section">
557<div class="titlepage"><div><div><h3 class="title">
558<a name="object_wrappers.boost_python_object_hpp.class_template_object_operators"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_template_object_operators" title="Class template object_operators">Class
559        template <code class="computeroutput"><span class="identifier">object_operators</span></code></a>
560</h3></div></div></div>
561<p>
562          This is the base class of object and its proxy template used to supply
563          common interface: member functions, and operators which must be defined
564          within the class body. Its template parameter U is expected to be a class
565          derived from object_operators&lt;U&gt;. In practice users should never
566          use this class directly, but it is documented here because it supplies
567          important interface to object and its proxies.
568        </p>
569<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">python</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">api</span>
570<span class="special">{</span>
571  <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">&gt;</span>
572  <span class="keyword">class</span> <span class="identifier">object_operators</span>
573  <span class="special">{</span>
574   <span class="keyword">public</span><span class="special">:</span>
575      <span class="comment">// function call</span>
576      <span class="comment">//</span>
577      <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">()()</span> <span class="keyword">const</span><span class="special">;</span>
578
579      <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">A0</span><span class="special">&gt;</span>
580      <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">A0</span> <span class="keyword">const</span><span class="special">&amp;)</span> <span class="keyword">const</span><span class="special">;</span>
581      <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">A0</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">A1</span><span class="special">&gt;</span>
582      <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">A0</span> <span class="keyword">const</span><span class="special">&amp;,</span> <span class="identifier">A1</span> <span class="keyword">const</span><span class="special">&amp;)</span> <span class="keyword">const</span><span class="special">;</span>
583      <span class="special">...</span>
584      <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">A0</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">A1</span><span class="special">,...</span><span class="keyword">class</span> <span class="identifier">An</span><span class="special">&gt;</span>
585      <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">A0</span> <span class="keyword">const</span><span class="special">&amp;,</span> <span class="identifier">A1</span> <span class="keyword">const</span><span class="special">&amp;,...</span><span class="identifier">An</span> <span class="keyword">const</span><span class="special">&amp;)</span> <span class="keyword">const</span><span class="special">;</span>
586
587      <span class="identifier">detail</span><span class="special">::</span><span class="identifier">args_proxy</span> <span class="keyword">operator</span><span class="special">*</span> <span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
588      <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">args_proxy</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="identifier">args</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
589      <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">args_proxy</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="identifier">args</span><span class="special">,</span>
590                        <span class="identifier">detail</span><span class="special">::</span><span class="identifier">kwds_proxy</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="identifier">kwds</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
591
592      <span class="comment">// truth value testing</span>
593      <span class="comment">//</span>
594      <span class="keyword">typedef</span> <span class="identifier">unspecified</span> <span class="identifier">bool_type</span><span class="special">;</span>
595      <span class="keyword">operator</span> <span class="identifier">bool_type</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
596
597      <span class="comment">// Attribute access</span>
598      <span class="comment">//</span>
599      <span class="identifier">proxy</span><span class="special">&lt;</span><span class="identifier">const_object_attribute</span><span class="special">&gt;</span> <span class="identifier">attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*)</span> <span class="keyword">const</span><span class="special">;</span>
600      <span class="identifier">proxy</span><span class="special">&lt;</span><span class="identifier">object_attribute</span><span class="special">&gt;</span> <span class="identifier">attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*);</span>
601      <span class="identifier">proxy</span><span class="special">&lt;</span><span class="identifier">const_object_objattribute</span><span class="special">&gt;</span> <span class="identifier">attr</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;)</span> <span class="keyword">const</span><span class="special">;</span>
602      <span class="identifier">proxy</span><span class="special">&lt;</span><span class="identifier">object_objattribute</span><span class="special">&gt;</span> <span class="identifier">attr</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;);</span>
603
604      <span class="comment">// item access</span>
605      <span class="comment">//</span>
606      <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
607      <span class="identifier">proxy</span><span class="special">&lt;</span><span class="identifier">const_object_item</span><span class="special">&gt;</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
608
609      <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
610      <span class="identifier">proxy</span><span class="special">&lt;</span><span class="identifier">object_item</span><span class="special">&gt;</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">);</span>
611
612      <span class="comment">// slicing</span>
613      <span class="comment">//</span>
614      <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">&gt;</span>
615      <span class="identifier">proxy</span><span class="special">&lt;</span><span class="identifier">const_object_slice</span><span class="special">&gt;</span> <span class="identifier">slice</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">start</span><span class="special">,</span> <span class="identifier">V</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">end</span><span class="special">)</span> <span class="keyword">const</span>
616
617      <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">&gt;</span>
618      <span class="identifier">proxy</span><span class="special">&lt;</span><span class="identifier">object_slice</span><span class="special">&gt;</span> <span class="identifier">slice</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">start</span><span class="special">,</span> <span class="identifier">V</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">end</span><span class="special">);</span>
619  <span class="special">};</span>
620<span class="special">}}}</span>
621</pre>
622</div>
623<div class="section">
624<div class="titlepage"><div><div><h3 class="title">
625<a name="object_wrappers.boost_python_object_hpp.class_template_object_operators_"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_template_object_operators_" title="Class template object_operators observer functions">Class
626        template <code class="computeroutput"><span class="identifier">object_operators</span></code>
627        observer functions</a>
628</h3></div></div></div>
629<pre class="programlisting"><span class="identifier">object</span> <span class="keyword">operator</span><span class="special">()()</span> <span class="keyword">const</span><span class="special">;</span>
630<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">A0</span><span class="special">&gt;</span>
631<span class="identifier">object</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">A0</span> <span class="keyword">const</span><span class="special">&amp;)</span> <span class="keyword">const</span><span class="special">;</span>
632<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">A0</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">A1</span><span class="special">&gt;</span>
633<span class="identifier">object</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">A0</span> <span class="keyword">const</span><span class="special">&amp;,</span> <span class="identifier">A1</span> <span class="keyword">const</span><span class="special">&amp;)</span> <span class="keyword">const</span><span class="special">;</span>
634<span class="special">...</span>
635<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">A0</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">A1</span><span class="special">,...</span><span class="keyword">class</span> <span class="identifier">An</span><span class="special">&gt;</span>
636<span class="identifier">object</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">A0</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">a1</span><span class="special">,</span> <span class="identifier">A1</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">a2</span><span class="special">,...</span><span class="identifier">An</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">aN</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
637</pre>
638<div class="variablelist">
639<p class="title"><b></b></p>
640<dl class="variablelist">
641<dt><span class="term">Effects</span></dt>
642<dd><p>
643                <code class="computeroutput"><span class="identifier">call</span><span class="special">&lt;</span><span class="identifier">object</span><span class="special">&gt;(</span><span class="identifier">object</span><span class="special">(*</span><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">*&gt;(</span><span class="keyword">this</span><span class="special">)).</span><span class="identifier">ptr</span><span class="special">(),</span>
644                <span class="identifier">a1</span><span class="special">,</span>
645                <span class="identifier">a2</span><span class="special">,...</span><span class="identifier">aN</span><span class="special">)</span></code>
646              </p></dd>
647</dl>
648</div>
649<pre class="programlisting"><span class="identifier">object</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">args_proxy</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="identifier">args</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
650<div class="variablelist">
651<p class="title"><b></b></p>
652<dl class="variablelist">
653<dt><span class="term">Effects</span></dt>
654<dd><p>
655                <code class="computeroutput"><span class="identifier">call</span> <span class="identifier">object</span>
656                <span class="identifier">with</span> <span class="identifier">arguments</span>
657                <span class="identifier">given</span> <span class="identifier">by</span>
658                <span class="identifier">the</span> <span class="identifier">tuple</span>
659                <span class="identifier">args</span></code>
660              </p></dd>
661</dl>
662</div>
663<pre class="programlisting"><span class="identifier">object</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">args_proxy</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="identifier">args</span><span class="special">,</span>
664                  <span class="identifier">detail</span><span class="special">::</span><span class="identifier">kwds_proxy</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="identifier">kwds</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
665</pre>
666<div class="variablelist">
667<p class="title"><b></b></p>
668<dl class="variablelist">
669<dt><span class="term">Effects</span></dt>
670<dd><p>
671                <code class="computeroutput"><span class="identifier">call</span> <span class="identifier">object</span>
672                <span class="identifier">with</span> <span class="identifier">arguments</span>
673                <span class="identifier">given</span> <span class="identifier">by</span>
674                <span class="identifier">the</span> <span class="identifier">tuple</span>
675                <span class="identifier">args</span><span class="special">,</span>
676                <span class="keyword">and</span> <span class="identifier">named</span>
677                <span class="identifier">arguments</span> <span class="identifier">given</span>
678                <span class="identifier">by</span> <span class="identifier">the</span>
679                <span class="identifier">dictionary</span> <span class="identifier">kwds</span></code>
680              </p></dd>
681</dl>
682</div>
683<pre class="programlisting"><span class="keyword">operator</span> <span class="identifier">bool_type</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span></pre>
684<div class="variablelist">
685<p class="title"><b></b></p>
686<dl class="variablelist">
687<dt><span class="term">Effects</span></dt>
688<dd><p>
689                Tests truth value of <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
690              </p></dd>
691<dt><span class="term">Returns</span></dt>
692<dd><p>
693                <code class="computeroutput"><span class="identifier">call</span><span class="special">&lt;</span><span class="identifier">object</span><span class="special">&gt;(</span><span class="identifier">object</span><span class="special">(*</span><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">*&gt;(</span><span class="keyword">this</span><span class="special">)).</span><span class="identifier">ptr</span><span class="special">(),</span>
694                <span class="identifier">a1</span><span class="special">,</span>
695                <span class="identifier">a2</span><span class="special">,...</span><span class="identifier">aN</span><span class="special">)</span></code>
696              </p></dd>
697</dl>
698</div>
699<pre class="programlisting"><span class="identifier">proxy</span><span class="special">&lt;</span><span class="identifier">const_object_attribute</span><span class="special">&gt;</span> <span class="identifier">attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">name</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
700<span class="identifier">proxy</span><span class="special">&lt;</span><span class="identifier">object_attribute</span><span class="special">&gt;</span> <span class="identifier">attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">name</span><span class="special">);</span>
701</pre>
702<div class="variablelist">
703<p class="title"><b></b></p>
704<dl class="variablelist">
705<dt><span class="term">Requires</span></dt>
706<dd><p>
707                name is an <a class="link" href="../glossary.html#ntbs">ntbs</a>.
708              </p></dd>
709<dt><span class="term">Effects</span></dt>
710<dd><p>
711                accesses the named attribute of *this.
712              </p></dd>
713<dt><span class="term">Returns</span></dt>
714<dd><p>
715                a proxy object which binds <code class="computeroutput"><span class="identifier">object</span><span class="special">(*</span><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">*&gt;(</span><span class="keyword">this</span><span class="special">))</span></code> as its target, and name as its
716                key.
717              </p></dd>
718</dl>
719</div>
720<pre class="programlisting"><span class="identifier">proxy</span><span class="special">&lt;</span><span class="identifier">const_object_objattribute</span><span class="special">&gt;</span> <span class="identifier">attr</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">object</span><span class="special">&amp;</span> <span class="identifier">name</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
721<span class="identifier">proxy</span><span class="special">&lt;</span><span class="identifier">object_objattribute</span><span class="special">&gt;</span> <span class="identifier">attr</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">object</span><span class="special">&amp;</span> <span class="identifier">name</span><span class="special">);</span>
722</pre>
723<div class="variablelist">
724<p class="title"><b></b></p>
725<dl class="variablelist">
726<dt><span class="term">Requires</span></dt>
727<dd><p>
728                name is a object holding a string.
729              </p></dd>
730<dt><span class="term">Effects</span></dt>
731<dd><p>
732                accesses the named attribute of <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
733              </p></dd>
734<dt><span class="term">Returns</span></dt>
735<dd><p>
736                a proxy object which binds <code class="computeroutput"><span class="identifier">object</span><span class="special">(*</span><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">*&gt;(</span><span class="keyword">this</span><span class="special">))</span></code> as its target, and name as its
737                key.
738              </p></dd>
739</dl>
740</div>
741<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
742<span class="identifier">proxy</span><span class="special">&lt;</span><span class="identifier">const_object_item</span><span class="special">&gt;</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
743<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
744<span class="identifier">proxy</span><span class="special">&lt;</span><span class="identifier">object_item</span><span class="special">&gt;</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">key</span><span class="special">);</span>
745</pre>
746<div class="variablelist">
747<p class="title"><b></b></p>
748<dl class="variablelist">
749<dt><span class="term">Effects</span></dt>
750<dd><p>
751                accesses the item of <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code> indicated by key.
752              </p></dd>
753<dt><span class="term">Returns</span></dt>
754<dd><p>
755                a proxy object which binds <code class="computeroutput"><span class="identifier">object</span><span class="special">(*</span><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">*&gt;(</span><span class="keyword">this</span><span class="special">))</span></code> as its target, and object(key)
756                as its key.
757              </p></dd>
758</dl>
759</div>
760<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">&gt;</span>
761<span class="identifier">proxy</span><span class="special">&lt;</span><span class="identifier">const_object_slice</span><span class="special">&gt;</span> <span class="identifier">slice</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">start</span><span class="special">;</span> <span class="identifier">start</span><span class="special">,</span> <span class="identifier">V</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">finish</span><span class="special">)</span> <span class="keyword">const</span>
762<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">&gt;</span>
763<span class="identifier">proxy</span><span class="special">&lt;</span><span class="identifier">object_slice</span><span class="special">&gt;</span> <span class="identifier">slice</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">start</span><span class="special">;</span> <span class="identifier">start</span><span class="special">,</span> <span class="identifier">V</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">finish</span><span class="special">);</span>
764</pre>
765<div class="variablelist">
766<p class="title"><b></b></p>
767<dl class="variablelist">
768<dt><span class="term">Effects</span></dt>
769<dd><p>
770                accesses the slice of <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code> indicated by <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">make_pair</span><span class="special">(</span><span class="identifier">object</span><span class="special">(</span><span class="identifier">start</span><span class="special">),</span> <span class="identifier">object</span><span class="special">(</span><span class="identifier">finish</span><span class="special">))</span></code>.
771              </p></dd>
772<dt><span class="term">Returns</span></dt>
773<dd><p>
774                a proxy object which binds <code class="computeroutput"><span class="identifier">object</span><span class="special">(*</span><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">*&gt;(</span><span class="keyword">this</span><span class="special">))</span></code> as its target, and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">make_pair</span><span class="special">(</span><span class="identifier">object</span><span class="special">(</span><span class="identifier">start</span><span class="special">),</span>
775                <span class="identifier">object</span><span class="special">(</span><span class="identifier">finish</span><span class="special">))</span></code>
776                as its key.
777              </p></dd>
778</dl>
779</div>
780</div>
781<div class="section">
782<div class="titlepage"><div><div><h3 class="title">
783<a name="object_wrappers.boost_python_object_hpp.class_object"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_object" title="Class object">Class
784        <code class="computeroutput"><span class="identifier">object</span></code></a>
785</h3></div></div></div>
786<p>
787          The intention is that object acts as much like a Python variable as possible.
788          Thus expressions you'd expect to work in Python should generally work in
789          the same way from C++. Most of object's interface is provided by its base
790          class <code class="computeroutput"><span class="identifier">object_operators</span><span class="special">&lt;</span><span class="identifier">object</span><span class="special">&gt;</span></code>, and the free functions defined in
791          this header.
792        </p>
793<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">python</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">api</span>
794<span class="special">{</span>
795  <span class="keyword">class</span> <span class="identifier">object</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">object_operators</span><span class="special">&lt;</span><span class="identifier">object</span><span class="special">&gt;</span>
796  <span class="special">{</span>
797   <span class="keyword">public</span><span class="special">:</span>
798      <span class="identifier">object</span><span class="special">();</span>
799      <span class="identifier">object</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;);</span>
800      <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
801      <span class="keyword">explicit</span> <span class="identifier">object</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
802
803      <span class="special">~</span><span class="identifier">object</span><span class="special">();</span>
804
805      <span class="identifier">object</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;);</span>
806      <span class="identifier">PyObject</span><span class="special">*</span> <span class="identifier">ptr</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
807      <span class="keyword">bool</span> <span class="identifier">is_none</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
808  <span class="special">};</span>
809<span class="special">}}}</span>
810</pre>
811</div>
812<div class="section">
813<div class="titlepage"><div><div><h3 class="title">
814<a name="object_wrappers.boost_python_object_hpp.class_object_constructors_and_de"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_object_constructors_and_de" title="Class object constructors and destructor">Class
815        <code class="computeroutput"><span class="identifier">object</span></code> constructors and destructor</a>
816</h3></div></div></div>
817<pre class="programlisting"><span class="identifier">object</span><span class="special">();</span></pre>
818<div class="variablelist">
819<p class="title"><b></b></p>
820<dl class="variablelist">
821<dt><span class="term">Effects</span></dt>
822<dd><p>
823                Constructs an object managing a reference to the Python None object.
824              </p></dd>
825<dt><span class="term">Throws</span></dt>
826<dd><p>
827                nothing.
828              </p></dd>
829</dl>
830</div>
831<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
832<span class="keyword">explicit</span> <span class="identifier">object</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
833</pre>
834<div class="variablelist">
835<p class="title"><b></b></p>
836<dl class="variablelist">
837<dt><span class="term">Effects</span></dt>
838<dd><p>
839                converts x to python and manages a reference to it.
840              </p></dd>
841<dt><span class="term">Throws</span></dt>
842<dd><p>
843                <a class="link" href="../high_level_components/boost_python_errors_hpp.html#high_level_components.boost_python_errors_hpp.class_error_already_set" title="Class error_already_set">error_already_set</a>
844                and sets a Python TypeError exception if no such conversion is possible.
845              </p></dd>
846</dl>
847</div>
848<pre class="programlisting"><span class="special">~</span><span class="identifier">object</span><span class="special">();</span>
849</pre>
850<div class="variablelist">
851<p class="title"><b></b></p>
852<dl class="variablelist">
853<dt><span class="term">Effects</span></dt>
854<dd><p>
855                decrements the reference count of the internally-held object.
856              </p></dd>
857</dl>
858</div>
859</div>
860<div class="section">
861<div class="titlepage"><div><div><h3 class="title">
862<a name="object_wrappers.boost_python_object_hpp.class_object_modifiers"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_object_modifiers" title="Class object modifiers">Class
863        <code class="computeroutput"><span class="identifier">object</span></code> modifiers</a>
864</h3></div></div></div>
865<pre class="programlisting"><span class="identifier">PyObject</span><span class="special">*</span> <span class="identifier">ptr</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span></pre>
866<div class="variablelist">
867<p class="title"><b></b></p>
868<dl class="variablelist">
869<dt><span class="term">Returns</span></dt>
870<dd><p>
871                a pointer to the internally-held Python object.
872              </p></dd>
873</dl>
874</div>
875<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">is_none</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span></pre>
876<div class="variablelist">
877<p class="title"><b></b></p>
878<dl class="variablelist">
879<dt><span class="term">Returns</span></dt>
880<dd><p>
881                result of <code class="computeroutput"><span class="special">(</span><span class="identifier">ptr</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">Py_None</span><span class="special">)</span></code>
882              </p></dd>
883</dl>
884</div>
885</div>
886<div class="section">
887<div class="titlepage"><div><div><h3 class="title">
888<a name="object_wrappers.boost_python_object_hpp.class_template_proxy"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_template_proxy" title="Class template proxy">Class
889        template <code class="computeroutput"><span class="identifier">proxy</span></code></a>
890</h3></div></div></div>
891<p>
892          This template is instantiated with various Policies described in this document
893          in order to implement attribute, item, and slice access for object. It
894          stores an object of type Policies::key_type.
895        </p>
896<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">python</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">api</span>
897<span class="special">{</span>
898  <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Policies</span><span class="special">&gt;</span>
899  <span class="keyword">class</span> <span class="identifier">proxy</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">object_operators</span><span class="special">&lt;</span><span class="identifier">proxy</span><span class="special">&lt;</span><span class="identifier">Policies</span><span class="special">&gt;</span> <span class="special">&gt;</span>
900  <span class="special">{</span>
901   <span class="keyword">public</span><span class="special">:</span>
902      <span class="keyword">operator</span> <span class="identifier">object</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
903
904      <span class="identifier">proxy</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">proxy</span> <span class="keyword">const</span><span class="special">&amp;)</span> <span class="keyword">const</span><span class="special">;</span>
905      <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
906      <span class="keyword">inline</span> <span class="identifier">proxy</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
907
908      <span class="keyword">void</span> <span class="identifier">del</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
909
910      <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span>
911      <span class="identifier">proxy</span> <span class="keyword">operator</span><span class="special">+=(</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
912      <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span>
913      <span class="identifier">proxy</span> <span class="keyword">operator</span><span class="special">-=(</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
914      <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span>
915      <span class="identifier">proxy</span> <span class="keyword">operator</span><span class="special">*=(</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
916      <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span>
917      <span class="identifier">proxy</span> <span class="keyword">operator</span><span class="special">/=(</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
918      <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span>
919      <span class="identifier">proxy</span> <span class="keyword">operator</span><span class="special">%=(</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
920      <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span>
921      <span class="identifier">proxy</span> <span class="keyword">operator</span><span class="special">&lt;&lt;=(</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
922      <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span>
923      <span class="identifier">proxy</span> <span class="keyword">operator</span><span class="special">&gt;&gt;=(</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
924      <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span>
925      <span class="identifier">proxy</span> <span class="keyword">operator</span><span class="special">&amp;=(</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
926      <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span>
927      <span class="identifier">proxy</span> <span class="keyword">operator</span><span class="special">|=(</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
928  <span class="special">};</span>
929<span class="special">}}}</span>
930</pre>
931</div>
932<div class="section">
933<div class="titlepage"><div><div><h3 class="title">
934<a name="object_wrappers.boost_python_object_hpp.class_template_proxy_observer_fu"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_template_proxy_observer_fu" title="Class template proxy observer functions">Class
935        template <code class="computeroutput"><span class="identifier">proxy</span></code> observer functions</a>
936</h3></div></div></div>
937<pre class="programlisting"><span class="keyword">operator</span> <span class="identifier">object</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span></pre>
938<div class="variablelist">
939<p class="title"><b></b></p>
940<dl class="variablelist">
941<dt><span class="term">Effects</span></dt>
942<dd><p>
943                applies <code class="computeroutput"><span class="identifier">Policies</span><span class="special">::</span><span class="identifier">get</span><span class="special">(</span><span class="identifier">target</span><span class="special">,</span> <span class="identifier">key</span><span class="special">)</span></code> with the proxy's target and key
944                objects.
945              </p></dd>
946</dl>
947</div>
948</div>
949<div class="section">
950<div class="titlepage"><div><div><h3 class="title">
951<a name="object_wrappers.boost_python_object_hpp.class_template_proxy_modifier_fu"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.class_template_proxy_modifier_fu" title="Class template proxy modifier functions">Class
952        template <code class="computeroutput"><span class="identifier">proxy</span></code> modifier functions</a>
953</h3></div></div></div>
954<pre class="programlisting"><span class="identifier">proxy</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">proxy</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
955<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
956<span class="keyword">inline</span> <span class="identifier">proxy</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
957</pre>
958<div class="variablelist">
959<p class="title"><b></b></p>
960<dl class="variablelist">
961<dt><span class="term">Effects</span></dt>
962<dd><p>
963                <code class="computeroutput"><span class="identifier">Policies</span><span class="special">::</span><span class="identifier">set</span><span class="special">(</span><span class="identifier">target</span><span class="special">,</span>
964                <span class="identifier">key</span> <span class="special">,</span>
965                <span class="identifier">object</span><span class="special">(</span><span class="identifier">rhs</span><span class="special">))</span></code>
966                with the proxy's target and key objects.
967              </p></dd>
968</dl>
969</div>
970<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span>
971<span class="identifier">proxy</span> <span class="keyword">operator</span><span class="special">+=(</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
972<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span>
973<span class="identifier">proxy</span> <span class="keyword">operator</span><span class="special">-=(</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
974<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span>
975<span class="identifier">proxy</span> <span class="keyword">operator</span><span class="special">*=(</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
976<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span>
977<span class="identifier">proxy</span> <span class="keyword">operator</span><span class="special">/=(</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
978<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span>
979<span class="identifier">proxy</span> <span class="keyword">operator</span><span class="special">%=(</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
980<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span>
981<span class="identifier">proxy</span> <span class="keyword">operator</span><span class="special">&lt;&lt;=(</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
982<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span>
983<span class="identifier">proxy</span> <span class="keyword">operator</span><span class="special">&gt;&gt;=(</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
984<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span>
985<span class="identifier">proxy</span> <span class="keyword">operator</span><span class="special">&amp;=(</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
986<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span>
987<span class="identifier">proxy</span> <span class="keyword">operator</span><span class="special">|=(</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
988</pre>
989<div class="variablelist">
990<p class="title"><b></b></p>
991<dl class="variablelist">
992<dt><span class="term">Effects</span></dt>
993<dd><p>
994                for a given <code class="computeroutput"><span class="keyword">operator</span><span class="error">@</span><span class="special">=</span></code>,
995                <code class="computeroutput"><span class="identifier">object</span><span class="special">(*</span><span class="keyword">this</span><span class="special">)</span> <span class="error">@</span><span class="special">=</span> <span class="identifier">rhs</span><span class="special">;</span></code>
996              </p></dd>
997<dt><span class="term">Returns</span></dt>
998<dd><p>
999                <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
1000              </p></dd>
1001</dl>
1002</div>
1003<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">del</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span></pre>
1004<div class="variablelist">
1005<p class="title"><b></b></p>
1006<dl class="variablelist">
1007<dt><span class="term">Effects</span></dt>
1008<dd><p>
1009                Policies::del(target, key ) with the proxy's target and key objects.
1010              </p></dd>
1011</dl>
1012</div>
1013</div>
1014<div class="section">
1015<div class="titlepage"><div><div><h3 class="title">
1016<a name="object_wrappers.boost_python_object_hpp.functions"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.functions" title="Functions">Functions</a>
1017</h3></div></div></div>
1018<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
1019<span class="keyword">void</span> <span class="identifier">del</span><span class="special">(</span><span class="identifier">proxy</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
1020</pre>
1021<div class="variablelist">
1022<p class="title"><b></b></p>
1023<dl class="variablelist">
1024<dt><span class="term">Effects</span></dt>
1025<dd><p>
1026                <code class="computeroutput"><span class="identifier">x</span><span class="special">.</span><span class="identifier">del</span><span class="special">()</span></code>
1027              </p></dd>
1028</dl>
1029</div>
1030<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">L</span><span class="special">,</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">&gt;(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1031<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">L</span><span class="special">,</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">&gt;=(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1032<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">L</span><span class="special">,</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">&lt;(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1033<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">L</span><span class="special">,</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">&lt;=(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1034<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">L</span><span class="special">,</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">==(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1035<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">L</span><span class="special">,</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">!=(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1036</pre>
1037<div class="variablelist">
1038<p class="title"><b></b></p>
1039<dl class="variablelist">
1040<dt><span class="term">Effects</span></dt>
1041<dd><p>
1042                returns the result of applying the operator to <code class="computeroutput"><span class="identifier">object</span><span class="special">(</span><span class="identifier">l</span><span class="special">)</span></code> and <code class="computeroutput"><span class="identifier">object</span><span class="special">(</span><span class="identifier">r</span><span class="special">)</span></code>, respectively, in Python.
1043              </p></dd>
1044</dl>
1045</div>
1046<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">L</span><span class="special">,</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">+(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1047<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">L</span><span class="special">,</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">-(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1048<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">L</span><span class="special">,</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">*(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1049<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">L</span><span class="special">,</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">/(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1050<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">L</span><span class="special">,</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">%(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1051<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">L</span><span class="special">,</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">&lt;&lt;(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1052<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">L</span><span class="special">,</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">&gt;&gt;(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1053<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">L</span><span class="special">,</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">&amp;(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1054<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">L</span><span class="special">,</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">^(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1055<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">L</span><span class="special">,</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span> <span class="keyword">operator</span><span class="special">|(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1056</pre>
1057<div class="variablelist">
1058<p class="title"><b></b></p>
1059<dl class="variablelist">
1060<dt><span class="term">Effects</span></dt>
1061<dd><p>
1062                returns the result of applying the operator to <code class="computeroutput"><span class="identifier">object</span><span class="special">(</span><span class="identifier">l</span><span class="special">)</span></code> and <code class="computeroutput"><span class="identifier">object</span><span class="special">(</span><span class="identifier">r</span><span class="special">)</span></code>, respectively, in Python.
1063              </p></dd>
1064</dl>
1065</div>
1066<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">+=(</span><span class="identifier">object</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1067<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">-=(</span><span class="identifier">object</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1068<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">*=(</span><span class="identifier">object</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1069<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">/=(</span><span class="identifier">object</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1070<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">%=(</span><span class="identifier">object</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1071<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">&lt;&lt;=(</span><span class="identifier">object</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">)</span>
1072<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">&gt;&gt;=(</span><span class="identifier">object</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1073<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">&amp;=(</span><span class="identifier">object</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1074<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">^=(</span><span class="identifier">object</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1075<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="identifier">object</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">|=(</span><span class="identifier">object</span><span class="special">&amp;</span><span class="identifier">l</span><span class="special">,</span><span class="identifier">R</span> <span class="keyword">const</span><span class="special">&amp;</span><span class="identifier">r</span><span class="special">);</span>
1076</pre>
1077<div class="variablelist">
1078<p class="title"><b></b></p>
1079<dl class="variablelist">
1080<dt><span class="term">Effects</span></dt>
1081<dd><p>
1082                assigns to <code class="computeroutput"><span class="identifier">l</span></code> the
1083                result of applying the corresponding Python inplace operator to
1084                <code class="computeroutput"><span class="identifier">l</span></code> and <code class="computeroutput"><span class="identifier">object</span><span class="special">(</span><span class="identifier">r</span><span class="special">)</span></code>,
1085                respectively.
1086              </p></dd>
1087<dt><span class="term">Returns</span></dt>
1088<dd><p>
1089                l
1090              </p></dd>
1091</dl>
1092</div>
1093<pre class="programlisting"><span class="keyword">long</span> <span class="identifier">len</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">obj</span><span class="special">);</span></pre>
1094<div class="variablelist">
1095<p class="title"><b></b></p>
1096<dl class="variablelist">
1097<dt><span class="term">Effects</span></dt>
1098<dd><p>
1099                <code class="computeroutput"><span class="identifier">PyObject_Length</span><span class="special">(</span><span class="identifier">obj</span><span class="special">.</span><span class="identifier">ptr</span><span class="special">())</span></code>
1100              </p></dd>
1101<dt><span class="term">Returns</span></dt>
1102<dd><p>
1103                <code class="computeroutput"><span class="identifier">len</span><span class="special">()</span></code>
1104                of object.
1105              </p></dd>
1106</dl>
1107</div>
1108</div>
1109<div class="section">
1110<div class="titlepage"><div><div><h3 class="title">
1111<a name="object_wrappers.boost_python_object_hpp.example"></a><a class="link" href="boost_python_object_hpp.html#object_wrappers.boost_python_object_hpp.example" title="Example">Example</a>
1112</h3></div></div></div>
1113<p>
1114          Python code:
1115        </p>
1116<pre class="programlisting"><span class="identifier">def</span> <span class="identifier">sum_items</span><span class="special">(</span><span class="identifier">seq</span><span class="special">):</span>
1117   <span class="identifier">result</span> <span class="special">=</span> <span class="number">0</span>
1118   <span class="keyword">for</span> <span class="identifier">x</span> <span class="identifier">in</span> <span class="identifier">seq</span><span class="special">:</span>
1119      <span class="identifier">result</span> <span class="special">+=</span> <span class="identifier">x</span>
1120   <span class="keyword">return</span> <span class="identifier">result</span>
1121</pre>
1122<p>
1123          C++ version
1124        </p>
1125<pre class="programlisting"><span class="identifier">object</span> <span class="identifier">sum_items</span><span class="special">(</span><span class="identifier">object</span> <span class="identifier">seq</span><span class="special">)</span>
1126<span class="special">{</span>
1127   <span class="identifier">object</span> <span class="identifier">result</span> <span class="special">=</span> <span class="identifier">object</span><span class="special">(</span><span class="number">0</span><span class="special">);</span>
1128   <span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">len</span><span class="special">(</span><span class="identifier">seq</span><span class="special">);</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
1129      <span class="identifier">result</span> <span class="special">+=</span> <span class="identifier">seq</span><span class="special">[</span><span class="identifier">i</span><span class="special">];</span>
1130   <span class="keyword">return</span> <span class="identifier">result</span><span class="special">;</span>
1131<span class="special">}</span>
1132</pre>
1133</div>
1134</div>
1135<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
1136<td align="left"></td>
1137<td align="right"><div class="copyright-footer">Copyright © 2002-2005, 2015 David Abrahams, Stefan Seefeld<p>
1138        Distributed under the Boost Software License, Version 1.0. (See accompanying
1139        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>
1140      </p>
1141</div></td>
1142</tr></table>
1143<hr>
1144<div class="spirit-nav">
1145<a accesskey="p" href="boost_python_long_hpp.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../object_wrappers.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="boost_python_str_hpp.html"><img src="../../images/next.png" alt="Next"></a>
1146</div>
1147</body>
1148</html>
1149