Imported Upstream version 1.64.0
[platform/upstream/boost.git] / doc / html / boost / date_time / period.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
5 <title>Class template period</title>
6 <link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
7 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
8 <link rel="home" href="../../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
9 <link rel="up" href="../../date_time/doxy.html#header.boost.date_time.period_hpp" title="Header &lt;boost/date_time/period.hpp&gt;">
10 <link rel="prev" href="ymd_order_spec.html" title="Type ymd_order_spec">
11 <link rel="next" href="period_formatter.html" title="Class template period_formatter">
12 </head>
13 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table cellpadding="2" width="100%"><tr>
15 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
16 <td align="center"><a href="../../../../index.html">Home</a></td>
17 <td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
18 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
19 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
20 <td align="center"><a href="../../../../more/index.htm">More</a></td>
21 </tr></table>
22 <hr>
23 <div class="spirit-nav">
24 <a accesskey="p" href="ymd_order_spec.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../date_time/doxy.html#header.boost.date_time.period_hpp"><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="period_formatter.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
25 </div>
26 <div class="refentry">
27 <a name="boost.date_time.period"></a><div class="titlepage"></div>
28 <div class="refnamediv">
29 <h2><span class="refentrytitle">Class template period</span></h2>
30 <p>boost::date_time::period &#8212; Provides generalized period type useful in date-time systems. </p>
31 </div>
32 <h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
33 <div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../date_time/doxy.html#header.boost.date_time.period_hpp" title="Header &lt;boost/date_time/period.hpp&gt;">boost/date_time/period.hpp</a>&gt;
34
35 </span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> point_rep<span class="special">,</span> <span class="keyword">typename</span> duration_rep<span class="special">&gt;</span> 
36 <span class="keyword">class</span> <a class="link" href="period.html" title="Class template period">period</a> <span class="special">:</span> <span class="keyword">private</span> boost::less_than_comparable&lt; period&lt; point_rep, duration_rep &gt;, boost::equality_comparable&lt; period&lt; point_rep, duration_rep &gt; &gt; &gt;
37 <span class="special">{</span>
38 <span class="keyword">public</span><span class="special">:</span>
39   <span class="comment">// types</span>
40   <span class="keyword">typedef</span> <span class="identifier">point_rep</span>    <a name="boost.date_time.period.point_type"></a><span class="identifier">point_type</span><span class="special">;</span>   
41   <span class="keyword">typedef</span> <span class="identifier">duration_rep</span> <a name="boost.date_time.period.duration_type"></a><span class="identifier">duration_type</span><span class="special">;</span>
42
43   <span class="comment">// <a class="link" href="period.html#boost.date_time.periodconstruct-copy-destruct">construct/copy/destruct</a></span>
44   <a class="link" href="period.html#idp496718320-bb"><span class="identifier">period</span></a><span class="special">(</span><span class="identifier">point_rep</span><span class="special">,</span> <span class="identifier">point_rep</span><span class="special">)</span><span class="special">;</span>
45   <a class="link" href="period.html#idp496720752-bb"><span class="identifier">period</span></a><span class="special">(</span><span class="identifier">point_rep</span><span class="special">,</span> <span class="identifier">duration_rep</span><span class="special">)</span><span class="special">;</span>
46
47   <span class="comment">// <a class="link" href="period.html#idp496675984-bb">public member functions</a></span>
48   <span class="identifier">point_rep</span> <a class="link" href="period.html#idp496676544-bb"><span class="identifier">begin</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
49   <span class="identifier">point_rep</span> <a class="link" href="period.html#idp496677984-bb"><span class="identifier">end</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
50   <span class="identifier">point_rep</span> <a class="link" href="period.html#idp496679408-bb"><span class="identifier">last</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
51   <span class="identifier">duration_rep</span> <a class="link" href="period.html#idp496680832-bb"><span class="identifier">length</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
52   <span class="keyword">bool</span> <a class="link" href="period.html#idp496682256-bb"><span class="identifier">is_null</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
53   <span class="keyword">bool</span> <a class="link" href="period.html#idp496683696-bb"><span class="keyword">operator</span><span class="special">==</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="period.html" title="Class template period">period</a> <span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
54   <span class="keyword">bool</span> <a class="link" href="period.html#idp496686240-bb"><span class="keyword">operator</span><span class="special">&lt;</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="period.html" title="Class template period">period</a> <span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
55   <span class="keyword">void</span> <a class="link" href="period.html#idp496688816-bb"><span class="identifier">shift</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">duration_rep</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
56   <span class="keyword">void</span> <a class="link" href="period.html#idp496690672-bb"><span class="identifier">expand</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">duration_rep</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
57   <span class="keyword">bool</span> <a class="link" href="period.html#idp496694512-bb"><span class="identifier">contains</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">point_rep</span> <span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
58   <span class="keyword">bool</span> <a class="link" href="period.html#idp496696672-bb"><span class="identifier">contains</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="period.html" title="Class template period">period</a> <span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
59   <span class="keyword">bool</span> <a class="link" href="period.html#idp496699264-bb"><span class="identifier">intersects</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="period.html" title="Class template period">period</a> <span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
60   <span class="keyword">bool</span> <a class="link" href="period.html#idp496701840-bb"><span class="identifier">is_adjacent</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="period.html" title="Class template period">period</a> <span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
61   <span class="keyword">bool</span> <a class="link" href="period.html#idp496704416-bb"><span class="identifier">is_before</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">point_rep</span> <span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
62   <span class="keyword">bool</span> <a class="link" href="period.html#idp496706560-bb"><span class="identifier">is_after</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">point_rep</span> <span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
63   <a class="link" href="period.html" title="Class template period">period</a> <a class="link" href="period.html#idp496708688-bb"><span class="identifier">intersection</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="period.html" title="Class template period">period</a> <span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
64   <a class="link" href="period.html" title="Class template period">period</a> <a class="link" href="period.html#idp496711408-bb"><span class="identifier">merge</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="period.html" title="Class template period">period</a> <span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
65   <a class="link" href="period.html" title="Class template period">period</a> <a class="link" href="period.html#idp496714128-bb"><span class="identifier">span</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="period.html" title="Class template period">period</a> <span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
66 <span class="special">}</span><span class="special">;</span></pre></div>
67 <div class="refsect1">
68 <a name="idp226209472"></a><h2>Description</h2>
69 <p>This template uses a class to represent a time point within the period and another class to represent a duration. As a result, this class is not appropriate for use when the number and duration representation are the same (eg: in the regular number domain).</p>
70 <p>A period can be specified by providing either the begining point and a duration or the begining point and the end point( end is NOT part of the period but 1 unit past it. A period will be "invalid" if either end_point &lt;= begin_point or the given duration is &lt;= 0. Any valid period will return false for is_null().</p>
71 <p>Zero length periods are also considered invalid. Zero length periods are periods where the begining and end points are the same, or, the given duration is zero. For a zero length period, the last point will be one unit less than the begining point.</p>
72 <p>In the case that the begin and last are the same, the period has a length of one unit.</p>
73 <p>The best way to handle periods is usually to provide a begining point and a duration. So, day1 + 7 days is a week period which includes all of the first day and 6 more days (eg: Sun to Sat). </p>
74 <div class="refsect2">
75 <a name="idp226212464"></a><h3>
76 <a name="boost.date_time.periodconstruct-copy-destruct"></a><code class="computeroutput">period</code> 
77         public
78        construct/copy/destruct</h3>
79 <div class="orderedlist"><ol class="orderedlist" type="1">
80 <li class="listitem">
81 <pre class="literallayout"><a name="idp496718320-bb"></a><span class="identifier">period</span><span class="special">(</span><span class="identifier">point_rep</span> first_point<span class="special">,</span> <span class="identifier">point_rep</span> end_point<span class="special">)</span><span class="special">;</span></pre>create a period from begin to last eg: [begin,end) <p>If end &lt;= begin then the period will be invalid </p>
82 </li>
83 <li class="listitem">
84 <pre class="literallayout"><a name="idp496720752-bb"></a><span class="identifier">period</span><span class="special">(</span><span class="identifier">point_rep</span> first_point<span class="special">,</span> <span class="identifier">duration_rep</span> len<span class="special">)</span><span class="special">;</span></pre>create a period as [begin, begin+len) <p>If len is &lt;= 0 then the period will be invalid </p>
85 </li>
86 </ol></div>
87 </div>
88 <div class="refsect2">
89 <a name="idp226227360"></a><h3>
90 <a name="idp496675984-bb"></a><code class="computeroutput">period</code> public member functions</h3>
91 <div class="orderedlist"><ol class="orderedlist" type="1">
92 <li class="listitem">
93 <pre class="literallayout"><span class="identifier">point_rep</span> <a name="idp496676544-bb"></a><span class="identifier">begin</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>Return the first element in the period. </li>
94 <li class="listitem">
95 <pre class="literallayout"><span class="identifier">point_rep</span> <a name="idp496677984-bb"></a><span class="identifier">end</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>Return one past the last element. </li>
96 <li class="listitem">
97 <pre class="literallayout"><span class="identifier">point_rep</span> <a name="idp496679408-bb"></a><span class="identifier">last</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>Return the last item in the period. </li>
98 <li class="listitem">
99 <pre class="literallayout"><span class="identifier">duration_rep</span> <a name="idp496680832-bb"></a><span class="identifier">length</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>Return the length of the period. </li>
100 <li class="listitem">
101 <pre class="literallayout"><span class="keyword">bool</span> <a name="idp496682256-bb"></a><span class="identifier">is_null</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>True if period is ill formed (length is zero or less) </li>
102 <li class="listitem">
103 <pre class="literallayout"><span class="keyword">bool</span> <a name="idp496683696-bb"></a><span class="keyword">operator</span><span class="special">==</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="period.html" title="Class template period">period</a> <span class="special">&amp;</span> rhs<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>Equality operator. </li>
104 <li class="listitem">
105 <pre class="literallayout"><span class="keyword">bool</span> <a name="idp496686240-bb"></a><span class="keyword">operator</span><span class="special">&lt;</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="period.html" title="Class template period">period</a> <span class="special">&amp;</span> rhs<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>Strict as defined by rhs.last &lt;= lhs.last. </li>
106 <li class="listitem">
107 <pre class="literallayout"><span class="keyword">void</span> <a name="idp496688816-bb"></a><span class="identifier">shift</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">duration_rep</span> <span class="special">&amp;</span> d<span class="special">)</span><span class="special">;</span></pre>Shift the start and end by the specified amount. </li>
108 <li class="listitem">
109 <pre class="literallayout"><span class="keyword">void</span> <a name="idp496690672-bb"></a><span class="identifier">expand</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">duration_rep</span> <span class="special">&amp;</span> d<span class="special">)</span><span class="special">;</span></pre>
110 <p>Expands the size of the period by the duration on both ends.</p>
111 <p>So before expand </p>
112 <pre class="programlisting">        <span class="special">[</span><span class="special">--</span><span class="special">--</span><span class="special">--</span><span class="special">-</span><span class="special">]</span>
113 <span class="special">^</span>   <span class="special">^</span>   <span class="special">^</span>   <span class="special">^</span>   <span class="special">^</span>   <span class="special">^</span>  <span class="special">^</span>
114 <span class="number">1</span>   <span class="number">2</span>   <span class="number">3</span>   <span class="number">4</span>   <span class="number">5</span>   <span class="number">6</span>  <span class="number">7</span>
115 </pre>
116 <p> After expand(2) </p>
117 <pre class="programlisting"><span class="special">[</span><span class="special">--</span><span class="special">--</span><span class="special">--</span><span class="special">--</span><span class="special">--</span><span class="special">--</span><span class="special">--</span><span class="special">--</span><span class="special">--</span><span class="special">--</span><span class="special">--</span><span class="special">]</span>
118 <span class="special">^</span>   <span class="special">^</span>   <span class="special">^</span>   <span class="special">^</span>   <span class="special">^</span>   <span class="special">^</span>  <span class="special">^</span>
119 <span class="number">1</span>   <span class="number">2</span>   <span class="number">3</span>   <span class="number">4</span>   <span class="number">5</span>   <span class="number">6</span>  <span class="number">7</span>
120 </pre>
121 <p> </p>
122 </li>
123 <li class="listitem">
124 <pre class="literallayout"><span class="keyword">bool</span> <a name="idp496694512-bb"></a><span class="identifier">contains</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">point_rep</span> <span class="special">&amp;</span> point<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>True if the point is inside the period, zero length periods contain no points. </li>
125 <li class="listitem">
126 <pre class="literallayout"><span class="keyword">bool</span> <a name="idp496696672-bb"></a><span class="identifier">contains</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="period.html" title="Class template period">period</a> <span class="special">&amp;</span> other<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>True if this period fully contains (or equals) the other period. </li>
127 <li class="listitem">
128 <pre class="literallayout"><span class="keyword">bool</span> <a name="idp496699264-bb"></a><span class="identifier">intersects</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="period.html" title="Class template period">period</a> <span class="special">&amp;</span> other<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>True if the periods overlap in any way. </li>
129 <li class="listitem">
130 <pre class="literallayout"><span class="keyword">bool</span> <a name="idp496701840-bb"></a><span class="identifier">is_adjacent</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="period.html" title="Class template period">period</a> <span class="special">&amp;</span> other<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>True if periods are next to each other without a gap. </li>
131 <li class="listitem">
132 <pre class="literallayout"><span class="keyword">bool</span> <a name="idp496704416-bb"></a><span class="identifier">is_before</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">point_rep</span> <span class="special">&amp;</span> point<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>True if all of the period is prior to the passed point or end &lt;= t. </li>
133 <li class="listitem">
134 <pre class="literallayout"><span class="keyword">bool</span> <a name="idp496706560-bb"></a><span class="identifier">is_after</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">point_rep</span> <span class="special">&amp;</span> point<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>True if all of the period is prior or t &lt; start. </li>
135 <li class="listitem">
136 <pre class="literallayout"><a class="link" href="period.html" title="Class template period">period</a> <a name="idp496708688-bb"></a><span class="identifier">intersection</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="period.html" title="Class template period">period</a> <span class="special">&amp;</span> other<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>Returns the period of intersection or invalid range no intersection. </li>
137 <li class="listitem">
138 <pre class="literallayout"><a class="link" href="period.html" title="Class template period">period</a> <a name="idp496711408-bb"></a><span class="identifier">merge</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="period.html" title="Class template period">period</a> <span class="special">&amp;</span> other<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>Returns the union of intersecting periods &#8211; or null period. </li>
139 <li class="listitem">
140 <pre class="literallayout"><a class="link" href="period.html" title="Class template period">period</a> <a name="idp496714128-bb"></a><span class="identifier">span</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="period.html" title="Class template period">period</a> <span class="special">&amp;</span> other<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>Combine two periods with earliest start and latest end. <p>Combines two periods and any gap between them such that start = min(p1.start, p2.start) end = max(p1.end , p2.end) </p>
141 <pre class="programlisting">       <span class="special">[</span><span class="special">--</span><span class="special">-</span><span class="identifier">p1</span><span class="special">--</span><span class="special">-</span><span class="special">)</span>
142                       <span class="special">[</span><span class="special">--</span><span class="special">-</span><span class="identifier">p2</span><span class="special">--</span><span class="special">-</span><span class="special">)</span>
143 <span class="identifier">result</span><span class="special">:</span>
144        <span class="special">[</span><span class="special">--</span><span class="special">--</span><span class="special">--</span><span class="special">--</span><span class="special">--</span><span class="special">-</span><span class="identifier">p3</span><span class="special">--</span><span class="special">--</span><span class="special">--</span><span class="special">--</span><span class="special">--</span><span class="special">)</span> 
145 </pre>
146 <p> </p>
147 </li>
148 </ol></div>
149 </div>
150 </div>
151 </div>
152 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
153 <td align="left"></td>
154 <td align="right"><div class="copyright-footer">Copyright &#169; 2001-2005 CrystalClear Software, Inc<p>Subject to the Boost Software License, Version 1.0. (See accompanying file
155     <code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</p>
156 </div></td>
157 </tr></table>
158 <hr>
159 <div class="spirit-nav">
160 <a accesskey="p" href="ymd_order_spec.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../date_time/doxy.html#header.boost.date_time.period_hpp"><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="period_formatter.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
161 </div>
162 </body>
163 </html>