Remove in-place translations support.
[dcpomatic.git] / src / lib / dcpomatic_time_coalesce.h
index e6e16641ef7e65091993dbe1d4e1b892fac0eeae..015326bdd7b73d4f9a5550a8606a1f8439b5167f 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2017 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2017-2021 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 
 */
 
+
 #include "dcpomatic_time.h"
 #include <iostream>
 
+
 namespace dcpomatic {
 
+
 /** @param periods Set of periods in ascending order of from time */
 template <class T>
-std::list<TimePeriod<T> > coalesce (std::list<TimePeriod<T> > periods)
+std::list<TimePeriod<T>> coalesce (std::list<TimePeriod<T>> periods)
 {
        bool did_something;
-       std::list<TimePeriod<T> > coalesced;
+       std::list<TimePeriod<T>> coalesced;
        do {
                coalesced.clear ();
                did_something = false;
-               for (typename std::list<TimePeriod<T> >::const_iterator i = periods.begin(); i != periods.end(); ++i) {
-                       typename std::list<TimePeriod<T> >::const_iterator j = i;
+               for (auto i = periods.begin(); i != periods.end(); ++i) {
+                       auto j = i;
                        ++j;
                        if (j != periods.end() && (i->overlap(*j) || i->to == j->from)) {
-                               coalesced.push_back (TimePeriod<T> (i->from, j->to));
+                               coalesced.push_back(TimePeriod<T>(std::min(i->from, j->from), std::max(i->to, j->to)));
                                did_something = true;
                                ++i;
                        } else {
@@ -49,4 +52,5 @@ std::list<TimePeriod<T> > coalesce (std::list<TimePeriod<T> > periods)
        return periods;
 }
 
+
 }