示例#1
0
        private void AddClassLevelVaribles(Tokenizer tokenizer)
        {
            while (tokenizer.Current is Keyword keyword && (
                       keyword == Keyword.Static || keyword == Keyword.Field))
            {
                tokenizer.Move().CurrentIs(VaribleType.IsValid);
                var type = new VaribleType(tokenizer.GetCurrentThenMove());

                tokenizer.CurrentIsIdentifier();
                AddVarible(keyword,
                           new Varible(type, tokenizer.GetCurrentThenMove() as Identifier));

                while (tokenizer.Current.Equals(Symbol.Commna))
                {
                    tokenizer.Move().CurrentIsIdentifier();
                    AddVarible(keyword,
                               new Varible(type, tokenizer.GetCurrentThenMove() as Identifier));
                }

                tokenizer.CurrentIs(Symbol.SemiColon).Move();
            }

            void AddVarible(Keyword keyword, Varible varible)
            {
                if (keyword == Keyword.Field)
                {
                    Fields.Add(varible);
                }
                else
                {
                    StaticFields.Add(varible);
                }
            }
        }
示例#2
0
 /// <summary>
 /// Retrieve a Field based off of its field name (tag element).
 /// This is only for static fields - use an integer to search custom fields.
 /// </summary>
 /// <param name="fieldName">Name of the field. Use the tag, not the display name ("Date_Created" rather than "Date Created" for example)</param>
 /// <returns>StaticField if found, otherwise null</returns>
 public StaticField this[string fieldName]
 {
     get { return(StaticFields.FirstOrDefault(f => f.Name == fieldName)); }
     set
     {
         StaticFields.RemoveAll(f => f.Name == fieldName && f is StaticField);
         StaticFields.Add(value);
     }
 }
示例#3
0
 private void ResolveStaticFields(IEnumerable <StaticField> staticFields)
 {
     foreach (var staticField in staticFields)
     {
         if (!StaticFields.ContainsKey(staticField.Info.Name) &&
             !staticField.Info.AccessFlags.HasFlag(FieldAccessFlags.Private))
         {
             StaticFields.Add(staticField.Info.Name, staticField);
         }
     }
 }
示例#4
0
        internal void AddFields(FieldInfo[] fields)
        {
            int instanceFieldsLength = InstanceFields.Count;
            int i = 0;

            foreach (var field in fields)
            {
                if (field.AccessFlags.HasFlag(FieldAccessFlags.Static))
                {
                    StaticFields.Add(field.Name, new StaticField(field));
                }
                else
                {
                    InstanceFields.Add(field.Name, new InstanceField(field, instanceFieldsLength + i));
                    i++;
                }
            }
        }
示例#5
0
        private void Other(TypeInfo ty, string var, VAL val)
        {
            string  constKey   = ToConstKey(var);
            string  defaultKey = ToDefaultKey(var);
            Comment comment    = new Comment(var)
            {
                Alignment = Alignment.Top
            };

            //const key field
            Field field = new Field(new TypeInfo(typeof(string)), constKey, new Value(var))
            {
                Modifier = Modifier.Public | Modifier.Const,
            };

            ConstKeyFields.Add(field);

            //default value field
            Modifier modifier = Modifier.Public | Modifier.Const;
            string   value    = val.ToString();

            if (val.IsList)
            {
                modifier = Modifier.Public | Modifier.Readonly | Modifier.Static;
                value    = $"new {ty} " + value;
            }

            field = new Field(ty, defaultKey)
            {
                Modifier  = modifier,
                UserValue = value,
                Comment   = comment
            };
            DefaultValueFields.Add(field);

            StaticFields.Add(createField(TOKEY(var), ty, var));
            StaticProperties.Add(createProperty(toPascal(var), ty, var));
            StaticMethods.Add(createMethod(toPascal(var), ty, var));
        }