/// <summary> /// Adds the node to the address space <see cref="IAddressSpaceCreator" />. /// </summary> /// <param name="space">The address space as a tree of nodes.</param> protected override void AddNode2AddressSpace(IAddressSpaceCreator space) { int _addressSpaceIndex = space.AddNode2AddressSpace(this, SymbolicName.ToString()); foreach (Reference item in this.References) { space.AddReference(_addressSpaceIndex, item.Wrapper.ReferenceType.XmlQualifiedName, item.Wrapper.IsInverse, item.Wrapper.TargetId.XmlQualifiedName); } IInstanceNodesCollection children = AddChildren(space, SymbolicName, _addressSpaceIndex, false); children.RegisterChildrenInAddressSpace(); space.AddReference(_addressSpaceIndex, BuildInXmlQualifiedNames.HasSubtype, true, this.Wrapper.BaseType.ValueOrDefault); }
/// <summary> /// Processes the node. /// </summary> /// <param name="space">The address space.</param> /// <param name="nodeContext">The parent.</param> /// <param name="modelParent">The model parent.</param> /// <param name="isInstanceDeclaration">if set to <c>true</c> it is instance declaration.</param> void IInstanceNode.CompileNode(IAddressSpaceCreator space, IInstanceNodeContext nodeContext, bool isInstanceDeclaration) { IInstanceNodesCollection children = AddChildren(space, nodeContext.NodeID, nodeContext.AddressSpaceIndex, isInstanceDeclaration); InstanceDeclarations(children, nodeContext); children.RegisterChildrenInAddressSpace(); foreach (Reference item in this.References) { space.AddReference(nodeContext.AddressSpaceIndex, item.Wrapper.ReferenceType.XmlQualifiedName, item.Wrapper.IsInverse, item.Wrapper.TargetId.XmlQualifiedName); } space.AddReference(nodeContext.AddressSpaceIndex, BuildInXmlQualifiedNames.HasTypeDefinition, false, nodeContext.TypeDefinition); nodeContext.AddModelingRule(); }