Fine. Extract local write/readNameToIdMap functions.
We used this logic twice. I pondered about extracting an extension type, but decided against it, at least for now. Change-Id: I95984c15fa0d17042fe0dc48667846ebdd72961d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/417420 Commit-Queue: Konstantin Shcheglov <scheglov@google.com> Reviewed-by: Johnni Winther <johnniwinther@google.com>
This commit is contained in:
committed by
Commit Queue
parent
257744dfec
commit
2cbdfaa239
@@ -40,17 +40,19 @@ class BundleRequirementsManifest {
|
||||
factory BundleRequirementsManifest.read(SummaryDataReader reader) {
|
||||
var result = BundleRequirementsManifest();
|
||||
|
||||
Map<LookupName, ManifestItemId?> readNameToIdMap() {
|
||||
return reader.readMap(
|
||||
readKey: () => LookupName.read(reader),
|
||||
readValue: () => reader.readOptionalObject(
|
||||
() => ManifestItemId.read(reader),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
result.topLevels.addAll(
|
||||
reader.readMap(
|
||||
readKey: () => reader.readUri(),
|
||||
readValue: () {
|
||||
return reader.readMap(
|
||||
readKey: () => LookupName.read(reader),
|
||||
readValue: () => reader.readOptionalObject(
|
||||
() => ManifestItemId.read(reader),
|
||||
),
|
||||
);
|
||||
},
|
||||
readValue: readNameToIdMap,
|
||||
),
|
||||
);
|
||||
|
||||
@@ -60,14 +62,7 @@ class BundleRequirementsManifest {
|
||||
readValue: () {
|
||||
return reader.readMap(
|
||||
readKey: () => LookupName.read(reader),
|
||||
readValue: () {
|
||||
return reader.readMap(
|
||||
readKey: () => LookupName.read(reader),
|
||||
readValue: () => reader.readOptionalObject(
|
||||
() => ManifestItemId.read(reader),
|
||||
),
|
||||
);
|
||||
},
|
||||
readValue: readNameToIdMap,
|
||||
);
|
||||
},
|
||||
),
|
||||
@@ -268,40 +263,32 @@ class BundleRequirementsManifest {
|
||||
}
|
||||
|
||||
void write(BufferedSink sink) {
|
||||
void writeNameToIdMap(Map<LookupName, ManifestItemId?> map) {
|
||||
sink.writeMap(
|
||||
map,
|
||||
writeKey: (name) => name.write(sink),
|
||||
writeValue: (id) {
|
||||
sink.writeOptionalObject(id, (id) {
|
||||
id.write(sink);
|
||||
});
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
sink.writeMap(
|
||||
topLevels,
|
||||
writeKey: (uri) => sink.writeUri(uri),
|
||||
writeValue: (nameToIdMap) {
|
||||
sink.writeMap(
|
||||
nameToIdMap,
|
||||
writeKey: (name) => name.write(sink),
|
||||
writeValue: (id) {
|
||||
sink.writeOptionalObject(id, (id) {
|
||||
id.write(sink);
|
||||
});
|
||||
},
|
||||
);
|
||||
},
|
||||
writeValue: writeNameToIdMap,
|
||||
);
|
||||
|
||||
sink.writeMap(
|
||||
interfaceMembers,
|
||||
writeKey: (uri) => sink.writeUri(uri),
|
||||
writeValue: (nameToIdMap) {
|
||||
writeValue: (nameToInterfaceMap) {
|
||||
sink.writeMap(
|
||||
nameToIdMap,
|
||||
nameToInterfaceMap,
|
||||
writeKey: (name) => name.write(sink),
|
||||
writeValue: (interface) {
|
||||
sink.writeMap(
|
||||
interface,
|
||||
writeKey: (name) => name.write(sink),
|
||||
writeValue: (id) {
|
||||
sink.writeOptionalObject(id, (id) {
|
||||
id.write(sink);
|
||||
});
|
||||
},
|
||||
);
|
||||
},
|
||||
writeValue: writeNameToIdMap,
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user