int
write_files (
- list<KDMWithMetadataPtr> screen_kdms,
+ list<KDMWithMetadataPtr> kdms,
boost::filesystem::path directory,
dcp::NameFormat name_format,
dcp::NameFormat::Map name_values,
if (directory == "-") {
/* Write KDMs to the stdout */
- BOOST_FOREACH (KDMWithMetadataPtr i, screen_kdms) {
+ BOOST_FOREACH (KDMWithMetadataPtr i, kdms) {
cout << i->kdm_as_xml ();
++written;
}
}
/* 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)) {
}
-/** Collect a list of KDMWithMetadatas into a list of list<KDMWithMetadata> 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<list<KDMWithMetadataPtr> >
-collect (list<KDMWithMetadataPtr> screen_kdms)
+collect (list<KDMWithMetadataPtr> kdms)
{
- list<list<KDMWithMetadataPtr> > cinema_kdms;
-
- while (!screen_kdms.empty ()) {
-
- /* Get all the screens from a single cinema */
+ list<list<KDMWithMetadataPtr> > grouped;
- list<KDMWithMetadataPtr> ck;
+ BOOST_FOREACH (KDMWithMetadataPtr i, kdms) {
- list<KDMWithMetadataPtr>::iterator i = screen_kdms.begin ();
- ck.push_back (*i);
- list<KDMWithMetadataPtr>::iterator j = i;
- ++i;
- screen_kdms.remove (*j);
+ list<list<KDMWithMetadataPtr> >::iterator j = grouped.begin ();
- while (i != screen_kdms.end ()) {
- if ((*i)->cinema() == ck.front()->cinema()) {
- ck.push_back (*i);
- list<KDMWithMetadataPtr>::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<KDMWithMetadataPtr>());
+ grouped.back().push_back (i);
+ }
}
- return cinema_kdms;
+ return grouped;
}