aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/proto2/message.js
diff options
context:
space:
mode:
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/proto2/message.js')
-rw-r--r--contexts/data/lib/closure-library/closure/goog/proto2/message.js837
1 files changed, 0 insertions, 837 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/proto2/message.js b/contexts/data/lib/closure-library/closure/goog/proto2/message.js
deleted file mode 100644
index c0def32..0000000
--- a/contexts/data/lib/closure-library/closure/goog/proto2/message.js
+++ /dev/null
@@ -1,837 +0,0 @@
-// Copyright 2008 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview Protocol Buffer Message base class.
- */
-
-goog.provide('goog.proto2.Message');
-
-goog.require('goog.proto2.Descriptor');
-goog.require('goog.proto2.FieldDescriptor');
-goog.require('goog.proto2.Util');
-goog.require('goog.string');
-
-
-
-/**
- * Abstract base class for all Protocol Buffer 2 messages. It will be
- * subclassed in the code generated by the Protocol Compiler. Any other
- * subclasses are prohibited.
- * @constructor
- */
-goog.proto2.Message = function() {
- /**
- * Stores the field values in this message. Keyed by the tag of the fields.
- * @type {*}
- * @private
- */
- this.values_ = {};
-
- /**
- * Stores the field information (i.e. metadata) about this message.
- * @type {Object.<number, !goog.proto2.FieldDescriptor>}
- * @private
- */
- this.fields_ = this.getDescriptor().getFieldsMap();
-
- /**
- * The lazy deserializer for this message instance, if any.
- * @type {goog.proto2.LazyDeserializer}
- * @private
- */
- this.lazyDeserializer_ = null;
-
- /**
- * A map of those fields deserialized, from tag number to their deserialized
- * value.
- * @type {Object}
- * @private
- */
- this.deserializedFields_ = null;
-};
-
-
-/**
- * An enumeration defining the possible field types.
- * Should be a mirror of that defined in descriptor.h.
- *
- * TODO(user): Remove this alias. The code generator generates code that
- * references this enum, so it needs to exist until the code generator is
- * changed. The enum was moved to from Message to FieldDescriptor to avoid a
- * dependency cycle.
- *
- * Use goog.proto2.FieldDescriptor.FieldType instead.
- *
- * @enum {number}
- */
-goog.proto2.Message.FieldType = {
- DOUBLE: 1,
- FLOAT: 2,
- INT64: 3,
- UINT64: 4,
- INT32: 5,
- FIXED64: 6,
- FIXED32: 7,
- BOOL: 8,
- STRING: 9,
- GROUP: 10,
- MESSAGE: 11,
- BYTES: 12,
- UINT32: 13,
- ENUM: 14,
- SFIXED32: 15,
- SFIXED64: 16,
- SINT32: 17,
- SINT64: 18
-};
-
-
-/**
- * All instances of goog.proto2.Message should have a static descriptorObj_
- * property. This is a JSON representation of a Descriptor. The real Descriptor
- * will be deserialized lazily in the getDescriptor() method.
- *
- * This declaration is just here for documentation purposes.
- * goog.proto2.Message does not have its own descriptor.
- *
- * @type {undefined}
- * @private
- */
-goog.proto2.Message.descriptorObj_;
-
-
-/**
- * All instances of goog.proto2.Message should have a static descriptor_
- * property. The Descriptor will be deserialized lazily in the getDescriptor()
- * method.
- *
- * This declaration is just here for documentation purposes.
- * goog.proto2.Message does not have its own descriptor.
- *
- * @type {undefined}
- * @private
- */
-goog.proto2.Message.descriptor_;
-
-
-/**
- * Initializes the message with a lazy deserializer and its associated data.
- * This method should be called by internal methods ONLY.
- *
- * @param {goog.proto2.LazyDeserializer} deserializer The lazy deserializer to
- * use to decode the data on the fly.
- *
- * @param {*} data The data to decode/deserialize.
- */
-goog.proto2.Message.prototype.initializeForLazyDeserializer = function(
- deserializer, data) {
-
- this.lazyDeserializer_ = deserializer;
- this.values_ = data;
- this.deserializedFields_ = {};
-};
-
-
-/**
- * Sets the value of an unknown field, by tag.
- *
- * @param {number} tag The tag of an unknown field (must be >= 1).
- * @param {*} value The value for that unknown field.
- */
-goog.proto2.Message.prototype.setUnknown = function(tag, value) {
- goog.proto2.Util.assert(!this.fields_[tag],
- 'Field is not unknown in this message');
-
- goog.proto2.Util.assert(tag >= 1, 'Tag is not valid');
- goog.proto2.Util.assert(value !== null, 'Value cannot be null');
-
- this.values_[tag] = value;
- if (this.deserializedFields_) {
- delete this.deserializedFields_[tag];
- }
-};
-
-
-/**
- * Iterates over all the unknown fields in the message.
- *
- * @param {function(number, *)} callback A callback method
- * which gets invoked for each unknown field.
- * @param {Object=} opt_scope The scope under which to execute the callback.
- * If not given, the current message will be used.
- */
-goog.proto2.Message.prototype.forEachUnknown = function(callback, opt_scope) {
- var scope = opt_scope || this;
- for (var key in this.values_) {
- if (!this.fields_[/** @type {number} */ (key)]) {
- callback.call(scope, Number(key), this.values_[key]);
- }
- }
-};
-
-
-/**
- * Returns the descriptor which describes the current message.
- *
- * This only works if we assume people never subclass protobufs.
- *
- * @return {!goog.proto2.Descriptor} The descriptor.
- */
-goog.proto2.Message.prototype.getDescriptor = function() {
- // NOTE(nicksantos): These sorts of indirect references to descriptor
- // through this.constructor are fragile. See the comments
- // in set$Metadata for more info.
- var Ctor = this.constructor;
- return Ctor.descriptor_ ||
- (Ctor.descriptor_ = goog.proto2.Message.create$Descriptor(
- Ctor, Ctor.descriptorObj_));
-};
-
-
-/**
- * Returns whether there is a value stored at the field specified by the
- * given field descriptor.
- *
- * @param {goog.proto2.FieldDescriptor} field The field for which to check
- * if there is a value.
- *
- * @return {boolean} True if a value was found.
- */
-goog.proto2.Message.prototype.has = function(field) {
- goog.proto2.Util.assert(
- field.getContainingType() == this.getDescriptor(),
- 'The current message does not contain the given field');
-
- return this.has$Value(field.getTag());
-};
-
-
-/**
- * Returns the array of values found for the given repeated field.
- *
- * @param {goog.proto2.FieldDescriptor} field The field for which to
- * return the values.
- *
- * @return {!Array} The values found.
- */
-goog.proto2.Message.prototype.arrayOf = function(field) {
- goog.proto2.Util.assert(
- field.getContainingType() == this.getDescriptor(),
- 'The current message does not contain the given field');
-
- return this.array$Values(field.getTag());
-};
-
-
-/**
- * Returns the number of values stored in the given field.
- *
- * @param {goog.proto2.FieldDescriptor} field The field for which to count
- * the number of values.
- *
- * @return {number} The count of the values in the given field.
- */
-goog.proto2.Message.prototype.countOf = function(field) {
- goog.proto2.Util.assert(
- field.getContainingType() == this.getDescriptor(),
- 'The current message does not contain the given field');
-
- return this.count$Values(field.getTag());
-};
-
-
-/**
- * Returns the value stored at the field specified by the
- * given field descriptor.
- *
- * @param {goog.proto2.FieldDescriptor} field The field for which to get the
- * value.
- * @param {number=} opt_index If the field is repeated, the index to use when
- * looking up the value.
- *
- * @return {*} The value found or null if none.
- */
-goog.proto2.Message.prototype.get = function(field, opt_index) {
- goog.proto2.Util.assert(
- field.getContainingType() == this.getDescriptor(),
- 'The current message does not contain the given field');
-
- return this.get$Value(field.getTag(), opt_index);
-};
-
-
-/**
- * Returns the value stored at the field specified by the
- * given field descriptor or the default value if none exists.
- *
- * @param {goog.proto2.FieldDescriptor} field The field for which to get the
- * value.
- * @param {number=} opt_index If the field is repeated, the index to use when
- * looking up the value.
- *
- * @return {*} The value found or the default if none.
- */
-goog.proto2.Message.prototype.getOrDefault = function(field, opt_index) {
- goog.proto2.Util.assert(
- field.getContainingType() == this.getDescriptor(),
- 'The current message does not contain the given field');
-
- return this.get$ValueOrDefault(field.getTag(), opt_index);
-};
-
-
-/**
- * Stores the given value to the field specified by the
- * given field descriptor. Note that the field must not be repeated.
- *
- * @param {goog.proto2.FieldDescriptor} field The field for which to set
- * the value.
- * @param {*} value The new value for the field.
- */
-goog.proto2.Message.prototype.set = function(field, value) {
- goog.proto2.Util.assert(
- field.getContainingType() == this.getDescriptor(),
- 'The current message does not contain the given field');
-
- this.set$Value(field.getTag(), value);
-};
-
-
-/**
- * Adds the given value to the field specified by the
- * given field descriptor. Note that the field must be repeated.
- *
- * @param {goog.proto2.FieldDescriptor} field The field in which to add the
- * the value.
- * @param {*} value The new value to add to the field.
- */
-goog.proto2.Message.prototype.add = function(field, value) {
- goog.proto2.Util.assert(
- field.getContainingType() == this.getDescriptor(),
- 'The current message does not contain the given field');
-
- this.add$Value(field.getTag(), value);
-};
-
-
-/**
- * Clears the field specified.
- *
- * @param {goog.proto2.FieldDescriptor} field The field to clear.
- */
-goog.proto2.Message.prototype.clear = function(field) {
- goog.proto2.Util.assert(
- field.getContainingType() == this.getDescriptor(),
- 'The current message does not contain the given field');
-
- this.clear$Field(field.getTag());
-};
-
-
-/**
- * Compares this message with another one ignoring the unknown fields.
- * @param {*} other The other message.
- * @return {boolean} Whether they are equal. Returns false if the {@code other}
- * argument is a different type of message or not a message.
- */
-goog.proto2.Message.prototype.equals = function(other) {
- if (!other || this.constructor != other.constructor) {
- return false;
- }
-
- var fields = this.getDescriptor().getFields();
- for (var i = 0; i < fields.length; i++) {
- var field = fields[i];
- if (this.has(field) != other.has(field)) {
- return false;
- }
-
- if (this.has(field)) {
- var isComposite = field.isCompositeType();
-
- function fieldsEqual(value1, value2) {
- return isComposite ? value1.equals(value2) : value1 == value2;
- }
-
- var thisValue = this.getValueForField_(field);
- var otherValue = other.getValueForField_(field);
-
- if (field.isRepeated()) {
- // In this case thisValue and otherValue are arrays.
- if (thisValue.length != otherValue.length) {
- return false;
- }
- for (var j = 0; j < thisValue.length; j++) {
- if (!fieldsEqual(thisValue[j], otherValue[j])) {
- return false;
- }
- }
- } else if (!fieldsEqual(thisValue, otherValue)) {
- return false;
- }
- }
- }
-
- return true;
-};
-
-
-/**
- * Recursively copies the known fields from the given message to this message.
- * Removes the fields which are not present in the source message.
- * @param {!goog.proto2.Message} message The source message.
- */
-goog.proto2.Message.prototype.copyFrom = function(message) {
- goog.proto2.Util.assert(this.constructor == message.constructor,
- 'The source message must have the same type.');
-
- this.values_ = {};
- if (this.deserializedFields_) {
- this.deserializedFields_ = {};
- }
- this.mergeFrom(message);
-};
-
-
-/**
- * Merges the given message into this message.
- *
- * Singular fields will be overwritten, except for embedded messages which will
- * be merged. Repeated fields will be concatenated.
- * @param {!goog.proto2.Message} message The source message.
- */
-goog.proto2.Message.prototype.mergeFrom = function(message) {
- goog.proto2.Util.assert(this.constructor == message.constructor,
- 'The source message must have the same type.');
- var fields = this.getDescriptor().getFields();
-
- for (var i = 0; i < fields.length; i++) {
- var field = fields[i];
- if (message.has(field)) {
- if (this.deserializedFields_) {
- delete this.deserializedFields_[field.getTag()];
- }
-
- var isComposite = field.isCompositeType();
- if (field.isRepeated()) {
- var values = message.arrayOf(field);
- for (var j = 0; j < values.length; j++) {
- this.add(field, isComposite ? values[j].clone() : values[j]);
- }
- } else {
- var value = message.getValueForField_(field);
- if (isComposite) {
- var child = this.getValueForField_(field);
- if (child) {
- child.mergeFrom(value);
- } else {
- this.set(field, value.clone());
- }
- } else {
- this.set(field, value);
- }
- }
- }
- }
-};
-
-
-/**
- * @return {!goog.proto2.Message} Recursive clone of the message only including
- * the known fields.
- */
-goog.proto2.Message.prototype.clone = function() {
- var clone = new this.constructor;
- clone.copyFrom(this);
- return clone;
-};
-
-
-/**
- * Fills in the protocol buffer with default values. Any fields that are
- * already set will not be overridden.
- * @param {boolean} simpleFieldsToo If true, all fields will be initialized;
- * if false, only the nested messages and groups.
- */
-goog.proto2.Message.prototype.initDefaults = function(simpleFieldsToo) {
- var fields = this.getDescriptor().getFields();
- for (var i = 0; i < fields.length; i++) {
- var field = fields[i];
- var tag = field.getTag();
- var isComposite = field.isCompositeType();
-
- // Initialize missing fields.
- if (!this.has(field) && !field.isRepeated()) {
- if (isComposite) {
- this.values_[tag] = new /** @type {Function} */ (field.getNativeType());
- } else if (simpleFieldsToo) {
- this.values_[tag] = field.getDefaultValue();
- }
- }
-
- // Fill in the existing composite fields recursively.
- if (isComposite) {
- if (field.isRepeated()) {
- var values = this.array$Values(tag);
- for (var j = 0; j < values.length; j++) {
- values[j].initDefaults(simpleFieldsToo);
- }
- } else {
- this.get$Value(tag).initDefaults(simpleFieldsToo);
- }
- }
- }
-};
-
-
-/**
- * Returns the field in this message by the given tag number. If no
- * such field exists, throws an exception.
- *
- * @param {number} tag The field's tag index.
- * @return {!goog.proto2.FieldDescriptor} The descriptor for the field.
- * @private
- */
-goog.proto2.Message.prototype.getFieldByTag_ = function(tag) {
- goog.proto2.Util.assert(this.fields_[tag],
- 'No field found for the given tag');
-
- return this.fields_[tag];
-};
-
-
-/**
- * Returns the whether or not the field indicated by the given tag
- * has a value.
- *
- * GENERATED CODE USE ONLY. Basis of the has{Field} methods.
- *
- * @param {number} tag The tag.
- *
- * @return {boolean} Whether the message has a value for the field.
- */
-goog.proto2.Message.prototype.has$Value = function(tag) {
- goog.proto2.Util.assert(this.fields_[tag],
- 'No field found for the given tag');
-
- return tag in this.values_ && goog.isDef(this.values_[tag]) &&
- this.values_[tag] !== null;
-};
-
-
-/**
- * Returns the value for the given field. If a lazy deserializer is
- * instantiated, lazily deserializes the field if required before returning the
- * value.
- *
- * @param {goog.proto2.FieldDescriptor} field The field.
- * @return {*} The field value, if any.
- * @private
- */
-goog.proto2.Message.prototype.getValueForField_ = function(field) {
- // Retrieve the current value, which may still be serialized.
- var tag = field.getTag();
- if (!tag in this.values_) {
- return null;
- }
-
- var value = this.values_[tag];
- if (value == null) {
- return null;
- }
-
- // If we have a lazy deserializer, then ensure that the field is
- // properly deserialized.
- if (this.lazyDeserializer_) {
- // If the tag is not deserialized, then we must do so now. Deserialize
- // the field's value via the deserializer.
- if (!(tag in this.deserializedFields_)) {
- var deserializedValue = this.lazyDeserializer_.deserializeField(
- this, field, value);
- this.deserializedFields_[tag] = deserializedValue;
- return deserializedValue;
- }
-
- return this.deserializedFields_[tag];
- }
-
- // Otherwise, just return the value.
- return value;
-};
-
-
-/**
- * Gets the value at the field indicated by the given tag.
- *
- * GENERATED CODE USE ONLY. Basis of the get{Field} methods.
- *
- * @param {number} tag The field's tag index.
- * @param {number=} opt_index If the field is a repeated field, the index
- * at which to get the value.
- *
- * @return {*} The value found or null for none.
- * @protected
- */
-goog.proto2.Message.prototype.get$Value = function(tag, opt_index) {
- var field = this.getFieldByTag_(tag);
- var value = this.getValueForField_(field);
-
- if (field.isRepeated()) {
- goog.proto2.Util.assert(goog.isArray(value));
-
- var index = opt_index || 0;
- goog.proto2.Util.assert(index >= 0 && index < value.length,
- 'Given index is out of bounds');
-
- return value[index];
- }
-
- goog.proto2.Util.assert(!goog.isArray(value));
- return value;
-};
-
-
-/**
- * Gets the value at the field indicated by the given tag or the default value
- * if none.
- *
- * GENERATED CODE USE ONLY. Basis of the get{Field} methods.
- *
- * @param {number} tag The field's tag index.
- * @param {number=} opt_index If the field is a repeated field, the index
- * at which to get the value.
- *
- * @return {*} The value found or the default value if none set.
- * @protected
- */
-goog.proto2.Message.prototype.get$ValueOrDefault = function(tag, opt_index) {
-
- if (!this.has$Value(tag)) {
- // Return the default value.
- var field = this.getFieldByTag_(tag);
- return field.getDefaultValue();
- }
-
- return this.get$Value(tag, opt_index);
-};
-
-
-/**
- * Gets the values at the field indicated by the given tag.
- *
- * GENERATED CODE USE ONLY. Basis of the {field}Array methods.
- *
- * @param {number} tag The field's tag index.
- *
- * @return {!Array} The values found. If none, returns an empty array.
- * @protected
- */
-goog.proto2.Message.prototype.array$Values = function(tag) {
- goog.proto2.Util.assert(this.getFieldByTag_(tag).isRepeated(),
- 'Cannot call fieldArray on a non-repeated field');
- var field = this.getFieldByTag_(tag);
- var value = this.getValueForField_(field);
- goog.proto2.Util.assert(value == null || goog.isArray(value));
- return (/** @type {Array} */value) || [];
-};
-
-
-/**
- * Returns the number of values stored in the field by the given tag.
- *
- * GENERATED CODE USE ONLY. Basis of the {field}Count methods.
- *
- * @param {number} tag The tag.
- *
- * @return {number} The number of values.
- * @protected
- */
-goog.proto2.Message.prototype.count$Values = function(tag) {
- var field = this.getFieldByTag_(tag);
-
- if (field.isRepeated()) {
- if (this.has$Value(tag)) {
- goog.proto2.Util.assert(goog.isArray(this.values_[tag]));
- }
-
- return this.has$Value(tag) ? this.values_[tag].length : 0;
- } else {
- return this.has$Value(tag) ? 1 : 0;
- }
-};
-
-
-/**
- * Sets the value of the *non-repeating* field indicated by the given tag.
- *
- * GENERATED CODE USE ONLY. Basis of the set{Field} methods.
- *
- * @param {number} tag The field's tag index.
- * @param {*} value The field's value.
- * @protected
- */
-goog.proto2.Message.prototype.set$Value = function(tag, value) {
- if (goog.proto2.Util.conductChecks()) {
- var field = this.getFieldByTag_(tag);
-
- goog.proto2.Util.assert(!field.isRepeated(),
- 'Cannot call set on a repeated field');
-
- this.checkFieldType_(field, value);
- }
-
- this.values_[tag] = value;
- if (this.deserializedFields_) {
- this.deserializedFields_[tag] = value;
- }
-};
-
-
-/**
- * Adds the value to the *repeating* field indicated by the given tag.
- *
- * GENERATED CODE USE ONLY. Basis of the add{Field} methods.
- *
- * @param {number} tag The field's tag index.
- * @param {*} value The value to add.
- * @protected
- */
-goog.proto2.Message.prototype.add$Value = function(tag, value) {
- if (goog.proto2.Util.conductChecks()) {
- var field = this.getFieldByTag_(tag);
-
- goog.proto2.Util.assert(field.isRepeated(),
- 'Cannot call add on a non-repeated field');
-
- this.checkFieldType_(field, value);
- }
-
- if (!this.values_[tag]) {
- this.values_[tag] = [];
- }
-
- this.values_[tag].push(value);
- if (this.deserializedFields_) {
- delete this.deserializedFields_[tag];
- }
-};
-
-
-/**
- * Ensures that the value being assigned to the given field
- * is valid.
- *
- * @param {!goog.proto2.FieldDescriptor} field The field being assigned.
- * @param {*} value The value being assigned.
- * @private
- */
-goog.proto2.Message.prototype.checkFieldType_ = function(field, value) {
- goog.proto2.Util.assert(value !== null);
-
- var nativeType = field.getNativeType();
- if (nativeType === String) {
- goog.proto2.Util.assert(typeof value === 'string',
- 'Expected value of type string');
- } else if (nativeType === Boolean) {
- goog.proto2.Util.assert(typeof value === 'boolean',
- 'Expected value of type boolean');
- } else if (nativeType === Number) {
- goog.proto2.Util.assert(typeof value === 'number',
- 'Expected value of type number');
- } else if (field.getFieldType() ==
- goog.proto2.FieldDescriptor.FieldType.ENUM) {
- goog.proto2.Util.assert(typeof value === 'number',
- 'Expected an enum value, which is a number');
- } else {
- goog.proto2.Util.assert(value instanceof nativeType,
- 'Expected a matching message type');
- }
-};
-
-
-/**
- * Clears the field specified by tag.
- *
- * GENERATED CODE USE ONLY. Basis of the clear{Field} methods.
- *
- * @param {number} tag The tag of the field to clear.
- * @protected
- */
-goog.proto2.Message.prototype.clear$Field = function(tag) {
- goog.proto2.Util.assert(this.getFieldByTag_(tag), 'Unknown field');
- delete this.values_[tag];
- if (this.deserializedFields_) {
- delete this.deserializedFields_[tag];
- }
-};
-
-
-/**
- * Creates the metadata descriptor representing the definition of this message.
- *
- * GENERATED CODE USE ONLY. Called when constructing message classes.
- *
- * @param {function(new:goog.proto2.Message)} messageType Constructor for the
- * message type to which this metadata applies.
- * @param {Object} metadataObj The object containing the metadata.
- * @return {!goog.proto2.Descriptor} The new descriptor.
- */
-goog.proto2.Message.create$Descriptor = function(messageType, metadataObj) {
- var fields = [];
- var descriptorInfo;
-
- for (var key in metadataObj) {
- if (!metadataObj.hasOwnProperty(key)) {
- continue;
- }
-
- goog.proto2.Util.assert(goog.string.isNumeric(key), 'Keys must be numeric');
-
- if (key == 0) {
- descriptorInfo = metadataObj[0];
- continue;
- }
-
- // Create the field descriptor.
- fields.push(
- new goog.proto2.FieldDescriptor(messageType, key, metadataObj[key]));
- }
-
- goog.proto2.Util.assert(descriptorInfo);
- return new goog.proto2.Descriptor(messageType, descriptorInfo, fields);
-};
-
-
-/**
- * Sets the metadata that represents the definition of this message.
- *
- * GENERATED CODE USE ONLY. Called when constructing message classes.
- *
- * @param {!Function} messageType Constructor for the
- * message type to which this metadata applies.
- * @param {Object} metadataObj The object containing the metadata.
- */
-goog.proto2.Message.set$Metadata = function(messageType, metadataObj) {
- // NOTE(nicksantos): JSCompiler's type-based optimizations really do not
- // like indirectly defined methods (both prototype methods and
- // static methods). This is very fragile in compiled code. I think it only
- // really works by accident, and is highly likely to break in the future.
- messageType.descriptorObj_ = metadataObj;
- messageType.getDescriptor = function() {
- // The descriptor is created lazily when we instantiate a new instance.
- return messageType.descriptor_ ||
- (new messageType()).getDescriptor();
- };
-};