diff --git a/protobuf/CHANGELOG.md b/protobuf/CHANGELOG.md index 9d10a960..a987ef80 100644 --- a/protobuf/CHANGELOG.md +++ b/protobuf/CHANGELOG.md @@ -5,7 +5,11 @@ using different encoding/decoding libraries based on the target platform. ([#1026]) +* Some of the private `PbFieldType` members are made public, to allow using + them in internal libraries. This type is for internal use only. ([#1027]) + [#1026]: https://github.com/google/protobuf.dart/pull/1026 +[#1027]: https://github.com/google/protobuf.dart/pull/1027 ## 4.1.1 diff --git a/protobuf/lib/protobuf.dart b/protobuf/lib/protobuf.dart index 2c6ef839..d1e569bd 100644 --- a/protobuf/lib/protobuf.dart +++ b/protobuf/lib/protobuf.dart @@ -16,4 +16,6 @@ export 'src/protobuf/internal.dart' FieldSet, FieldSetInternalExtension, GeneratedMessageInternalExtension, - MapFieldInfoInternalExtension; + MapFieldInfoInternalExtension, + mapKeyFieldNumber, + mapValueFieldNumber; diff --git a/protobuf/lib/src/protobuf/builder_info.dart b/protobuf/lib/src/protobuf/builder_info.dart index 24af8110..d21b3dfa 100644 --- a/protobuf/lib/src/protobuf/builder_info.dart +++ b/protobuf/lib/src/protobuf/builder_info.dart @@ -274,7 +274,10 @@ class BuilderInfo { // Repeated, not a message, group, or enum. void p(int tagNumber, String name, int fieldType, {String? protoName}) { - assert(!_isGroupOrMessage(fieldType) && !_isEnum(fieldType)); + assert( + !PbFieldType.isGroupOrMessage(fieldType) && + !PbFieldType.isEnum(fieldType), + ); addRepeated( tagNumber, name, @@ -298,7 +301,9 @@ class BuilderInfo { ProtobufEnum? defaultEnumValue, String? protoName, }) { - assert(_isGroupOrMessage(fieldType) || _isEnum(fieldType)); + assert( + PbFieldType.isGroupOrMessage(fieldType) || PbFieldType.isEnum(fieldType), + ); addRepeated( tagNumber, name, diff --git a/protobuf/lib/src/protobuf/coded_buffer.dart b/protobuf/lib/src/protobuf/coded_buffer.dart index 92102654..0150e1b5 100644 --- a/protobuf/lib/src/protobuf/coded_buffer.dart +++ b/protobuf/lib/src/protobuf/coded_buffer.dart @@ -54,24 +54,24 @@ void _mergeFromCodedBufferReader( // Ignore required/optional packed/unpacked. var fieldType = fi.type; - fieldType &= ~(PbFieldType._PACKED_BIT | PbFieldType._REQUIRED_BIT); + fieldType &= ~(PbFieldType.PACKED_BIT | PbFieldType.REQUIRED_BIT); switch (fieldType) { - case PbFieldType._OPTIONAL_BOOL: + case PbFieldType.OPTIONAL_BOOL: fs._setFieldUnchecked(meta, fi, input.readBool()); break; - case PbFieldType._OPTIONAL_BYTES: + case PbFieldType.OPTIONAL_BYTES: fs._setFieldUnchecked(meta, fi, input.readBytes()); break; - case PbFieldType._OPTIONAL_STRING: + case PbFieldType.OPTIONAL_STRING: fs._setFieldUnchecked(meta, fi, input.readString()); break; - case PbFieldType._OPTIONAL_FLOAT: + case PbFieldType.OPTIONAL_FLOAT: fs._setFieldUnchecked(meta, fi, input.readFloat()); break; - case PbFieldType._OPTIONAL_DOUBLE: + case PbFieldType.OPTIONAL_DOUBLE: fs._setFieldUnchecked(meta, fi, input.readDouble()); break; - case PbFieldType._OPTIONAL_ENUM: + case PbFieldType.OPTIONAL_ENUM: final rawValue = input.readEnum(); final value = meta._decodeEnum(tagNumber, registry, rawValue); if (value == null) { @@ -81,7 +81,7 @@ void _mergeFromCodedBufferReader( fs._setFieldUnchecked(meta, fi, value); } break; - case PbFieldType._OPTIONAL_GROUP: + case PbFieldType.OPTIONAL_GROUP: final subMessage = meta._makeEmptyMessage(tagNumber, registry); final oldValue = fs._getFieldOrNull(fi); if (oldValue != null) { @@ -90,37 +90,37 @@ void _mergeFromCodedBufferReader( input.readGroup(tagNumber, subMessage, registry); fs._setFieldUnchecked(meta, fi, subMessage); break; - case PbFieldType._OPTIONAL_INT32: + case PbFieldType.OPTIONAL_INT32: fs._setFieldUnchecked(meta, fi, input.readInt32()); break; - case PbFieldType._OPTIONAL_INT64: + case PbFieldType.OPTIONAL_INT64: fs._setFieldUnchecked(meta, fi, input.readInt64()); break; - case PbFieldType._OPTIONAL_SINT32: + case PbFieldType.OPTIONAL_SINT32: fs._setFieldUnchecked(meta, fi, input.readSint32()); break; - case PbFieldType._OPTIONAL_SINT64: + case PbFieldType.OPTIONAL_SINT64: fs._setFieldUnchecked(meta, fi, input.readSint64()); break; - case PbFieldType._OPTIONAL_UINT32: + case PbFieldType.OPTIONAL_UINT32: fs._setFieldUnchecked(meta, fi, input.readUint32()); break; - case PbFieldType._OPTIONAL_UINT64: + case PbFieldType.OPTIONAL_UINT64: fs._setFieldUnchecked(meta, fi, input.readUint64()); break; - case PbFieldType._OPTIONAL_FIXED32: + case PbFieldType.OPTIONAL_FIXED32: fs._setFieldUnchecked(meta, fi, input.readFixed32()); break; - case PbFieldType._OPTIONAL_FIXED64: + case PbFieldType.OPTIONAL_FIXED64: fs._setFieldUnchecked(meta, fi, input.readFixed64()); break; - case PbFieldType._OPTIONAL_SFIXED32: + case PbFieldType.OPTIONAL_SFIXED32: fs._setFieldUnchecked(meta, fi, input.readSfixed32()); break; - case PbFieldType._OPTIONAL_SFIXED64: + case PbFieldType.OPTIONAL_SFIXED64: fs._setFieldUnchecked(meta, fi, input.readSfixed64()); break; - case PbFieldType._OPTIONAL_MESSAGE: + case PbFieldType.OPTIONAL_MESSAGE: final GeneratedMessage? oldValue = fs._getFieldOrNull(fi); if (oldValue != null) { input.readMessage(oldValue, registry); @@ -130,7 +130,7 @@ void _mergeFromCodedBufferReader( fs._setFieldUnchecked(meta, fi, subMessage); } break; - case PbFieldType._REPEATED_BOOL: + case PbFieldType.REPEATED_BOOL: final list = fs._ensureRepeatedField(meta, fi); if (wireType == WIRETYPE_LENGTH_DELIMITED) { final limit = input.readInt32(); @@ -150,17 +150,17 @@ void _mergeFromCodedBufferReader( list._addUnchecked(input.readBool()); } break; - case PbFieldType._REPEATED_BYTES: + case PbFieldType.REPEATED_BYTES: final list = fs._ensureRepeatedField(meta, fi); list._checkModifiable('add'); list._addUnchecked(input.readBytes()); break; - case PbFieldType._REPEATED_STRING: + case PbFieldType.REPEATED_STRING: final list = fs._ensureRepeatedField(meta, fi); list._checkModifiable('add'); list._addUnchecked(input.readString()); break; - case PbFieldType._REPEATED_FLOAT: + case PbFieldType.REPEATED_FLOAT: final list = fs._ensureRepeatedField(meta, fi); if (wireType == WIRETYPE_LENGTH_DELIMITED) { final limit = input.readInt32(); @@ -177,7 +177,7 @@ void _mergeFromCodedBufferReader( list._addUnchecked(input.readFloat()); } break; - case PbFieldType._REPEATED_DOUBLE: + case PbFieldType.REPEATED_DOUBLE: final list = fs._ensureRepeatedField(meta, fi); if (wireType == WIRETYPE_LENGTH_DELIMITED) { final limit = input.readInt32(); @@ -194,7 +194,7 @@ void _mergeFromCodedBufferReader( list._addUnchecked(input.readDouble()); } break; - case PbFieldType._REPEATED_ENUM: + case PbFieldType.REPEATED_ENUM: final list = fs._ensureRepeatedField(meta, fi); _readPackableToListEnum( list, @@ -206,13 +206,13 @@ void _mergeFromCodedBufferReader( registry, ); break; - case PbFieldType._REPEATED_GROUP: + case PbFieldType.REPEATED_GROUP: final subMessage = meta._makeEmptyMessage(tagNumber, registry); input.readGroup(tagNumber, subMessage, registry); final list = fs._ensureRepeatedField(meta, fi); list.add(subMessage); break; - case PbFieldType._REPEATED_INT32: + case PbFieldType.REPEATED_INT32: final list = fs._ensureRepeatedField(meta, fi); if (wireType == WIRETYPE_LENGTH_DELIMITED) { final limit = input.readInt32(); @@ -229,7 +229,7 @@ void _mergeFromCodedBufferReader( list._addUnchecked(input.readInt32()); } break; - case PbFieldType._REPEATED_INT64: + case PbFieldType.REPEATED_INT64: final list = fs._ensureRepeatedField(meta, fi); if (wireType == WIRETYPE_LENGTH_DELIMITED) { final limit = input.readInt32(); @@ -246,7 +246,7 @@ void _mergeFromCodedBufferReader( list._addUnchecked(input.readInt64()); } break; - case PbFieldType._REPEATED_SINT32: + case PbFieldType.REPEATED_SINT32: final list = fs._ensureRepeatedField(meta, fi); if (wireType == WIRETYPE_LENGTH_DELIMITED) { final limit = input.readInt32(); @@ -263,7 +263,7 @@ void _mergeFromCodedBufferReader( list._addUnchecked(input.readSint32()); } break; - case PbFieldType._REPEATED_SINT64: + case PbFieldType.REPEATED_SINT64: final list = fs._ensureRepeatedField(meta, fi); if (wireType == WIRETYPE_LENGTH_DELIMITED) { final limit = input.readInt32(); @@ -280,7 +280,7 @@ void _mergeFromCodedBufferReader( list._addUnchecked(input.readSint64()); } break; - case PbFieldType._REPEATED_UINT32: + case PbFieldType.REPEATED_UINT32: final list = fs._ensureRepeatedField(meta, fi); if (wireType == WIRETYPE_LENGTH_DELIMITED) { final limit = input.readInt32(); @@ -297,7 +297,7 @@ void _mergeFromCodedBufferReader( list._addUnchecked(input.readUint32()); } break; - case PbFieldType._REPEATED_UINT64: + case PbFieldType.REPEATED_UINT64: final list = fs._ensureRepeatedField(meta, fi); if (wireType == WIRETYPE_LENGTH_DELIMITED) { final limit = input.readInt32(); @@ -314,7 +314,7 @@ void _mergeFromCodedBufferReader( list._addUnchecked(input.readUint64()); } break; - case PbFieldType._REPEATED_FIXED32: + case PbFieldType.REPEATED_FIXED32: final list = fs._ensureRepeatedField(meta, fi); if (wireType == WIRETYPE_LENGTH_DELIMITED) { final limit = input.readInt32(); @@ -331,7 +331,7 @@ void _mergeFromCodedBufferReader( list._addUnchecked(input.readFixed32()); } break; - case PbFieldType._REPEATED_FIXED64: + case PbFieldType.REPEATED_FIXED64: final list = fs._ensureRepeatedField(meta, fi); if (wireType == WIRETYPE_LENGTH_DELIMITED) { final limit = input.readInt32(); @@ -348,7 +348,7 @@ void _mergeFromCodedBufferReader( list._addUnchecked(input.readFixed64()); } break; - case PbFieldType._REPEATED_SFIXED32: + case PbFieldType.REPEATED_SFIXED32: final list = fs._ensureRepeatedField(meta, fi); if (wireType == WIRETYPE_LENGTH_DELIMITED) { final limit = input.readInt32(); @@ -365,7 +365,7 @@ void _mergeFromCodedBufferReader( list._addUnchecked(input.readSfixed32()); } break; - case PbFieldType._REPEATED_SFIXED64: + case PbFieldType.REPEATED_SFIXED64: final list = fs._ensureRepeatedField(meta, fi); if (wireType == WIRETYPE_LENGTH_DELIMITED) { final limit = input.readInt32(); @@ -382,13 +382,13 @@ void _mergeFromCodedBufferReader( list._addUnchecked(input.readSfixed64()); } break; - case PbFieldType._REPEATED_MESSAGE: + case PbFieldType.REPEATED_MESSAGE: final subMessage = meta._makeEmptyMessage(tagNumber, registry); input.readMessage(subMessage, registry); final list = fs._ensureRepeatedField(meta, fi); list.add(subMessage); break; - case PbFieldType._MAP: + case PbFieldType.MAP: final mapFieldInfo = fi as MapFieldInfo; final mapEntryMeta = mapFieldInfo.mapEntryBuilderInfo; fs diff --git a/protobuf/lib/src/protobuf/coded_buffer_writer.dart b/protobuf/lib/src/protobuf/coded_buffer_writer.dart index 312e8fdd..8809ce29 100644 --- a/protobuf/lib/src/protobuf/coded_buffer_writer.dart +++ b/protobuf/lib/src/protobuf/coded_buffer_writer.dart @@ -65,9 +65,9 @@ class CodedBufferWriter { } void writeField(int fieldNumber, int fieldType, Object? fieldValue) { - final valueType = PbFieldType._baseType(fieldType); + final valueType = PbFieldType.baseType(fieldType); - if ((fieldType & PbFieldType._PACKED_BIT) != 0) { + if ((fieldType & PbFieldType.PACKED_BIT) != 0) { final list = fieldValue as List; if (list.isNotEmpty) { _writeTag(fieldNumber, WIRETYPE_LENGTH_DELIMITED); @@ -80,7 +80,7 @@ class CodedBufferWriter { return; } - if ((fieldType & PbFieldType._MAP_BIT) != 0) { + if ((fieldType & PbFieldType.MAP_BIT) != 0) { final map = fieldValue as PbMap; final keyWireFormat = _wireTypes[_valueTypeIndex(map.keyFieldType)]; final valueWireFormat = _wireTypes[_valueTypeIndex(map.valueFieldType)]; @@ -107,7 +107,7 @@ class CodedBufferWriter { final wireFormat = _wireTypes[_valueTypeIndex(valueType)]; - if ((fieldType & PbFieldType._REPEATED_BIT) != 0) { + if ((fieldType & PbFieldType.REPEATED_BIT) != 0) { final list = fieldValue as List; for (var i = 0; i < list.length; i++) { _writeValue(fieldNumber, valueType, list[i], wireFormat); @@ -353,10 +353,10 @@ class CodedBufferWriter { void _writeValueAs(int valueType, dynamic value) { switch (valueType) { - case PbFieldType._BOOL_BIT: + case PbFieldType.BOOL_BIT: _writeVarint32(value ? 1 : 0); break; - case PbFieldType._BYTES_BIT: + case PbFieldType.BYTES_BIT: final List bytes = value; if (bytes is Uint8List) { _writeBytesNoTag(bytes); @@ -366,7 +366,7 @@ class CodedBufferWriter { _writeBytesNoTag(Uint8List.fromList(bytes)); } break; - case PbFieldType._STRING_BIT: + case PbFieldType.STRING_BIT: final String string = value; if (string.isEmpty) { _writeEmptyBytes(); @@ -374,17 +374,17 @@ class CodedBufferWriter { _writeBytesNoTag(const Utf8Encoder().convert(string)); } break; - case PbFieldType._DOUBLE_BIT: + case PbFieldType.DOUBLE_BIT: _writeDouble(value); break; - case PbFieldType._FLOAT_BIT: + case PbFieldType.FLOAT_BIT: _writeFloat(value); break; - case PbFieldType._ENUM_BIT: + case PbFieldType.ENUM_BIT: final ProtobufEnum enum_ = value; _writeVarint32(enum_.value & 0xffffffff); break; - case PbFieldType._GROUP_BIT: + case PbFieldType.GROUP_BIT: // `value` is `UnknownFieldSet` or `GeneratedMessage`. Test for // `UnknownFieldSet` as it doesn't have subtypes, so the type test will // be fast. @@ -399,37 +399,37 @@ class CodedBufferWriter { message.writeToCodedBufferWriter(this); } break; - case PbFieldType._INT32_BIT: + case PbFieldType.INT32_BIT: _writeVarint64(Int64(value)); break; - case PbFieldType._INT64_BIT: + case PbFieldType.INT64_BIT: _writeVarint64(value); break; - case PbFieldType._SINT32_BIT: + case PbFieldType.SINT32_BIT: _writeVarint32(_encodeZigZag32(value)); break; - case PbFieldType._SINT64_BIT: + case PbFieldType.SINT64_BIT: _writeVarint64(_encodeZigZag64(value)); break; - case PbFieldType._UINT32_BIT: + case PbFieldType.UINT32_BIT: _writeVarint32(value); break; - case PbFieldType._UINT64_BIT: + case PbFieldType.UINT64_BIT: _writeVarint64(value); break; - case PbFieldType._FIXED32_BIT: + case PbFieldType.FIXED32_BIT: _writeInt32(value); break; - case PbFieldType._FIXED64_BIT: + case PbFieldType.FIXED64_BIT: _writeInt64(value); break; - case PbFieldType._SFIXED32_BIT: + case PbFieldType.SFIXED32_BIT: _writeInt32(value); break; - case PbFieldType._SFIXED64_BIT: + case PbFieldType.SFIXED64_BIT: _writeInt64(value); break; - case PbFieldType._MESSAGE_BIT: + case PbFieldType.MESSAGE_BIT: final mark = _startLengthDelimited(); final GeneratedMessage msg = value; msg.writeToCodedBufferWriter(this); @@ -459,7 +459,7 @@ class CodedBufferWriter { ) { _writeTag(fieldNumber, wireFormat); _writeValueAs(valueType, value); - if (valueType == PbFieldType._GROUP_BIT) { + if (valueType == PbFieldType.GROUP_BIT) { _writeTag(fieldNumber, WIRETYPE_END_GROUP); } } diff --git a/protobuf/lib/src/protobuf/extension_registry.dart b/protobuf/lib/src/protobuf/extension_registry.dart index 2535b49c..f7de71af 100644 --- a/protobuf/lib/src/protobuf/extension_registry.dart +++ b/protobuf/lib/src/protobuf/extension_registry.dart @@ -181,7 +181,7 @@ T _reparseMessage( final messageMapDynamic = message._fieldSet._values[field.index!]; if (messageMapDynamic == null) continue; final PbMap messageMap = messageMapDynamic; - if (_isGroupOrMessage(field.valueFieldType)) { + if (PbFieldType.isGroupOrMessage(field.valueFieldType)) { for (final key in messageMap.keys) { final GeneratedMessage value = messageMap[key]; final reparsedValue = _reparseMessage(value, extensionRegistry); diff --git a/protobuf/lib/src/protobuf/field_error.dart b/protobuf/lib/src/protobuf/field_error.dart index c3dda123..0381cc75 100644 --- a/protobuf/lib/src/protobuf/field_error.dart +++ b/protobuf/lib/src/protobuf/field_error.dart @@ -10,53 +10,53 @@ part of 'internal.dart'; /// For enums, group, and message fields, this check is only approximate, /// because the exact type isn't included in [fieldType]. String? _getFieldError(int fieldType, var value) { - switch (PbFieldType._baseType(fieldType)) { - case PbFieldType._BOOL_BIT: + switch (PbFieldType.baseType(fieldType)) { + case PbFieldType.BOOL_BIT: if (value is! bool) return 'not type bool'; return null; - case PbFieldType._BYTES_BIT: + case PbFieldType.BYTES_BIT: if (value is! List) return 'not List'; return null; - case PbFieldType._STRING_BIT: + case PbFieldType.STRING_BIT: if (value is! String) return 'not type String'; return null; - case PbFieldType._FLOAT_BIT: + case PbFieldType.FLOAT_BIT: if (value is! double) return 'not type double'; if (!_isFloat32(value)) return 'out of range for float'; return null; - case PbFieldType._DOUBLE_BIT: + case PbFieldType.DOUBLE_BIT: if (value is! double) return 'not type double'; return null; - case PbFieldType._ENUM_BIT: + case PbFieldType.ENUM_BIT: if (value is! ProtobufEnum) return 'not type ProtobufEnum'; return null; - case PbFieldType._INT32_BIT: - case PbFieldType._SINT32_BIT: - case PbFieldType._SFIXED32_BIT: + case PbFieldType.INT32_BIT: + case PbFieldType.SINT32_BIT: + case PbFieldType.SFIXED32_BIT: if (value is! int) return 'not type int'; if (!_isSigned32(value)) return 'out of range for signed 32-bit int'; return null; - case PbFieldType._UINT32_BIT: - case PbFieldType._FIXED32_BIT: + case PbFieldType.UINT32_BIT: + case PbFieldType.FIXED32_BIT: if (value is! int) return 'not type int'; if (!_isUnsigned32(value)) return 'out of range for unsigned 32-bit int'; return null; - case PbFieldType._INT64_BIT: - case PbFieldType._SINT64_BIT: - case PbFieldType._UINT64_BIT: - case PbFieldType._FIXED64_BIT: - case PbFieldType._SFIXED64_BIT: + case PbFieldType.INT64_BIT: + case PbFieldType.SINT64_BIT: + case PbFieldType.UINT64_BIT: + case PbFieldType.FIXED64_BIT: + case PbFieldType.SFIXED64_BIT: // We always use the full range of the same Dart type. // It's up to the caller to treat the Int64 as signed or unsigned. // See: https://github.com/google/protobuf.dart/issues/44 if (value is! Int64) return 'not Int64'; return null; - case PbFieldType._GROUP_BIT: - case PbFieldType._MESSAGE_BIT: + case PbFieldType.GROUP_BIT: + case PbFieldType.MESSAGE_BIT: if (value is! GeneratedMessage) return 'not a GeneratedMessage'; return null; default: @@ -74,33 +74,33 @@ String? _getFieldError(int fieldType, var value) { /// @nodoc CheckFunc getCheckFunction(int fieldType) { switch (fieldType & ~0x7) { - case PbFieldType._BOOL_BIT: - case PbFieldType._BYTES_BIT: - case PbFieldType._STRING_BIT: - case PbFieldType._DOUBLE_BIT: - case PbFieldType._ENUM_BIT: - case PbFieldType._GROUP_BIT: - case PbFieldType._MESSAGE_BIT: - case PbFieldType._INT64_BIT: - case PbFieldType._SINT64_BIT: - case PbFieldType._SFIXED64_BIT: - case PbFieldType._UINT64_BIT: - case PbFieldType._FIXED64_BIT: + case PbFieldType.BOOL_BIT: + case PbFieldType.BYTES_BIT: + case PbFieldType.STRING_BIT: + case PbFieldType.DOUBLE_BIT: + case PbFieldType.ENUM_BIT: + case PbFieldType.GROUP_BIT: + case PbFieldType.MESSAGE_BIT: + case PbFieldType.INT64_BIT: + case PbFieldType.SINT64_BIT: + case PbFieldType.SFIXED64_BIT: + case PbFieldType.UINT64_BIT: + case PbFieldType.FIXED64_BIT: // We always use the full range of the same Dart type. // It's up to the caller to treat the Int64 as signed or unsigned. // See: https://github.com/google/protobuf.dart/issues/44 return _checkNotNull; - case PbFieldType._FLOAT_BIT: + case PbFieldType.FLOAT_BIT: return _checkFloat; - case PbFieldType._INT32_BIT: - case PbFieldType._SINT32_BIT: - case PbFieldType._SFIXED32_BIT: + case PbFieldType.INT32_BIT: + case PbFieldType.SINT32_BIT: + case PbFieldType.SFIXED32_BIT: return _checkSigned32; - case PbFieldType._UINT32_BIT: - case PbFieldType._FIXED32_BIT: + case PbFieldType.UINT32_BIT: + case PbFieldType.FIXED32_BIT: return _checkUnsigned32; } throw ArgumentError('check function not implemented: $fieldType'); diff --git a/protobuf/lib/src/protobuf/field_info.dart b/protobuf/lib/src/protobuf/field_info.dart index 87d76c27..dbdd7d0e 100644 --- a/protobuf/lib/src/protobuf/field_info.dart +++ b/protobuf/lib/src/protobuf/field_info.dart @@ -114,9 +114,11 @@ class FieldInfo { _protoName = protoName, assert(type != 0), assert( - !_isGroupOrMessage(type) || subBuilder != null || _isMapField(type), + !PbFieldType.isGroupOrMessage(type) || + subBuilder != null || + PbFieldType.isMapField(type), ), - assert(!_isEnum(type) || valueOf != null); + assert(!PbFieldType.isEnum(type) || valueOf != null); // Represents a field that has been removed by a program transformation. FieldInfo.dummy(this.index) @@ -144,8 +146,8 @@ class FieldInfo { String? protoName, }) : makeDefault = (() => PbList(check: check)), _protoName = protoName, - assert(_isRepeated(type)), - assert(!_isEnum(type) || valueOf != null); + assert(PbFieldType.isRepeated(type)), + assert(!PbFieldType.isEnum(type) || valueOf != null); static MakeDefaultFunc? findMakeDefault(int type, dynamic defaultOrMaker) { if (defaultOrMaker == null) return PbFieldType.defaultForType(type); @@ -157,11 +159,11 @@ class FieldInfo { /// been removed by a program transformation. bool get _isDummy => tagNumber == 0; - bool get isRequired => _isRequired(type); - bool get isRepeated => _isRepeated(type); - bool get isGroupOrMessage => _isGroupOrMessage(type); - bool get isEnum => _isEnum(type); - bool get isMapField => _isMapField(type); + bool get isRequired => PbFieldType.isRequired(type); + bool get isRepeated => PbFieldType.isRepeated(type); + bool get isGroupOrMessage => PbFieldType.isGroupOrMessage(type); + bool get isEnum => PbFieldType.isEnum(type); + bool get isMapField => PbFieldType.isMapField(type); /// Returns a read-only default value for a field. Unlike /// [GeneratedMessage.getField], doesn't create a repeated field. @@ -176,7 +178,9 @@ class FieldInfo { /// That is, it doesn't contain any required fields that aren't initialized. bool _hasRequiredValues(dynamic value) { if (value == null) return !isRequired; // missing is okay if optional - if (!_isGroupOrMessage(type)) return true; // primitive and present + if (!PbFieldType.isGroupOrMessage(type)) { + return true; // primitive and present + } if (!isRepeated) { // A required message: recurse. @@ -199,7 +203,7 @@ class FieldInfo { void _appendInvalidFields(List problems, value, String prefix) { if (value == null) { if (isRequired) problems.add('$prefix$name'); - } else if (!_isGroupOrMessage(type)) { + } else if (!PbFieldType.isGroupOrMessage(type)) { // primitive and present } else if (!isRepeated) { // Required message/group: recurse. @@ -293,7 +297,7 @@ class MapFieldInfo extends FieldInfo?> { this.valueCreator, { ProtobufEnum? defaultEnumValue, String? protoName, - }) : assert(_isMapField(type)), + }) : assert(PbFieldType.isMapField(type)), super( name, tagNumber, @@ -303,7 +307,7 @@ class MapFieldInfo extends FieldInfo?> { defaultEnumValue: defaultEnumValue, protoName: protoName, ) { - assert(!_isEnum(type) || valueOf != null); + assert(!PbFieldType.isEnum(type) || valueOf != null); } FieldInfo get valueFieldInfo => diff --git a/protobuf/lib/src/protobuf/field_set.dart b/protobuf/lib/src/protobuf/field_set.dart index aee73b7b..980c03c6 100644 --- a/protobuf/lib/src/protobuf/field_set.dart +++ b/protobuf/lib/src/protobuf/field_set.dart @@ -626,11 +626,11 @@ class FieldSet { } hash = HashUtils.combine(hash, fi.tagNumber); - if (_isBytes(fi.type)) { + if (PbFieldType.isBytes(fi.type)) { // Bytes are represented as a List (Usually with byte-data). // We special case that to match our equality semantics. hash = HashUtils.combine(hash, HashUtils.hashObjects(value)); - } else if (!_isEnum(fi.type)) { + } else if (!PbFieldType.isEnum(fi.type)) { hash = HashUtils.combine(hash, value.hashCode); } else if (fi.isRepeated) { final PbList list = value; @@ -772,7 +772,7 @@ class FieldSet { final MapFieldInfo f = fi as dynamic; final PbMap map = f._ensureMapField(meta, this) as dynamic; - if (_isGroupOrMessage(f.valueFieldType)) { + if (PbFieldType.isGroupOrMessage(f.valueFieldType)) { final PbMap fieldValueMap = fieldValue; for (final entry in fieldValueMap.entries) { map[entry.key] = entry.value.deepCopy(); @@ -784,7 +784,7 @@ class FieldSet { } if (fi.isRepeated) { - if (_isGroupOrMessage(otherFi.type)) { + if (PbFieldType.isGroupOrMessage(otherFi.type)) { // fieldValue must be a PbList of GeneratedMessage. final PbList pbList = fieldValue; final repeatedFields = fi._ensureRepeatedField(meta, this); diff --git a/protobuf/lib/src/protobuf/field_type.dart b/protobuf/lib/src/protobuf/field_type.dart index ad3ac240..67b3194e 100644 --- a/protobuf/lib/src/protobuf/field_type.dart +++ b/protobuf/lib/src/protobuf/field_type.dart @@ -5,253 +5,254 @@ // ignore_for_file: constant_identifier_names,non_constant_identifier_names part of 'internal.dart'; -bool _isRepeated(int fieldType) => (fieldType & PbFieldType._REPEATED_BIT) != 0; +/// Defines constants and functions for dealing with fieldType bits. +class PbFieldType { + static bool isRepeated(int fieldType) => + (fieldType & PbFieldType.REPEATED_BIT) != 0; -bool _isRequired(int fieldType) => (fieldType & PbFieldType._REQUIRED_BIT) != 0; + static bool isRequired(int fieldType) => + (fieldType & PbFieldType.REQUIRED_BIT) != 0; -bool _isEnum(int fieldType) => - PbFieldType._baseType(fieldType) == PbFieldType._ENUM_BIT; + static bool isEnum(int fieldType) => + PbFieldType.baseType(fieldType) == PbFieldType.ENUM_BIT; -bool _isBytes(int fieldType) => - PbFieldType._baseType(fieldType) == PbFieldType._BYTES_BIT; + static bool isBytes(int fieldType) => + PbFieldType.baseType(fieldType) == PbFieldType.BYTES_BIT; -bool _isGroupOrMessage(int fieldType) => - (fieldType & (PbFieldType._GROUP_BIT | PbFieldType._MESSAGE_BIT)) != 0; + static bool isGroupOrMessage(int fieldType) => + (fieldType & (PbFieldType.GROUP_BIT | PbFieldType.MESSAGE_BIT)) != 0; -bool _isMapField(int fieldType) => (fieldType & PbFieldType._MAP_BIT) != 0; + static bool isMapField(int fieldType) => + (fieldType & PbFieldType.MAP_BIT) != 0; -/// Defines constants and functions for dealing with fieldType bits. -class PbFieldType { /// Returns the base field type without any of the required, repeated /// and packed bits. - static int _baseType(int fieldType) => - fieldType & ~(_REQUIRED_BIT | _REPEATED_BIT | _PACKED_BIT | _MAP_BIT); + static int baseType(int fieldType) => + fieldType & ~(REQUIRED_BIT | REPEATED_BIT | PACKED_BIT | MAP_BIT); static MakeDefaultFunc? defaultForType(int type) { switch (type) { - case _OPTIONAL_BOOL: - case _REQUIRED_BOOL: - return _BOOL_FALSE; - case _OPTIONAL_BYTES: - case _REQUIRED_BYTES: - return _BYTES_EMPTY; - case _OPTIONAL_STRING: - case _REQUIRED_STRING: - return _STRING_EMPTY; - case _OPTIONAL_FLOAT: - case _REQUIRED_FLOAT: - case _OPTIONAL_DOUBLE: - case _REQUIRED_DOUBLE: - return _DOUBLE_ZERO; - case _OPTIONAL_INT32: - case _REQUIRED_INT32: - case _OPTIONAL_INT64: - case _REQUIRED_INT64: - case _OPTIONAL_SINT32: - case _REQUIRED_SINT32: - case _OPTIONAL_SINT64: - case _REQUIRED_SINT64: - case _OPTIONAL_UINT32: - case _REQUIRED_UINT32: - case _OPTIONAL_UINT64: - case _REQUIRED_UINT64: - case _OPTIONAL_FIXED32: - case _REQUIRED_FIXED32: - case _OPTIONAL_FIXED64: - case _REQUIRED_FIXED64: - case _OPTIONAL_SFIXED32: - case _REQUIRED_SFIXED32: - case _OPTIONAL_SFIXED64: - case _REQUIRED_SFIXED64: - return _INT_ZERO; + case OPTIONAL_BOOL: + case REQUIRED_BOOL: + return BOOL_FALSE; + case OPTIONAL_BYTES: + case REQUIRED_BYTES: + return BYTES_EMPTY; + case OPTIONAL_STRING: + case REQUIRED_STRING: + return STRING_EMPTY; + case OPTIONAL_FLOAT: + case REQUIRED_FLOAT: + case OPTIONAL_DOUBLE: + case REQUIRED_DOUBLE: + return DOUBLE_ZERO; + case OPTIONAL_INT32: + case REQUIRED_INT32: + case OPTIONAL_INT64: + case REQUIRED_INT64: + case OPTIONAL_SINT32: + case REQUIRED_SINT32: + case OPTIONAL_SINT64: + case REQUIRED_SINT64: + case OPTIONAL_UINT32: + case REQUIRED_UINT32: + case OPTIONAL_UINT64: + case REQUIRED_UINT64: + case OPTIONAL_FIXED32: + case REQUIRED_FIXED32: + case OPTIONAL_FIXED64: + case REQUIRED_FIXED64: + case OPTIONAL_SFIXED32: + case REQUIRED_SFIXED32: + case OPTIONAL_SFIXED64: + case REQUIRED_SFIXED64: + return INT_ZERO; default: return null; } } // Closures commonly used by initializers. - static String _STRING_EMPTY() => ''; - static List _BYTES_EMPTY() => []; - static bool _BOOL_FALSE() => false; - static int _INT_ZERO() => 0; - static double _DOUBLE_ZERO() => 0.0; + static String STRING_EMPTY() => ''; + static List BYTES_EMPTY() => []; + static bool BOOL_FALSE() => false; + static int INT_ZERO() => 0; + static double DOUBLE_ZERO() => 0.0; - static const int _REQUIRED_BIT = 0x1; - static const int _REPEATED_BIT = 0x2; - static const int _PACKED_BIT = 0x4; + static const int REQUIRED_BIT = 0x1; + static const int REPEATED_BIT = 0x2; + static const int PACKED_BIT = 0x4; - static const int _BOOL_BIT = 0x10; - static const int _BYTES_BIT = 0x20; - static const int _STRING_BIT = 0x40; - static const int _DOUBLE_BIT = 0x80; - static const int _FLOAT_BIT = 0x100; - static const int _ENUM_BIT = 0x200; - static const int _GROUP_BIT = 0x400; - static const int _INT32_BIT = 0x800; - static const int _INT64_BIT = 0x1000; - static const int _SINT32_BIT = 0x2000; - static const int _SINT64_BIT = 0x4000; - static const int _UINT32_BIT = 0x8000; - static const int _UINT64_BIT = 0x10000; - static const int _FIXED32_BIT = 0x20000; - static const int _FIXED64_BIT = 0x40000; - static const int _SFIXED32_BIT = 0x80000; - static const int _SFIXED64_BIT = 0x100000; - static const int _MESSAGE_BIT = 0x200000; - static const int _MAP_BIT = 0x400000; + static const int BOOL_BIT = 0x10; + static const int BYTES_BIT = 0x20; + static const int STRING_BIT = 0x40; + static const int DOUBLE_BIT = 0x80; + static const int FLOAT_BIT = 0x100; + static const int ENUM_BIT = 0x200; + static const int GROUP_BIT = 0x400; + static const int INT32_BIT = 0x800; + static const int INT64_BIT = 0x1000; + static const int SINT32_BIT = 0x2000; + static const int SINT64_BIT = 0x4000; + static const int UINT32_BIT = 0x8000; + static const int UINT64_BIT = 0x10000; + static const int FIXED32_BIT = 0x20000; + static const int FIXED64_BIT = 0x40000; + static const int SFIXED32_BIT = 0x80000; + static const int SFIXED64_BIT = 0x100000; + static const int MESSAGE_BIT = 0x200000; + static const int MAP_BIT = 0x400000; - static const int _OPTIONAL_BOOL = _BOOL_BIT; - static const int _OPTIONAL_BYTES = _BYTES_BIT; - static const int _OPTIONAL_STRING = _STRING_BIT; - static const int _OPTIONAL_FLOAT = _FLOAT_BIT; - static const int _OPTIONAL_DOUBLE = _DOUBLE_BIT; - static const int _OPTIONAL_ENUM = _ENUM_BIT; - static const int _OPTIONAL_GROUP = _GROUP_BIT; - static const int _OPTIONAL_INT32 = _INT32_BIT; - static const int _OPTIONAL_INT64 = _INT64_BIT; - static const int _OPTIONAL_SINT32 = _SINT32_BIT; - static const int _OPTIONAL_SINT64 = _SINT64_BIT; - static const int _OPTIONAL_UINT32 = _UINT32_BIT; - static const int _OPTIONAL_UINT64 = _UINT64_BIT; - static const int _OPTIONAL_FIXED32 = _FIXED32_BIT; - static const int _OPTIONAL_FIXED64 = _FIXED64_BIT; - static const int _OPTIONAL_SFIXED32 = _SFIXED32_BIT; - static const int _OPTIONAL_SFIXED64 = _SFIXED64_BIT; - static const int _OPTIONAL_MESSAGE = _MESSAGE_BIT; + static const int OPTIONAL_BOOL = BOOL_BIT; + static const int OPTIONAL_BYTES = BYTES_BIT; + static const int OPTIONAL_STRING = STRING_BIT; + static const int OPTIONAL_FLOAT = FLOAT_BIT; + static const int OPTIONAL_DOUBLE = DOUBLE_BIT; + static const int OPTIONAL_ENUM = ENUM_BIT; + static const int OPTIONAL_GROUP = GROUP_BIT; + static const int OPTIONAL_INT32 = INT32_BIT; + static const int OPTIONAL_INT64 = INT64_BIT; + static const int OPTIONAL_SINT32 = SINT32_BIT; + static const int OPTIONAL_SINT64 = SINT64_BIT; + static const int OPTIONAL_UINT32 = UINT32_BIT; + static const int OPTIONAL_UINT64 = UINT64_BIT; + static const int OPTIONAL_FIXED32 = FIXED32_BIT; + static const int OPTIONAL_FIXED64 = FIXED64_BIT; + static const int OPTIONAL_SFIXED32 = SFIXED32_BIT; + static const int OPTIONAL_SFIXED64 = SFIXED64_BIT; + static const int OPTIONAL_MESSAGE = MESSAGE_BIT; - static const int _REQUIRED_BOOL = _REQUIRED_BIT | _BOOL_BIT; - static const int _REQUIRED_BYTES = _REQUIRED_BIT | _BYTES_BIT; - static const int _REQUIRED_STRING = _REQUIRED_BIT | _STRING_BIT; - static const int _REQUIRED_FLOAT = _REQUIRED_BIT | _FLOAT_BIT; - static const int _REQUIRED_DOUBLE = _REQUIRED_BIT | _DOUBLE_BIT; - static const int _REQUIRED_ENUM = _REQUIRED_BIT | _ENUM_BIT; - static const int _REQUIRED_GROUP = _REQUIRED_BIT | _GROUP_BIT; - static const int _REQUIRED_INT32 = _REQUIRED_BIT | _INT32_BIT; - static const int _REQUIRED_INT64 = _REQUIRED_BIT | _INT64_BIT; - static const int _REQUIRED_SINT32 = _REQUIRED_BIT | _SINT32_BIT; - static const int _REQUIRED_SINT64 = _REQUIRED_BIT | _SINT64_BIT; - static const int _REQUIRED_UINT32 = _REQUIRED_BIT | _UINT32_BIT; - static const int _REQUIRED_UINT64 = _REQUIRED_BIT | _UINT64_BIT; - static const int _REQUIRED_FIXED32 = _REQUIRED_BIT | _FIXED32_BIT; - static const int _REQUIRED_FIXED64 = _REQUIRED_BIT | _FIXED64_BIT; - static const int _REQUIRED_SFIXED32 = _REQUIRED_BIT | _SFIXED32_BIT; - static const int _REQUIRED_SFIXED64 = _REQUIRED_BIT | _SFIXED64_BIT; - static const int _REQUIRED_MESSAGE = _REQUIRED_BIT | _MESSAGE_BIT; + static const int REQUIRED_BOOL = REQUIRED_BIT | BOOL_BIT; + static const int REQUIRED_BYTES = REQUIRED_BIT | BYTES_BIT; + static const int REQUIRED_STRING = REQUIRED_BIT | STRING_BIT; + static const int REQUIRED_FLOAT = REQUIRED_BIT | FLOAT_BIT; + static const int REQUIRED_DOUBLE = REQUIRED_BIT | DOUBLE_BIT; + static const int REQUIRED_ENUM = REQUIRED_BIT | ENUM_BIT; + static const int REQUIRED_GROUP = REQUIRED_BIT | GROUP_BIT; + static const int REQUIRED_INT32 = REQUIRED_BIT | INT32_BIT; + static const int REQUIRED_INT64 = REQUIRED_BIT | INT64_BIT; + static const int REQUIRED_SINT32 = REQUIRED_BIT | SINT32_BIT; + static const int REQUIRED_SINT64 = REQUIRED_BIT | SINT64_BIT; + static const int REQUIRED_UINT32 = REQUIRED_BIT | UINT32_BIT; + static const int REQUIRED_UINT64 = REQUIRED_BIT | UINT64_BIT; + static const int REQUIRED_FIXED32 = REQUIRED_BIT | FIXED32_BIT; + static const int REQUIRED_FIXED64 = REQUIRED_BIT | FIXED64_BIT; + static const int REQUIRED_SFIXED32 = REQUIRED_BIT | SFIXED32_BIT; + static const int REQUIRED_SFIXED64 = REQUIRED_BIT | SFIXED64_BIT; + static const int REQUIRED_MESSAGE = REQUIRED_BIT | MESSAGE_BIT; - static const int _REPEATED_BOOL = _REPEATED_BIT | _BOOL_BIT; - static const int _REPEATED_BYTES = _REPEATED_BIT | _BYTES_BIT; - static const int _REPEATED_STRING = _REPEATED_BIT | _STRING_BIT; - static const int _REPEATED_FLOAT = _REPEATED_BIT | _FLOAT_BIT; - static const int _REPEATED_DOUBLE = _REPEATED_BIT | _DOUBLE_BIT; - static const int _REPEATED_ENUM = _REPEATED_BIT | _ENUM_BIT; - static const int _REPEATED_GROUP = _REPEATED_BIT | _GROUP_BIT; - static const int _REPEATED_INT32 = _REPEATED_BIT | _INT32_BIT; - static const int _REPEATED_INT64 = _REPEATED_BIT | _INT64_BIT; - static const int _REPEATED_SINT32 = _REPEATED_BIT | _SINT32_BIT; - static const int _REPEATED_SINT64 = _REPEATED_BIT | _SINT64_BIT; - static const int _REPEATED_UINT32 = _REPEATED_BIT | _UINT32_BIT; - static const int _REPEATED_UINT64 = _REPEATED_BIT | _UINT64_BIT; - static const int _REPEATED_FIXED32 = _REPEATED_BIT | _FIXED32_BIT; - static const int _REPEATED_FIXED64 = _REPEATED_BIT | _FIXED64_BIT; - static const int _REPEATED_SFIXED32 = _REPEATED_BIT | _SFIXED32_BIT; - static const int _REPEATED_SFIXED64 = _REPEATED_BIT | _SFIXED64_BIT; - static const int _REPEATED_MESSAGE = _REPEATED_BIT | _MESSAGE_BIT; + static const int REPEATED_BOOL = REPEATED_BIT | BOOL_BIT; + static const int REPEATED_BYTES = REPEATED_BIT | BYTES_BIT; + static const int REPEATED_STRING = REPEATED_BIT | STRING_BIT; + static const int REPEATED_FLOAT = REPEATED_BIT | FLOAT_BIT; + static const int REPEATED_DOUBLE = REPEATED_BIT | DOUBLE_BIT; + static const int REPEATED_ENUM = REPEATED_BIT | ENUM_BIT; + static const int REPEATED_GROUP = REPEATED_BIT | GROUP_BIT; + static const int REPEATED_INT32 = REPEATED_BIT | INT32_BIT; + static const int REPEATED_INT64 = REPEATED_BIT | INT64_BIT; + static const int REPEATED_SINT32 = REPEATED_BIT | SINT32_BIT; + static const int REPEATED_SINT64 = REPEATED_BIT | SINT64_BIT; + static const int REPEATED_UINT32 = REPEATED_BIT | UINT32_BIT; + static const int REPEATED_UINT64 = REPEATED_BIT | UINT64_BIT; + static const int REPEATED_FIXED32 = REPEATED_BIT | FIXED32_BIT; + static const int REPEATED_FIXED64 = REPEATED_BIT | FIXED64_BIT; + static const int REPEATED_SFIXED32 = REPEATED_BIT | SFIXED32_BIT; + static const int REPEATED_SFIXED64 = REPEATED_BIT | SFIXED64_BIT; + static const int REPEATED_MESSAGE = REPEATED_BIT | MESSAGE_BIT; - static const int _PACKED_BOOL = _REPEATED_BIT | _PACKED_BIT | _BOOL_BIT; - static const int _PACKED_FLOAT = _REPEATED_BIT | _PACKED_BIT | _FLOAT_BIT; - static const int _PACKED_DOUBLE = _REPEATED_BIT | _PACKED_BIT | _DOUBLE_BIT; - static const int _PACKED_ENUM = _REPEATED_BIT | _PACKED_BIT | _ENUM_BIT; - static const int _PACKED_INT32 = _REPEATED_BIT | _PACKED_BIT | _INT32_BIT; - static const int _PACKED_INT64 = _REPEATED_BIT | _PACKED_BIT | _INT64_BIT; - static const int _PACKED_SINT32 = _REPEATED_BIT | _PACKED_BIT | _SINT32_BIT; - static const int _PACKED_SINT64 = _REPEATED_BIT | _PACKED_BIT | _SINT64_BIT; - static const int _PACKED_UINT32 = _REPEATED_BIT | _PACKED_BIT | _UINT32_BIT; - static const int _PACKED_UINT64 = _REPEATED_BIT | _PACKED_BIT | _UINT64_BIT; - static const int _PACKED_FIXED32 = _REPEATED_BIT | _PACKED_BIT | _FIXED32_BIT; - static const int _PACKED_FIXED64 = _REPEATED_BIT | _PACKED_BIT | _FIXED64_BIT; - static const int _PACKED_SFIXED32 = - _REPEATED_BIT | _PACKED_BIT | _SFIXED32_BIT; - static const int _PACKED_SFIXED64 = - _REPEATED_BIT | _PACKED_BIT | _SFIXED64_BIT; + static const int PACKED_BOOL = REPEATED_BIT | PACKED_BIT | BOOL_BIT; + static const int PACKED_FLOAT = REPEATED_BIT | PACKED_BIT | FLOAT_BIT; + static const int PACKED_DOUBLE = REPEATED_BIT | PACKED_BIT | DOUBLE_BIT; + static const int PACKED_ENUM = REPEATED_BIT | PACKED_BIT | ENUM_BIT; + static const int PACKED_INT32 = REPEATED_BIT | PACKED_BIT | INT32_BIT; + static const int PACKED_INT64 = REPEATED_BIT | PACKED_BIT | INT64_BIT; + static const int PACKED_SINT32 = REPEATED_BIT | PACKED_BIT | SINT32_BIT; + static const int PACKED_SINT64 = REPEATED_BIT | PACKED_BIT | SINT64_BIT; + static const int PACKED_UINT32 = REPEATED_BIT | PACKED_BIT | UINT32_BIT; + static const int PACKED_UINT64 = REPEATED_BIT | PACKED_BIT | UINT64_BIT; + static const int PACKED_FIXED32 = REPEATED_BIT | PACKED_BIT | FIXED32_BIT; + static const int PACKED_FIXED64 = REPEATED_BIT | PACKED_BIT | FIXED64_BIT; + static const int PACKED_SFIXED32 = REPEATED_BIT | PACKED_BIT | SFIXED32_BIT; + static const int PACKED_SFIXED64 = REPEATED_BIT | PACKED_BIT | SFIXED64_BIT; - static const int _MAP = _MAP_BIT | _MESSAGE_BIT; + static const int MAP = MAP_BIT | MESSAGE_BIT; // Short names for use in generated code. // _O_ptional. - static const int OB = _OPTIONAL_BOOL; - static const int OY = _OPTIONAL_BYTES; - static const int OS = _OPTIONAL_STRING; - static const int OF = _OPTIONAL_FLOAT; - static const int OD = _OPTIONAL_DOUBLE; - static const int OE = _OPTIONAL_ENUM; - static const int OG = _OPTIONAL_GROUP; - static const int O3 = _OPTIONAL_INT32; - static const int O6 = _OPTIONAL_INT64; - static const int OS3 = _OPTIONAL_SINT32; - static const int OS6 = _OPTIONAL_SINT64; - static const int OU3 = _OPTIONAL_UINT32; - static const int OU6 = _OPTIONAL_UINT64; - static const int OF3 = _OPTIONAL_FIXED32; - static const int OF6 = _OPTIONAL_FIXED64; - static const int OSF3 = _OPTIONAL_SFIXED32; - static const int OSF6 = _OPTIONAL_SFIXED64; - static const int OM = _OPTIONAL_MESSAGE; + static const int OB = OPTIONAL_BOOL; + static const int OY = OPTIONAL_BYTES; + static const int OS = OPTIONAL_STRING; + static const int OF = OPTIONAL_FLOAT; + static const int OD = OPTIONAL_DOUBLE; + static const int OE = OPTIONAL_ENUM; + static const int OG = OPTIONAL_GROUP; + static const int O3 = OPTIONAL_INT32; + static const int O6 = OPTIONAL_INT64; + static const int OS3 = OPTIONAL_SINT32; + static const int OS6 = OPTIONAL_SINT64; + static const int OU3 = OPTIONAL_UINT32; + static const int OU6 = OPTIONAL_UINT64; + static const int OF3 = OPTIONAL_FIXED32; + static const int OF6 = OPTIONAL_FIXED64; + static const int OSF3 = OPTIONAL_SFIXED32; + static const int OSF6 = OPTIONAL_SFIXED64; + static const int OM = OPTIONAL_MESSAGE; // re_Q_uired. - static const int QB = _REQUIRED_BOOL; - static const int QY = _REQUIRED_BYTES; - static const int QS = _REQUIRED_STRING; - static const int QF = _REQUIRED_FLOAT; - static const int QD = _REQUIRED_DOUBLE; - static const int QE = _REQUIRED_ENUM; - static const int QG = _REQUIRED_GROUP; - static const int Q3 = _REQUIRED_INT32; - static const int Q6 = _REQUIRED_INT64; - static const int QS3 = _REQUIRED_SINT32; - static const int QS6 = _REQUIRED_SINT64; - static const int QU3 = _REQUIRED_UINT32; - static const int QU6 = _REQUIRED_UINT64; - static const int QF3 = _REQUIRED_FIXED32; - static const int QF6 = _REQUIRED_FIXED64; - static const int QSF3 = _REQUIRED_SFIXED32; - static const int QSF6 = _REQUIRED_SFIXED64; - static const int QM = _REQUIRED_MESSAGE; + static const int QB = REQUIRED_BOOL; + static const int QY = REQUIRED_BYTES; + static const int QS = REQUIRED_STRING; + static const int QF = REQUIRED_FLOAT; + static const int QD = REQUIRED_DOUBLE; + static const int QE = REQUIRED_ENUM; + static const int QG = REQUIRED_GROUP; + static const int Q3 = REQUIRED_INT32; + static const int Q6 = REQUIRED_INT64; + static const int QS3 = REQUIRED_SINT32; + static const int QS6 = REQUIRED_SINT64; + static const int QU3 = REQUIRED_UINT32; + static const int QU6 = REQUIRED_UINT64; + static const int QF3 = REQUIRED_FIXED32; + static const int QF6 = REQUIRED_FIXED64; + static const int QSF3 = REQUIRED_SFIXED32; + static const int QSF6 = REQUIRED_SFIXED64; + static const int QM = REQUIRED_MESSAGE; // re_P_eated. - static const int PB = _REPEATED_BOOL; - static const int PY = _REPEATED_BYTES; - static const int PS = _REPEATED_STRING; - static const int PF = _REPEATED_FLOAT; - static const int PD = _REPEATED_DOUBLE; - static const int PE = _REPEATED_ENUM; - static const int PG = _REPEATED_GROUP; - static const int P3 = _REPEATED_INT32; - static const int P6 = _REPEATED_INT64; - static const int PS3 = _REPEATED_SINT32; - static const int PS6 = _REPEATED_SINT64; - static const int PU3 = _REPEATED_UINT32; - static const int PU6 = _REPEATED_UINT64; - static const int PF3 = _REPEATED_FIXED32; - static const int PF6 = _REPEATED_FIXED64; - static const int PSF3 = _REPEATED_SFIXED32; - static const int PSF6 = _REPEATED_SFIXED64; - static const int PM = _REPEATED_MESSAGE; + static const int PB = REPEATED_BOOL; + static const int PY = REPEATED_BYTES; + static const int PS = REPEATED_STRING; + static const int PF = REPEATED_FLOAT; + static const int PD = REPEATED_DOUBLE; + static const int PE = REPEATED_ENUM; + static const int PG = REPEATED_GROUP; + static const int P3 = REPEATED_INT32; + static const int P6 = REPEATED_INT64; + static const int PS3 = REPEATED_SINT32; + static const int PS6 = REPEATED_SINT64; + static const int PU3 = REPEATED_UINT32; + static const int PU6 = REPEATED_UINT64; + static const int PF3 = REPEATED_FIXED32; + static const int PF6 = REPEATED_FIXED64; + static const int PSF3 = REPEATED_SFIXED32; + static const int PSF6 = REPEATED_SFIXED64; + static const int PM = REPEATED_MESSAGE; // pac_K_ed. - static const int KB = _PACKED_BOOL; - static const int KE = _PACKED_ENUM; - static const int KF = _PACKED_FLOAT; - static const int KD = _PACKED_DOUBLE; - static const int K3 = _PACKED_INT32; - static const int K6 = _PACKED_INT64; - static const int KS3 = _PACKED_SINT32; - static const int KS6 = _PACKED_SINT64; - static const int KU3 = _PACKED_UINT32; - static const int KU6 = _PACKED_UINT64; - static const int KF3 = _PACKED_FIXED32; - static const int KF6 = _PACKED_FIXED64; - static const int KSF3 = _PACKED_SFIXED32; - static const int KSF6 = _PACKED_SFIXED64; + static const int KB = PACKED_BOOL; + static const int KE = PACKED_ENUM; + static const int KF = PACKED_FLOAT; + static const int KD = PACKED_DOUBLE; + static const int K3 = PACKED_INT32; + static const int K6 = PACKED_INT64; + static const int KS3 = PACKED_SINT32; + static const int KS6 = PACKED_SINT64; + static const int KU3 = PACKED_UINT32; + static const int KU6 = PACKED_UINT64; + static const int KF3 = PACKED_FIXED32; + static const int KF6 = PACKED_FIXED64; + static const int KSF3 = PACKED_SFIXED32; + static const int KSF6 = PACKED_SFIXED64; - static const int M = _MAP; + static const int M = MAP; } diff --git a/protobuf/lib/src/protobuf/generated_message.dart b/protobuf/lib/src/protobuf/generated_message.dart index 28f4992b..35caa69b 100644 --- a/protobuf/lib/src/protobuf/generated_message.dart +++ b/protobuf/lib/src/protobuf/generated_message.dart @@ -418,7 +418,7 @@ abstract class GeneratedMessage { /// Sets the value of a non-repeated extension field to [value]. void setExtension(Extension extension, Object value) { - if (_isRepeated(extension.type)) { + if (PbFieldType.isRepeated(extension.type)) { throw ArgumentError( _fieldSet._setFieldFailedMessage( extension, diff --git a/protobuf/lib/src/protobuf/json.dart b/protobuf/lib/src/protobuf/json.dart index f2175675..5021fc07 100644 --- a/protobuf/lib/src/protobuf/json.dart +++ b/protobuf/lib/src/protobuf/json.dart @@ -6,24 +6,24 @@ part of 'internal.dart'; Map _writeToJsonMap(FieldSet fs) { dynamic convertToMap(dynamic fieldValue, int fieldType) { - final baseType = PbFieldType._baseType(fieldType); + final baseType = PbFieldType.baseType(fieldType); - if (_isRepeated(fieldType)) { + if (PbFieldType.isRepeated(fieldType)) { final PbList list = fieldValue; return List.from(list.map((e) => convertToMap(e, baseType))); } switch (baseType) { - case PbFieldType._BOOL_BIT: - case PbFieldType._STRING_BIT: - case PbFieldType._INT32_BIT: - case PbFieldType._SINT32_BIT: - case PbFieldType._UINT32_BIT: - case PbFieldType._FIXED32_BIT: - case PbFieldType._SFIXED32_BIT: + case PbFieldType.BOOL_BIT: + case PbFieldType.STRING_BIT: + case PbFieldType.INT32_BIT: + case PbFieldType.SINT32_BIT: + case PbFieldType.UINT32_BIT: + case PbFieldType.FIXED32_BIT: + case PbFieldType.SFIXED32_BIT: return fieldValue; - case PbFieldType._FLOAT_BIT: - case PbFieldType._DOUBLE_BIT: + case PbFieldType.FLOAT_BIT: + case PbFieldType.DOUBLE_BIT: final value = fieldValue as double; if (value.isNaN) { return nan; @@ -35,22 +35,22 @@ Map _writeToJsonMap(FieldSet fs) { return fieldValue.toInt(); } return value; - case PbFieldType._BYTES_BIT: + case PbFieldType.BYTES_BIT: // Encode 'bytes' as a base64-encoded string. return base64Encode(fieldValue as List); - case PbFieldType._ENUM_BIT: + case PbFieldType.ENUM_BIT: final ProtobufEnum enum_ = fieldValue; return enum_.value; // assume |value| < 2^52 - case PbFieldType._INT64_BIT: - case PbFieldType._SINT64_BIT: - case PbFieldType._SFIXED64_BIT: + case PbFieldType.INT64_BIT: + case PbFieldType.SINT64_BIT: + case PbFieldType.SFIXED64_BIT: return fieldValue.toString(); - case PbFieldType._UINT64_BIT: - case PbFieldType._FIXED64_BIT: + case PbFieldType.UINT64_BIT: + case PbFieldType.FIXED64_BIT: final Int64 int_ = fieldValue; return int_.toStringUnsigned(); - case PbFieldType._GROUP_BIT: - case PbFieldType._MESSAGE_BIT: + case PbFieldType.GROUP_BIT: + case PbFieldType.MESSAGE_BIT: final GeneratedMessage msg = fieldValue; return msg.writeToJsonMap(); default: @@ -73,7 +73,7 @@ Map _writeToJsonMap(FieldSet fs) { if (value == null || (value is List && value.isEmpty)) { continue; // It's missing, repeated, or an empty byte array. } - if (_isMapField(fi.type)) { + if (PbFieldType.isMapField(fi.type)) { result['${fi.tagNumber}'] = writeMap( value, fi as MapFieldInfo, @@ -246,8 +246,8 @@ dynamic _convertJsonValue( ExtensionRegistry? registry, ) { String expectedType; // for exception message - switch (PbFieldType._baseType(fieldType)) { - case PbFieldType._BOOL_BIT: + switch (PbFieldType.baseType(fieldType)) { + case PbFieldType.BOOL_BIT: if (value is bool) { return value; } else if (value is String) { @@ -265,20 +265,20 @@ dynamic _convertJsonValue( } expectedType = 'bool (true, false, "true", "false", 1, 0)'; break; - case PbFieldType._BYTES_BIT: + case PbFieldType.BYTES_BIT: if (value is String) { return base64Decode(value); } expectedType = 'Base64 String'; break; - case PbFieldType._STRING_BIT: + case PbFieldType.STRING_BIT: if (value is String) { return value; } expectedType = 'String'; break; - case PbFieldType._FLOAT_BIT: - case PbFieldType._DOUBLE_BIT: + case PbFieldType.FLOAT_BIT: + case PbFieldType.DOUBLE_BIT: // Allow quoted values, although we don't emit them. if (value is double) { return value; @@ -289,7 +289,7 @@ dynamic _convertJsonValue( } expectedType = 'num or stringified num'; break; - case PbFieldType._ENUM_BIT: + case PbFieldType.ENUM_BIT: // Allow quoted values, although we don't emit them. if (value is String) { value = int.parse(value); @@ -302,15 +302,15 @@ dynamic _convertJsonValue( } expectedType = 'int or stringified int'; break; - case PbFieldType._INT32_BIT: - case PbFieldType._SINT32_BIT: - case PbFieldType._SFIXED32_BIT: + case PbFieldType.INT32_BIT: + case PbFieldType.SINT32_BIT: + case PbFieldType.SFIXED32_BIT: if (value is int) return value; if (value is String) return int.parse(value); expectedType = 'int or stringified int'; break; - case PbFieldType._UINT32_BIT: - case PbFieldType._FIXED32_BIT: + case PbFieldType.UINT32_BIT: + case PbFieldType.FIXED32_BIT: int? validatedValue; if (value is int) validatedValue = value; if (value is String) validatedValue = int.parse(value); @@ -320,17 +320,17 @@ dynamic _convertJsonValue( if (validatedValue != null) return validatedValue; expectedType = 'int or stringified int'; break; - case PbFieldType._INT64_BIT: - case PbFieldType._SINT64_BIT: - case PbFieldType._UINT64_BIT: - case PbFieldType._FIXED64_BIT: - case PbFieldType._SFIXED64_BIT: + case PbFieldType.INT64_BIT: + case PbFieldType.SINT64_BIT: + case PbFieldType.UINT64_BIT: + case PbFieldType.FIXED64_BIT: + case PbFieldType.SFIXED64_BIT: if (value is int) return Int64(value); if (value is String) return Int64.parseInt(value); expectedType = 'int or stringified int'; break; - case PbFieldType._GROUP_BIT: - case PbFieldType._MESSAGE_BIT: + case PbFieldType.GROUP_BIT: + case PbFieldType.MESSAGE_BIT: if (value is Map) { final messageValue = value as Map; final subMessage = meta._makeEmptyMessage(tagNumber, registry); diff --git a/protobuf/lib/src/protobuf/pb_map.dart b/protobuf/lib/src/protobuf/pb_map.dart index f9c5379d..2816eb69 100644 --- a/protobuf/lib/src/protobuf/pb_map.dart +++ b/protobuf/lib/src/protobuf/pb_map.dart @@ -4,6 +4,9 @@ part of 'internal.dart'; +const mapKeyFieldNumber = 1; +const mapValueFieldNumber = 2; + /// A [MapBase] implementation used for protobuf `map` fields. class PbMap extends MapBase { /// Key type of the map. Per proto2 and proto3 specs, this needs to be an @@ -121,7 +124,7 @@ class PbMap extends MapBase { PbMap freeze() { _isReadOnly = true; - if (_isGroupOrMessage(valueFieldType)) { + if (PbFieldType.isGroupOrMessage(valueFieldType)) { for (final subMessage in values as Iterable) { subMessage.freeze(); } diff --git a/protobuf/lib/src/protobuf/proto3_json.dart b/protobuf/lib/src/protobuf/proto3_json.dart index c1dbe11a..0fe4849c 100644 --- a/protobuf/lib/src/protobuf/proto3_json.dart +++ b/protobuf/lib/src/protobuf/proto3_json.dart @@ -6,26 +6,26 @@ part of 'internal.dart'; Object? _writeToProto3Json(FieldSet fs, TypeRegistry typeRegistry) { String? convertToMapKey(dynamic key, int keyType) { - final baseType = PbFieldType._baseType(keyType); + final baseType = PbFieldType.baseType(keyType); - assert(!_isRepeated(keyType)); + assert(!PbFieldType.isRepeated(keyType)); switch (baseType) { - case PbFieldType._BOOL_BIT: + case PbFieldType.BOOL_BIT: return key ? 'true' : 'false'; - case PbFieldType._STRING_BIT: + case PbFieldType.STRING_BIT: return key; - case PbFieldType._UINT64_BIT: + case PbFieldType.UINT64_BIT: return (key as Int64).toStringUnsigned(); - case PbFieldType._INT32_BIT: - case PbFieldType._SINT32_BIT: - case PbFieldType._UINT32_BIT: - case PbFieldType._FIXED32_BIT: - case PbFieldType._SFIXED32_BIT: - case PbFieldType._INT64_BIT: - case PbFieldType._SINT64_BIT: - case PbFieldType._SFIXED64_BIT: - case PbFieldType._FIXED64_BIT: + case PbFieldType.INT32_BIT: + case PbFieldType.SINT32_BIT: + case PbFieldType.UINT32_BIT: + case PbFieldType.FIXED32_BIT: + case PbFieldType.SFIXED32_BIT: + case PbFieldType.INT64_BIT: + case PbFieldType.SINT64_BIT: + case PbFieldType.SFIXED64_BIT: + case PbFieldType.FIXED64_BIT: return key.toString(); default: throw StateError('Not a valid key type $keyType'); @@ -35,33 +35,33 @@ Object? _writeToProto3Json(FieldSet fs, TypeRegistry typeRegistry) { Object? valueToProto3Json(dynamic fieldValue, int? fieldType) { if (fieldValue == null) return null; - if (_isGroupOrMessage(fieldType!)) { + if (PbFieldType.isGroupOrMessage(fieldType!)) { return _writeToProto3Json( (fieldValue as GeneratedMessage)._fieldSet, typeRegistry, ); - } else if (_isEnum(fieldType)) { + } else if (PbFieldType.isEnum(fieldType)) { return (fieldValue as ProtobufEnum).name; } else { - final baseType = PbFieldType._baseType(fieldType); + final baseType = PbFieldType.baseType(fieldType); switch (baseType) { - case PbFieldType._BOOL_BIT: + case PbFieldType.BOOL_BIT: return fieldValue as bool; - case PbFieldType._STRING_BIT: + case PbFieldType.STRING_BIT: return fieldValue; - case PbFieldType._INT32_BIT: - case PbFieldType._SINT32_BIT: - case PbFieldType._UINT32_BIT: - case PbFieldType._FIXED32_BIT: - case PbFieldType._SFIXED32_BIT: + case PbFieldType.INT32_BIT: + case PbFieldType.SINT32_BIT: + case PbFieldType.UINT32_BIT: + case PbFieldType.FIXED32_BIT: + case PbFieldType.SFIXED32_BIT: return fieldValue; - case PbFieldType._INT64_BIT: - case PbFieldType._SINT64_BIT: - case PbFieldType._SFIXED64_BIT: - case PbFieldType._FIXED64_BIT: + case PbFieldType.INT64_BIT: + case PbFieldType.SINT64_BIT: + case PbFieldType.SFIXED64_BIT: + case PbFieldType.FIXED64_BIT: return fieldValue.toString(); - case PbFieldType._FLOAT_BIT: - case PbFieldType._DOUBLE_BIT: + case PbFieldType.FLOAT_BIT: + case PbFieldType.DOUBLE_BIT: final double value = fieldValue; if (value.isNaN) { return nan; @@ -73,9 +73,9 @@ Object? _writeToProto3Json(FieldSet fs, TypeRegistry typeRegistry) { return value.toInt(); } return value; - case PbFieldType._UINT64_BIT: + case PbFieldType.UINT64_BIT: return (fieldValue as Int64).toStringUnsigned(); - case PbFieldType._BYTES_BIT: + case PbFieldType.BYTES_BIT: return base64Encode(fieldValue); default: throw StateError( @@ -176,13 +176,13 @@ void _mergeFromProto3Json( void recursionHelper(Object? json, FieldSet fieldSet) { Object? convertProto3JsonValue(Object value, FieldInfo fieldInfo) { final fieldType = fieldInfo.type; - switch (PbFieldType._baseType(fieldType)) { - case PbFieldType._BOOL_BIT: + switch (PbFieldType.baseType(fieldType)) { + case PbFieldType.BOOL_BIT: if (value is bool) { return value; } throw context.parseException('Expected bool value', json); - case PbFieldType._BYTES_BIT: + case PbFieldType.BYTES_BIT: if (value is String) { Uint8List result; try { @@ -199,13 +199,13 @@ void _mergeFromProto3Json( 'Expected bytes encoded as base64 String', value, ); - case PbFieldType._STRING_BIT: + case PbFieldType.STRING_BIT: if (value is String) { return value; } throw context.parseException('Expected String value', value); - case PbFieldType._FLOAT_BIT: - case PbFieldType._DOUBLE_BIT: + case PbFieldType.FLOAT_BIT: + case PbFieldType.DOUBLE_BIT: if (value is double) { return value; } else if (value is num) { @@ -221,7 +221,7 @@ void _mergeFromProto3Json( 'Expected a double represented as a String or number', value, ); - case PbFieldType._ENUM_BIT: + case PbFieldType.ENUM_BIT: if (value is String) { // TODO(sigurdm): Do we want to avoid linear search here? Measure... final result = @@ -245,8 +245,8 @@ void _mergeFromProto3Json( 'Expected enum as a string or integer', value, ); - case PbFieldType._UINT32_BIT: - case PbFieldType._FIXED32_BIT: + case PbFieldType.UINT32_BIT: + case PbFieldType.FIXED32_BIT: int result; if (value is int) { result = value; @@ -259,9 +259,9 @@ void _mergeFromProto3Json( ); } return _check32BitUnsignedProto3(result, context); - case PbFieldType._INT32_BIT: - case PbFieldType._SINT32_BIT: - case PbFieldType._SFIXED32_BIT: + case PbFieldType.INT32_BIT: + case PbFieldType.SINT32_BIT: + case PbFieldType.SFIXED32_BIT: int result; if (value is int) { result = value; @@ -275,7 +275,7 @@ void _mergeFromProto3Json( } _check32BitSignedProto3(result, context); return result; - case PbFieldType._UINT64_BIT: + case PbFieldType.UINT64_BIT: Int64 result; if (value is int) { result = Int64(value); @@ -288,10 +288,10 @@ void _mergeFromProto3Json( ); } return result; - case PbFieldType._INT64_BIT: - case PbFieldType._SINT64_BIT: - case PbFieldType._FIXED64_BIT: - case PbFieldType._SFIXED64_BIT: + case PbFieldType.INT64_BIT: + case PbFieldType.SINT64_BIT: + case PbFieldType.FIXED64_BIT: + case PbFieldType.SFIXED64_BIT: if (value is int) return Int64(value); if (value is String) { Int64 result; @@ -309,8 +309,8 @@ void _mergeFromProto3Json( 'Expected int or stringified int', value, ); - case PbFieldType._GROUP_BIT: - case PbFieldType._MESSAGE_BIT: + case PbFieldType.GROUP_BIT: + case PbFieldType.MESSAGE_BIT: final subMessage = fieldInfo.subBuilder!(); recursionHelper(value, subMessage._fieldSet); return subMessage; @@ -320,8 +320,8 @@ void _mergeFromProto3Json( } Object decodeMapKey(String key, int fieldType) { - switch (PbFieldType._baseType(fieldType)) { - case PbFieldType._BOOL_BIT: + switch (PbFieldType.baseType(fieldType)) { + case PbFieldType.BOOL_BIT: switch (key) { case 'true': return true; @@ -333,26 +333,26 @@ void _mergeFromProto3Json( key, ); } - case PbFieldType._STRING_BIT: + case PbFieldType.STRING_BIT: return key; - case PbFieldType._UINT64_BIT: + case PbFieldType.UINT64_BIT: // TODO(sigurdm): We do not throw on negative values here. // That would probably require going via bignum. return _tryParse64BitProto3(json, key, context); - case PbFieldType._INT64_BIT: - case PbFieldType._SINT64_BIT: - case PbFieldType._SFIXED64_BIT: - case PbFieldType._FIXED64_BIT: + case PbFieldType.INT64_BIT: + case PbFieldType.SINT64_BIT: + case PbFieldType.SFIXED64_BIT: + case PbFieldType.FIXED64_BIT: return _tryParse64BitProto3(json, key, context); - case PbFieldType._INT32_BIT: - case PbFieldType._SINT32_BIT: - case PbFieldType._FIXED32_BIT: - case PbFieldType._SFIXED32_BIT: + case PbFieldType.INT32_BIT: + case PbFieldType.SINT32_BIT: + case PbFieldType.FIXED32_BIT: + case PbFieldType.SFIXED32_BIT: return _check32BitSignedProto3( _tryParse32BitProto3(key, context), context, ); - case PbFieldType._UINT32_BIT: + case PbFieldType.UINT32_BIT: return _check32BitUnsignedProto3( _tryParse32BitProto3(key, context), context, @@ -400,7 +400,7 @@ void _mergeFromProto3Json( } } - if (_isMapField(fieldInfo.type)) { + if (PbFieldType.isMapField(fieldInfo.type)) { if (value is Map) { final mapFieldInfo = fieldInfo as MapFieldInfo; final Map fieldValues = fieldSet._ensureMapField(meta, fieldInfo); @@ -421,7 +421,7 @@ void _mergeFromProto3Json( } else { throw context.parseException('Expected a map', value); } - } else if (_isRepeated(fieldInfo.type)) { + } else if (PbFieldType.isRepeated(fieldInfo.type)) { if (value is List) { final values = fieldSet._ensureRepeatedField(meta, fieldInfo); for (var i = 0; i < value.length; i++) { @@ -433,7 +433,7 @@ void _mergeFromProto3Json( } else { throw context.parseException('Expected a list', value); } - } else if (_isGroupOrMessage(fieldInfo.type)) { + } else if (PbFieldType.isGroupOrMessage(fieldInfo.type)) { // TODO(sigurdm) consider a cleaner separation between parsing and // merging. final parsedSubMessage = diff --git a/protobuf/lib/src/protobuf/unknown_field_set.dart b/protobuf/lib/src/protobuf/unknown_field_set.dart index 62cee24b..196c6b4f 100644 --- a/protobuf/lib/src/protobuf/unknown_field_set.dart +++ b/protobuf/lib/src/protobuf/unknown_field_set.dart @@ -283,11 +283,11 @@ class UnknownFieldSetField { output.writeField(fieldNumber, type, value); } - write(PbFieldType._REPEATED_UINT64, varints); - write(PbFieldType._REPEATED_FIXED32, fixed32s); - write(PbFieldType._REPEATED_FIXED64, fixed64s); - write(PbFieldType._REPEATED_BYTES, lengthDelimited); - write(PbFieldType._REPEATED_GROUP, groups); + write(PbFieldType.REPEATED_UINT64, varints); + write(PbFieldType.REPEATED_FIXED32, fixed32s); + write(PbFieldType.REPEATED_FIXED64, fixed64s); + write(PbFieldType.REPEATED_BYTES, lengthDelimited); + write(PbFieldType.REPEATED_GROUP, groups); } void addGroup(UnknownFieldSet value) { diff --git a/protobuf/lib/src/protobuf/wire_format.dart b/protobuf/lib/src/protobuf/wire_format.dart index 1dabb638..375ee4b2 100644 --- a/protobuf/lib/src/protobuf/wire_format.dart +++ b/protobuf/lib/src/protobuf/wire_format.dart @@ -38,32 +38,32 @@ int makeTag(int fieldNumber, int tag) => (fieldNumber << _TAG_TYPE_BITS) | tag; /// Returns true if the wireType can be merged into the given fieldType. bool _wireTypeMatches(int fieldType, int wireType) { - switch (PbFieldType._baseType(fieldType)) { - case PbFieldType._BOOL_BIT: - case PbFieldType._ENUM_BIT: - case PbFieldType._INT32_BIT: - case PbFieldType._INT64_BIT: - case PbFieldType._SINT32_BIT: - case PbFieldType._SINT64_BIT: - case PbFieldType._UINT32_BIT: - case PbFieldType._UINT64_BIT: + switch (PbFieldType.baseType(fieldType)) { + case PbFieldType.BOOL_BIT: + case PbFieldType.ENUM_BIT: + case PbFieldType.INT32_BIT: + case PbFieldType.INT64_BIT: + case PbFieldType.SINT32_BIT: + case PbFieldType.SINT64_BIT: + case PbFieldType.UINT32_BIT: + case PbFieldType.UINT64_BIT: return wireType == WIRETYPE_VARINT || wireType == WIRETYPE_LENGTH_DELIMITED; - case PbFieldType._FLOAT_BIT: - case PbFieldType._FIXED32_BIT: - case PbFieldType._SFIXED32_BIT: + case PbFieldType.FLOAT_BIT: + case PbFieldType.FIXED32_BIT: + case PbFieldType.SFIXED32_BIT: return wireType == WIRETYPE_FIXED32 || wireType == WIRETYPE_LENGTH_DELIMITED; - case PbFieldType._DOUBLE_BIT: - case PbFieldType._FIXED64_BIT: - case PbFieldType._SFIXED64_BIT: + case PbFieldType.DOUBLE_BIT: + case PbFieldType.FIXED64_BIT: + case PbFieldType.SFIXED64_BIT: return wireType == WIRETYPE_FIXED64 || wireType == WIRETYPE_LENGTH_DELIMITED; - case PbFieldType._BYTES_BIT: - case PbFieldType._STRING_BIT: - case PbFieldType._MESSAGE_BIT: + case PbFieldType.BYTES_BIT: + case PbFieldType.STRING_BIT: + case PbFieldType.MESSAGE_BIT: return wireType == WIRETYPE_LENGTH_DELIMITED; - case PbFieldType._GROUP_BIT: + case PbFieldType.GROUP_BIT: return wireType == WIRETYPE_START_GROUP; default: return false;