Exemplo n.º 1
0
 internal Container(FieldBase.Parameters common, IReadOnlyList <IField> fields)
     : base(common)
 {
     Size         = base.Size;
     Fields       = fields;
     Loadable     = !Fields.Any(f => f is Container);
     fieldsByName = fields.ToDictionary(f => f.Name);
 }
Exemplo n.º 2
0
        internal Container ToContainer(ModuleSchema schema, ModuleJson module, string name, int offset, string description, FieldCondition?condition)
        {
            // TODO: This works and is pleasantly efficient, but it's pretty ugly.
            if (cachedFields == null)
            {
                // TODO: Check that all fields are either primitive or container, check the size etc.
                cachedFields = Fields
                               .SelectMany(fieldJson => fieldJson.ToFields(schema, module))
                               .ToList()
                               .AsReadOnly();
            }
            var lastField = Fields.LastOrDefault();
            int size      = Size?.Value ?? lastField?.Offset?.Value ?? 0;
            var common    = new FieldBase.Parameters(schema, name, offset, size, description, condition);

            return(new Container(common, cachedFields));
        }
Exemplo n.º 3
0
 private protected NumericFieldBase(FieldBase.Parameters common, int min, int max, int @default)
     : base(common) =>
     (Min, Max, Default) = (min, max, @default);
Exemplo n.º 4
0
 internal EnumField(FieldBase.Parameters common, IReadOnlyList <string> values, int min, int @default)
     : base(common, min, values.Count + min - 1, @default) =>
Exemplo n.º 5
0
 internal StringField(FieldBase.Parameters common, int length)
     : base(common)
 {
     Length       = length;
     bytesPerChar = Size / length;
 }
Exemplo n.º 6
0
 internal DynamicOverlay(FieldBase.Parameters common, int switchContainerOffset, string switchField, IReadOnlyList <Container> containers)
     : base(common)
 {
     (SwitchContainerOffset, this.switchField, OverlaidContainers) = (switchContainerOffset, switchField, containers);
 }
Exemplo n.º 7
0
 internal BooleanField(FieldBase.Parameters common)
     : base(common, OffOnValues, 0, 0)
 {
 }