Microsoft.Zing.Splicer.GenerateRange C# (CSharp) Méthode

GenerateRange() private méthode

private GenerateRange ( Range rangeNode ) : void
rangeNode Range
Résultat void
        private void GenerateRange(Range rangeNode)
        {
            TypeNode rangeClass = Templates.GetTypeTemplateByName("Range");

            Debug.Assert(rangeClass.Members[0] is EnumNode);
            EnumNode rangeEnum = (EnumNode)rangeClass.Members[0];
            rangeEnum.Name = rangeNode.Name;
            Replacer.Replace(rangeEnum, "_MinValue", rangeNode.Min);
            Replacer.Replace(rangeEnum, "_MaxValue", rangeNode.Max);
            InstallType(rangeEnum);

            Debug.Assert(rangeClass.Members[1] is Field);
            Field f = (Field)rangeClass.Members[1];
            f.Name = new Identifier(rangeNode.Name.Name + "Choices");

            choosableTypes.Add(rangeNode.Name, f.Name);

            Debug.Assert(f.Initializer != null && f.Initializer is ConstructArray);
            ConstructArray consArray = (ConstructArray)f.Initializer;
            Debug.Assert(rangeNode.Min is Literal);
            int min = (int)((Literal)rangeNode.Min).Value;
            int max = (int)((Literal)rangeNode.Max).Value;
            for (int i = min; i <= max; i++)
                consArray.Initializers.Add(new Literal(i, SystemTypes.Int32));

            appClass.Members.Add(f);
            f.DeclaringType = appClass;
        }