Esempio n. 1
0
 public TdlField(string identifier, TdlObject owner, ToffeeModifiers modifiers = ToffeeModifiers.None)
 {
     Identifier = identifier;
     Owner      = owner;
     FieldId    = CRC.CalculateCRC32(Identifier);
     Modifiers  = modifiers;
     Owner.File.AddStringToHash(Identifier);
 }
Esempio n. 2
0
 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;
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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());
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
            }
        }
Esempio n. 7
0
 public ToffeePropertyAttribute(ToffeeModifiers modifiers)
 {
     Modifiers = modifiers;
 }
Esempio n. 8
0
 public ToffeeProperty(ToffeeObject owner, PropertyInfo propertyInfo, ToffeeModifiers modifiers)
     : base(owner, propertyInfo.Name, modifiers)
 {
     PropertyInfo = propertyInfo;
 }
Esempio n. 9
0
 public ToffeeMethodAttribute(ToffeeModifiers modifiers)
 {
     Modifiers = modifiers;
 }
Esempio n. 10
0
 public bool HasModifier(ToffeeModifiers modifier)
 {
     return((Modifiers & modifier) == modifier);
 }
Esempio n. 11
0
 public ToffeeField(ToffeeObject owner, string identifier, ToffeeModifiers modifiers = ToffeeModifiers.None)
 {
     Owner      = owner;
     Identifier = identifier;
     Modifiers  = modifiers;
 }
Esempio n. 12
0
 public TdlField[] FindFieldsWithModifier(ToffeeModifiers modifier)
 {
     return(FindFieldsWithModifier <TdlField>(modifier));
 }
Esempio n. 13
0
 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();
 }