void AddChildExtensions(AddinDescription conf, ModuleDescription module, AddinUpdateData updateData, AddinIndex index, string path, ExtensionNodeDescriptionCollection nodes, bool conditionChildren)
{
// Don't register conditions as extension nodes.
if (!conditionChildren)
updateData.RegisterExtension (conf, module, path);
foreach (ExtensionNodeDescription node in nodes) {
if (node.NodeName == "ComplexCondition")
continue;
updateData.RelExtensionNodes++;
string id = node.GetAttribute ("id");
if (id.Length != 0) {
bool isCondition = node.NodeName == "Condition";
if (isCondition) {
// Find the add-in that provides the implementation for this condition.
// Store that id in the condition. The add-in engine will ensure the add-in
// is loaded when it tries to evaluate this condition.
var condAsm = index.FindCondition (conf, module, id);
if (condAsm != null)
node.SetAttribute (Condition.SourceAddinAttribute, condAsm);
}
AddChildExtensions (conf, module, updateData, index, path + "/" + id, node.ChildNodes, isCondition);
}
}
}