public TdlField(string identifier, TdlObject owner, ToffeeModifiers modifiers = ToffeeModifiers.None) { Identifier = identifier; Owner = owner; FieldId = CRC.CalculateCRC32(Identifier); Modifiers = modifiers; Owner.File.AddStringToHash(Identifier); }
public TdlProperty(string identifier, TdlObject owner, TdlType type, ToffeeModifiers modifiers = ToffeeModifiers.None) : base(identifier, owner, modifiers) { if (owner.GetType() == typeof(TdlService)) { throw new Exception("TdlProperty cannot be owned by TdlService."); } Type = type; }
public void AddProperty(PropertyInfo propertyInfo, ToffeeModifiers modifiers = ToffeeModifiers.None) { ToffeeProperty property = new ToffeeProperty(this, propertyInfo, modifiers); if (HasField(property.Identifier)) { throw new ToffeeException("Struct '{0}' already has field with name: '{1}'.", Name, property.Identifier); } if (HasField(property.FieldId)) { throw new ToffeeException("Struct '{0}' already has field with id: '{1}'.", Name, property.FieldId); } TypeCode type = Type.GetTypeCode(propertyInfo.PropertyType); switch (type) { case TypeCode.Boolean: case TypeCode.Byte: case TypeCode.SByte: case TypeCode.Char: MinimumSize++; break; case TypeCode.UInt16: case TypeCode.Int16: MinimumSize += 2; break; case TypeCode.String: case TypeCode.UInt32: case TypeCode.Int32: case TypeCode.Single: MinimumSize += 4; break; case TypeCode.UInt64: case TypeCode.Int64: case TypeCode.Double: MinimumSize += 8; break; case TypeCode.Object: if (propertyInfo.PropertyType.IsArray) { MinimumSize += 4; } break; } AddField(property); _Properties.Add(property); PropertyIdentifierLookup.Add(property.Identifier, property); PropertyLookup.Add(property.FieldId, property); }
public T[] FindFieldsWithModifier <T>(ToffeeModifiers modifier) where T : TdlField { List <T> fields = new List <T>(); foreach (TdlField field in _Fields) { if ((field.HasModifier(modifier)) && (field is T)) { fields.Add((T)field); } } return(fields.ToArray()); }
public void AddMethod(MethodInfo methodInfo, ToffeeModifiers modifiers = ToffeeModifiers.None) { ToffeeMethod method = new ToffeeMethod(this, methodInfo, modifiers); if (HasField(method.Identifier)) { throw new ToffeeException("Class '{0}' already has field with name: '{1}'.", Name, method.Identifier); } if (HasField(method.FieldId)) { throw new ToffeeException("Class '{0}' already has field with id: '{1}'.", Name, method.FieldId); } AddField(method); _Methods.Add(method); MethodIdentifierLookup.Add(method.Identifier, method); MethodLookup.Add(method.FieldId, method); }
public void AddProperty(string identifier, TdlType type, ToffeeModifiers modifiers = ToffeeModifiers.None) { if (PropertyIdentifierLookup.ContainsKey(identifier)) { return; } TdlProperty property = new TdlProperty(identifier, this, type, modifiers); _Properties.Add(property); PropertyLookup.Add(property.FieldId, property); PropertyIdentifierLookup.Add(identifier, property); AddField(property); MinimumSize += type.MinimumSize; if (type.Type == ToffeeValueType.Struct) { AddRequiredNamespace(type.StructType.Namespace.FullName); } }
public ToffeePropertyAttribute(ToffeeModifiers modifiers) { Modifiers = modifiers; }
public ToffeeProperty(ToffeeObject owner, PropertyInfo propertyInfo, ToffeeModifiers modifiers) : base(owner, propertyInfo.Name, modifiers) { PropertyInfo = propertyInfo; }
public ToffeeMethodAttribute(ToffeeModifiers modifiers) { Modifiers = modifiers; }
public bool HasModifier(ToffeeModifiers modifier) { return((Modifiers & modifier) == modifier); }
public ToffeeField(ToffeeObject owner, string identifier, ToffeeModifiers modifiers = ToffeeModifiers.None) { Owner = owner; Identifier = identifier; Modifiers = modifiers; }
public TdlField[] FindFieldsWithModifier(ToffeeModifiers modifier) { return(FindFieldsWithModifier <TdlField>(modifier)); }
public ToffeeMethod(ToffeeObject owner, MethodInfo methodInfo, ToffeeModifiers modifiers = ToffeeModifiers.None) : base(owner, methodInfo.Name, modifiers) { MethodInfo = methodInfo; Parameters = MethodInfo.GetParameters().Select(p => p.ParameterType).ToArray(); }