/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 2 - 2 0 1 7 ĠThe ĠAN TLR ĠProject . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠUse Ġof Ġthis Ġfile Ġis Ġgoverned Ġby Ġthe ĠBSD Ġ 3 - clause Ġlicense Ġthat Ċ Ġ* Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE . txt Ġfile Ġin Ġthe Ġproject Ġroot . Ċ Ġ*/ Ċ Ċ package Ġorg . antlr . v 4 . kotlin runtime . at n Ċ Ċ import Ġcom . strument a . kotlin multi platform . is Supp lement ary Code Point Ċ import Ġorg . antlr . v 4 . kotlin runtime . misc . Interval Set Ċ Ċ /** Ċ Ġ* ĠUtility Ġclass Ġto Ġcreate Ġ[ Atom Transition ], Ġ[ Range Transition ], Ċ Ġ* Ġand Ġ[ Set Transition ] Ġappropriately Ġbased Ġon Ġthe Ġrange Ġof Ġthe Ġinput . Ċ Ġ* Ċ Ġ* ĠTo Ġkeep Ġthe Ġserialized ĠAT N Ġsize Ġsmall , Ġwe Ġonly Ġinline Ġatom Ġand Ċ Ġ* Ġrange Ġtransitions Ġfor ĠUnicode Ġcode Ġpoints Ġ<= ĠU + FFFF . Ċ Ġ* Ċ Ġ* ĠWh enever Ġwe Ġencounter Ġa ĠUnicode Ġcode Ġpoint Ġ> ĠU + FFFF , Ġwe Ġrepresent Ġthat Ċ Ġ* Ġas Ġa Ġset Ġtransition Ġ( even Ġif Ġit Ġis Ġlog ically Ġan Ġatom Ġor Ġa Ġrange ). Ċ Ġ*/ Ċ object ĠCode Point Transitions Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġ` code Point ` Ġis Ġ<= ĠU + FFFF , Ġreturns Ġa Ġnew Ġ[ Atom Transition ]. ĊĠĠĠĠ Ġ* ĠOtherwise , Ġreturns Ġa Ġnew Ġ[ Set Transition ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcreate With Code Point ( target : ĠAT N State , Ġcode Point : ĠInt ): ĠTransition Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Char . is Supp lement ary Code Point ( code Point )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSet Transition ( target , ĠInterval Set . of ( code Point )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAtom Transition ( target , Ġcode Point ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġ` code Point From ` Ġand Ġ` code Point To ` Ġare Ġboth ĊĠĠĠĠ Ġ* Ġ<= ĠU + FFFF , Ġreturns Ġa Ġnew Ġ[ Range Transition ]. ĊĠĠĠĠ Ġ* ĠOtherwise , Ġreturns Ġa Ġnew Ġ[ Set Transition ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcreate With Code Point Range ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget : ĠAT N State , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode Point From : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode Point To : ĠInt ): ĠTransition Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Char . is Supp lement ary Code Point ( code Point From ) Ġ|| ĠChar . is Supp lement ary Code Point ( code Point To )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSet Transition ( target , ĠInterval Set . of ( code Point From , Ġcode Point To )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRange Transition ( target , Ġcode Point From , Ġcode Point To ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ