+#define ROUTE_GROUP_DEFAULT_PROPERTIES _relative (Properties::relative, false) \
+ , _active (Properties::active, false) \
+ , _hidden (Properties::hidden, false) \
+ , _gain (Properties::gain, false) \
+ , _mute (Properties::mute, false) \
+ , _solo (Properties::solo, false) \
+ , _recenable (Properties::recenable, false) \
+ , _select (Properties::select, false) \
+ , _edit (Properties::edit, false)
+
+RouteGroup::RouteGroup (Session& s, const string &n)
+ : SessionObject (s, n)
+ , routes (new RouteList)
+ , ROUTE_GROUP_DEFAULT_PROPERTIES
+{
+ _xml_node_name = X_("RouteGroup");
+
+ add_property (_relative);
+ add_property (_active);
+ add_property (_hidden);
+ add_property (_gain);
+ add_property (_mute);
+ add_property (_solo);
+ add_property (_recenable);
+ add_property (_select);
+ add_property (_edit);
+}
+
+RouteGroup::~RouteGroup ()
+{
+ for (RouteList::iterator i = routes->begin(); i != routes->end();) {
+ RouteList::iterator tmp = i;
+ ++tmp;
+
+ (*i)->leave_route_group ();
+
+ i = tmp;
+ }
+}
+
+/** Add a route to a group. Adding a route which is already in the group is allowed; nothing will happen.
+ * @param r Route to add.
+ */