BaseType constructor

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

Implementation

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

  switch (field.type) {
    case FieldDescriptorProto_Type.typeBool:
      return const BaseType._raw(FieldDescriptorProto_Type.typeBool, 'B',
          '$coreImportPrefix.bool', r'$_setBool', null);
    case FieldDescriptorProto_Type.typeFloat:
      return const BaseType._raw(FieldDescriptorProto_Type.typeFloat, 'F',
          '$coreImportPrefix.double', r'$_setFloat', null);
    case FieldDescriptorProto_Type.typeDouble:
      return const BaseType._raw(FieldDescriptorProto_Type.typeDouble, 'D',
          '$coreImportPrefix.double', r'$_setDouble', null);
    case FieldDescriptorProto_Type.typeInt32:
      return const BaseType._raw(FieldDescriptorProto_Type.typeInt32, '3',
          '$coreImportPrefix.int', r'$_setSignedInt32', null);
    case FieldDescriptorProto_Type.typeUint32:
      return const BaseType._raw(FieldDescriptorProto_Type.typeUint32, 'U3',
          '$coreImportPrefix.int', r'$_setUnsignedInt32', null);
    case FieldDescriptorProto_Type.typeSint32:
      return const BaseType._raw(FieldDescriptorProto_Type.typeSint32, 'S3',
          '$coreImportPrefix.int', r'$_setSignedInt32', null);
    case FieldDescriptorProto_Type.typeFixed32:
      return const BaseType._raw(FieldDescriptorProto_Type.typeFixed32, 'F3',
          '$coreImportPrefix.int', r'$_setUnsignedInt32', null);
    case FieldDescriptorProto_Type.typeSfixed32:
      return const BaseType._raw(FieldDescriptorProto_Type.typeSfixed32,
          'SF3', '$coreImportPrefix.int', r'$_setSignedInt32', null);
    case FieldDescriptorProto_Type.typeInt64:
      return const BaseType._raw(FieldDescriptorProto_Type.typeInt64, '6',
          '$_fixnumImportPrefix.Int64', r'$_setInt64', null);
    case FieldDescriptorProto_Type.typeUint64:
      return const BaseType._raw(FieldDescriptorProto_Type.typeUint64, 'U6',
          '$_fixnumImportPrefix.Int64', r'$_setInt64', null);
    case FieldDescriptorProto_Type.typeSint64:
      return const BaseType._raw(FieldDescriptorProto_Type.typeSint64, 'S6',
          '$_fixnumImportPrefix.Int64', r'$_setInt64', null);
    case FieldDescriptorProto_Type.typeFixed64:
      return const BaseType._raw(FieldDescriptorProto_Type.typeFixed64, 'F6',
          '$_fixnumImportPrefix.Int64', r'$_setInt64', null);
    case FieldDescriptorProto_Type.typeSfixed64:
      return const BaseType._raw(FieldDescriptorProto_Type.typeSfixed64,
          'SF6', '$_fixnumImportPrefix.Int64', r'$_setInt64', null);
    case FieldDescriptorProto_Type.typeString:
      return const BaseType._raw(FieldDescriptorProto_Type.typeString, 'S',
          '$coreImportPrefix.String', r'$_setString', null);
    case FieldDescriptorProto_Type.typeBytes:
      return const BaseType._raw(
          FieldDescriptorProto_Type.typeBytes,
          'Y',
          '$coreImportPrefix.List<$coreImportPrefix.int>',
          r'$_setBytes',
          null);

    case FieldDescriptorProto_Type.typeGroup:
      constSuffix = 'G';
      break;
    case FieldDescriptorProto_Type.typeMessage:
      constSuffix = 'M';
      break;
    case FieldDescriptorProto_Type.typeEnum:
      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);
}