| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285 | 
							- /*
 
- ##########################################################
 
- #                                                        #
 
- #  __          __     _____  _   _ _____ _   _  _____    #
 
- #  \ \        / /\   |  __ \| \ | |_   _| \ | |/ ____|   #
 
- #   \ \  /\  / /  \  | |__) |  \| | | | |  \| | |  __    #
 
- #    \ \/  \/ / /\ \ |  _  /| . ` | | | | . ` | | |_ |   #
 
- #     \  /\  / ____ \| | \ \| |\  |_| |_| |\  | |__| |   #
 
- #      \/  \/_/    \_\_|  \_\_| \_|_____|_| \_|\_____|   #
 
- #                                                        #
 
- #                                                        #
 
- ##########################################################
 
- # Do not use this class in your code. This class purely  #
 
- # exists to make proto code generation easier.           #
 
- ##########################################################
 
- */
 
- goog.module('protobuf.runtime.MessageSet');
 
- const InternalMessage = goog.require('protobuf.binary.InternalMessage');
 
- const Kernel = goog.require('protobuf.runtime.Kernel');
 
- // These are the tags for the old MessageSet format, which was defined as:
 
- //   message MessageSet {
 
- //     repeated group Item = 1 {
 
- //       required uint32 type_id = 2;
 
- //       optional bytes message = 3;
 
- //     }
 
- //   }
 
- /** @const {number} */
 
- const MSET_GROUP_FIELD_NUMBER = 1;
 
- /** @const {number} */
 
- const MSET_TYPE_ID_FIELD_NUMBER = 2;
 
- /** @const {number} */
 
- const MSET_MESSAGE_FIELD_NUMBER = 3;
 
- /**
 
-  * @param {!Kernel} kernel
 
-  * @return {!Map<number, !Item>}
 
-  */
 
- function createItemMap(kernel) {
 
-   const itemMap = new Map();
 
-   let totalCount = 0;
 
-   for (const item of kernel.getRepeatedGroupIterable(
 
-            MSET_GROUP_FIELD_NUMBER, Item.fromKernel)) {
 
-     itemMap.set(item.getTypeId(), item);
 
-     totalCount++;
 
-   }
 
-   // Normalize the entries.
 
-   if (totalCount > itemMap.size) {
 
-     writeItemMap(kernel, itemMap);
 
-   }
 
-   return itemMap;
 
- }
 
- /**
 
-  * @param {!Kernel} kernel
 
-  * @param {!Map<number, !Item>} itemMap
 
-  */
 
- function writeItemMap(kernel, itemMap) {
 
-   kernel.setRepeatedGroupIterable(MSET_GROUP_FIELD_NUMBER, itemMap.values());
 
- }
 
- /**
 
-  * @implements {InternalMessage}
 
-  * @final
 
-  */
 
- class MessageSet {
 
-   /**
 
-    * @param {!Kernel} kernel
 
-    * @return {!MessageSet}
 
-    */
 
-   static fromKernel(kernel) {
 
-     const itemMap = createItemMap(kernel);
 
-     return new MessageSet(kernel, itemMap);
 
-   }
 
-   /**
 
-    * @return {!MessageSet}
 
-    */
 
-   static createEmpty() {
 
-     return MessageSet.fromKernel(Kernel.createEmpty());
 
-   }
 
-   /**
 
-    * @param {!Kernel} kernel
 
-    * @param {!Map<number, !Item>} itemMap
 
-    * @private
 
-    */
 
-   constructor(kernel, itemMap) {
 
-     /** @const {!Kernel} @private */
 
-     this.kernel_ = kernel;
 
-     /** @const {!Map<number, !Item>} @private */
 
-     this.itemMap_ = itemMap;
 
-   }
 
-   // code helpers for code gen
 
-   /**
 
-    * @param {number} typeId
 
-    * @param {function(!Kernel):T} instanceCreator
 
-    * @param {number=} pivot
 
-    * @return {?T}
 
-    * @template T
 
-    */
 
-   getMessageOrNull(typeId, instanceCreator, pivot) {
 
-     const item = this.itemMap_.get(typeId);
 
-     return item ? item.getMessageOrNull(instanceCreator, pivot) : null;
 
-   }
 
-   /**
 
-    * @param {number} typeId
 
-    * @param {function(!Kernel):T} instanceCreator
 
-    * @param {number=} pivot
 
-    * @return {T}
 
-    * @template T
 
-    */
 
-   getMessageAttach(typeId, instanceCreator, pivot) {
 
-     let item = this.itemMap_.get(typeId);
 
-     if (item) {
 
-       return item.getMessageAttach(instanceCreator, pivot);
 
-     }
 
-     const message = instanceCreator(Kernel.createEmpty());
 
-     this.setMessage(typeId, message);
 
-     return message;
 
-   }
 
-   /**
 
-    * @param {number} typeId
 
-    * @param {number=} pivot
 
-    * @return {?Kernel}
 
-    */
 
-   getMessageAccessorOrNull(typeId, pivot) {
 
-     const item = this.itemMap_.get(typeId);
 
-     return item ? item.getMessageAccessorOrNull(pivot) : null;
 
-   }
 
-   /**
 
-    * @param {number} typeId
 
-    */
 
-   clearMessage(typeId) {
 
-     if (this.itemMap_.delete(typeId)) {
 
-       writeItemMap(this.kernel_, this.itemMap_);
 
-     }
 
-   }
 
-   /**
 
-    * @param {number} typeId
 
-    * @return {boolean}
 
-    */
 
-   hasMessage(typeId) {
 
-     return this.itemMap_.has(typeId);
 
-   }
 
-   /**
 
-    * @param {number} typeId
 
-    * @param {!InternalMessage} value
 
-    */
 
-   setMessage(typeId, value) {
 
-     const item = this.itemMap_.get(typeId);
 
-     if (item) {
 
-       item.setMessage(value);
 
-     } else {
 
-       this.itemMap_.set(typeId, Item.create(typeId, value));
 
-       writeItemMap(this.kernel_, this.itemMap_);
 
-     }
 
-   }
 
-   /**
 
-    * @return {!Kernel}
 
-    * @override
 
-    */
 
-   internalGetKernel() {
 
-     return this.kernel_;
 
-   }
 
- }
 
- /**
 
-  * @implements {InternalMessage}
 
-  * @final
 
-  */
 
- class Item {
 
-   /**
 
-    * @param {number} typeId
 
-    * @param {!InternalMessage} message
 
-    * @return {!Item}
 
-    */
 
-   static create(typeId, message) {
 
-     const messageSet = Item.fromKernel(Kernel.createEmpty());
 
-     messageSet.setTypeId_(typeId);
 
-     messageSet.setMessage(message);
 
-     return messageSet;
 
-   }
 
-   /**
 
-    * @param {!Kernel} kernel
 
-    * @return {!Item}
 
-    */
 
-   static fromKernel(kernel) {
 
-     return new Item(kernel);
 
-   }
 
-   /**
 
-    * @param {!Kernel} kernel
 
-    * @private
 
-    */
 
-   constructor(kernel) {
 
-     /** @const {!Kernel} @private */
 
-     this.kernel_ = kernel;
 
-   }
 
-   /**
 
-    * @param {function(!Kernel):T} instanceCreator
 
-    * @param {number=} pivot
 
-    * @return {T}
 
-    * @template T
 
-    */
 
-   getMessage(instanceCreator, pivot) {
 
-     return this.kernel_.getMessage(
 
-         MSET_MESSAGE_FIELD_NUMBER, instanceCreator, pivot);
 
-   }
 
-   /**
 
-    * @param {function(!Kernel):T} instanceCreator
 
-    * @param {number=} pivot
 
-    * @return {?T}
 
-    * @template T
 
-    */
 
-   getMessageOrNull(instanceCreator, pivot) {
 
-     return this.kernel_.getMessageOrNull(
 
-         MSET_MESSAGE_FIELD_NUMBER, instanceCreator, pivot);
 
-   }
 
-   /**
 
-    * @param {function(!Kernel):T} instanceCreator
 
-    * @param {number=} pivot
 
-    * @return {T}
 
-    * @template T
 
-    */
 
-   getMessageAttach(instanceCreator, pivot) {
 
-     return this.kernel_.getMessageAttach(
 
-         MSET_MESSAGE_FIELD_NUMBER, instanceCreator, pivot);
 
-   }
 
-   /**
 
-    * @param {number=} pivot
 
-    * @return {?Kernel}
 
-    */
 
-   getMessageAccessorOrNull(pivot) {
 
-     return this.kernel_.getMessageAccessorOrNull(
 
-         MSET_MESSAGE_FIELD_NUMBER, pivot);
 
-   }
 
-   /** @param {!InternalMessage} value */
 
-   setMessage(value) {
 
-     this.kernel_.setMessage(MSET_MESSAGE_FIELD_NUMBER, value);
 
-   }
 
-   /** @return {number} */
 
-   getTypeId() {
 
-     return this.kernel_.getUint32WithDefault(MSET_TYPE_ID_FIELD_NUMBER);
 
-   }
 
-   /**
 
-    * @param {number} value
 
-    * @private
 
-    */
 
-   setTypeId_(value) {
 
-     this.kernel_.setUint32(MSET_TYPE_ID_FIELD_NUMBER, value);
 
-   }
 
-   /**
 
-    * @return {!Kernel}
 
-    * @override
 
-    */
 
-   internalGetKernel() {
 
-     return this.kernel_;
 
-   }
 
- }
 
- exports = MessageSet;
 
 
  |