instance static method

RegisterField instance(
  1. String key,
  2. Map<String, dynamic> json
)

Implementation

static RegisterField instance(String key, Map<String,dynamic> json){

  FieldType type = FieldType.values.byName(json['type']);

  String? name = json['name'];
  int offset = json['offset'];
  int size = json['size'];

  String? tag = json['tag'];
  List? selection = json['selection'];

  switch(type){
    case FieldType.float:
      return FloatField(key, type,name,offset,size,tag: tag,selection: selection);
    case FieldType.short:
      return ShortField(key, type,name,offset,size,tag: tag,selection: selection);
    case FieldType.ushort:
      return UshortField(key, type,name,offset,size,tag: tag,selection: selection);
    case FieldType.int:
      return IntField(key, type,name,offset,size,tag: tag,selection: selection);
    case FieldType.uint:
      return UintField(key, type,name,offset,size,tag: tag,selection: selection);
    case FieldType.ulong:
      return UlongField(key, type,name,offset,size,tag: tag,selection: selection);
    case FieldType.byte:
      ByteLoc bytePos = ByteLoc.values.byName(json['byte_pos']);
      return ByteField(key, type,name,offset,size,bytePos,tag: tag,selection: selection);
    case FieldType.bits:
      List<int> bitsRange = json['bits_range'];
      return BitsField(key, type,name,offset,size, bitsRange ,tag: tag,selection: selection);
    case FieldType.bit:
      int bitPos = json['bit_pos'];
      return BitField(key, type,name,offset,size, bitPos,tag: tag,selection: selection);
    case FieldType.string:
      return StringField(key, type,name,offset,size,tag: tag,selection: selection);
    case FieldType.hex:
      return HexField(key, type,name,offset,size,tag: tag,selection: selection);
    default:
      throw Exception("Register type error in json config.");
  }
}