Exemplo n.º 1
0
        public void SetClassNodeAt(ClassNode node, int index)
        {
            classNodes[index] = node;
            Namespace.Symbol symbol = null;
            if (!symbolTable.TryGetExactSymbol(node.Name, out symbol))
                symbol = symbolTable.AddSymbol(node.Name);

            symbol.Id = index;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Tries to get the fully qualified name for the given name from this
        /// ClassTable.
        /// </summary>
        /// <param name="name">Partial name of the class for lookup</param>
        /// <param name="fullName">Fully qualified class name</param>
        /// <returns>True if the given name results a unique matching symbol in 
        /// this ClassTable.</returns>
        public bool TryGetFullyQualifiedName(string name, out string fullName)
        {
            Validity.Assert(null != name);
            Namespace.Symbol symbol = null;
            fullName = string.Empty;
            if (symbolTable.TryGetUniqueSymbol(name, out symbol))
                fullName = symbol.FullName;

            return !string.IsNullOrEmpty(fullName);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Returns Class Id for the given fully qualified class name.
        /// </summary>
        /// <param name="fullname">Fully qualified class name</param>
        /// <returns>Class Id if found, else ProtoCore.DSASM.Constants.kInvalidIndex</returns>
        public int GetClassId(string fullname)
        {
            Validity.Assert(null != fullname);

            Namespace.Symbol symbol = null;
            if (symbolTable.TryGetExactSymbol(fullname, out symbol))
                return symbol.Id;

            return ProtoCore.DSASM.Constants.kInvalidIndex;
        }
Exemplo n.º 4
0
        /// <summary>
        /// Find a matching class for given partial class name.
        /// </summary>
        /// <param name="partialName">Partial class name for lookup.</param>
        /// <returns>Class Id if found, else ProtoCore.DSASM.Constants.kInvalidIndex</returns>
        public int IndexOf(string partialName)
        {
            Validity.Assert(null != partialName);

            Namespace.Symbol symbol = null;
            if (symbolTable.TryGetUniqueSymbol(partialName, out symbol))
                return symbol.Id;
            
            return ProtoCore.DSASM.Constants.kInvalidIndex;
        }
Exemplo n.º 5
0
        public int Append(ClassNode node)
        {
            Namespace.Symbol symbol = symbolTable.AddSymbol(node.name);
            if (null == symbol)
            {
                return(ProtoCore.DSASM.Constants.kInvalidIndex);
            }

            classNodes.Add(node);
            node.classId = classNodes.Count - 1;
            symbol.Id    = node.classId;
            return(node.classId);
        }