Antlr4.Runtime.Misc.RuleDependencyChecker.GetRuleVersions C# (CSharp) Method

GetRuleVersions() private static method

private static GetRuleVersions ( Type recognizerClass, string ruleNames ) : int[]
recognizerClass System.Type
ruleNames string
return int[]
        private static int[] GetRuleVersions(Type recognizerClass, string[] ruleNames)
        {
            int[] versions = new int[ruleNames.Length];
            FieldInfo[] fields = recognizerClass.GetFields();
            foreach (FieldInfo field in fields)
            {
                bool isStatic = field.IsStatic;
                bool isInteger = field.FieldType == typeof(int);
                if (isStatic && isInteger && field.Name.StartsWith("RULE_"))
                {
                    try
                    {
                        string name = field.Name.Substring("RULE_".Length);
                        if (name.Length == 0 || !System.Char.IsLower(name[0]))
                        {
                            continue;
                        }
                        int index = (int)field.GetValue(null);
                        if (index < 0 || index >= versions.Length)
                        {
                            object[] @params = new object[] { index, field.Name, recognizerClass.Name };
#if false
                            Logger.Log(Level.Warning, "Rule index {0} for rule ''{1}'' out of bounds for recognizer {2}.", @params);
#endif
                            continue;
                        }
                        MethodInfo ruleMethod = GetRuleMethod(recognizerClass, name);
                        if (ruleMethod == null)
                        {
                            object[] @params = new object[] { name, recognizerClass.Name };
#if false
                            Logger.Log(Level.Warning, "Could not find rule method for rule ''{0}'' in recognizer {1}.", @params);
#endif
                            continue;
                        }
                        RuleVersionAttribute ruleVersion = (RuleVersionAttribute)Attribute.GetCustomAttribute(ruleMethod, typeof(RuleVersionAttribute));
                        int version = ruleVersion != null ? ruleVersion.Version : 0;
                        versions[index] = version;
                    }
                    catch (ArgumentException)
                    {
#if false
                        Logger.Log(Level.Warning, null, ex);
#else
                        throw;
#endif
                    }
                    catch (MemberAccessException)
                    {
#if false
                        Logger.Log(Level.Warning, null, ex);
#else
                        throw;
#endif
                    }
                }
            }
            return versions;
        }

Same methods

RuleDependencyChecker::GetRuleVersions ( TypeInfo recognizerClass, string ruleNames ) : int[]