summaryrefslogtreecommitdiff
path: root/timer.c
diff options
context:
space:
mode:
authorlouis <louis.braun@gmx.de>2013-07-09 00:17:42 +0200
committerlouis <louis.braun@gmx.de>2013-07-09 00:17:42 +0200
commit2a7a011055a44516ec981e525776394a8c04dcfe (patch)
tree55c9828c7b619622ec36da3f4b41318ed6c85ae0 /timer.c
parent6da4b610d98cafe7c20555c926359d7f89347c76 (diff)
downloadvdr-plugin-tvguide-2a7a011055a44516ec981e525776394a8c04dcfe.tar.gz
vdr-plugin-tvguide-2a7a011055a44516ec981e525776394a8c04dcfe.tar.bz2
Version 0.0.6
Diffstat (limited to 'timer.c')
-rw-r--r--timer.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/timer.c b/timer.c
index 8e60c0e..f6d9925 100644
--- a/timer.c
+++ b/timer.c
@@ -120,3 +120,49 @@ time_t cMyTime::GetRounded() {
void cMyTime::debug() {
esyslog("t: %s, tStart: %s, tEnd: %s", *TimeString(t), *TimeString(tStart), *TimeString(tEnd));
}
+
+// --- cTimeInterval -------------------------------------------------------------
+
+cTimeInterval::cTimeInterval(time_t start, time_t stop) {
+ this->start = start;
+ this->stop = stop;
+}
+
+cTimeInterval::~cTimeInterval(void) {
+}
+
+cTimeInterval *cTimeInterval::Intersect(cTimeInterval *interval) {
+ time_t startIntersect, stopIntersect;
+
+ if ((stop <= interval->Start()) || (interval->Stop() <= start)) {
+ return NULL;
+ }
+
+ if (start <= interval->Start()) {
+ startIntersect = interval->Start();
+ } else {
+ startIntersect = start;
+ }
+ if (stop <= interval->Stop()) {
+ stopIntersect = stop;
+ } else {
+ stopIntersect = interval->Stop();
+ }
+ return new cTimeInterval(startIntersect, stopIntersect);
+}
+
+cTimeInterval *cTimeInterval::Union(cTimeInterval *interval) {
+ time_t startUnion, stopUnion;
+
+ if (start <= interval->Start()) {
+ startUnion = start;
+ } else {
+ startUnion = interval->Start();
+ }
+ if (stop <= interval->Stop()) {
+ stopUnion = interval->Stop();
+ } else {
+ stopUnion = stop;
+ }
+ return new cTimeInterval(startUnion, stopUnion);
+} \ No newline at end of file