Imported Upstream version 1.64.0
[platform/upstream/boost.git] / libs / geometry / doc / html / geometry / reference / core / ring_type.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>ring_type</title>
5 <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Geometry">
8 <link rel="up" href="../core.html" title="Core Metafunctions">
9 <link rel="prev" href="radian.html" title="radian">
10 <link rel="next" href="tag.html" title="tag">
11 </head>
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table cellpadding="2" width="100%"><tr>
14 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
15 <td align="center"><a href="../../../../../../../index.html">Home</a></td>
16 <td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
17 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19 <td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
20 </tr></table>
21 <hr>
22 <div class="spirit-nav">
23 <a accesskey="p" href="radian.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../core.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tag.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
24 </div>
25 <div class="section">
26 <div class="titlepage"><div><div><h4 class="title">
27 <a name="geometry.reference.core.ring_type"></a><a class="link" href="ring_type.html" title="ring_type">ring_type</a>
28 </h4></div></div></div>
29 <p>
30           <a class="indexterm" name="idp109561968"></a>
31 Metafunction defining <span class="bold"><strong>type</strong></span> as the ring_type
32           of the specified geometry type.
33         </p>
34 <h6>
35 <a name="geometry.reference.core.ring_type.h0"></a>
36           <span class="phrase"><a name="geometry.reference.core.ring_type.description"></a></span><a class="link" href="ring_type.html#geometry.reference.core.ring_type.description">Description</a>
37         </h6>
38 <p>
39           A polygon contains one exterior ring and zero or more interior rings (holes).
40           This metafunction retrieves the type of the rings. Exterior ring and each
41           of the interior rings all have the same ring_type.
42         </p>
43 <h6>
44 <a name="geometry.reference.core.ring_type.h1"></a>
45           <span class="phrase"><a name="geometry.reference.core.ring_type.synopsis"></a></span><a class="link" href="ring_type.html#geometry.reference.core.ring_type.synopsis">Synopsis</a>
46         </h6>
47 <p>
48 </p>
49 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">&gt;</span>
50 <span class="keyword">struct</span> <span class="identifier">ring_type</span>
51 <span class="special">{</span>
52   <span class="comment">// ...</span>
53 <span class="special">};</span>
54 </pre>
55 <p>
56         </p>
57 <h6>
58 <a name="geometry.reference.core.ring_type.h2"></a>
59           <span class="phrase"><a name="geometry.reference.core.ring_type.template_parameter_s_"></a></span><a class="link" href="ring_type.html#geometry.reference.core.ring_type.template_parameter_s_">Template
60           parameter(s)</a>
61         </h6>
62 <div class="informaltable"><table class="table">
63 <colgroup>
64 <col>
65 <col>
66 </colgroup>
67 <thead><tr>
68 <th>
69                   <p>
70                     Parameter
71                   </p>
72                 </th>
73 <th>
74                   <p>
75                     Description
76                   </p>
77                 </th>
78 </tr></thead>
79 <tbody><tr>
80 <td>
81                   <p>
82                     typename Geometry
83                   </p>
84                 </td>
85 <td>
86                   <p>
87                     A type fullfilling the Ring, Polygon or MultiPolygon concept.
88                   </p>
89                 </td>
90 </tr></tbody>
91 </table></div>
92 <h6>
93 <a name="geometry.reference.core.ring_type.h3"></a>
94           <span class="phrase"><a name="geometry.reference.core.ring_type.header"></a></span><a class="link" href="ring_type.html#geometry.reference.core.ring_type.header">Header</a>
95         </h6>
96 <p>
97           Either
98         </p>
99 <p>
100           <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
101         </p>
102 <p>
103           Or
104         </p>
105 <p>
106           <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">ring_type</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
107         </p>
108 <h6>
109 <a name="geometry.reference.core.ring_type.h4"></a>
110           <span class="phrase"><a name="geometry.reference.core.ring_type.complexity"></a></span><a class="link" href="ring_type.html#geometry.reference.core.ring_type.complexity">Complexity</a>
111         </h6>
112 <p>
113           Compile time
114         </p>
115 <h6>
116 <a name="geometry.reference.core.ring_type.h5"></a>
117           <span class="phrase"><a name="geometry.reference.core.ring_type.example"></a></span><a class="link" href="ring_type.html#geometry.reference.core.ring_type.example">Example</a>
118         </h6>
119 <p>
120           Shows how to use the ring_type metafunction, as well as interior_type
121         </p>
122 <p>
123 </p>
124 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
125 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">typeinfo</span><span class="special">&gt;</span>
126
127 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
128 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
129 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
130
131 <span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
132 <span class="special">{</span>
133     <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">point</span><span class="special">;</span>
134     <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span> <span class="identifier">polygon</span><span class="special">;</span>
135
136     <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">ring_type</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">ring_type</span><span class="special">;</span>
137     <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">interior_type</span><span class="special">&lt;</span><span class="identifier">polygon</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">int_type</span><span class="special">;</span>
138
139     <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="keyword">typeid</span><span class="special">(</span><span class="identifier">ring_type</span><span class="special">).</span><span class="identifier">name</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
140     <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="keyword">typeid</span><span class="special">(</span><span class="identifier">int_type</span><span class="special">).</span><span class="identifier">name</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
141
142     <span class="comment">// So int_type defines a collection of rings,</span>
143     <span class="comment">// which is a Boost.Range compatible range</span>
144     <span class="comment">// The type of an element of the collection is the very same ring type again.</span>
145     <span class="comment">// We show that.</span>
146     <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">range_value</span><span class="special">&lt;</span><span class="identifier">int_type</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">int_ring_type</span><span class="special">;</span>
147
148     <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span>
149         <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">boolalpha</span>
150         <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_same</span><span class="special">&lt;</span><span class="identifier">ring_type</span><span class="special">,</span> <span class="identifier">int_ring_type</span><span class="special">&gt;::</span><span class="identifier">value</span>
151         <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
152
153     <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
154 <span class="special">}</span>
155 </pre>
156 <p>
157         </p>
158 <p>
159           Output (using gcc):
160         </p>
161 <pre class="programlisting">N5boost8geometry5model4ringINS1_2d28point_xyIdNS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEE
162 St6vectorIN5boost8geometry5model4ringINS2_2d28point_xyIdNS1_2cs9cartesianEEELb1ELb1ES_SaEESaIS9_EE
163 true
164 </pre>
165 </div>
166 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
167 <td align="left"></td>
168 <td align="right"><div class="copyright-footer">Copyright &#169; 2009-2017 Barend
169       Gehrels, Bruno Lalande, Mateusz Loskot, Adam Wulkiewicz, Oracle and/or its
170       affiliates<p>
171         Distributed under the Boost Software License, Version 1.0. (See accompanying
172         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>)
173       </p>
174 </div></td>
175 </tr></table>
176 <hr>
177 <div class="spirit-nav">
178 <a accesskey="p" href="radian.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../core.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tag.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
179 </div>
180 </body>
181 </html>