boost_python_object_hpp.html 122 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
  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&#160;3.&#160;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. <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>
  579. <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>
  580. <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>
  581. <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>
  582. <span class="special">...</span>
  583. <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>
  584. <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>
  585. <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>
  586. <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>
  587. <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>
  588. <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>
  589. <span class="comment">// truth value testing</span>
  590. <span class="comment">//</span>
  591. <span class="keyword">typedef</span> <span class="identifier">unspecified</span> <span class="identifier">bool_type</span><span class="special">;</span>
  592. <span class="keyword">operator</span> <span class="identifier">bool_type</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  593. <span class="comment">// Attribute access</span>
  594. <span class="comment">//</span>
  595. <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>
  596. <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>
  597. <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>
  598. <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>
  599. <span class="comment">// item access</span>
  600. <span class="comment">//</span>
  601. <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>
  602. <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>
  603. <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>
  604. <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>
  605. <span class="comment">// slicing</span>
  606. <span class="comment">//</span>
  607. <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>
  608. <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>
  609. <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>
  610. <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>
  611. <span class="special">};</span>
  612. <span class="special">}}}</span>
  613. </pre>
  614. </div>
  615. <div class="section">
  616. <div class="titlepage"><div><div><h3 class="title">
  617. <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
  618. template <code class="computeroutput"><span class="identifier">object_operators</span></code>
  619. observer functions</a>
  620. </h3></div></div></div>
  621. <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>
  622. <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>
  623. <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>
  624. <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>
  625. <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>
  626. <span class="special">...</span>
  627. <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>
  628. <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>
  629. </pre>
  630. <div class="variablelist">
  631. <p class="title"><b></b></p>
  632. <dl class="variablelist">
  633. <dt><span class="term">Effects</span></dt>
  634. <dd><p>
  635. <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>
  636. <span class="identifier">a1</span><span class="special">,</span>
  637. <span class="identifier">a2</span><span class="special">,...</span><span class="identifier">aN</span><span class="special">)</span></code>
  638. </p></dd>
  639. </dl>
  640. </div>
  641. <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>
  642. <div class="variablelist">
  643. <p class="title"><b></b></p>
  644. <dl class="variablelist">
  645. <dt><span class="term">Effects</span></dt>
  646. <dd><p>
  647. <code class="computeroutput"><span class="identifier">call</span> <span class="identifier">object</span>
  648. <span class="identifier">with</span> <span class="identifier">arguments</span>
  649. <span class="identifier">given</span> <span class="identifier">by</span>
  650. <span class="identifier">the</span> <span class="identifier">tuple</span>
  651. <span class="identifier">args</span></code>
  652. </p></dd>
  653. </dl>
  654. </div>
  655. <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>
  656. <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>
  657. </pre>
  658. <div class="variablelist">
  659. <p class="title"><b></b></p>
  660. <dl class="variablelist">
  661. <dt><span class="term">Effects</span></dt>
  662. <dd><p>
  663. <code class="computeroutput"><span class="identifier">call</span> <span class="identifier">object</span>
  664. <span class="identifier">with</span> <span class="identifier">arguments</span>
  665. <span class="identifier">given</span> <span class="identifier">by</span>
  666. <span class="identifier">the</span> <span class="identifier">tuple</span>
  667. <span class="identifier">args</span><span class="special">,</span>
  668. <span class="keyword">and</span> <span class="identifier">named</span>
  669. <span class="identifier">arguments</span> <span class="identifier">given</span>
  670. <span class="identifier">by</span> <span class="identifier">the</span>
  671. <span class="identifier">dictionary</span> <span class="identifier">kwds</span></code>
  672. </p></dd>
  673. </dl>
  674. </div>
  675. <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>
  676. <div class="variablelist">
  677. <p class="title"><b></b></p>
  678. <dl class="variablelist">
  679. <dt><span class="term">Effects</span></dt>
  680. <dd><p>
  681. Tests truth value of <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
  682. </p></dd>
  683. <dt><span class="term">Returns</span></dt>
  684. <dd><p>
  685. <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>
  686. <span class="identifier">a1</span><span class="special">,</span>
  687. <span class="identifier">a2</span><span class="special">,...</span><span class="identifier">aN</span><span class="special">)</span></code>
  688. </p></dd>
  689. </dl>
  690. </div>
  691. <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>
  692. <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>
  693. </pre>
  694. <div class="variablelist">
  695. <p class="title"><b></b></p>
  696. <dl class="variablelist">
  697. <dt><span class="term">Requires</span></dt>
  698. <dd><p>
  699. name is an <a class="link" href="../glossary.html#ntbs">ntbs</a>.
  700. </p></dd>
  701. <dt><span class="term">Effects</span></dt>
  702. <dd><p>
  703. accesses the named attribute of *this.
  704. </p></dd>
  705. <dt><span class="term">Returns</span></dt>
  706. <dd><p>
  707. 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
  708. key.
  709. </p></dd>
  710. </dl>
  711. </div>
  712. <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>
  713. <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>
  714. </pre>
  715. <div class="variablelist">
  716. <p class="title"><b></b></p>
  717. <dl class="variablelist">
  718. <dt><span class="term">Requires</span></dt>
  719. <dd><p>
  720. name is a object holding a string.
  721. </p></dd>
  722. <dt><span class="term">Effects</span></dt>
  723. <dd><p>
  724. accesses the named attribute of <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
  725. </p></dd>
  726. <dt><span class="term">Returns</span></dt>
  727. <dd><p>
  728. 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
  729. key.
  730. </p></dd>
  731. </dl>
  732. </div>
  733. <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>
  734. <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>
  735. <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>
  736. <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>
  737. </pre>
  738. <div class="variablelist">
  739. <p class="title"><b></b></p>
  740. <dl class="variablelist">
  741. <dt><span class="term">Effects</span></dt>
  742. <dd><p>
  743. accesses the item of <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code> indicated by key.
  744. </p></dd>
  745. <dt><span class="term">Returns</span></dt>
  746. <dd><p>
  747. 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)
  748. as its key.
  749. </p></dd>
  750. </dl>
  751. </div>
  752. <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>
  753. <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>
  754. <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>
  755. <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>
  756. </pre>
  757. <div class="variablelist">
  758. <p class="title"><b></b></p>
  759. <dl class="variablelist">
  760. <dt><span class="term">Effects</span></dt>
  761. <dd><p>
  762. 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>.
  763. </p></dd>
  764. <dt><span class="term">Returns</span></dt>
  765. <dd><p>
  766. 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>
  767. <span class="identifier">object</span><span class="special">(</span><span class="identifier">finish</span><span class="special">))</span></code>
  768. as its key.
  769. </p></dd>
  770. </dl>
  771. </div>
  772. </div>
  773. <div class="section">
  774. <div class="titlepage"><div><div><h3 class="title">
  775. <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
  776. <code class="computeroutput"><span class="identifier">object</span></code></a>
  777. </h3></div></div></div>
  778. <p>
  779. The intention is that object acts as much like a Python variable as possible.
  780. Thus expressions you'd expect to work in Python should generally work in
  781. the same way from C++. Most of object's interface is provided by its base
  782. 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
  783. this header.
  784. </p>
  785. <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>
  786. <span class="special">{</span>
  787. <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>
  788. <span class="special">{</span>
  789. <span class="keyword">public</span><span class="special">:</span>
  790. <span class="identifier">object</span><span class="special">();</span>
  791. <span class="identifier">object</span><span class="special">(</span><span class="identifier">object</span> <span class="keyword">const</span><span class="special">&amp;);</span>
  792. <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>
  793. <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>
  794. <span class="special">~</span><span class="identifier">object</span><span class="special">();</span>
  795. <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>
  796. <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>
  797. <span class="keyword">bool</span> <span class="identifier">is_none</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  798. <span class="special">};</span>
  799. <span class="special">}}}</span>
  800. </pre>
  801. </div>
  802. <div class="section">
  803. <div class="titlepage"><div><div><h3 class="title">
  804. <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
  805. <code class="computeroutput"><span class="identifier">object</span></code> constructors and destructor</a>
  806. </h3></div></div></div>
  807. <pre class="programlisting"><span class="identifier">object</span><span class="special">();</span></pre>
  808. <div class="variablelist">
  809. <p class="title"><b></b></p>
  810. <dl class="variablelist">
  811. <dt><span class="term">Effects</span></dt>
  812. <dd><p>
  813. Constructs an object managing a reference to the Python None object.
  814. </p></dd>
  815. <dt><span class="term">Throws</span></dt>
  816. <dd><p>
  817. nothing.
  818. </p></dd>
  819. </dl>
  820. </div>
  821. <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>
  822. <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>
  823. </pre>
  824. <div class="variablelist">
  825. <p class="title"><b></b></p>
  826. <dl class="variablelist">
  827. <dt><span class="term">Effects</span></dt>
  828. <dd><p>
  829. converts x to python and manages a reference to it.
  830. </p></dd>
  831. <dt><span class="term">Throws</span></dt>
  832. <dd><p>
  833. <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>
  834. and sets a Python TypeError exception if no such conversion is possible.
  835. </p></dd>
  836. </dl>
  837. </div>
  838. <pre class="programlisting"><span class="special">~</span><span class="identifier">object</span><span class="special">();</span>
  839. </pre>
  840. <div class="variablelist">
  841. <p class="title"><b></b></p>
  842. <dl class="variablelist">
  843. <dt><span class="term">Effects</span></dt>
  844. <dd><p>
  845. decrements the reference count of the internally-held object.
  846. </p></dd>
  847. </dl>
  848. </div>
  849. </div>
  850. <div class="section">
  851. <div class="titlepage"><div><div><h3 class="title">
  852. <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
  853. <code class="computeroutput"><span class="identifier">object</span></code> modifiers</a>
  854. </h3></div></div></div>
  855. <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>
  856. <div class="variablelist">
  857. <p class="title"><b></b></p>
  858. <dl class="variablelist">
  859. <dt><span class="term">Returns</span></dt>
  860. <dd><p>
  861. a pointer to the internally-held Python object.
  862. </p></dd>
  863. </dl>
  864. </div>
  865. <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>
  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. 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>
  872. </p></dd>
  873. </dl>
  874. </div>
  875. </div>
  876. <div class="section">
  877. <div class="titlepage"><div><div><h3 class="title">
  878. <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
  879. template <code class="computeroutput"><span class="identifier">proxy</span></code></a>
  880. </h3></div></div></div>
  881. <p>
  882. This template is instantiated with various Policies described in this document
  883. in order to implement attribute, item, and slice access for object. It
  884. stores an object of type Policies::key_type.
  885. </p>
  886. <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>
  887. <span class="special">{</span>
  888. <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>
  889. <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>
  890. <span class="special">{</span>
  891. <span class="keyword">public</span><span class="special">:</span>
  892. <span class="keyword">operator</span> <span class="identifier">object</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  893. <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>
  894. <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>
  895. <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>
  896. <span class="keyword">void</span> <span class="identifier">del</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  897. <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>
  898. <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>
  899. <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>
  900. <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>
  901. <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>
  902. <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>
  903. <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>
  904. <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>
  905. <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>
  906. <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>
  907. <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>
  908. <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>
  909. <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>
  910. <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>
  911. <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>
  912. <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>
  913. <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>
  914. <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>
  915. <span class="special">};</span>
  916. <span class="special">}}}</span>
  917. </pre>
  918. </div>
  919. <div class="section">
  920. <div class="titlepage"><div><div><h3 class="title">
  921. <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
  922. template <code class="computeroutput"><span class="identifier">proxy</span></code> observer functions</a>
  923. </h3></div></div></div>
  924. <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>
  925. <div class="variablelist">
  926. <p class="title"><b></b></p>
  927. <dl class="variablelist">
  928. <dt><span class="term">Effects</span></dt>
  929. <dd><p>
  930. 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
  931. objects.
  932. </p></dd>
  933. </dl>
  934. </div>
  935. </div>
  936. <div class="section">
  937. <div class="titlepage"><div><div><h3 class="title">
  938. <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
  939. template <code class="computeroutput"><span class="identifier">proxy</span></code> modifier functions</a>
  940. </h3></div></div></div>
  941. <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>
  942. <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>
  943. <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>
  944. </pre>
  945. <div class="variablelist">
  946. <p class="title"><b></b></p>
  947. <dl class="variablelist">
  948. <dt><span class="term">Effects</span></dt>
  949. <dd><p>
  950. <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>
  951. <span class="identifier">key</span> <span class="special">,</span>
  952. <span class="identifier">object</span><span class="special">(</span><span class="identifier">rhs</span><span class="special">))</span></code>
  953. with the proxy's target and key objects.
  954. </p></dd>
  955. </dl>
  956. </div>
  957. <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>
  958. <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>
  959. <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>
  960. <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>
  961. <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>
  962. <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>
  963. <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>
  964. <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>
  965. <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>
  966. <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>
  967. <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>
  968. <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>
  969. <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>
  970. <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>
  971. <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>
  972. <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>
  973. <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>
  974. <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>
  975. </pre>
  976. <div class="variablelist">
  977. <p class="title"><b></b></p>
  978. <dl class="variablelist">
  979. <dt><span class="term">Effects</span></dt>
  980. <dd><p>
  981. for a given <code class="computeroutput"><span class="keyword">operator</span><span class="error">@</span><span class="special">=</span></code>,
  982. <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>
  983. </p></dd>
  984. <dt><span class="term">Returns</span></dt>
  985. <dd><p>
  986. <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
  987. </p></dd>
  988. </dl>
  989. </div>
  990. <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>
  991. <div class="variablelist">
  992. <p class="title"><b></b></p>
  993. <dl class="variablelist">
  994. <dt><span class="term">Effects</span></dt>
  995. <dd><p>
  996. Policies::del(target, key ) with the proxy's target and key objects.
  997. </p></dd>
  998. </dl>
  999. </div>
  1000. </div>
  1001. <div class="section">
  1002. <div class="titlepage"><div><div><h3 class="title">
  1003. <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>
  1004. </h3></div></div></div>
  1005. <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>
  1006. <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>
  1007. </pre>
  1008. <div class="variablelist">
  1009. <p class="title"><b></b></p>
  1010. <dl class="variablelist">
  1011. <dt><span class="term">Effects</span></dt>
  1012. <dd><p>
  1013. <code class="computeroutput"><span class="identifier">x</span><span class="special">.</span><span class="identifier">del</span><span class="special">()</span></code>
  1014. </p></dd>
  1015. </dl>
  1016. </div>
  1017. <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>
  1018. <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>
  1019. <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>
  1020. <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>
  1021. <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>
  1022. <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>
  1023. </pre>
  1024. <div class="variablelist">
  1025. <p class="title"><b></b></p>
  1026. <dl class="variablelist">
  1027. <dt><span class="term">Effects</span></dt>
  1028. <dd><p>
  1029. 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.
  1030. </p></dd>
  1031. </dl>
  1032. </div>
  1033. <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>
  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. <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>
  1037. <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>
  1038. <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>
  1039. <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>
  1040. <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>
  1041. <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>
  1042. <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>
  1043. </pre>
  1044. <div class="variablelist">
  1045. <p class="title"><b></b></p>
  1046. <dl class="variablelist">
  1047. <dt><span class="term">Effects</span></dt>
  1048. <dd><p>
  1049. 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.
  1050. </p></dd>
  1051. </dl>
  1052. </div>
  1053. <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>
  1054. <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>
  1055. <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>
  1056. <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>
  1057. <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>
  1058. <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>
  1059. <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>
  1060. <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>
  1061. <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>
  1062. <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>
  1063. </pre>
  1064. <div class="variablelist">
  1065. <p class="title"><b></b></p>
  1066. <dl class="variablelist">
  1067. <dt><span class="term">Effects</span></dt>
  1068. <dd><p>
  1069. assigns to <code class="computeroutput"><span class="identifier">l</span></code> the
  1070. result of applying the corresponding Python inplace operator to
  1071. <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>,
  1072. respectively.
  1073. </p></dd>
  1074. <dt><span class="term">Returns</span></dt>
  1075. <dd><p>
  1076. l
  1077. </p></dd>
  1078. </dl>
  1079. </div>
  1080. <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>
  1081. <div class="variablelist">
  1082. <p class="title"><b></b></p>
  1083. <dl class="variablelist">
  1084. <dt><span class="term">Effects</span></dt>
  1085. <dd><p>
  1086. <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>
  1087. </p></dd>
  1088. <dt><span class="term">Returns</span></dt>
  1089. <dd><p>
  1090. <code class="computeroutput"><span class="identifier">len</span><span class="special">()</span></code>
  1091. of object.
  1092. </p></dd>
  1093. </dl>
  1094. </div>
  1095. </div>
  1096. <div class="section">
  1097. <div class="titlepage"><div><div><h3 class="title">
  1098. <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>
  1099. </h3></div></div></div>
  1100. <p>
  1101. Python code:
  1102. </p>
  1103. <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>
  1104. <span class="identifier">result</span> <span class="special">=</span> <span class="number">0</span>
  1105. <span class="keyword">for</span> <span class="identifier">x</span> <span class="identifier">in</span> <span class="identifier">seq</span><span class="special">:</span>
  1106. <span class="identifier">result</span> <span class="special">+=</span> <span class="identifier">x</span>
  1107. <span class="keyword">return</span> <span class="identifier">result</span>
  1108. </pre>
  1109. <p>
  1110. C++ version
  1111. </p>
  1112. <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>
  1113. <span class="special">{</span>
  1114. <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>
  1115. <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>
  1116. <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>
  1117. <span class="keyword">return</span> <span class="identifier">result</span><span class="special">;</span>
  1118. <span class="special">}</span>
  1119. </pre>
  1120. </div>
  1121. </div>
  1122. <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
  1123. <td align="left"></td>
  1124. <td align="right"><div class="copyright-footer">Copyright &#169; 2002-2005, 2015 David Abrahams, Stefan Seefeld<p>
  1125. Distributed under the Boost Software License, Version 1.0. (See accompanying
  1126. 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>
  1127. </p>
  1128. </div></td>
  1129. </tr></table>
  1130. <hr>
  1131. <div class="spirit-nav">
  1132. <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>
  1133. </div>
  1134. </body>
  1135. </html>