blob: a711961a35009f7255e5ec2eff2c6fdc5bbf697b [file] [log] [blame]
// Copyright (c) 2015, 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 protobuf;
/// Modifies a GeneratedMessage so that it's read-only.
abstract class ReadonlyMessageMixin {
BuilderInfo get info_;
bool get _isReadOnly => true;
void addExtension(Extension extension, var value) =>
_readonly("addExtension");
void clear() => _readonly("clear");
void clearExtension(Extension extension) => _readonly("clearExtension");
void clearField(int tagNumber) => _readonly("clearField");
List<T> createRepeatedField<T>(int tagNumber, FieldInfo<T> fi) {
_readonly("createRepeatedField");
return null; // not reached
}
void mergeFromBuffer(List<int> input,
[ExtensionRegistry extensionRegistry = ExtensionRegistry.EMPTY]) =>
_readonly("mergeFromBuffer");
void mergeFromCodedBufferReader(CodedBufferReader input,
[ExtensionRegistry extensionRegistry = ExtensionRegistry.EMPTY]) =>
_readonly("mergeFromCodedBufferReader");
void mergeFromJson(String data,
[ExtensionRegistry extensionRegistry = ExtensionRegistry.EMPTY]) =>
_readonly("mergeFromJson");
void mergeFromJsonMap(Map<String, dynamic> json,
[ExtensionRegistry extensionRegistry = ExtensionRegistry.EMPTY]) =>
_readonly("mergeFromJsonMap");
void mergeFromMessage(GeneratedMessage other) =>
_readonly("mergeFromMessage");
void mergeUnknownFields(UnknownFieldSet unknownFieldSet) =>
_readonly("mergeUnknownFields");
void setExtension(Extension extension, var value) =>
_readonly("setExtension");
void setField(int tagNumber, var value, [int fieldType = null]) =>
_readonly("setField");
void _readonly(String methodName) {
String messageType = info_.messageName;
frozenMessageModificationHandler(messageType, methodName);
}
}
class _ReadonlyUnknownFieldSet extends UnknownFieldSet {
static final _empty = new _ReadonlyUnknownFieldSet();
@override
void clear() => _readonly("clear");
@override
void addField(int number, UnknownFieldSetField field) =>
_readonly("addField");
@override
void mergeField(int number, UnknownFieldSetField field) =>
_readonly("mergeField");
@override
bool mergeFieldFromBuffer(int tag, CodedBufferReader input) {
_readonly("mergeFieldFromBuffer");
return false; // not reached
}
@override
void mergeFromCodedBufferReader(CodedBufferReader input) =>
_readonly("mergeFromCodedBufferReader");
@override
void mergeFromUnknownFieldSet(UnknownFieldSet other) =>
_readonly("mergeFromUnknownFieldSet");
@override
UnknownFieldSetField _getField(int number) {
_readonly("a merge method");
return null; // not reached
}
void _readonly(String methodName) {
frozenMessageModificationHandler('UnknownFieldSet', methodName);
}
}