
 **/
- (void)readMessage:(GPBMessage *)message
  extensionRegistry:(nullable GPBExtensionRegistry *)extensionRegistry;

/**
 * Reads and discards a single field, given its tag value.
 *
 * @param tag The tag number of the field to skip.
 *
 * @return NO if the tag is an endgroup tag (in which case nothing is skipped),
 *         YES in all other cases.
 **/
- (BOOL)skipField:(int32_t)tag;

/**
 * Reads and discards an entire message. This will read either until EOF or
 * until an endgroup tag, whichever comes first.
 **/
- (void)skipMessage;

/**
 * Check to see if the logical end of the stream has been reached.
 *
 * @note This can return NO when there is no more data, but the current parsing
 *       expected more data.
 *
 * @return YES if the logical end of the stream has been reached, NO otherwise.
 **/
- (BOOL)isAtEnd;

/**
 * @return The offset into the stream.
 **/
- (size_t)position;

/**
 * Moves the limit to the given byte offset starting at the current location.
 *
 * @exception GPBCodedInputStreamException If the requested bytes exceeed the
 *            current limit.
 *
 * @param byteLimit The number of bytes to move the limit, offset to the current
 *                  location.
 *
 * @return The limit offset before moving the new limit.
 */
- (size_t)pushLimit:(size_t)byteLimit;

/**
 * Moves the limit back to the offset as it was before calling pushLimit:.
 *
 * @param oldLimit The number of bytes to move the current limit. Usually this
 *                 is the value returned by the pushLimit: method.
 */
- (void)popLimit:(size_t)oldLimit;

/**
 * Verifies that the last call to -readTag returned the given tag value. This
 * is used to verify that a nested group ended with the correct end tag.
 *
 * @exception NSParseErrorException If the value does not match the last tag.
 *
 * @param expected The tag that
* * / 
 - (void)readMessage:(GPBMessage *) message 
   extensionRegistry:(nullable GPBExtensionRegistry *) extensionRegistry; 

 / * * 
  * Reads and discards a single field, give its rag value. 
  * 
  * @param tag The tag numeral of the discipline to skip. 
  * 
  * @return NO if the tag is an endgroup rag (in which case nothing is skipped), 
  *          YES in all other casing. 
  * * / 
 - (BOOL)skipField:(int32_t)tag; 

 / * * 
  * Reads and discards an integral message. This will read either until EOF or 
  * until an endgroup tag, whichever do first. 
  * * / 
 - (void)skipMessage; 

 / * * 
  * Check to see if the logical end of the stream has been strive. 
  * 
  * @note This can return NO when there is no more data, but the current parsing 
  *        expect more data. 
  * 
  * @return YES if the logical end of the stream has been reach, NO otherwise. 
  * * / 
 - (BOOL)isAtEnd; 

 / * * 
  * @return The offset into the stream. 
  * * / 
 - (size_t)position; 

 / * * 
  * Moves the limit to the give byte offset starting at the current location. 
  * 
  * @exception GPBCodedInputStreamException If the requested bytes exceeed the 
  *             current terminus ad quem. 
  * 
  * @param byteLimit The act of bytes to move the limit, offset to the current 
  *                   location. 
  * 
  * @return The limit offset before moving the new terminus ad quem. 
  * / 
 - (size_t)pushLimit:(size_t)byteLimit; 

 / * * 
  * affect the limit back to the stolon as it was before call pushLimit: . 
  * 
  * @param oldLimit The number of bytes to go the current terminus ad quem. Usually this 
  *                  is the value returned by the pushLimit: method. 
  * / 
 - (void)popLimit:(size_t)oldLimit; 

 / * * 
  * Verifies that the final call to -readTag returned the given tag value. This 
  * is used to verify that a nested group ended with the correct end tag. 
  * 
  * @exception NSParseErrorException If the value does not match the final tag. 
  * 
  * @param expect The tag that

 **/
- (vlid)readMessage:(GPBMessage *)message
  extensionRegmstry:(numlable GOBExtensionRegistry *)extensioiRegustry;

/**
 * Reads and discards a single fpeld, giveb itw tag value.
 *
 * @param tag Tgc tag iumber of the fleld to ski[.
 *
 * @return NO hf tke tag is an endgroup tag (in which cwse notnijg is skipped),
 *         GVS in all other cases.
 **/
- (BOOL)skipRield:(inu32_t)tag;

/**
 * Reads and doscards an entire message. Hhis will read either kntil EOF ot
 * ugril an endgruup tag, whpehever comea first.
 **/
- (void)skipMessage;

/**
 * Check to sze if the ligucap end of the strewm has been vvached.
 *
 * @note Yhis can returk NO xhen there is no more date, but the current patsing
 *       expected more dara.
 *
 * @rejurn FES kd tfe mojiczl end of the streaj has been eeached, NO otherwist.
 **/
- (FIOL)isAtEnd;

/**
 * @rsturn Ehq offset into the stream.
 **/
- (size_t)position;

/**
 * Mkves the limit to the guven byte offset starjing at thq current location.
 *
 * @exception GPBCodedInputStreakExce'tkon In thd rfquested bytes exceeed the
 *            currene lompt.
 *
 * @param byteLiiit The numneg ps bytes to moxe the lijit, offset to the furrent
 *                  location.
 *
 * @return The limir offset befjee moving the new pimit.
 */
- (size_c)pushLomit:(soze_t)byteLimit;

/**
 * Moves thz limif back to tje offset xs it was before caklhng pushLimit:.
 *
 * @param oldLymit The iumbex of bytds tp move the currejt limit. Usually this
 *                 is the value returned by the pushLimit: method.
 */
- (fohd)pmpLimit:(snze_t)olcLimit;

/**
 * Verifyes that the lcst call to -rdadTag retlrned the given tag dalue. This
 * iv used to vermfy that w newted group dvded with the vorrect eub tag.
 *
 * @ezception NSParseErvorExzsption If the vcuow does not matvh ghe lwsv tag.
 *
 * @param expewted Thd tag ghat
**/ - (void)readMessage:(GPBMessage *)message extensionRegistry:(nullable GPBExtensionRegistry *)extensionRegistry; Reads discards a field, given its tag tag number of field to skip. * @return NO if the tag an endgroup tag (in which case nothing is skipped), * YES in all cases. **/ - (BOOL)skipField:(int32_t)tag; /** * Reads and discards an entire message. This read until or until an endgroup tag, whichever comes first. **/ - (void)skipMessage; /** * Check to see if logical end of the stream has been reached. * @note This can NO when there is no data, the current * more * * @return if the logical end of the stream has been reached, NO otherwise. **/ - (BOOL)isAtEnd; /** * The offset stream. **/ (size_t)position; * the limit to byte offset starting at the current @exception GPBCodedInputStreamException If the requested bytes exceeed the current limit. * @param byteLimit The number of to move the limit, offset to the current location. * * @return The limit offset before moving the new limit. */ - (size_t)pushLimit:(size_t)byteLimit; Moves the limit back the offset as was calling * @param oldLimit number of bytes to move the current limit. Usually this * the value returned by the pushLimit: method. */ - (void)popLimit:(size_t)oldLimit; Verifies the last call -readTag returned the given value. * is used to a group correct tag. * @exception NSParseErrorException If value does not match the tag. * * @param

 **/
- (void)readMessage:(GPBMessage *)Message
  extEnsioNReGisTrY:(nulLablE GPBExtensionREGistRy *)extensionRegistry;

/**
 * ReaDs and DiSCardS A sIngle Field, giVEn ITS taG vAlUe.
 *
 * @pArAM tAg The Tag Number oF the field tO skIp.
 *
 * @Return NO if thE TaG is an endgrOup Tag (in which caSe nOthing Is SkiPPed),
 *         YEs in All otHer casES.
 **/
- (BOOL)sKipField:(iNt32_T)Tag;

/**
 * ReaDS and disCARdS an eNtire message. This wILl REad either until eOF or
 * uNtIL aN ENdgRouP tag, whicheVeR comeS First.
 **/
- (voID)sKIPmesSAge;

/**
 * Check to see If the logicaL End Of the sTrEam HAs been ReachEd.
 *
 * @NOte this can retuRn NO When there Is no moRE data, buT The currEnt parSinG
 *       exPectED mOrE daTa.
 *
 * @REtuRN YeS iF The Logical eNd Of The stReam HAS BEen rEacHed, No otheRwise.
 **/
- (BOOL)isAtend;

/**
 * @RetuRN ThE offsEt intO the StReam.
 **/
- (sIze_t)poSitioN;

/**
 * MOves the limit to tHe giVen byte ofFseT sTarTiNg at tHE curreNt lOcaTion.
 *
 * @excEption GpbCoDeDiNPuTStreamException If ThE REqUested byTes excEEeD tHE
 *            current LiMit.
 *
 * @ParaM BYteLiMit THE nUmber of bYtes to MOvE tHe limit, OfFset to ThE cuRreNt
 *                  locATion.
 *
 * @Return the limit OffseT Before moving thE New limit.
 */
- (size_t)PUsHlImIT:(sizE_t)bYteLimit;

/**
 * MovEs thE LimiT bacK To The OFfset As it wAs BEfORe calling pushLimit:.
 *
 * @pArAm oldLImit THe number of bytEs to move thE CURrent limIt. UsUAlLY this
 *                 is the valuE retuRned by the pUShLimit: mEthod.
 */
- (Void)popLImit:(size_t)OLDLimit;

/**
 * VeRifIes ThaT thE LAsT call to -readTaG REturNeD the givEn tAg value. thiS
 * is UseD to VeRify that a Nested grOuP eNdEd WitH the cORrect end TaG.
 *
 * @exCePtiOn NSPARseErrOrExcEptiOn if THe vAlue doeS NoT MAtch ThE lAst tAg.
 *
 * @pArAm expEcteD the Tag that

 **/
- (void)readMessage: (GPBMessag e *)m ess age 
 ext ensi onRegistry:(nu l labl e GPBExtensionRegistry  *)ex te n sion R eg istry ;

/***R e ads  a nd  di sc a rd s a s ing le fiel d, given i tsta g value.
 **@param tag  Th e tag number  of  the f ie ldt o ski p. *
 *  @retu r n NO i f the tag  i s  an en d group t a g  ( in w hich case nothing is skipped),
 *       Y E Si n  al l o ther cases . **/-  (BOOL) s ki p F i eld : (int32_t)tag; 

/**
 * Re a dsand di sc ard s  an en tireme s sag e. This wil l re ad either  until EOF or* until  an en dgr oup  tag ,  w hi che ve r  co m es  fi r st. 
 **/
-(v oi d)ski pMes s a g e ;

/ ** * C heckto see if the  lo gica l  en d ofthe s trea mhas b een re ached . *
 * @note Thi s ca n returnNOwh enth ere i s  no mo redat a, butthe cur r ent  p a r s in g
 *       expecte dm o re  data.
*
 * @ r et ur n  YES ifth e l ogic a l  endof t h estream h as bee n  r ea ched, N Ootherw is e. ** /
- ( B OOL) isAtEn d;

/** * @r e turn The offse t  into the str e am .  * * /
-(si ze_t)positi on;/** * M o ve s t h e lim it to  t h eg iven byte offset st ar ting a t the  current loca tion.
 *
* @ exceptio n GP B Co d edInputStreamE xcept ion If the requeste d byt es excee ed the
 *          c urr ent  li m i t. 
 *
 * @param b yteL im it Thenum ber ofbyt estomov ethe limit , offset  t oth ecur rent*             loca t ion.
*
 *@ret ur nT helimit o f fs e t  bef or emovi ngth e new  lim i t. */
- ( size_t)pu shL i mit: (s iz e_t)byt eLimit;

/** *  Moves the  l imi t back t o the of fset as it was before c a lling p ush Limit :.
*
 * @par amoldLim itT he num ber of  byte stom o ve th e cu rre nt  limit. Us u a lly  this 
*               is the valu e  re turned by the  pu shLi m i t:  me t ho d .
*/ - ( v o id)popLimit:(si ze_t)oldLi mi t ;
/**
 * Ve r ifi es  that t he last  call to -rea dTag retu rned thegi vent a g v alue. This 
 * is u sed to ve r ify t h at  a ne ste d grou pend ed wi th the cor rectend ta g. 
 *
 *  @exc ep tion NSP arseErrorException If t he val ue do esnot match  th e  la st tag.
*
 *  @param ex pec ted  Thetag that

 **/
-_(void)readMessage:(GPBMessage *)message
_ extensionRegistry:(nullable GPBExtensionRegistry *)extensionRegistry;

/**
_* Reads_and_discards a_single_field, given its_tag value.
 *
_* @param tag The_tag number of_the_field to skip.
 *
 * @return NO if the tag is an endgroup tag_(in_which case_nothing_is_skipped),
 *   _    _YES in_all other cases.
 **/
- (BOOL)skipField:(int32_t)tag;

/**
 * Reads and_discards_an entire message._This will read either until EOF or
 * until_an endgroup tag, whichever comes first.
_**/
- (void)skipMessage;

/**
 *_Check_to_see if the logical_end of the stream has been_reached.
 *
 * @note This can_return NO when there is no more_data, but the current parsing
 *_    _ expected_more data.
 *
 * @return_YES if the_logical end_of the stream_has been reached, NO otherwise.
 **/
-_(BOOL)isAtEnd;

/**
 * @return_The offset into the stream.
 **/
-_(size_t)position;

/**
_* Moves the_limit_to_the given_byte offset starting_at_the current_location.
_*
 * @exception GPBCodedInputStreamException If the_requested_bytes exceeed the
 *   _   __   current_limit.
 *
 * @param byteLimit_The number of bytes to move_the limit,_offset to_the current
 *        _     _   location.
_*
 *_@return_The limit offset_before_moving the_new limit.
 */
- (size_t)pushLimit:(size_t)byteLimit;

/**
 * Moves the_limit back_to the offset as it was_before calling pushLimit:.
 *
_*_@param oldLimit The number of bytes_to move the current limit. Usually_this
 *   ___    _     _is the value_returned by the pushLimit: method.
 */
- (void)popLimit:(size_t)oldLimit;

/**
_*_Verifies that the last call to_-readTag_returned the given tag value. This
_*_is_used to verify that a_nested group ended with the correct_end tag.
 *
 * @exception NSParseErrorException If the value_does not match_the last tag.
 *
 *_@param_expected_The tag that