1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<title>boost/python/operators.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="../high_level_components.html" title="Chapter 2. High Level Components"> 9<link rel="prev" href="boost_python_module_hpp.html" title="boost/python/module.hpp"> 10<link rel="next" href="boost_python_scope_hpp.html" title="boost/python/scope.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_module_hpp.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../high_level_components.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_scope_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="high_level_components.boost_python_operators_hpp"></a><a class="link" href="boost_python_operators_hpp.html" title="boost/python/operators.hpp">boost/python/operators.hpp</a> 21</h2></div></div></div> 22<div class="toc"><dl class="toc"> 23<dt><span class="section"><a href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.introduction">Introduction</a></span></dt> 24<dt><span class="section"><a href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.class_self_ns_self_t">Class 25 <code class="computeroutput"><span class="identifier">self_ns</span><span class="special">::</span><span class="identifier">self_t</span></code></a></span></dt> 26<dt><span class="section"><a href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.class_template_other">Class 27 template <code class="computeroutput"><span class="identifier">other</span></code></a></span></dt> 28<dt><span class="section"><a href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.class_template_detail_operator">Class 29 template <code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">operator_</span></code></a></span></dt> 30<dt><span class="section"><a href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.object_self">Object 31 <code class="computeroutput"><span class="identifier">self</span></code></a></span></dt> 32<dt><span class="section"><a href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.example">Example</a></span></dt> 33</dl></div> 34<div class="section"> 35<div class="titlepage"><div><div><h3 class="title"> 36<a name="high_level_components.boost_python_operators_hpp.introduction"></a><a class="link" href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.introduction" title="Introduction">Introduction</a> 37</h3></div></div></div> 38<p> 39 <boost/python/operators.hpp> provides types and functions for automatically 40 generating Python <a href="http://www.python.org/doc/ref/specialnames.html" target="_top">special 41 methods</a> from the corresponding C++ constructs. Most of these constructs 42 are operator expressions, hence the name. To use the facility, substitute 43 the <a class="link" href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.object_self" title="Object self">self</a> 44 object for an object of the class type being wrapped in the expression 45 to be exposed, and pass the result to <a class="link" href="../high_level_components.html#high_level_components.boost_python_class_hpp.class_template_class_t_bases_hel.class_template_class_modifier_fu" title="Class template class_ modifier functions">class_<>::def()</a>. 46 Much of what is exposed in this header should be considered part of the 47 implementation, so is not documented in detail here. 48 </p> 49</div> 50<div class="section"> 51<div class="titlepage"><div><div><h3 class="title"> 52<a name="high_level_components.boost_python_operators_hpp.class_self_ns_self_t"></a><a class="link" href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.class_self_ns_self_t" title="Class self_ns::self_t">Class 53 <code class="computeroutput"><span class="identifier">self_ns</span><span class="special">::</span><span class="identifier">self_t</span></code></a> 54</h3></div></div></div> 55<div class="toc"><dl class="toc"> 56<dt><span class="section"><a href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.class_self_ns_self_t.self_t_inplace_operators"><code class="computeroutput"><span class="identifier">self_t</span></code> inplace operators</a></span></dt> 57<dt><span class="section"><a href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.class_self_ns_self_t.self_t_comparison_functions"><code class="computeroutput"><span class="identifier">self_t</span></code> comparison functions</a></span></dt> 58<dt><span class="section"><a href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.class_self_ns_self_t.self_t_non_member_operations"><code class="computeroutput"><span class="identifier">self_t</span></code> non-member operations</a></span></dt> 59<dt><span class="section"><a href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.class_self_ns_self_t.self_t_unary_operations"><code class="computeroutput"><span class="identifier">self_t</span></code> unary operations</a></span></dt> 60<dt><span class="section"><a href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.class_self_ns_self_t.self_t_value_operations"><code class="computeroutput"><span class="identifier">self_t</span></code> value operations</a></span></dt> 61</dl></div> 62<p> 63 <code class="computeroutput"><span class="identifier">self_ns</span><span class="special">::</span><span class="identifier">self_t</span></code> is the actual type of the <a class="link" href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.object_self" title="Object self">self</a> 64 object. The library isolates <code class="computeroutput"><span class="identifier">self_t</span></code> 65 in its own namespace, <code class="computeroutput"><span class="identifier">self_ns</span></code>, 66 in order to prevent the generalized operator templates which operate on 67 it from being found by argument-dependent lookup in other contexts. This 68 should be considered an implementation detail, since users should never 69 have to mention <code class="computeroutput"><span class="identifier">self_t</span></code> 70 directly. 71 </p> 72<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">self_ns</span> <span class="special">{</span> 73<span class="special">{</span> 74 <span class="identifier">unspecified</span><span class="special">-</span><span class="identifier">type</span><span class="special">-</span><span class="identifier">declaration</span> <span class="identifier">self_t</span><span class="special">;</span> 75 76 <span class="comment">// inplace operators</span> 77 <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">+=(</span><span class="identifier">self_t</span><span class="special">,</span> <span class="identifier">T</span><span class="special">);</span> 78 <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">-=(</span><span class="identifier">self_t</span><span class="special">,</span> <span class="identifier">T</span><span class="special">);</span> 79 <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">*=(</span><span class="identifier">self_t</span><span class="special">,</span> <span class="identifier">T</span><span class="special">);</span> 80 <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">/=(</span><span class="identifier">self_t</span><span class="special">,</span> <span class="identifier">T</span><span class="special">);</span> 81 <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">%=(</span><span class="identifier">self_t</span><span class="special">,</span> <span class="identifier">T</span><span class="special">);</span> 82 <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">>>=(</span><span class="identifier">self_t</span><span class="special">,</span> <span class="identifier">T</span><span class="special">);</span> 83 <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special"><<=(</span><span class="identifier">self_t</span><span class="special">,</span> <span class="identifier">T</span><span class="special">);</span> 84 <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">&=(</span><span class="identifier">self_t</span><span class="special">,</span> <span class="identifier">T</span><span class="special">);</span> 85 <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">^=(</span><span class="identifier">self_t</span><span class="special">,</span> <span class="identifier">T</span><span class="special">);</span> 86 <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">|=(</span><span class="identifier">self_t</span><span class="special">,</span> <span class="identifier">T</span><span class="special">);</span> 87 88 <span class="comment">// comparisons</span> 89 <span class="keyword">template</span> <span class="special"><</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">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">==(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">R</span> <span class="keyword">const</span><span class="special">&);</span> 90 <span class="keyword">template</span> <span class="special"><</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">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">!=(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">R</span> <span class="keyword">const</span><span class="special">&);</span> 91 <span class="keyword">template</span> <span class="special"><</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">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special"><(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">R</span> <span class="keyword">const</span><span class="special">&);</span> 92 <span class="keyword">template</span> <span class="special"><</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">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">>(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">R</span> <span class="keyword">const</span><span class="special">&);</span> 93 <span class="keyword">template</span> <span class="special"><</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">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special"><=(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">R</span> <span class="keyword">const</span><span class="special">&);</span> 94 <span class="keyword">template</span> <span class="special"><</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">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">>=(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">R</span> <span class="keyword">const</span><span class="special">&);</span> 95 96 <span class="comment">// non-member operations</span> 97 <span class="keyword">template</span> <span class="special"><</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">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">+(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">R</span> <span class="keyword">const</span><span class="special">&);</span> 98 <span class="keyword">template</span> <span class="special"><</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">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">-(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">R</span> <span class="keyword">const</span><span class="special">&);</span> 99 <span class="keyword">template</span> <span class="special"><</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">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">*(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">R</span> <span class="keyword">const</span><span class="special">&);</span> 100 <span class="keyword">template</span> <span class="special"><</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">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">/(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">R</span> <span class="keyword">const</span><span class="special">&);</span> 101 <span class="keyword">template</span> <span class="special"><</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">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">%(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">R</span> <span class="keyword">const</span><span class="special">&);</span> 102 <span class="keyword">template</span> <span class="special"><</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">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">>>(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">R</span> <span class="keyword">const</span><span class="special">&);</span> 103 <span class="keyword">template</span> <span class="special"><</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">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special"><<(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">R</span> <span class="keyword">const</span><span class="special">&);</span> 104 <span class="keyword">template</span> <span class="special"><</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">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">&(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">R</span> <span class="keyword">const</span><span class="special">&);</span> 105 <span class="keyword">template</span> <span class="special"><</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">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">^(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">R</span> <span class="keyword">const</span><span class="special">&);</span> 106 <span class="keyword">template</span> <span class="special"><</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">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">|(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">R</span> <span class="keyword">const</span><span class="special">&);</span> 107 <span class="keyword">template</span> <span class="special"><</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">></span> <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="identifier">pow</span><span class="special">(</span><span class="identifier">L</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">R</span> <span class="keyword">const</span><span class="special">&);</span> 108 109 <span class="comment">// unary operations</span> 110 <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">-(</span><span class="identifier">self_t</span><span class="special">);</span> 111 <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">+(</span><span class="identifier">self_t</span><span class="special">);</span> 112 <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">~(</span><span class="identifier">self_t</span><span class="special">);</span> 113 <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="keyword">operator</span><span class="special">!(</span><span class="identifier">self_t</span><span class="special">);</span> 114 115 <span class="comment">// value operations</span> 116 <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="identifier">int_</span><span class="special">(</span><span class="identifier">self_t</span><span class="special">);</span> 117 <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="identifier">long_</span><span class="special">(</span><span class="identifier">self_t</span><span class="special">);</span> 118 <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="identifier">float_</span><span class="special">(</span><span class="identifier">self_t</span><span class="special">);</span> 119 <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="identifier">complex_</span><span class="special">(</span><span class="identifier">self_t</span><span class="special">);</span> 120 <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="identifier">str</span><span class="special">(</span><span class="identifier">self_t</span><span class="special">);</span> 121 122 <span class="identifier">operator_</span><span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="identifier">repr</span><span class="special">(</span><span class="identifier">self_t</span><span class="special">);</span> 123<span class="special">}}};</span> 124</pre> 125<p> 126 The tables below describe the methods generated when the results of the 127 expressions described are passed as arguments to <a class="link" href="../high_level_components.html#high_level_components.boost_python_class_hpp.class_template_class_t_bases_hel.class_template_class_modifier_fu" title="Class template class_ modifier functions">class_<>::def()</a>. 128 <code class="computeroutput"><span class="identifier">x</span></code> is an object of the class 129 type being wrapped. 130 </p> 131<div class="section"> 132<div class="titlepage"><div><div><h4 class="title"> 133<a name="high_level_components.boost_python_operators_hpp.class_self_ns_self_t.self_t_inplace_operators"></a><a class="link" href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.class_self_ns_self_t.self_t_inplace_operators" title="self_t inplace operators"><code class="computeroutput"><span class="identifier">self_t</span></code> inplace operators</a> 134</h4></div></div></div> 135<p> 136 In the table below, If <code class="computeroutput"><span class="identifier">r</span></code> 137 is an object of type <a class="link" href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.class_template_other" title="Class template other">other<T></a>, 138 <code class="computeroutput"><span class="identifier">y</span></code> is an object of type 139 <code class="computeroutput"><span class="identifier">T</span></code>; otherwise, <code class="computeroutput"><span class="identifier">y</span></code> is an object of the same type as 140 <code class="computeroutput"><span class="identifier">r</span></code>. 141 </p> 142<div class="informaltable"><table class="table"> 143<colgroup> 144<col> 145<col> 146<col> 147</colgroup> 148<thead><tr> 149<th> 150 <p> 151 C++ Expression 152 </p> 153 </th> 154<th> 155 <p> 156 Python Method Name 157 </p> 158 </th> 159<th> 160 <p> 161 C++ Implementation 162 </p> 163 </th> 164</tr></thead> 165<tbody> 166<tr> 167<td> 168 <p> 169 <code class="computeroutput"><span class="identifier">self</span> <span class="special">+=</span> 170 <span class="identifier">r</span></code> 171 </p> 172 </td> 173<td> 174 <p> 175 <code class="computeroutput"><span class="identifier">__iadd__</span></code> 176 </p> 177 </td> 178<td> 179 <p> 180 <code class="computeroutput"><span class="identifier">x</span> <span class="special">+=</span> 181 <span class="identifier">y</span></code> 182 </p> 183 </td> 184</tr> 185<tr> 186<td> 187 <p> 188 <code class="computeroutput"><span class="identifier">self</span> <span class="special">-=</span> 189 <span class="identifier">r</span></code> 190 </p> 191 </td> 192<td> 193 <p> 194 <code class="computeroutput"><span class="identifier">__isub__</span></code> 195 </p> 196 </td> 197<td> 198 <p> 199 <code class="computeroutput"><span class="identifier">x</span> <span class="special">-=</span> 200 <span class="identifier">y</span></code> 201 </p> 202 </td> 203</tr> 204<tr> 205<td> 206 <p> 207 <code class="computeroutput"><span class="identifier">self</span> <span class="special">*=</span> 208 <span class="identifier">r</span></code> 209 </p> 210 </td> 211<td> 212 <p> 213 <code class="computeroutput"><span class="identifier">__imul__</span></code> 214 </p> 215 </td> 216<td> 217 <p> 218 <code class="computeroutput"><span class="identifier">x</span> <span class="special">*=</span> 219 <span class="identifier">y</span></code> 220 </p> 221 </td> 222</tr> 223<tr> 224<td> 225 <p> 226 <code class="computeroutput"><span class="identifier">self</span> <span class="special">/=</span> 227 <span class="identifier">r</span></code> 228 </p> 229 </td> 230<td> 231 <p> 232 <code class="computeroutput"><span class="identifier">__idiv__</span></code> 233 </p> 234 </td> 235<td> 236 <p> 237 <code class="computeroutput"><span class="identifier">x</span> <span class="special">/=</span> 238 <span class="identifier">y</span></code> 239 </p> 240 </td> 241</tr> 242<tr> 243<td> 244 <p> 245 <code class="computeroutput"><span class="identifier">self</span> <span class="special">%=</span> 246 <span class="identifier">r</span></code> 247 </p> 248 </td> 249<td> 250 <p> 251 <code class="computeroutput"><span class="identifier">__imod__</span></code> 252 </p> 253 </td> 254<td> 255 <p> 256 <code class="computeroutput"><span class="identifier">x</span> <span class="special">%=</span> 257 <span class="identifier">y</span></code> 258 </p> 259 </td> 260</tr> 261<tr> 262<td> 263 <p> 264 <code class="computeroutput"><span class="identifier">self</span> <span class="special">>>=</span> 265 <span class="identifier">r</span></code> 266 </p> 267 </td> 268<td> 269 <p> 270 <code class="computeroutput"><span class="identifier">__irshift__</span></code> 271 </p> 272 </td> 273<td> 274 <p> 275 <code class="computeroutput"><span class="identifier">x</span> <span class="special">>>=</span> 276 <span class="identifier">y</span></code> 277 </p> 278 </td> 279</tr> 280<tr> 281<td> 282 <p> 283 <code class="computeroutput"><span class="identifier">self</span> <span class="special"><<=</span> 284 <span class="identifier">r</span></code> 285 </p> 286 </td> 287<td> 288 <p> 289 <code class="computeroutput"><span class="identifier">__ilshift__</span></code> 290 </p> 291 </td> 292<td> 293 <p> 294 <code class="computeroutput"><span class="identifier">x</span> <span class="special"><<=</span> 295 <span class="identifier">y</span></code> 296 </p> 297 </td> 298</tr> 299<tr> 300<td> 301 <p> 302 <code class="computeroutput"><span class="identifier">self</span> <span class="special">&=</span> 303 <span class="identifier">r</span></code> 304 </p> 305 </td> 306<td> 307 <p> 308 <code class="computeroutput"><span class="identifier">__iand__</span></code> 309 </p> 310 </td> 311<td> 312 <p> 313 <code class="computeroutput"><span class="identifier">x</span> <span class="special">&=</span> 314 <span class="identifier">y</span></code> 315 </p> 316 </td> 317</tr> 318<tr> 319<td> 320 <p> 321 <code class="computeroutput"><span class="identifier">self</span> <span class="special">^=</span> 322 <span class="identifier">r</span></code> 323 </p> 324 </td> 325<td> 326 <p> 327 <code class="computeroutput"><span class="identifier">__ixor__</span></code> 328 </p> 329 </td> 330<td> 331 <p> 332 <code class="computeroutput"><span class="identifier">x</span> <span class="special">^=</span> 333 <span class="identifier">y</span></code> 334 </p> 335 </td> 336</tr> 337<tr> 338<td> 339 <p> 340 <code class="computeroutput"><span class="identifier">self</span> <span class="special">|=</span> 341 <span class="identifier">r</span></code> 342 </p> 343 </td> 344<td> 345 <p> 346 <code class="computeroutput"><span class="identifier">__ior__</span></code> 347 </p> 348 </td> 349<td> 350 <p> 351 <code class="computeroutput"><span class="identifier">x</span> <span class="special">|=</span> 352 <span class="identifier">y</span></code> 353 </p> 354 </td> 355</tr> 356</tbody> 357</table></div> 358</div> 359<div class="section"> 360<div class="titlepage"><div><div><h4 class="title"> 361<a name="high_level_components.boost_python_operators_hpp.class_self_ns_self_t.self_t_comparison_functions"></a><a class="link" href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.class_self_ns_self_t.self_t_comparison_functions" title="self_t comparison functions"><code class="computeroutput"><span class="identifier">self_t</span></code> comparison functions</a> 362</h4></div></div></div> 363<p> 364 In the tables below, if <code class="computeroutput"><span class="identifier">r</span></code> 365 is of type <a class="link" href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.class_self_ns_self_t" title="Class self_ns::self_t">self_t</a>, 366 <code class="computeroutput"><span class="identifier">y</span></code> is an object of the 367 same type as <code class="computeroutput"><span class="identifier">x</span></code>; if <code class="computeroutput"><span class="identifier">l</span></code> or <code class="computeroutput"><span class="identifier">r</span></code> 368 is an object of type <a class="link" href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.class_template_other" title="Class template other">other<T></a>, 369 <code class="computeroutput"><span class="identifier">y</span></code> is an object of type 370 <code class="computeroutput"><span class="identifier">T</span></code>; otherwise, <code class="computeroutput"><span class="identifier">y</span></code> is an object of the same type as 371 <code class="computeroutput"><span class="identifier">l</span></code> or <code class="computeroutput"><span class="identifier">r</span></code>. 372 <code class="computeroutput"><span class="identifier">l</span></code> is never of type <a class="link" href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.class_self_ns_self_t" title="Class self_ns::self_t">self_t</a>. 373 </p> 374<p> 375 The column of Python Expressions illustrates the expressions that will 376 be supported in Python for objects convertible to the types of x and 377 y. The secondary operation arises due to Python's <a href="http://www.python.org/doc/ref/customization.html#l2h-89" target="_top">reflection 378 rules</a> for rich comparison operators, and are only used when the 379 corresponding operation is not defined as a method of the y object. 380 </p> 381<div class="informaltable"><table class="table"> 382<colgroup> 383<col> 384<col> 385<col> 386<col> 387</colgroup> 388<thead><tr> 389<th> 390 <p> 391 C++ Expression 392 </p> 393 </th> 394<th> 395 <p> 396 Python Method Name 397 </p> 398 </th> 399<th> 400 <p> 401 C++ Implementation 402 </p> 403 </th> 404<th> 405 <p> 406 Python Expression (primary, secondary) 407 </p> 408 </th> 409</tr></thead> 410<tbody> 411<tr> 412<td> 413 <p> 414 <code class="computeroutput"><span class="identifier">self</span> <span class="special">==</span> 415 <span class="identifier">r</span></code> 416 </p> 417 </td> 418<td> 419 <p> 420 <code class="computeroutput"><span class="identifier">__eq__</span></code> 421 </p> 422 </td> 423<td> 424 <p> 425 <code class="computeroutput"><span class="identifier">x</span> <span class="special">==</span> 426 <span class="identifier">y</span></code> 427 </p> 428 </td> 429<td> 430 <p> 431 <code class="computeroutput"><span class="identifier">x</span> <span class="special">==</span> 432 <span class="identifier">y</span></code>, <code class="computeroutput"><span class="identifier">y</span> <span class="special">==</span> 433 <span class="identifier">x</span></code> 434 </p> 435 </td> 436</tr> 437<tr> 438<td> 439 <p> 440 <code class="computeroutput"><span class="identifier">l</span> <span class="special">==</span> 441 <span class="identifier">self</span></code> 442 </p> 443 </td> 444<td> 445 <p> 446 <code class="computeroutput"><span class="identifier">__eq__</span></code> 447 </p> 448 </td> 449<td> 450 <p> 451 <code class="computeroutput"><span class="identifier">y</span> <span class="special">==</span> 452 <span class="identifier">x</span></code> 453 </p> 454 </td> 455<td> 456 <p> 457 <code class="computeroutput"><span class="identifier">y</span> <span class="special">==</span> 458 <span class="identifier">x</span></code>, <code class="computeroutput"><span class="identifier">x</span> <span class="special">==</span> 459 <span class="identifier">y</span></code> 460 </p> 461 </td> 462</tr> 463<tr> 464<td> 465 <p> 466 <code class="computeroutput"><span class="identifier">self</span> <span class="special">!=</span> 467 <span class="identifier">r</span></code> 468 </p> 469 </td> 470<td> 471 <p> 472 <code class="computeroutput"><span class="identifier">__ne__</span></code> 473 </p> 474 </td> 475<td> 476 <p> 477 <code class="computeroutput"><span class="identifier">x</span> <span class="special">!=</span> 478 <span class="identifier">y</span></code> 479 </p> 480 </td> 481<td> 482 <p> 483 <code class="computeroutput"><span class="identifier">x</span> <span class="special">!=</span> 484 <span class="identifier">y</span></code>, <code class="computeroutput"><span class="identifier">y</span> <span class="special">!=</span> 485 <span class="identifier">x</span></code> 486 </p> 487 </td> 488</tr> 489<tr> 490<td> 491 <p> 492 <code class="computeroutput"><span class="identifier">l</span> <span class="special">!=</span> 493 <span class="identifier">self</span></code> 494 </p> 495 </td> 496<td> 497 <p> 498 <code class="computeroutput"><span class="identifier">__ne__</span></code> 499 </p> 500 </td> 501<td> 502 <p> 503 <code class="computeroutput"><span class="identifier">y</span> <span class="special">!=</span> 504 <span class="identifier">x</span></code> 505 </p> 506 </td> 507<td> 508 <p> 509 <code class="computeroutput"><span class="identifier">y</span> <span class="special">!=</span> 510 <span class="identifier">x</span></code>, <code class="computeroutput"><span class="identifier">x</span> <span class="special">!=</span> 511 <span class="identifier">y</span></code> 512 </p> 513 </td> 514</tr> 515<tr> 516<td> 517 <p> 518 <code class="computeroutput"><span class="identifier">self</span> <span class="special"><</span> 519 <span class="identifier">r</span></code> 520 </p> 521 </td> 522<td> 523 <p> 524 <code class="computeroutput"><span class="identifier">__lt__</span></code> 525 </p> 526 </td> 527<td> 528 <p> 529 <code class="computeroutput"><span class="identifier">x</span> <span class="special"><</span> 530 <span class="identifier">y</span></code> 531 </p> 532 </td> 533<td> 534 <p> 535 <code class="computeroutput"><span class="identifier">x</span> <span class="special"><</span> 536 <span class="identifier">y</span></code>, <code class="computeroutput"><span class="identifier">y</span> <span class="special">></span> 537 <span class="identifier">x</span></code> 538 </p> 539 </td> 540</tr> 541<tr> 542<td> 543 <p> 544 <code class="computeroutput"><span class="identifier">l</span> <span class="special"><</span> 545 <span class="identifier">self</span></code> 546 </p> 547 </td> 548<td> 549 <p> 550 <code class="computeroutput"><span class="identifier">__gt__</span></code> 551 </p> 552 </td> 553<td> 554 <p> 555 <code class="computeroutput"><span class="identifier">y</span> <span class="special"><</span> 556 <span class="identifier">x</span></code> 557 </p> 558 </td> 559<td> 560 <p> 561 <code class="computeroutput"><span class="identifier">y</span> <span class="special">></span> 562 <span class="identifier">x</span></code>, <code class="computeroutput"><span class="identifier">x</span> <span class="special"><</span> 563 <span class="identifier">y</span></code> 564 </p> 565 </td> 566</tr> 567<tr> 568<td> 569 <p> 570 <code class="computeroutput"><span class="identifier">self</span> <span class="special">></span> 571 <span class="identifier">r</span></code> 572 </p> 573 </td> 574<td> 575 <p> 576 <code class="computeroutput"><span class="identifier">__gt__</span></code> 577 </p> 578 </td> 579<td> 580 <p> 581 <code class="computeroutput"><span class="identifier">x</span> <span class="special">></span> 582 <span class="identifier">y</span></code> 583 </p> 584 </td> 585<td> 586 <p> 587 <code class="computeroutput"><span class="identifier">x</span> <span class="special">></span> 588 <span class="identifier">y</span></code>, <code class="computeroutput"><span class="identifier">y</span> <span class="special"><</span> 589 <span class="identifier">x</span></code> 590 </p> 591 </td> 592</tr> 593<tr> 594<td> 595 <p> 596 <code class="computeroutput"><span class="identifier">l</span> <span class="special">></span> 597 <span class="identifier">self</span></code> 598 </p> 599 </td> 600<td> 601 <p> 602 <code class="computeroutput"><span class="identifier">__lt__</span></code> 603 </p> 604 </td> 605<td> 606 <p> 607 <code class="computeroutput"><span class="identifier">y</span> <span class="special">></span> 608 <span class="identifier">x</span></code> 609 </p> 610 </td> 611<td> 612 <p> 613 <code class="computeroutput"><span class="identifier">y</span> <span class="special"><</span> 614 <span class="identifier">x</span></code>, <code class="computeroutput"><span class="identifier">x</span> <span class="special">></span> 615 <span class="identifier">y</span></code> 616 </p> 617 </td> 618</tr> 619<tr> 620<td> 621 <p> 622 <code class="computeroutput"><span class="identifier">self</span> <span class="special"><=</span> 623 <span class="identifier">r</span></code> 624 </p> 625 </td> 626<td> 627 <p> 628 <code class="computeroutput"><span class="identifier">__le__</span></code> 629 </p> 630 </td> 631<td> 632 <p> 633 <code class="computeroutput"><span class="identifier">x</span> <span class="special"><=</span> 634 <span class="identifier">y</span></code> 635 </p> 636 </td> 637<td> 638 <p> 639 <code class="computeroutput"><span class="identifier">x</span> <span class="special"><=</span> 640 <span class="identifier">y</span></code>, <code class="computeroutput"><span class="identifier">y</span> <span class="special">>=</span> 641 <span class="identifier">x</span></code> 642 </p> 643 </td> 644</tr> 645<tr> 646<td> 647 <p> 648 <code class="computeroutput"><span class="identifier">l</span> <span class="special"><=</span> 649 <span class="identifier">self</span></code> 650 </p> 651 </td> 652<td> 653 <p> 654 <code class="computeroutput"><span class="identifier">__ge__</span></code> 655 </p> 656 </td> 657<td> 658 <p> 659 <code class="computeroutput"><span class="identifier">y</span> <span class="special"><=</span> 660 <span class="identifier">x</span></code> 661 </p> 662 </td> 663<td> 664 <p> 665 <code class="computeroutput"><span class="identifier">y</span> <span class="special">>=</span> 666 <span class="identifier">x</span></code>, <code class="computeroutput"><span class="identifier">x</span> <span class="special"><=</span> 667 <span class="identifier">y</span></code> 668 </p> 669 </td> 670</tr> 671<tr> 672<td> 673 <p> 674 <code class="computeroutput"><span class="identifier">self</span> <span class="special">>=</span> 675 <span class="identifier">r</span></code> 676 </p> 677 </td> 678<td> 679 <p> 680 <code class="computeroutput"><span class="identifier">__ge__</span></code> 681 </p> 682 </td> 683<td> 684 <p> 685 <code class="computeroutput"><span class="identifier">x</span> <span class="special">>=</span> 686 <span class="identifier">y</span></code> 687 </p> 688 </td> 689<td> 690 <p> 691 <code class="computeroutput"><span class="identifier">x</span> <span class="special">>=</span> 692 <span class="identifier">y</span></code>, <code class="computeroutput"><span class="identifier">y</span> <span class="special"><=</span> 693 <span class="identifier">x</span></code> 694 </p> 695 </td> 696</tr> 697<tr> 698<td> 699 <p> 700 <code class="computeroutput"><span class="identifier">l</span> <span class="special"><=</span> 701 <span class="identifier">self</span></code> 702 </p> 703 </td> 704<td> 705 <p> 706 <code class="computeroutput"><span class="identifier">__le__</span></code> 707 </p> 708 </td> 709<td> 710 <p> 711 <code class="computeroutput"><span class="identifier">y</span> <span class="special">>=</span> 712 <span class="identifier">x</span></code> 713 </p> 714 </td> 715<td> 716 <p> 717 <code class="computeroutput"><span class="identifier">y</span> <span class="special"><=</span> 718 <span class="identifier">x</span></code>, <code class="computeroutput"><span class="identifier">x</span> <span class="special">>=</span> 719 <span class="identifier">y</span></code> 720 </p> 721 </td> 722</tr> 723</tbody> 724</table></div> 725</div> 726<div class="section"> 727<div class="titlepage"><div><div><h4 class="title"> 728<a name="high_level_components.boost_python_operators_hpp.class_self_ns_self_t.self_t_non_member_operations"></a><a class="link" href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.class_self_ns_self_t.self_t_non_member_operations" title="self_t non-member operations"><code class="computeroutput"><span class="identifier">self_t</span></code> non-member operations</a> 729</h4></div></div></div> 730<p> 731 The operations whose names begin with "__r" below will only 732 be called if the left-hand operand does not already support the given 733 operation, as described <a href="http://www.python.org/doc/current/ref/numeric-types.html#l2h-152" target="_top">here</a>. 734 </p> 735<div class="informaltable"><table class="table"> 736<colgroup> 737<col> 738<col> 739<col> 740</colgroup> 741<thead><tr> 742<th> 743 <p> 744 C++ Expression 745 </p> 746 </th> 747<th> 748 <p> 749 Python Method Name 750 </p> 751 </th> 752<th> 753 <p> 754 C++ Implementation 755 </p> 756 </th> 757</tr></thead> 758<tbody> 759<tr> 760<td> 761 <p> 762 <code class="computeroutput"><span class="identifier">self</span> <span class="special">+</span> 763 <span class="identifier">r</span></code> 764 </p> 765 </td> 766<td> 767 <p> 768 <code class="computeroutput"><span class="identifier">__add__</span></code> 769 </p> 770 </td> 771<td> 772 <p> 773 <code class="computeroutput"><span class="identifier">x</span> <span class="special">+</span> 774 <span class="identifier">y</span></code> 775 </p> 776 </td> 777</tr> 778<tr> 779<td> 780 <p> 781 <code class="computeroutput"><span class="identifier">l</span> <span class="special">+</span> 782 <span class="identifier">self</span></code> 783 </p> 784 </td> 785<td> 786 <p> 787 <code class="computeroutput"><span class="identifier">__radd__</span></code> 788 </p> 789 </td> 790<td> 791 <p> 792 <code class="computeroutput"><span class="identifier">y</span> <span class="special">+</span> 793 <span class="identifier">x</span></code> 794 </p> 795 </td> 796</tr> 797<tr> 798<td> 799 <p> 800 <code class="computeroutput"><span class="identifier">self</span> <span class="special">-</span> 801 <span class="identifier">r</span></code> 802 </p> 803 </td> 804<td> 805 <p> 806 <code class="computeroutput"><span class="identifier">__sub__</span></code> 807 </p> 808 </td> 809<td> 810 <p> 811 <code class="computeroutput"><span class="identifier">x</span> <span class="special">-</span> 812 <span class="identifier">y</span></code> 813 </p> 814 </td> 815</tr> 816<tr> 817<td> 818 <p> 819 <code class="computeroutput"><span class="identifier">l</span> <span class="special">-</span> 820 <span class="identifier">self</span></code> 821 </p> 822 </td> 823<td> 824 <p> 825 <code class="computeroutput"><span class="identifier">__rsub__</span></code> 826 </p> 827 </td> 828<td> 829 <p> 830 <code class="computeroutput"><span class="identifier">y</span> <span class="special">-</span> 831 <span class="identifier">x</span></code> 832 </p> 833 </td> 834</tr> 835<tr> 836<td> 837 <p> 838 <code class="computeroutput"><span class="identifier">self</span> <span class="special">*</span> 839 <span class="identifier">r</span></code> 840 </p> 841 </td> 842<td> 843 <p> 844 <code class="computeroutput"><span class="identifier">__mult__</span></code> 845 </p> 846 </td> 847<td> 848 <p> 849 <code class="computeroutput"><span class="identifier">x</span> <span class="special">*</span> 850 <span class="identifier">y</span></code> 851 </p> 852 </td> 853</tr> 854<tr> 855<td> 856 <p> 857 <code class="computeroutput"><span class="identifier">l</span> <span class="special">*</span> 858 <span class="identifier">self</span></code> 859 </p> 860 </td> 861<td> 862 <p> 863 <code class="computeroutput"><span class="identifier">__rmult__</span></code> 864 </p> 865 </td> 866<td> 867 <p> 868 <code class="computeroutput"><span class="identifier">y</span> <span class="special">*</span> 869 <span class="identifier">x</span></code> 870 </p> 871 </td> 872</tr> 873<tr> 874<td> 875 <p> 876 <code class="computeroutput"><span class="identifier">self</span> <span class="special">/</span> 877 <span class="identifier">r</span></code> 878 </p> 879 </td> 880<td> 881 <p> 882 <code class="computeroutput"><span class="identifier">__div__</span></code> 883 </p> 884 </td> 885<td> 886 <p> 887 <code class="computeroutput"><span class="identifier">x</span> <span class="special">/</span> 888 <span class="identifier">y</span></code> 889 </p> 890 </td> 891</tr> 892<tr> 893<td> 894 <p> 895 <code class="computeroutput"><span class="identifier">l</span> <span class="special">/</span> 896 <span class="identifier">self</span></code> 897 </p> 898 </td> 899<td> 900 <p> 901 <code class="computeroutput"><span class="identifier">__rdiv__</span></code> 902 </p> 903 </td> 904<td> 905 <p> 906 <code class="computeroutput"><span class="identifier">y</span> <span class="special">/</span> 907 <span class="identifier">x</span></code> 908 </p> 909 </td> 910</tr> 911<tr> 912<td> 913 <p> 914 <code class="computeroutput"><span class="identifier">self</span> <span class="special">%</span> 915 <span class="identifier">r</span></code> 916 </p> 917 </td> 918<td> 919 <p> 920 <code class="computeroutput"><span class="identifier">__mod__</span></code> 921 </p> 922 </td> 923<td> 924 <p> 925 <code class="computeroutput"><span class="identifier">x</span> <span class="special">%</span> 926 <span class="identifier">y</span></code> 927 </p> 928 </td> 929</tr> 930<tr> 931<td> 932 <p> 933 <code class="computeroutput"><span class="identifier">l</span> <span class="special">%</span> 934 <span class="identifier">self</span></code> 935 </p> 936 </td> 937<td> 938 <p> 939 <code class="computeroutput"><span class="identifier">__rmod__</span></code> 940 </p> 941 </td> 942<td> 943 <p> 944 <code class="computeroutput"><span class="identifier">y</span> <span class="special">%</span> 945 <span class="identifier">x</span></code> 946 </p> 947 </td> 948</tr> 949<tr> 950<td> 951 <p> 952 <code class="computeroutput"><span class="identifier">self</span> <span class="special">>></span> 953 <span class="identifier">r</span></code> 954 </p> 955 </td> 956<td> 957 <p> 958 <code class="computeroutput"><span class="identifier">__rshift__</span></code> 959 </p> 960 </td> 961<td> 962 <p> 963 <code class="computeroutput"><span class="identifier">x</span> <span class="special">>></span> 964 <span class="identifier">y</span></code> 965 </p> 966 </td> 967</tr> 968<tr> 969<td> 970 <p> 971 <code class="computeroutput"><span class="identifier">l</span> <span class="special">>></span> 972 <span class="identifier">self</span></code> 973 </p> 974 </td> 975<td> 976 <p> 977 <code class="computeroutput"><span class="identifier">__rrshift__</span></code> 978 </p> 979 </td> 980<td> 981 <p> 982 <code class="computeroutput"><span class="identifier">y</span> <span class="special">>></span> 983 <span class="identifier">x</span></code> 984 </p> 985 </td> 986</tr> 987<tr> 988<td> 989 <p> 990 <code class="computeroutput"><span class="identifier">self</span> <span class="special"><<</span> 991 <span class="identifier">r</span></code> 992 </p> 993 </td> 994<td> 995 <p> 996 <code class="computeroutput"><span class="identifier">__lshift__</span></code> 997 </p> 998 </td> 999<td> 1000 <p> 1001 <code class="computeroutput"><span class="identifier">x</span> <span class="special"><<</span> 1002 <span class="identifier">y</span></code> 1003 </p> 1004 </td> 1005</tr> 1006<tr> 1007<td> 1008 <p> 1009 <code class="computeroutput"><span class="identifier">l</span> <span class="special"><<</span> 1010 <span class="identifier">self</span></code> 1011 </p> 1012 </td> 1013<td> 1014 <p> 1015 <code class="computeroutput"><span class="identifier">__rlshift__</span></code> 1016 </p> 1017 </td> 1018<td> 1019 <p> 1020 <code class="computeroutput"><span class="identifier">y</span> <span class="special"><<</span> 1021 <span class="identifier">x</span></code> 1022 </p> 1023 </td> 1024</tr> 1025<tr> 1026<td> 1027 <p> 1028 <code class="computeroutput"><span class="identifier">self</span> <span class="special">&</span> 1029 <span class="identifier">r</span></code> 1030 </p> 1031 </td> 1032<td> 1033 <p> 1034 <code class="computeroutput"><span class="identifier">__and__</span></code> 1035 </p> 1036 </td> 1037<td> 1038 <p> 1039 <code class="computeroutput"><span class="identifier">x</span> <span class="special">&</span> 1040 <span class="identifier">y</span></code> 1041 </p> 1042 </td> 1043</tr> 1044<tr> 1045<td> 1046 <p> 1047 <code class="computeroutput"><span class="identifier">l</span> <span class="special">&</span> 1048 <span class="identifier">self</span></code> 1049 </p> 1050 </td> 1051<td> 1052 <p> 1053 <code class="computeroutput"><span class="identifier">__rand__</span></code> 1054 </p> 1055 </td> 1056<td> 1057 <p> 1058 <code class="computeroutput"><span class="identifier">y</span> <span class="special">&</span> 1059 <span class="identifier">x</span></code> 1060 </p> 1061 </td> 1062</tr> 1063<tr> 1064<td> 1065 <p> 1066 <code class="computeroutput"><span class="identifier">self</span> <span class="special">^</span> 1067 <span class="identifier">r</span></code> 1068 </p> 1069 </td> 1070<td> 1071 <p> 1072 <code class="computeroutput"><span class="identifier">__xor__</span></code> 1073 </p> 1074 </td> 1075<td> 1076 <p> 1077 <code class="computeroutput"><span class="identifier">x</span> <span class="special">^</span> 1078 <span class="identifier">y</span></code> 1079 </p> 1080 </td> 1081</tr> 1082<tr> 1083<td> 1084 <p> 1085 <code class="computeroutput"><span class="identifier">l</span> <span class="special">^</span> 1086 <span class="identifier">self</span></code> 1087 </p> 1088 </td> 1089<td> 1090 <p> 1091 <code class="computeroutput"><span class="identifier">__rxor__</span></code> 1092 </p> 1093 </td> 1094<td> 1095 <p> 1096 <code class="computeroutput"><span class="identifier">y</span> <span class="special">^</span> 1097 <span class="identifier">x</span></code> 1098 </p> 1099 </td> 1100</tr> 1101<tr> 1102<td> 1103 <p> 1104 <code class="computeroutput"><span class="identifier">self</span> <span class="special">|</span> 1105 <span class="identifier">r</span></code> 1106 </p> 1107 </td> 1108<td> 1109 <p> 1110 <code class="computeroutput"><span class="identifier">__or__</span></code> 1111 </p> 1112 </td> 1113<td> 1114 <p> 1115 <code class="computeroutput"><span class="identifier">x</span> <span class="special">|</span> 1116 <span class="identifier">y</span></code> 1117 </p> 1118 </td> 1119</tr> 1120<tr> 1121<td> 1122 <p> 1123 <code class="computeroutput"><span class="identifier">l</span> <span class="special">|</span> 1124 <span class="identifier">self</span></code> 1125 </p> 1126 </td> 1127<td> 1128 <p> 1129 <code class="computeroutput"><span class="identifier">__ror__</span></code> 1130 </p> 1131 </td> 1132<td> 1133 <p> 1134 <code class="computeroutput"><span class="identifier">y</span> <span class="special">|</span> 1135 <span class="identifier">x</span></code> 1136 </p> 1137 </td> 1138</tr> 1139<tr> 1140<td> 1141 <p> 1142 <code class="computeroutput"><span class="identifier">pow</span><span class="special">(</span><span class="identifier">self</span><span class="special">,</span> 1143 <span class="identifier">r</span><span class="special">)</span></code> 1144 </p> 1145 </td> 1146<td> 1147 <p> 1148 <code class="computeroutput"><span class="identifier">__pow__</span></code> 1149 </p> 1150 </td> 1151<td> 1152 <p> 1153 <code class="computeroutput"><span class="identifier">x</span> <span class="special">**</span> 1154 <span class="identifier">y</span></code> 1155 </p> 1156 </td> 1157</tr> 1158<tr> 1159<td> 1160 <p> 1161 <code class="computeroutput"><span class="identifier">pow</span><span class="special">(</span><span class="identifier">l</span><span class="special">,</span> 1162 <span class="identifier">self</span><span class="special">)</span></code> 1163 </p> 1164 </td> 1165<td> 1166 <p> 1167 <code class="computeroutput"><span class="identifier">__rpow__</span></code> 1168 </p> 1169 </td> 1170<td> 1171 <p> 1172 <code class="computeroutput"><span class="identifier">y</span> <span class="special">**</span> 1173 <span class="identifier">x</span></code> 1174 </p> 1175 </td> 1176</tr> 1177</tbody> 1178</table></div> 1179</div> 1180<div class="section"> 1181<div class="titlepage"><div><div><h4 class="title"> 1182<a name="high_level_components.boost_python_operators_hpp.class_self_ns_self_t.self_t_unary_operations"></a><a class="link" href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.class_self_ns_self_t.self_t_unary_operations" title="self_t unary operations"><code class="computeroutput"><span class="identifier">self_t</span></code> unary operations</a> 1183</h4></div></div></div> 1184<div class="informaltable"><table class="table"> 1185<colgroup> 1186<col> 1187<col> 1188<col> 1189</colgroup> 1190<thead><tr> 1191<th> 1192 <p> 1193 C++ Expression 1194 </p> 1195 </th> 1196<th> 1197 <p> 1198 Python Method Name 1199 </p> 1200 </th> 1201<th> 1202 <p> 1203 C++ Implementation 1204 </p> 1205 </th> 1206</tr></thead> 1207<tbody> 1208<tr> 1209<td> 1210 <p> 1211 <code class="computeroutput"><span class="special">-</span><span class="identifier">self</span></code> 1212 </p> 1213 </td> 1214<td> 1215 <p> 1216 <code class="computeroutput"><span class="identifier">__neg__</span></code> 1217 </p> 1218 </td> 1219<td> 1220 <p> 1221 <code class="computeroutput"><span class="special">-</span><span class="identifier">x</span></code> 1222 </p> 1223 </td> 1224</tr> 1225<tr> 1226<td> 1227 <p> 1228 <code class="computeroutput"><span class="special">+</span><span class="identifier">self</span></code> 1229 </p> 1230 </td> 1231<td> 1232 <p> 1233 <code class="computeroutput"><span class="identifier">__pos__</span></code> 1234 </p> 1235 </td> 1236<td> 1237 <p> 1238 <code class="computeroutput"><span class="special">+</span><span class="identifier">x</span></code> 1239 </p> 1240 </td> 1241</tr> 1242<tr> 1243<td> 1244 <p> 1245 <code class="computeroutput"><span class="special">~</span><span class="identifier">self</span></code> 1246 </p> 1247 </td> 1248<td> 1249 <p> 1250 <code class="computeroutput"><span class="identifier">__invert__</span></code> 1251 </p> 1252 </td> 1253<td> 1254 <p> 1255 <code class="computeroutput"><span class="special">~</span><span class="identifier">x</span></code> 1256 </p> 1257 </td> 1258</tr> 1259<tr> 1260<td> 1261 <p> 1262 <code class="computeroutput"><span class="keyword">not</span> <span class="identifier">self</span></code> 1263 or <code class="computeroutput"><span class="special">!</span><span class="identifier">self</span></code> 1264 </p> 1265 </td> 1266<td> 1267 <p> 1268 <code class="computeroutput"><span class="identifier">__nonzero__</span></code> 1269 </p> 1270 </td> 1271<td> 1272 <p> 1273 <code class="computeroutput"><span class="special">!!</span><span class="identifier">x</span></code> 1274 </p> 1275 </td> 1276</tr> 1277</tbody> 1278</table></div> 1279</div> 1280<div class="section"> 1281<div class="titlepage"><div><div><h4 class="title"> 1282<a name="high_level_components.boost_python_operators_hpp.class_self_ns_self_t.self_t_value_operations"></a><a class="link" href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.class_self_ns_self_t.self_t_value_operations" title="self_t value operations"><code class="computeroutput"><span class="identifier">self_t</span></code> value operations</a> 1283</h4></div></div></div> 1284<div class="informaltable"><table class="table"> 1285<colgroup> 1286<col> 1287<col> 1288<col> 1289</colgroup> 1290<thead><tr> 1291<th> 1292 <p> 1293 C++ Expression 1294 </p> 1295 </th> 1296<th> 1297 <p> 1298 Python Method Name 1299 </p> 1300 </th> 1301<th> 1302 <p> 1303 C++ Implementation 1304 </p> 1305 </th> 1306</tr></thead> 1307<tbody> 1308<tr> 1309<td> 1310 <p> 1311 <code class="computeroutput"><span class="identifier">int_</span><span class="special">(</span><span class="identifier">self</span><span class="special">)</span></code> 1312 </p> 1313 </td> 1314<td> 1315 <p> 1316 <code class="computeroutput"><span class="identifier">__int__</span></code> 1317 </p> 1318 </td> 1319<td> 1320 <p> 1321 <code class="computeroutput"><span class="keyword">long</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></code> 1322 </p> 1323 </td> 1324</tr> 1325<tr> 1326<td> 1327 <p> 1328 <code class="computeroutput"><span class="identifier">long_</span><span class="special">(</span><span class="identifier">self</span><span class="special">)</span></code> 1329 </p> 1330 </td> 1331<td> 1332 <p> 1333 <code class="computeroutput"><span class="identifier">__long__</span></code> 1334 </p> 1335 </td> 1336<td> 1337 <p> 1338 <code class="computeroutput"><span class="identifier">PyLong_FromLong</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></code> 1339 </p> 1340 </td> 1341</tr> 1342<tr> 1343<td> 1344 <p> 1345 <code class="computeroutput"><span class="identifier">float_</span><span class="special">(</span><span class="identifier">self</span><span class="special">)</span></code> 1346 </p> 1347 </td> 1348<td> 1349 <p> 1350 <code class="computeroutput"><span class="identifier">__float__</span></code> 1351 </p> 1352 </td> 1353<td> 1354 <p> 1355 <code class="computeroutput"><span class="keyword">double</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></code> 1356 </p> 1357 </td> 1358</tr> 1359<tr> 1360<td> 1361 <p> 1362 <code class="computeroutput"><span class="identifier">complex_</span><span class="special">(</span><span class="identifier">self</span><span class="special">)</span></code> 1363 </p> 1364 </td> 1365<td> 1366 <p> 1367 <code class="computeroutput"><span class="identifier">__complex__</span></code> 1368 </p> 1369 </td> 1370<td> 1371 <p> 1372 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">>(</span><span class="identifier">x</span><span class="special">)</span></code> 1373 </p> 1374 </td> 1375</tr> 1376<tr> 1377<td> 1378 <p> 1379 <code class="computeroutput"><span class="identifier">str</span><span class="special">(</span><span class="identifier">self</span><span class="special">)</span></code> 1380 </p> 1381 </td> 1382<td> 1383 <p> 1384 <code class="computeroutput"><span class="identifier">__str__</span></code> 1385 </p> 1386 </td> 1387<td> 1388 <p> 1389 <code class="computeroutput"><span class="identifier">lexical_cast</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">>(</span><span class="identifier">x</span><span class="special">)</span></code> 1390 </p> 1391 </td> 1392</tr> 1393<tr> 1394<td> 1395 <p> 1396 <code class="computeroutput"><span class="identifier">repr</span><span class="special">(</span><span class="identifier">self</span><span class="special">)</span></code> 1397 </p> 1398 </td> 1399<td> 1400 <p> 1401 <code class="computeroutput"><span class="identifier">__repr__</span></code> 1402 </p> 1403 </td> 1404<td> 1405 <p> 1406 <code class="computeroutput"><span class="identifier">lexical_cast</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">>(</span><span class="identifier">x</span><span class="special">)</span></code> 1407 </p> 1408 </td> 1409</tr> 1410</tbody> 1411</table></div> 1412</div> 1413</div> 1414<div class="section"> 1415<div class="titlepage"><div><div><h3 class="title"> 1416<a name="high_level_components.boost_python_operators_hpp.class_template_other"></a><a class="link" href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.class_template_other" title="Class template other">Class 1417 template <code class="computeroutput"><span class="identifier">other</span></code></a> 1418</h3></div></div></div> 1419<p> 1420 Instances of <code class="computeroutput"><span class="identifier">other</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code> 1421 can be used in operator expressions with <a class="link" href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.object_self" title="Object self">self</a>; 1422 the result is equivalent to the same expression with a <code class="computeroutput"><span class="identifier">T</span></code> 1423 object in place of <code class="computeroutput"><span class="identifier">other</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code>. Use <code class="computeroutput"><span class="identifier">other</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code> to prevent construction of a <code class="computeroutput"><span class="identifier">T</span></code> object in case it is heavyweight, when 1424 no constructor is available, or simply for clarity. 1425 </p> 1426<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> 1427<span class="special">{</span> 1428 <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> 1429 <span class="keyword">struct</span> <span class="identifier">other</span> 1430 <span class="special">{</span> 1431 <span class="special">};</span> 1432<span class="special">}}</span> 1433</pre> 1434</div> 1435<div class="section"> 1436<div class="titlepage"><div><div><h3 class="title"> 1437<a name="high_level_components.boost_python_operators_hpp.class_template_detail_operator"></a><a class="link" href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.class_template_detail_operator" title="Class template detail::operator_">Class 1438 template <code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">operator_</span></code></a> 1439</h3></div></div></div> 1440<p> 1441 Instantiations of <code class="computeroutput"><span class="identifier">detail</span><span class="special">::</span><span class="identifier">operator_</span><span class="special"><></span></code> are used as the return type of 1442 operator expressions involving <a class="link" href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.object_self" title="Object self">self</a>. 1443 This should be considered an implementation detail and is only documented 1444 here as a way of showing how the result of self-expressions match calls 1445 to <a class="link" href="../high_level_components.html#high_level_components.boost_python_class_hpp.class_template_class_t_bases_hel.class_template_class_modifier_fu" title="Class template class_ modifier functions"><code class="computeroutput"><span class="identifier">class_</span><span class="special"><>::</span><span class="identifier">def</span><span class="special">()</span></code></a>. 1446 </p> 1447<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">detail</span> 1448<span class="special">{</span> 1449 <span class="keyword">template</span> <span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> 1450 <span class="keyword">struct</span> <span class="identifier">operator_</span> 1451 <span class="special">{</span> 1452 <span class="special">};</span> 1453<span class="special">}}}</span> 1454</pre> 1455</div> 1456<div class="section"> 1457<div class="titlepage"><div><div><h3 class="title"> 1458<a name="high_level_components.boost_python_operators_hpp.object_self"></a><a class="link" href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.object_self" title="Object self">Object 1459 <code class="computeroutput"><span class="identifier">self</span></code></a> 1460</h3></div></div></div> 1461<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> 1462<span class="special">{</span> 1463 <span class="keyword">using</span> <span class="identifier">self_ns</span><span class="special">::</span><span class="identifier">self</span><span class="special">;</span> 1464<span class="special">}}</span> 1465</pre> 1466</div> 1467<div class="section"> 1468<div class="titlepage"><div><div><h3 class="title"> 1469<a name="high_level_components.boost_python_operators_hpp.example"></a><a class="link" href="boost_python_operators_hpp.html#high_level_components.boost_python_operators_hpp.example" title="Example">Example</a> 1470</h3></div></div></div> 1471<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">python</span><span class="special">/</span><span class="identifier">module</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> 1472<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">python</span><span class="special">/</span><span class="keyword">class</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> 1473<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">python</span><span class="special">/</span><span class="identifier">operators</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> 1474<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">operators</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> 1475 1476<span class="keyword">struct</span> <span class="identifier">number</span> 1477 <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">integer_arithmetic</span><span class="special"><</span><span class="identifier">number</span><span class="special">></span> 1478<span class="special">{</span> 1479 <span class="keyword">explicit</span> <span class="identifier">number</span><span class="special">(</span><span class="keyword">long</span> <span class="identifier">x_</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">x</span><span class="special">(</span><span class="identifier">x_</span><span class="special">)</span> <span class="special">{}</span> 1480 <span class="keyword">operator</span> <span class="keyword">long</span><span class="special">()</span> <span class="keyword">const</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">x</span><span class="special">;</span> <span class="special">}</span> 1481 1482 <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> 1483 <span class="identifier">number</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">+=(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span> 1484 <span class="special">{</span> <span class="identifier">x</span> <span class="special">+=</span> <span class="identifier">rhs</span><span class="special">;</span> <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span> <span class="special">}</span> 1485 1486 <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> 1487 <span class="identifier">number</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">-=(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span> 1488 <span class="special">{</span> <span class="identifier">x</span> <span class="special">-=</span> <span class="identifier">rhs</span><span class="special">;</span> <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span> <span class="special">}</span> 1489 1490 <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> 1491 <span class="identifier">number</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">*=(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span> 1492 <span class="special">{</span> <span class="identifier">x</span> <span class="special">*=</span> <span class="identifier">rhs</span><span class="special">;</span> <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span> <span class="special">}</span> 1493 1494 <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> 1495 <span class="identifier">number</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">/=(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span> 1496 <span class="special">{</span> <span class="identifier">x</span> <span class="special">/=</span> <span class="identifier">rhs</span><span class="special">;</span> <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span> <span class="special">}</span> 1497 1498 <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> 1499 <span class="identifier">number</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">%=(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">)</span> 1500 <span class="special">{</span> <span class="identifier">x</span> <span class="special">%=</span> <span class="identifier">rhs</span><span class="special">;</span> <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span> <span class="special">}</span> 1501 1502 <span class="keyword">long</span> <span class="identifier">x</span><span class="special">;</span> 1503<span class="special">};</span> 1504 1505<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">python</span><span class="special">;</span> 1506<span class="identifier">BOOST_PYTHON_MODULE</span><span class="special">(</span><span class="identifier">demo</span><span class="special">)</span> 1507<span class="special">{</span> 1508 <span class="identifier">class_</span><span class="special"><</span><span class="identifier">number</span><span class="special">>(</span><span class="string">"number"</span><span class="special">,</span> <span class="identifier">init</span><span class="special"><</span><span class="keyword">long</span><span class="special">>())</span> 1509 <span class="comment">// interoperate with self</span> 1510 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">self</span> <span class="special">+=</span> <span class="identifier">self</span><span class="special">)</span> 1511 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">self</span> <span class="special">+</span> <span class="identifier">self</span><span class="special">)</span> 1512 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">self</span> <span class="special">-=</span> <span class="identifier">self</span><span class="special">)</span> 1513 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">self</span> <span class="special">-</span> <span class="identifier">self</span><span class="special">)</span> 1514 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">self</span> <span class="special">*=</span> <span class="identifier">self</span><span class="special">)</span> 1515 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">self</span> <span class="special">*</span> <span class="identifier">self</span><span class="special">)</span> 1516 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">self</span> <span class="special">/=</span> <span class="identifier">self</span><span class="special">)</span> 1517 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">self</span> <span class="special">/</span> <span class="identifier">self</span><span class="special">)</span> 1518 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">self</span> <span class="special">%=</span> <span class="identifier">self</span><span class="special">)</span> 1519 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">self</span> <span class="special">%</span> <span class="identifier">self</span><span class="special">)</span> 1520 1521 <span class="comment">// Convert to Python int</span> 1522 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">int_</span><span class="special">(</span><span class="identifier">self</span><span class="special">))</span> 1523 1524 <span class="comment">// interoperate with long</span> 1525 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">self</span> <span class="special">+=</span> <span class="keyword">long</span><span class="special">())</span> 1526 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">self</span> <span class="special">+</span> <span class="keyword">long</span><span class="special">())</span> 1527 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="keyword">long</span><span class="special">()</span> <span class="special">+</span> <span class="identifier">self</span><span class="special">)</span> 1528 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">self</span> <span class="special">-=</span> <span class="keyword">long</span><span class="special">())</span> 1529 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">self</span> <span class="special">-</span> <span class="keyword">long</span><span class="special">())</span> 1530 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="keyword">long</span><span class="special">()</span> <span class="special">-</span> <span class="identifier">self</span><span class="special">)</span> 1531 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">self</span> <span class="special">*=</span> <span class="keyword">long</span><span class="special">())</span> 1532 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">self</span> <span class="special">*</span> <span class="keyword">long</span><span class="special">())</span> 1533 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="keyword">long</span><span class="special">()</span> <span class="special">*</span> <span class="identifier">self</span><span class="special">)</span> 1534 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">self</span> <span class="special">/=</span> <span class="keyword">long</span><span class="special">())</span> 1535 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">self</span> <span class="special">/</span> <span class="keyword">long</span><span class="special">())</span> 1536 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="keyword">long</span><span class="special">()</span> <span class="special">/</span> <span class="identifier">self</span><span class="special">)</span> 1537 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">self</span> <span class="special">%=</span> <span class="keyword">long</span><span class="special">())</span> 1538 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="identifier">self</span> <span class="special">%</span> <span class="keyword">long</span><span class="special">())</span> 1539 <span class="special">.</span><span class="identifier">def</span><span class="special">(</span><span class="keyword">long</span><span class="special">()</span> <span class="special">%</span> <span class="identifier">self</span><span class="special">)</span> 1540 <span class="special">;</span> 1541<span class="special">}</span> 1542</pre> 1543</div> 1544</div> 1545<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 1546<td align="left"></td> 1547<td align="right"><div class="copyright-footer">Copyright © 2002-2005, 2015 David Abrahams, Stefan Seefeld<p> 1548 Distributed under the Boost Software License, Version 1.0. (See accompanying 1549 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> 1550 </p> 1551</div></td> 1552</tr></table> 1553<hr> 1554<div class="spirit-nav"> 1555<a accesskey="p" href="boost_python_module_hpp.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../high_level_components.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_scope_hpp.html"><img src="../../images/next.png" alt="Next"></a> 1556</div> 1557</body> 1558</html> 1559