- list<shared_ptr<cxml::Node> > s = node->node_children ("Screen");
- for (list<shared_ptr<cxml::Node> >::iterator i = s.begin(); i != s.end(); ++i) {
- _screens.push_back (shared_ptr<Screen> (new Screen (*i)));
+ if (node->optional_number_child<int>("UTCOffset")) {
+ _utc_offset_hour = node->number_child<int>("UTCOffset");
+ } else {
+ _utc_offset_hour = node->optional_number_child<int>("UTCOffsetHour").get_value_or (0);
+ }
+
+ _utc_offset_minute = node->optional_number_child<int>("UTCOffsetMinute").get_value_or (0);
+}
+
+/* This is necessary so that we can use shared_from_this in add_screen (which cannot be done from
+ a constructor)
+*/
+void
+Cinema::read_screens (cxml::ConstNodePtr node)
+{
+ for (auto i: node->node_children("Screen")) {
+ add_screen (make_shared<Screen>(i));