Пример #1
0
        public ProcedureNode GetFirstStaticFunctionBy(string procName, int argCount)
        {
            if (ProcTable == null)
            {
                return(null);
            }

            ProcedureNode procNode = ProcTable.GetFunctionsByNameAndArgumentNumber(procName, argCount)
                                     .Where(p => p.IsStatic)
                                     .FirstOrDefault();

            if (procNode != null)
            {
                return(procNode);
            }

            foreach (int baseClassIndex in Bases)
            {
                var baseClass = TypeSystem.classTable.ClassNodes[baseClassIndex];
                procNode = baseClass.GetFirstStaticFunctionBy(procName, argCount);
                if (null != procNode)
                {
                    break;
                }
            }
            return(procNode);
        }
Пример #2
0
        public ProcedureNode GetFirstConstructorBy(string procName, int argCount)
        {
            if (ProcTable == null)
            {
                return null;
            }

            return  ProcTable.GetFunctionsByNameAndArgumentNumber(procName, argCount)
                          .Where(p => p.IsConstructor)
                          .FirstOrDefault();
        }
Пример #3
0
        public ProcedureNode GetFirstMemberFunctionBy(string procName, int argCount)
        {
            if (ProcTable == null)            {                return null;            }
            ProcedureNode procNode = ProcTable.GetFunctionsByNameAndArgumentNumber(procName, argCount).FirstOrDefault();
            if (procNode != null)
            {
                return procNode;
            }

            if (Base != Constants.kInvalidIndex)
            {
                var baseClass = TypeSystem.classTable.ClassNodes[Base];
                procNode = baseClass.GetFirstMemberFunctionBy(procName, argCount);
            }
            return procNode;
        }