Started breaking up interval_t into range_t
This commit is contained in:
parent
63080a7275
commit
0de43f483b
1 changed files with 43 additions and 14 deletions
57
src/times.h
57
src/times.h
|
|
@ -123,6 +123,42 @@ inline std::string format_date(const date_t& when,
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Brief
|
||||||
|
*
|
||||||
|
* Long.
|
||||||
|
*/
|
||||||
|
struct range_t
|
||||||
|
{
|
||||||
|
date_t begin;
|
||||||
|
date_t end;
|
||||||
|
|
||||||
|
date_range_t(const date_t& _begin = date_t(),
|
||||||
|
const date_t& _end = date_t())
|
||||||
|
: begin(_begin), end(_end) {
|
||||||
|
TRACE_CTOR(date_range_t, "const date_t&, const date_t&");
|
||||||
|
}
|
||||||
|
date_range_t(const date_range_t& other)
|
||||||
|
: begin(other.begin), end(other.end) {
|
||||||
|
TRACE_CTOR(date_range_t, "copy");
|
||||||
|
}
|
||||||
|
date_range_t(const string& desc) : begin(), end() {
|
||||||
|
TRACE_CTOR(date_range_t, "const string&");
|
||||||
|
std::istringstream stream(desc);
|
||||||
|
parse(stream);
|
||||||
|
}
|
||||||
|
~date_range_t() throw() {
|
||||||
|
TRACE_DTOR(date_range_t);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool date_in_range(const date_t& date) {
|
||||||
|
return ((! is_valid(begin) || date >= begin) &&
|
||||||
|
(! is_valid(end) || date < end));
|
||||||
|
}
|
||||||
|
|
||||||
|
void parse(std::istream& in);
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Brief
|
* @brief Brief
|
||||||
*
|
*
|
||||||
|
|
@ -134,36 +170,27 @@ struct interval_t
|
||||||
int months;
|
int months;
|
||||||
int days;
|
int days;
|
||||||
bool weekly;
|
bool weekly;
|
||||||
date_t begin;
|
|
||||||
date_t end;
|
|
||||||
|
|
||||||
interval_t(int _days = 0,
|
interval_t(int _days = 0,
|
||||||
int _months = 0,
|
int _months = 0,
|
||||||
int _years = 0,
|
int _years = 0,
|
||||||
bool _weekly = false,
|
bool _weekly = false)
|
||||||
const date_t& _begin = date_t(),
|
: years(_years), months(_months), days(_days), weekly(_weekly) {
|
||||||
const date_t& _end = date_t())
|
TRACE_CTOR(interval_t, "int, int, int, bool");
|
||||||
: years(_years), months(_months), days(_days),
|
|
||||||
weekly(_weekly), begin(_begin), end(_end) {
|
|
||||||
TRACE_CTOR(interval_t,
|
|
||||||
"int, int, int, bool, const date_t&, const date_t&");
|
|
||||||
}
|
}
|
||||||
interval_t(const interval_t& other)
|
interval_t(const interval_t& other)
|
||||||
: years(other.years),
|
: years(other.years),
|
||||||
months(other.months),
|
months(other.months),
|
||||||
days(other.days),
|
days(other.days),
|
||||||
weekly(other.weekly),
|
weekly(other.weekly) {
|
||||||
begin(other.begin),
|
|
||||||
end(other.end) {
|
|
||||||
TRACE_CTOR(interval_t, "copy");
|
TRACE_CTOR(interval_t, "copy");
|
||||||
}
|
}
|
||||||
interval_t(const string& desc)
|
interval_t(const string& desc)
|
||||||
: years(0), months(0), days(0), weekly(false), begin(), end() {
|
: years(0), months(0), days(0), weekly(false) {
|
||||||
TRACE_CTOR(interval_t, "const string&");
|
TRACE_CTOR(interval_t, "const string&");
|
||||||
std::istringstream stream(desc);
|
std::istringstream stream(desc);
|
||||||
parse(stream);
|
parse(stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
~interval_t() throw() {
|
~interval_t() throw() {
|
||||||
TRACE_DTOR(interval_t);
|
TRACE_DTOR(interval_t);
|
||||||
}
|
}
|
||||||
|
|
@ -172,9 +199,11 @@ struct interval_t
|
||||||
return years != 0 || months != 0 || days != 0;
|
return years != 0 || months != 0 || days != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
void set_start(const date_t& moment) {
|
void set_start(const date_t& moment) {
|
||||||
begin = first(moment);
|
begin = first(moment);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
date_t first(const optional<date_t>& moment = none);
|
date_t first(const optional<date_t>& moment = none);
|
||||||
date_t increment(const date_t&) const;
|
date_t increment(const date_t&) const;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue