1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
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">
9 <table cellpadding="2" width="100%">
13 <img alt="Boost.Geometry" src="images/ggl-logo-big.png" height="80" width="200">
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">
24 <!-- Generated by Doxygen 1.8.6 -->
25 <div id="navrow1" class="tabs">
27 <li><a href="index.html"><span>Main Page</span></a></li>
28 <li><a href="pages.html"><span>Related 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>
36 <div id="navrow2" class="tabs2">
38 <li><a href="annotated.html"><span>Class List</span></a></li>
39 <li><a href="classes.html"><span>Class Index</span></a></li>
40 <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
41 <li><a href="functions.html"><span>Class Members</span></a></li>
44 <div id="nav-path" class="navpath">
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>
50 <div class="headertitle">
51 <div class="title">boost::geometry::concepts::Linestring< Geometry > 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>
53 <div class="contents">
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<typename Geometry><br/>
59 class boost::geometry::concepts::Linestring< Geometry ></h3>
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>
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<P></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> <<span class="keyword">typename</span> P></div>
84 <div class="line"> <span class="keyword">struct </span>tag< custom_linestring1<P> > { <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<P> (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>
92 </div></div><!-- contents -->
97 <td align="left"><small>
102 Copyright © 2007-2011 Barend Gehrels, Amsterdam, the Netherlands<br>
103 Copyright © 2008-2011 Bruno Lalande, Paris, France<br>
104 Copyright © 2009-2010 Mateusz Loskot, London, UK<br>
110 <address style="text-align: right;"><small>
111 Documentation is generated by <a href="http://www.doxygen.org/index.html">Doxygen</a>