blob: dc37b91fb30c7da597c0a642473a46dc702d4c75 [file] [log] [blame]
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
part of 'internal.dart';
/// An object representing an extension field.
class Extension<T> extends FieldInfo<T> {
final String extendee;
Extension(
this.extendee,
String name,
int tagNumber,
int fieldType, {
dynamic defaultOrMaker,
CreateBuilderFunc? subBuilder,
ValueOfFunc? valueOf,
List<ProtobufEnum>? enumValues,
String? protoName,
}) : super(
name,
tagNumber,
null,
fieldType,
defaultOrMaker: defaultOrMaker,
subBuilder: subBuilder,
valueOf: valueOf,
enumValues: enumValues,
protoName: protoName,
);
Extension.repeated(
this.extendee,
String name,
int tagNumber,
int fieldType, {
required CheckFunc<T> check,
CreateBuilderFunc? subBuilder,
ValueOfFunc? valueOf,
List<ProtobufEnum>? enumValues,
String? protoName,
}) : super.repeated(
name,
tagNumber,
null,
fieldType,
check,
subBuilder,
valueOf: valueOf,
enumValues: enumValues,
protoName: protoName,
);
@override
int get hashCode => extendee.hashCode * 31 + tagNumber;
@override
bool operator ==(Object other) {
if (other is! Extension) return false;
final o = other;
return extendee == o.extendee && tagNumber == o.tagNumber;
}
}