Skip to content

Commit 6f6631e

Browse files
committed
Fixups
1 parent de0c060 commit 6f6631e

File tree

10 files changed

+15
-85
lines changed

10 files changed

+15
-85
lines changed

protobuf/lib/src/protobuf/builder_info.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ class BuilderInfo {
171171
// Repeated, not a message, group, or enum.
172172
void p<T>(int tagNumber, String name, FieldType fieldType,
173173
{String? protoName}) {
174-
assert(!fieldType.isGroup && !fieldType.isMessage && !fieldType.isEnum);
174+
assert(!fieldType.isGroupOrMessage && !fieldType.isEnum);
175175
addRepeated<T>(tagNumber, name, fieldType, getCheckFunction(fieldType),
176176
null, null, null,
177177
protoName: protoName);
@@ -184,7 +184,7 @@ class BuilderInfo {
184184
List<ProtobufEnum>? enumValues,
185185
ProtobufEnum? defaultEnumValue,
186186
String? protoName}) {
187-
assert(fieldType.isGroup || fieldType.isMessage || fieldType.isEnum);
187+
assert(fieldType.isGroupOrMessage || fieldType.isEnum);
188188
addRepeated<T>(tagNumber, name, fieldType, _checkNotNull, subBuilder,
189189
valueOf, enumValues,
190190
defaultEnumValue: defaultEnumValue, protoName: protoName);

protobuf/lib/src/protobuf/coded_buffer_writer.dart

Lines changed: 2 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,9 @@ class CodedBufferWriter {
8181

8282
if (fieldType.isMap) {
8383
final keyWireFormat =
84-
_wireTypes[_valueTypeIndex(fieldValue.keyFieldType)];
84+
_baseTypeToWireType[fieldValue.keyFieldType.baseType.index];
8585
final valueWireFormat =
86-
_wireTypes[_valueTypeIndex(fieldValue.valueFieldType)];
86+
_baseTypeToWireType[fieldValue.valueFieldType.baseType.index];
8787

8888
fieldValue.forEach((key, value) {
8989
_writeTag(fieldNumber, WIRETYPE_LENGTH_DELIMITED);
@@ -436,65 +436,6 @@ class CodedBufferWriter {
436436
}
437437
}
438438

439-
/// This function maps a power-of-2 value (2^0 .. 2^31) to a unique value
440-
/// in the 0..31 range.
441-
///
442-
/// For more details see "Using de Bruijn Sequences to Index a 1 in
443-
/// a Computer Word"[1]
444-
///
445-
/// Note: this is guaranteed to work after compilation to JavaScript
446-
/// where multiplication becomes a floating point multiplication.
447-
///
448-
/// [1] http://supertech.csail.mit.edu/papers/debruijn.pdf
449-
int _valueTypeIndex(int powerOf2) {
450-
assert(powerOf2 & (powerOf2 - 1) == 0, '$powerOf2 is not a power of 2');
451-
return ((0x077CB531 * powerOf2) >> 27) & 31;
452-
}
453-
454-
/// Precomputed indices for all FbFieldType._XYZ_BIT values:
455-
///
456-
/// _XYZ_BIT_INDEX = _valueTypeIndex(FbFieldType._XYZ_BIT)
457-
///
458-
static const _BOOL_BIT_INDEX = 14;
459-
static const _BYTES_BIT_INDEX = 29;
460-
static const _STRING_BIT_INDEX = 27;
461-
static const _DOUBLE_BIT_INDEX = 23;
462-
static const _FLOAT_BIT_INDEX = 15;
463-
static const _ENUM_BIT_INDEX = 31;
464-
static const _GROUP_BIT_INDEX = 30;
465-
static const _INT32_BIT_INDEX = 28;
466-
static const _INT64_BIT_INDEX = 25;
467-
static const _SINT32_BIT_INDEX = 18;
468-
static const _SINT64_BIT_INDEX = 5;
469-
static const _UINT32_BIT_INDEX = 11;
470-
static const _UINT64_BIT_INDEX = 22;
471-
static const _FIXED32_BIT_INDEX = 13;
472-
static const _FIXED64_BIT_INDEX = 26;
473-
static const _SFIXED32_BIT_INDEX = 21;
474-
static const _SFIXED64_BIT_INDEX = 10;
475-
static const _MESSAGE_BIT_INDEX = 20;
476-
477-
/// Mapping from value types to wire-types indexed by _valueTypeIndex(...).
478-
static final Uint8List _wireTypes = Uint8List(32)
479-
..[_BOOL_BIT_INDEX] = WIRETYPE_VARINT
480-
..[_BYTES_BIT_INDEX] = WIRETYPE_LENGTH_DELIMITED
481-
..[_STRING_BIT_INDEX] = WIRETYPE_LENGTH_DELIMITED
482-
..[_DOUBLE_BIT_INDEX] = WIRETYPE_FIXED64
483-
..[_FLOAT_BIT_INDEX] = WIRETYPE_FIXED32
484-
..[_ENUM_BIT_INDEX] = WIRETYPE_VARINT
485-
..[_GROUP_BIT_INDEX] = WIRETYPE_START_GROUP
486-
..[_INT32_BIT_INDEX] = WIRETYPE_VARINT
487-
..[_INT64_BIT_INDEX] = WIRETYPE_VARINT
488-
..[_SINT32_BIT_INDEX] = WIRETYPE_VARINT
489-
..[_SINT64_BIT_INDEX] = WIRETYPE_VARINT
490-
..[_UINT32_BIT_INDEX] = WIRETYPE_VARINT
491-
..[_UINT64_BIT_INDEX] = WIRETYPE_VARINT
492-
..[_FIXED32_BIT_INDEX] = WIRETYPE_FIXED32
493-
..[_FIXED64_BIT_INDEX] = WIRETYPE_FIXED64
494-
..[_SFIXED32_BIT_INDEX] = WIRETYPE_FIXED32
495-
..[_SFIXED64_BIT_INDEX] = WIRETYPE_FIXED64
496-
..[_MESSAGE_BIT_INDEX] = WIRETYPE_LENGTH_DELIMITED;
497-
498439
static final List<int> _baseTypeToWireType = [
499440
WIRETYPE_VARINT, // 0: bool
500441
WIRETYPE_LENGTH_DELIMITED, // 1: bytes

protobuf/lib/src/protobuf/extension_registry.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ T _reparseMessage<T extends GeneratedMessage>(
148148
} else if (field is MapFieldInfo) {
149149
final messageMap = message._fieldSet._values[field.index!];
150150
if (messageMap == null) continue;
151-
if (field.valueFieldType!.isGroup || field.valueFieldType!.isMessage) {
151+
if (field.valueFieldType!.isGroupOrMessage) {
152152
for (var key in messageMap.keys) {
153153
final GeneratedMessage value = messageMap[key];
154154
final reparsedValue = _reparseMessage(value, extensionRegistry);

protobuf/lib/src/protobuf/field_error.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ CheckFunc getCheckFunction(FieldType fieldType) {
8888
case FieldBaseType.enum_:
8989
case FieldBaseType.group:
9090
case FieldBaseType.message:
91+
case FieldBaseType.map:
9192
case FieldBaseType.int64:
9293
case FieldBaseType.sint64:
9394
case FieldBaseType.sfixed64:
@@ -109,9 +110,6 @@ CheckFunc getCheckFunction(FieldType fieldType) {
109110
case FieldBaseType.uint32:
110111
case FieldBaseType.fixed32:
111112
return _checkUnsigned32;
112-
113-
case FieldBaseType.map:
114-
throw ArgumentError('check function not implemented: $fieldType');
115113
}
116114
}
117115

protobuf/lib/src/protobuf/field_info.dart

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,7 @@ class FieldInfo<T> {
8181
: makeDefault = findMakeDefault(type, defaultOrMaker),
8282
check = null,
8383
protoName = protoName ?? _unCamelCase(name),
84-
assert((!type.isGroup && !type.isMessage) ||
85-
subBuilder != null ||
86-
type.isMap),
84+
assert(!type.isGroupOrMessage || subBuilder != null || type.isMap),
8785
assert(!type.isEnum || valueOf != null);
8886

8987
// Represents a field that has been removed by a program transformation.
@@ -141,7 +139,7 @@ class FieldInfo<T> {
141139
/// That is, it doesn't contain any required fields that aren't initialized.
142140
bool _hasRequiredValues(value) {
143141
if (value == null) return !isRequired; // missing is okay if optional
144-
if (!type.isGroup && !type.isMessage) return true; // primitive and present
142+
if (!type.isGroupOrMessage) return true; // primitive and present
145143

146144
if (!isRepeated) {
147145
// A required message: recurse.
@@ -164,7 +162,7 @@ class FieldInfo<T> {
164162
void _appendInvalidFields(List<String> problems, value, String prefix) {
165163
if (value == null) {
166164
if (isRequired) problems.add('$prefix$name');
167-
} else if (!type.isGroup && !type.isMessage) {
165+
} else if (!type.isGroupOrMessage) {
168166
// primitive and present
169167
} else if (!isRepeated) {
170168
// Required message/group: recurse.

protobuf/lib/src/protobuf/field_set.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -799,11 +799,11 @@ class _FieldSet {
799799
fi = otherFi;
800800
}
801801

802-
var mustClone = otherFi.type.isGroup || otherFi.type.isMessage;
802+
var mustClone = otherFi.type.isGroupOrMessage;
803803

804804
if (fi!.isMapField) {
805805
var f = fi as MapFieldInfo<dynamic, dynamic>;
806-
mustClone = f.valueFieldType!.isGroup || f.valueFieldType!.isMessage;
806+
mustClone = f.valueFieldType!.isGroupOrMessage;
807807
var map = f._ensureMapField(meta, this) as PbMap<dynamic, dynamic>;
808808
if (mustClone) {
809809
for (MapEntry entry in fieldValue.entries) {

protobuf/lib/src/protobuf/field_type.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,6 @@ enum FieldBaseType {
154154
group,
155155
}
156156

157-
/// Defines constants and functions for dealing with fieldType bits.
158157
class PbFieldType {
159158
static MakeDefaultFunc? _defaultForType(FieldType type) {
160159
switch (type.baseType) {

protobuf/lib/src/protobuf/json.dart

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,8 @@ Map<String, dynamic> _writeToJsonMap(_FieldSet fs) {
4141

4242
case FieldBaseType.group:
4343
case FieldBaseType.message:
44-
return fieldValue.writeToJsonMap();
45-
4644
case FieldBaseType.map:
47-
throw 'Unknown type $FieldBaseType.map';
45+
return fieldValue.writeToJsonMap();
4846
}
4947
}
5048

@@ -271,6 +269,7 @@ dynamic _convertJsonValue(BuilderInfo meta, _FieldSet fs, value, int tagNumber,
271269

272270
case FieldBaseType.group:
273271
case FieldBaseType.message:
272+
case FieldBaseType.map:
274273
if (value is Map) {
275274
final messageValue = value as Map<String, dynamic>;
276275
var subMessage = meta._makeEmptyMessage(tagNumber, registry);
@@ -279,9 +278,6 @@ dynamic _convertJsonValue(BuilderInfo meta, _FieldSet fs, value, int tagNumber,
279278
}
280279
expectedType = 'nested message or group';
281280
break;
282-
283-
case FieldBaseType.map:
284-
throw ArgumentError('Unknown type $fieldType');
285281
}
286282
throw ArgumentError('Expected type $expectedType, got $value');
287283
}

protobuf/lib/src/protobuf/pb_map.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ class PbMap<K, V> extends MapBase<K, V> {
115115

116116
PbMap freeze() {
117117
_isReadonly = true;
118-
if (valueFieldType!.isGroup || valueFieldType!.isMessage) {
118+
if (valueFieldType!.isGroupOrMessage) {
119119
for (var subMessage in values as Iterable<GeneratedMessage>) {
120120
subMessage.freeze();
121121
}

protobuf/lib/src/protobuf/proto3_json.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -300,12 +300,10 @@ void _mergeFromProto3Json(
300300

301301
case FieldBaseType.group:
302302
case FieldBaseType.message:
303+
case FieldBaseType.map:
303304
var subMessage = fieldInfo.subBuilder!();
304305
recursionHelper(value, subMessage._fieldSet);
305306
return subMessage;
306-
307-
case FieldBaseType.map:
308-
throw StateError('Unknown type $fieldType');
309307
}
310308
}
311309

0 commit comments

Comments
 (0)