/* Ċ Ġ* ĠCopyright ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 . Ċ Ġ*/ Ċ Ċ package Ġaws . smithy . kotlin . runtime . serde . xml Ċ Ċ /** Ċ Ġ* ĠProvides Ġstream - style Ġaccess Ġto Ġan ĠXML Ġpayload . Ġ ĠThis Ġabstraction Ċ Ġ* Ġsupports Ġthe Ġability Ġto Ġlook Ġahead Ġan Ġarbitrary Ġnumber Ġof Ġelements . Ġ ĠIt Ġcan Ġalso Ċ Ġ* Ġcreate Ġ" views " Ġto Ġsub trees Ġof Ġthe Ġdocument , Ġguarantee ing Ġthat Ġclients Ġdo Ġnot Ġexceed Ġbounds . Ċ Ġ*/ Ċ interface ĠXml StreamReader Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSpecify Ġthe Ġdepth Ġfor Ġwhich Ġa Ġsubtree Ġis Ġcreated . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġenum Ġclass ĠSub tree Start Depth Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġsubtree 's Ġminimum Ġdepth Ġis Ġthe Ġsame Ġas Ġthe Ġcurrent Ġnode Ġdepth . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠCURRENT , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġsubtree 's Ġminimum Ġdepth Ġis Ġthe Ġsame Ġas Ġthe Ġcurrent Ġnode Ġdepth Ġ+ Ġ 1 . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠCH ILD ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturn Ġthe Ġlast Ġtoken Ġthat Ġwas Ġconsumed Ġby Ġthe Ġreader . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġlast Token : ĠXml Token ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturn Ġanother Ġreader Ġthat Ġstarts Ġand Ġtermin ates Ġat Ġthe Ġcurrent Ġlevel Ġ( CURRENT ) Ġor Ġthe ĊĠĠĠĠ Ġ* Ġcurrent Ġlevel Ġ+ Ġ 1 Ġ( CHILD ), Ġstarting Ġat Ġthe Ġnext Ġnode Ġto Ġbe Ġread Ġfrom Ġthe Ġstream . ĊĠĠĠĠ Ġ* Ġ@ param Ġsubtree Start Depth ĠDetermines Ġminimum Ġdepth Ġof Ġthe Ġsubtree ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsub Tree Reader ( sub tree Start Depth : ĠSub tree Start Depth Ġ= ĠSub tree Start Depth . CHILD ): ĠXml StreamReader ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturn Ġthe Ġnext Ġaction able Ġtoken Ġor Ġnull Ġif Ġstream Ġis Ġex hausted . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠXml Generation Exception Ġupon Ġany Ġerror . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġnext Token (): ĠXml Token ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRe cursively Ġskip Ġthe Ġnext Ġtoken . ĠMe ant Ġfor Ġdiscard ing Ġun wanted / unrecognized Ġnodes Ġin Ġan ĠXML Ġdocument ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġskip Next () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠP eek Ġat Ġthe Ġnext Ġtoken Ġtype . Ġ ĠSuccess ive Ġcalls Ġwill Ġreturn Ġthe Ġsame Ġvalue , Ġmeaning Ġthere Ġis Ġonly Ġone ĊĠĠĠĠ Ġ* Ġlook - ahead Ġat Ġany Ġgiven Ġtime Ġduring Ġthe Ġparsing Ġof Ġinput Ġdata . ĊĠĠĠĠ Ġ* Ġ@ param Ġindex Ġa Ġpositive Ġinteger Ġrepresenting Ġindex Ġof Ġnode Ġfrom Ġcurrent Ġto Ġpeek . Ġ ĠIndex Ġof Ġ 1 Ġis Ġthe Ġnext Ġnode . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġpeek ( index : ĠInt Ġ= Ġ 1 ): ĠXml Token ? Ċ } Ċ Ċ /** Ċ Ġ* ĠSeek Ġfrom Ġthe Ġcurrent Ġtoken Ġon ward Ġto Ġfind Ġa Ġtoken Ġof Ġspecified Ġtype Ġand Ġpred ication . Ċ Ġ* Ċ Ġ* Ġ@ param Ġselection Predicate Ġpredicate Ġthat Ġevaluates Ġnodes Ġof Ġthe Ġrequired Ġtype Ġto Ġmatch Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠXml Token > ĠXml StreamReader . seek ( selection Predicate : Ġ( T ) Ġ-> ĠBoolean Ġ= Ġ{ Ġtrue Ġ}): ĠT ? Ġ{ ĊĠĠĠ Ġvar Ġtoken : ĠXml Token ? Ġ= Ġlast Token ĊĠĠĠ Ġvar Ġfound Match Ġ= Ġfalse ĊĊĠĠĠ Ġwhile Ġ( token Ġ!= Ġnull Ġ&& Ġ! found Match ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfound Match Ġ= Ġif Ġ( token Ġis ĠT ) Ġselection Predicate . invoke ( token ) Ġelse Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ(! found Match ) Ġtoken Ġ= Ġnext Token () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġtoken Ġas ĠT ? Ċ } Ċ Ċ /* Ċ * ĠCreates Ġan Ġ[ Xml StreamReader ] Ġinstance Ċ */ Ċ expect Ġfun Ġxml StreamReader ( payload : ĠByteArray ): ĠXml StreamReader Ċ