/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 , ĠVal ap he e . Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . val ap he e . t esseract . util Ċ Ċ import Ġit . un imi . ds i . fast util . ints . Int 2 Object Map Ċ import Ġit . un imi . ds i . fast util . ints . Int 2 Object Open HashMap Ċ import Ġit . un imi . ds i . fast util . objects . Object 2 Int Map Ċ import Ġit . un imi . ds i . fast util . objects . Object 2 Int Open HashMap Ċ Ċ /** Ċ Ġ* Ġ@ author ĠKevin ĠL ud w ig Ċ Ġ*/ Ċ class ĠRegistry < T > Ġ: ĠClone able Ġ{ ĊĠĠĠ Ġvar Ġid To Value : ĠInt 2 Object Map < T > ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġvar Ġvalue To Id : ĠObject 2 Int Map < T > ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġvar Ġdefault : ĠT ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġid To Value . default ReturnValue () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid To Value . default ReturnValue ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor () Ġ{ ĊĠĠĠĠĠĠĠ Ġid To Value Ġ= ĠInt 2 Object Open HashMap () ĊĠĠĠĠĠĠĠ Ġvalue To Id Ġ= ĠObject 2 Int Open HashMap () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( initial Capacity : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġid To Value Ġ= ĠInt 2 Object Open HashMap ( initial Capacity ) ĊĠĠĠĠĠĠĠ Ġvalue To Id Ġ= ĠObject 2 Int Open HashMap ( initial Capacity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( no Entry Value : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġid To Value Ġ= ĠInt 2 Object Open HashMap < T >(). apply Ġ{ Ġdefault ReturnValue ( no Entry Value ) Ġ} ĊĠĠĠĠĠĠĠ Ġvalue To Id Ġ= ĠObject 2 Int Open HashMap () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( initial Capacity : ĠInt , Ġno Entry Value : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġid To Value Ġ= ĠInt 2 Object Open HashMap < T >( initial Capacity ). apply Ġ{ Ġdefault ReturnValue ( no Entry Value ) Ġ} ĊĠĠĠĠĠĠĠ Ġvalue To Id Ġ= ĠObject 2 Int Open HashMap ( initial Capacity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġset ( id : ĠInt , Ġvalue : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġid To Value [ id ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġvalue To Id [ value ] Ġ= Ġid ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġget ( id : ĠInt ): ĠT ? Ġ= Ġid To Value . get ( id ) ĊĊĠĠĠ Ġfun ĠgetId ( value : ĠT ) Ġ= Ġvalue To Id . getInt ( value ) ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġpublic Ġoverride Ġfun Ġclone () Ġ= Ġ( super . clone () Ġas ĠRegistry < T >). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġid To Value Ġ= Ġthis @ Registry . id To Value ĊĠĠĠĠĠĠĠ Ġvalue To Id Ġ= Ġthis @ Registry . value To Id ĊĠĠĠ Ġ} Ċ } Ċ