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); } } }
/// <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); } }
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); } } }
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++; } } }
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)); }