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 1. 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">
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>
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>
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>
30 <a class="indexterm" name="idm46186986328896"></a>
31 Metafunction defining <span class="bold"><strong>type</strong></span> as the ring_type
32 of the specified geometry type.
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>
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.
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>
49 <pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">></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>
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
62 <div class="informaltable"><table class="table">
87 A type fullfilling the Ring, Polygon or MultiPolygon concept.
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>
100 <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</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">></span></code>
106 <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</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">></span></code>
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>
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>
120 Shows how to use the ring_type metafunction, as well as interior_type
124 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
125 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">typeinfo</span><span class="special">></span>
127 <span class="preprocessor">#include</span> <span class="special"><</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">></span>
128 <span class="preprocessor">#include</span> <span class="special"><</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">></span>
129 <span class="preprocessor">#include</span> <span class="special"><</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">></span>
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"><</span><span class="keyword">double</span><span class="special">></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"><</span><span class="identifier">point</span><span class="special">></span> <span class="identifier">polygon</span><span class="special">;</span>
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"><</span><span class="identifier">polygon</span><span class="special">>::</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"><</span><span class="identifier">polygon</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">int_type</span><span class="special">;</span>
139 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</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"><<</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"><<</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"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
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"><</span><span class="identifier">int_type</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">int_ring_type</span><span class="special">;</span>
148 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span>
149 <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">boolalpha</span>
150 <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_same</span><span class="special"><</span><span class="identifier">ring_type</span><span class="special">,</span> <span class="identifier">int_ring_type</span><span class="special">>::</span><span class="identifier">value</span>
151 <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
153 <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
154 <span class="special">}</span>
161 <pre class="programlisting">N5boost8geometry5model4ringINS1_2d28point_xyIdNS0_2cs9cartesianEEELb1ELb1ESt6vectorSaEE
162 St6vectorIN5boost8geometry5model4ringINS2_2d28point_xyIdNS1_2cs9cartesianEEELb1ELb1ES_SaEESaIS9_EE
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 © 2009-2019 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
169 Wulkiewicz, Oracle and/or its affiliates<p>
170 Distributed under the Boost Software License, Version 1.0. (See accompanying
171 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>)
176 <div class="spirit-nav">
177 <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>