Imported Upstream version 1.63.0
[platform/upstream/boost.git] / libs / geometry / doc / doxy / doxygen_output / html_by_doxygen / classboost_1_1geometry_1_1concepts_1_1_linestring.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
5 <title>Boost.Geometry (aka GGL, Generic Geometry Library)</title>
6 <link href="doxygen.css" rel="stylesheet" type="text/css">
7 <link href="tabs.css" rel="stylesheet" type="text/css">
8 </head>
9 <table cellpadding="2" width="100%">
10 <tbody>
11 <tr>
12 <td valign="top">
13 <img alt="Boost.Geometry" src="images/ggl-logo-big.png" height="80" width="200">
14 &nbsp;&nbsp;
15 </td>
16 <td valign="top" align="right">
17 <a href="http://www.boost.org">
18 <img alt="Boost C++ Libraries" src="images/accepted_by_boost.png" height="80" width="230" border="0">
19 </a>
20 </td>
21 </tr>
22 </tbody>
23 </table>
24 <!-- Generated by Doxygen 1.8.6 -->
25   <div id="navrow1" class="tabs">
26     <ul class="tablist">
27       <li><a href="index.html"><span>Main&#160;Page</span></a></li>
28       <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
29       <li><a href="modules.html"><span>Modules</span></a></li>
30       <li><a href="namespaces.html"><span>Namespaces</span></a></li>
31       <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
32       <li><a href="files.html"><span>Files</span></a></li>
33       <li><a href="examples.html"><span>Examples</span></a></li>
34     </ul>
35   </div>
36   <div id="navrow2" class="tabs2">
37     <ul class="tablist">
38       <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
39       <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
40       <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
41       <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
42     </ul>
43   </div>
44 <div id="nav-path" class="navpath">
45   <ul>
46 <li class="navelem"><a class="el" href="namespaceboost.html">boost</a></li><li class="navelem"><a class="el" href="namespaceboost_1_1geometry.html">geometry</a></li><li class="navelem"><a class="el" href="namespaceboost_1_1geometry_1_1concepts.html">concepts</a></li><li class="navelem"><a class="el" href="classboost_1_1geometry_1_1concepts_1_1_linestring.html">Linestring</a></li>  </ul>
47 </div>
48 </div><!-- top -->
49 <div class="header">
50   <div class="headertitle">
51 <div class="title">boost::geometry::concepts::Linestring&lt; Geometry &gt; Class Template Reference<div class="ingroups"><a class="el" href="group__concepts.html">geometry concepts: defines and checks concepts for geometries</a></div></div>  </div>
52 </div><!--header-->
53 <div class="contents">
54
55 <p><a class="el" href="classboost_1_1geometry_1_1concepts_1_1_linestring.html" title="Linestring concept. ">Linestring</a> concept.  
56  <a href="classboost_1_1geometry_1_1concepts_1_1_linestring.html#details">More...</a></p>
57 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
58 <div class="textblock"><h3>template&lt;typename Geometry&gt;<br/>
59 class boost::geometry::concepts::Linestring&lt; Geometry &gt;</h3>
60
61 <p><a class="el" href="classboost_1_1geometry_1_1concepts_1_1_linestring.html" title="Linestring concept. ">Linestring</a> concept. </p>
62 <dl class="section user"><dt>Formal definition:</dt><dd>The linestring concept is defined as following:<ul>
63 <li>there must be a specialization of <a class="el" href="structboost_1_1geometry_1_1traits_1_1tag.html" title="Traits class to attach a tag to a geometry. ">traits::tag</a> defining <a class="el" href="structboost_1_1geometry_1_1linestring__tag.html" title="OGC Linestring identifying tag. ">linestring_tag</a> as type</li>
64 <li>it must behave like a Boost.Range</li>
65 <li>it must implement a std::back_insert_iterator<ul>
66 <li>either by implementing push_back</li>
67 <li>or by specializing std::back_insert_iterator</li>
68 </ul>
69 </li>
70 </ul>
71 </dd></dl>
72 <dl class="section note"><dt>Note</dt><dd>to fulfill the concepts, no traits class has to be specialized to define the point type.</dd></dl>
73 <dl class="section user"><dt>Example:</dt><dd></dd></dl>
74 <p>A custom linestring, defining the necessary specializations to fulfill to the concept.</p>
75 <p>Suppose that the following linestring is defined:  <div class="fragment"><div class="line"><span class="keyword">struct </span>custom_linestring1 : std::deque&lt;P&gt;</div>
76 <div class="line">{</div>
77 <div class="line">    <span class="keywordtype">int</span> id;</div>
78 <div class="line">};</div>
79 </div><!-- fragment --></p>
80 <p>It can then be adapted to the concept as following:  <div class="fragment"><div class="line"><span class="comment">// adapt custom_linestring1</span></div>
81 <div class="line"><span class="keyword">namespace </span>boost { <span class="keyword">namespace </span>geometry { <span class="keyword">namespace </span>traits</div>
82 <div class="line">{</div>
83 <div class="line">    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> P&gt;</div>
84 <div class="line">    <span class="keyword">struct </span>tag&lt; custom_linestring1&lt;P&gt; &gt; { <span class="keyword">typedef</span> linestring_tag type; };</div>
85 <div class="line">}}} <span class="comment">// namespace boost::geometry::traits</span></div>
86 </div><!-- fragment --></p>
87 <dl class="section note"><dt>Note</dt><dd><ul>
88 <li>There is also the registration macro BOOST_GEOMETRY_REGISTER_LINESTRING</li>
89 <li>For registration of std::vector&lt;P&gt; (and deque, and list) it is enough to include the header-file geometries/adapted/std_as_linestring.hpp. That registers a vector as a linestring (so it cannot be registered as a linear ring then, in the same source code). </li>
90 </ul>
91 </dd></dl>
92 </div></div><!-- contents -->
93 <hr size="1">
94 <table width="100%">
95 <tbody>
96 <tr>
97 <td align="left"><small>
98 <p>April 2, 2011</p>
99 </small></td>
100 <td align="right">
101 <small>
102 Copyright &copy; 2007-2011 Barend Gehrels, Amsterdam, the Netherlands<br>
103 Copyright &copy; 2008-2011 Bruno Lalande, Paris, France<br>
104 Copyright &copy; 2009-2010 Mateusz Loskot, London, UK<br>
105 </small>
106 </td>
107 </tr>
108 </tbody>
109 </table>
110 <address style="text-align: right;"><small>
111 Documentation is generated by&nbsp;<a href="http://www.doxygen.org/index.html">Doxygen</a>
112 </small></address>
113 </body>
114 </html>