Esempio n. 1
0
        //methods
        /// <summary>
        /// Tries to get the position of the name or adds it if needed.
        /// </summary>
        /// <param name="uniqueName">A globally unique name of the node.</param>
        /// <returns>Position of the name in the dictionary.</returns>
        private int TryGetAndAddIfNeeded(string uniqueName)
        {
            int _listPosition;

            if (m_Dictionary.TryGetValue(uniqueName, out _listPosition))
            {
                return(_listPosition);
            }
            _listPosition = m_listPosition++;
            m_NodesList.Add(_listPosition, NodeHandle.CreateDanglingReference(uniqueName));
            m_Dictionary.Add(uniqueName, _listPosition);
            AddressSpace.NodesTableRow row = m_AddressSpace.NodesTable.NewNodesTableRow();
            row.ObjectIndex = _listPosition;
            m_AddressSpace.NodesTable.AddNodesTableRow(row);
            if (uniqueName.CompareTo(BuildInXmlQualifiedNames.RootFolder.ToString()) == 0)
            {
                m_Root = row;
            }
            return(_listPosition);
        }
Esempio n. 2
0
 internal static AddressSpaceElement CreateAddressSpaceElement(AddressSpace.NodesTableRow row, AddressSpaceCompiler parent)
 {
     return(new AddressSpaceElement(null, row, parent));
 }
Esempio n. 3
0
 private AddressSpaceElement(AddressSpace.ReferencesTableRow reference, AddressSpace.NodesTableRow node, AddressSpaceCompiler parent)
 {
     m_ReferenceRow = reference;
     m_NodeRow      = node;
     m_parent       = parent;
 }