Add callback groups

Allow named collections of callbacks to be defined and used anywhere
callbacks are used.

Change-Id: I3224aa06b2250e9a055bc70d20c186caecd033af
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/src/templates/generated.mako.hpp b/src/templates/generated.mako.hpp
index 61c2b6f..67b9149 100644
--- a/src/templates/generated.mako.hpp
+++ b/src/templates/generated.mako.hpp
@@ -128,6 +128,23 @@
     }
 };
 
+struct ConfigPropertyCallbackGroups
+{
+    using CallbackGroups = std::array<std::vector<size_t>, ${len(callbackgroups)}>;
+    static auto& get()
+    {
+        static const CallbackGroups propertyCallbackGraph =
+        {
+            {
+% for g in callbackgroups:
+                {${', '.join([str(x) for x in g.members])}},
+% endfor
+            }
+        };
+        return propertyCallbackGraph;
+    }
+};
+
 struct ConfigPropertyCallbacks
 {
     using Callbacks = std::array<std::unique_ptr<Callback>, ${len(callbacks)}>;