goog.module('protobuf.runtime.Storage'); /** * Interface for getting and storing fields of a protobuf message. * * @interface * @package * @template FieldType */ class Storage { /** * Returns the pivot value. * * @return {number} */ getPivot() {} /** * Sets a field in the specified field number. * * @param {number} fieldNumber * @param {!FieldType} field */ set(fieldNumber, field) {} /** * Returns a field at the specified field number. * * @param {number} fieldNumber * @return {!FieldType|undefined} */ get(fieldNumber) {} /** * Deletes a field from the specified field number. * * @param {number} fieldNumber */ delete(fieldNumber) {} /** * Executes the provided function once for each field. * * @param {function(!FieldType, number): void} callback */ forEach(callback) {} /** * Creates a shallow copy of the storage. * * @return {!Storage} */ shallowCopy() {} } /** * 85% of the proto fields have a field number <= 24: * https://plx.corp.google.com/scripts2/script_5d._f02af6_0000_23b1_a15f_001a1139dd02 * * @type {number} */ // LINT.IfChange Storage.DEFAULT_PIVOT = 24; // LINT.ThenChange(//depot/google3/third_party/protobuf/javascript/runtime/kernel/binary_storage_test.js, // //depot/google3/net/proto2/contrib/js_proto/internal/kernel_message_generator.cc) exports = Storage;