X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Flib%2Fkdm_with_metadata.cc;h=62d544e0b836ad8f898cbf7fc944a6b34cbd39c4;hb=0ab8cf5b312f36a14f66d4564c6f4b1694ddaae0;hp=fe4f9ccdde7154e9e15fcab784253a191c073ccf;hpb=8f8730cadb3dae36e8aa7b7c732a7c162eac0fb6;p=dcpomatic.git diff --git a/src/lib/kdm_with_metadata.cc b/src/lib/kdm_with_metadata.cc index fe4f9ccdd..62d544e0b 100644 --- a/src/lib/kdm_with_metadata.cc +++ b/src/lib/kdm_with_metadata.cc @@ -41,7 +41,7 @@ using boost::function; int write_files ( - list screen_kdms, + list kdms, boost::filesystem::path directory, dcp::NameFormat name_format, dcp::NameFormat::Map name_values, @@ -52,7 +52,7 @@ write_files ( if (directory == "-") { /* Write KDMs to the stdout */ - BOOST_FOREACH (KDMWithMetadataPtr i, screen_kdms) { + BOOST_FOREACH (KDMWithMetadataPtr i, kdms) { cout << i->kdm_as_xml (); ++written; } @@ -65,7 +65,7 @@ write_files ( } /* Write KDMs to the specified directory */ - BOOST_FOREACH (KDMWithMetadataPtr i, screen_kdms) { + BOOST_FOREACH (KDMWithMetadataPtr i, kdms) { name_values['i'] = i->kdm_id (); boost::filesystem::path out = directory / careful_string_filter(name_format.get(name_values, ".xml")); if (!boost::filesystem::exists (out) || confirm_overwrite (out)) { @@ -105,41 +105,33 @@ make_zip_file (list kdms, boost::filesystem::path zip_file, } -/** Collect a list of KDMWithMetadatas into a list of list so that each - * CinemaKDM contains the KDMs for its cinema. +/** Collect a list of KDMWithMetadatas into a list of lists so that + * each list contains the KDMs for one cinema. */ list > -collect (list screen_kdms) +collect (list kdms) { - list > cinema_kdms; - - while (!screen_kdms.empty ()) { - - /* Get all the screens from a single cinema */ + list > grouped; - list ck; + BOOST_FOREACH (KDMWithMetadataPtr i, kdms) { - list::iterator i = screen_kdms.begin (); - ck.push_back (*i); - list::iterator j = i; - ++i; - screen_kdms.remove (*j); + list >::iterator j = grouped.begin (); - while (i != screen_kdms.end ()) { - if ((*i)->cinema() == ck.front()->cinema()) { - ck.push_back (*i); - list::iterator j = i; - ++i; - screen_kdms.remove (*j); - } else { - ++i; + while (j != grouped.end()) { + if (j->front()->cinema() == i->cinema()) { + j->push_back (i); + break; } + ++j; } - cinema_kdms.push_back (ck); + if (j == grouped.end()) { + grouped.push_back (list()); + grouped.back().push_back (i); + } } - return cinema_kdms; + return grouped; }