StdAir Logo  1.00.8
C++ Standard Airline IT Object Library
PeriodStruct.cpp
Go to the documentation of this file.
1 // //////////////////////////////////////////////////////////////////////
2 // Import section
3 // //////////////////////////////////////////////////////////////////////
4 // STL
5 #include <sstream>
6 #include <cassert>
7 // StdAir
10 
11 namespace stdair {
12 
13  // ////////////////////////////////////////////////////////////////////
15  : _dateRange (BOOST_DEFAULT_DATE_PERIOD), _dow () {
16  }
17 
18  // ////////////////////////////////////////////////////////////////////
20  const DoWStruct& iDoW)
21  : _dateRange (iDateRange), _dow (iDoW) {
22  }
23 
24  // ////////////////////////////////////////////////////////////////////
26  : _dateRange (iPeriodStruct._dateRange), _dow (iPeriodStruct._dow) {
27 
28  }
29 
30  // ////////////////////////////////////////////////////////////////////
31  const std::string PeriodStruct::describeShort() const {
32  std::ostringstream ostr;
33  ostr << _dateRange << ", " << _dow.describeShort ();
34  return ostr.str();
35  }
36 
37  // ////////////////////////////////////////////////////////////////////
38  const std::string PeriodStruct::describe() const {
39  std::ostringstream ostr;
40  ostr << _dateRange << ", " << _dow.describe ();
41  return ostr.str();
42  }
43 
44  // ////////////////////////////////////////////////////////////////////
46  addDateOffset (const DateOffset_T& iDateOffset) const {
47  // Create a new date range by shifting the date range of this object with
48  // iDateOffset.
49  DatePeriod_T lNewDateRange = getDateRange();
50  lNewDateRange.shift (iDateOffset);
51 
52  // Create a new DoWStruct by shifting the DoWStruct of this object with
53  // iDateOffset.
54  const long lNbOfDaysOffset = iDateOffset.days();
55  const DoWStruct& lDoW = getDoW();
56  const DoWStruct lNewDoW = lDoW.shift (lNbOfDaysOffset);
57 
58  return PeriodStruct (lNewDateRange, lNewDoW);
59  }
60 
61  // ////////////////////////////////////////////////////////////////////
63  intersection (const PeriodStruct& iPeriodStruct) const {
64  const DatePeriod_T lNewDateRange =
65  _dateRange.intersection (iPeriodStruct._dateRange);
66  const DoWStruct lNewDoW = _dow.intersection (iPeriodStruct._dow);
67 
68  return PeriodStruct (lNewDateRange, lNewDoW);
69  }
70 
71  // ////////////////////////////////////////////////////////////////////
72  const bool PeriodStruct::isValid () const {
73  if (_dateRange.is_null() == false && _dow.isValid()) {
74  return true;
75  }
76  return false;
77  }
78 
79 }
stdair::PeriodStruct::describe
const std::string describe() const
Definition: PeriodStruct.cpp:38
stdair::PeriodStruct::intersection
PeriodStruct intersection(const PeriodStruct &) const
Definition: PeriodStruct.cpp:63
stdair::PeriodStruct
Definition: PeriodStruct.hpp:19
BasConst_Period_BOM.hpp
stdair::PeriodStruct::isValid
const bool isValid() const
Definition: PeriodStruct.cpp:72
PeriodStruct.hpp
stdair::DoWStruct::intersection
DoWStruct intersection(const DoWStruct &) const
Definition: DoWStruct.cpp:104
stdair::DoWStruct
Definition: DoWStruct.hpp:18
stdair::PeriodStruct::getDoW
const DoWStruct & getDoW() const
Definition: PeriodStruct.hpp:26
stdair::DoWStruct::describeShort
const std::string describeShort() const
Definition: DoWStruct.cpp:40
stdair
Handle on the StdAir library context.
Definition: BasChronometer.cpp:9
stdair::DoWStruct::shift
DoWStruct shift(const long &) const
Definition: DoWStruct.cpp:88
stdair::PeriodStruct::addDateOffset
PeriodStruct addDateOffset(const DateOffset_T &) const
Definition: PeriodStruct.cpp:46
stdair::DateOffset_T
boost::gregorian::date_duration DateOffset_T
Definition: stdair_date_time_types.hpp:35
stdair::DoWStruct::isValid
const bool isValid() const
Definition: DoWStruct.cpp:117
stdair::PeriodStruct::getDateRange
const DatePeriod_T & getDateRange() const
Definition: PeriodStruct.hpp:23
stdair::PeriodStruct::PeriodStruct
PeriodStruct()
Definition: PeriodStruct.cpp:14
stdair::BOOST_DEFAULT_DATE_PERIOD
const DatePeriod_T BOOST_DEFAULT_DATE_PERIOD
stdair::DatePeriod_T
boost::gregorian::date_period DatePeriod_T
Definition: stdair_date_time_types.hpp:29
stdair::PeriodStruct::describeShort
const std::string describeShort() const
Definition: PeriodStruct.cpp:31
stdair::DoWStruct::describe
const std::string describe() const
Definition: DoWStruct.cpp:52