BaseType constructor

BaseType(
  1. FieldDescriptorProto field,
  2. GenerationContext ctx
)

Implementation

factory BaseType(FieldDescriptorProto field, GenerationContext ctx) {
  String constSuffix;

  switch (field.type) {
    case FieldDescriptorProto_Type.TYPE_BOOL:
      return const BaseType._raw(FieldDescriptorProto_Type.TYPE_BOOL, 'B',
          '$coreImportPrefix.bool', r'$_setBool', null);
    case FieldDescriptorProto_Type.TYPE_FLOAT:
      return const BaseType._raw(FieldDescriptorProto_Type.TYPE_FLOAT, 'F',
          '$coreImportPrefix.double', r'$_setFloat', null);
    case FieldDescriptorProto_Type.TYPE_DOUBLE:
      return const BaseType._raw(FieldDescriptorProto_Type.TYPE_DOUBLE, 'D',
          '$coreImportPrefix.double', r'$_setDouble', null);
    case FieldDescriptorProto_Type.TYPE_INT32:
      return const BaseType._raw(FieldDescriptorProto_Type.TYPE_INT32, '3',
          '$coreImportPrefix.int', r'$_setSignedInt32', null);
    case FieldDescriptorProto_Type.TYPE_UINT32:
      return const BaseType._raw(FieldDescriptorProto_Type.TYPE_UINT32, 'U3',
          '$coreImportPrefix.int', r'$_setUnsignedInt32', null);
    case FieldDescriptorProto_Type.TYPE_SINT32:
      return const BaseType._raw(FieldDescriptorProto_Type.TYPE_SINT32, 'S3',
          '$coreImportPrefix.int', r'$_setSignedInt32', null);
    case FieldDescriptorProto_Type.TYPE_FIXED32:
      return const BaseType._raw(FieldDescriptorProto_Type.TYPE_FIXED32, 'F3',
          '$coreImportPrefix.int', r'$_setUnsignedInt32', null);
    case FieldDescriptorProto_Type.TYPE_SFIXED32:
      return const BaseType._raw(FieldDescriptorProto_Type.TYPE_SFIXED32,
          'SF3', '$coreImportPrefix.int', r'$_setSignedInt32', null);
    case FieldDescriptorProto_Type.TYPE_INT64:
      return const BaseType._raw(FieldDescriptorProto_Type.TYPE_INT64, '6',
          '$_fixnumImportPrefix.Int64', r'$_setInt64', null);
    case FieldDescriptorProto_Type.TYPE_UINT64:
      return const BaseType._raw(FieldDescriptorProto_Type.TYPE_UINT64, 'U6',
          '$_fixnumImportPrefix.Int64', r'$_setInt64', null);
    case FieldDescriptorProto_Type.TYPE_SINT64:
      return const BaseType._raw(FieldDescriptorProto_Type.TYPE_SINT64, 'S6',
          '$_fixnumImportPrefix.Int64', r'$_setInt64', null);
    case FieldDescriptorProto_Type.TYPE_FIXED64:
      return const BaseType._raw(FieldDescriptorProto_Type.TYPE_FIXED64, 'F6',
          '$_fixnumImportPrefix.Int64', r'$_setInt64', null);
    case FieldDescriptorProto_Type.TYPE_SFIXED64:
      return const BaseType._raw(FieldDescriptorProto_Type.TYPE_SFIXED64,
          'SF6', '$_fixnumImportPrefix.Int64', r'$_setInt64', null);
    case FieldDescriptorProto_Type.TYPE_STRING:
      return const BaseType._raw(FieldDescriptorProto_Type.TYPE_STRING, 'S',
          '$coreImportPrefix.String', r'$_setString', null);
    case FieldDescriptorProto_Type.TYPE_BYTES:
      return const BaseType._raw(
          FieldDescriptorProto_Type.TYPE_BYTES,
          'Y',
          '$coreImportPrefix.List<$coreImportPrefix.int>',
          r'$_setBytes',
          null);

    case FieldDescriptorProto_Type.TYPE_GROUP:
      constSuffix = 'G';
      break;
    case FieldDescriptorProto_Type.TYPE_MESSAGE:
      constSuffix = 'M';
      break;
    case FieldDescriptorProto_Type.TYPE_ENUM:
      constSuffix = 'E';
      break;

    default:
      throw ArgumentError('unimplemented type: ${field.type.name}');
  }

  final generator = ctx.getFieldType(field.typeName);
  if (generator == null) {
    throw 'FAILURE: Unknown type reference ${field.typeName}';
  }

  return BaseType._raw(
      field.type, constSuffix, generator.classname!, null, generator);
}