/* - Ċ Ġ* Ġ#% L Ċ Ġ* ĠKotlin ĠPreferences Ċ Ġ* Ġ%% Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 6 Ġ- Ġ 2 0 1 9 ĠFre der ik ĠK am mel Ċ Ġ* Ġ%% Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* ĠĊ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* ĠĊ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ġ# L % Ċ Ġ*/ Ċ package Ġcom . github . vat b ub . kotlin . preferences Ċ Ċ /** Ċ Ġ* ĠProvides Ġkey - value - pairs Ġfor Ġapplications . Ċ Ġ* Ġ@ param Ġkey Value Provider ĠThe Ġunderlying Ġkey - value - store . Ċ Ġ*/ Ċ class ĠPreferences ( private Ġval Ġkey Value Provider : ĠKey Value Provider ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġassociated Ġwith Ġthe Ġspecified Ġkey Ġif Ġit Ġexists . ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠThe Ġkey Ġto Ġget Ġthe Ġvalue Ġfor ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġvalue Ġassociated Ġwith Ġthe Ġkey Ġif Ġit Ġexists Ġor Ġ` null ` Ġotherwise ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġget IfExists ( key : ĠKey < T >): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstring Value Ġ= Ġkey Value Provider [ key . unique Name ] Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġkey . parser ( stringValue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġwith Ġthe Ġassociated Ġkey . ĠIf Ġthe Ġkey Ġcannot Ġbe Ġfound , Ġthe Ġdefault Ġvalue Ġof Ġthe Ġkey Ġis Ġreturned . ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠThe Ġkey Ġto Ġget Ġthe Ġvalue Ġfor ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġvalue Ġassociated Ġwith Ġthe Ġkey Ġor Ġthe Ġkey 's Ġdefault Ġvalue Ġif Ġthe Ġkey Ġcannot Ġbe Ġfound ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġget OrDefault ( key : ĠKey < T >) Ġ= Ġget IfExists ( key ) Ġ?: Ġkey . defaultValue ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġwhether Ġthe Ġspecified Ġkey Ġhas Ġa Ġvalue Ġassociated Ġwith Ġit . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġcontains Key ( key : ĠKey < T >) Ġ= Ġkey Value Provider [ key . unique Name ] Ġ!= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see Ġget OrDefault ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġ< T > Ġget ( key : ĠKey < T >) Ġ= Ġget OrDefault ( key ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAssoci ates Ġthe Ġspecified Ġvalue Ġwith Ġthe Ġspecified Ġkey . ĊĠĠĠĠ Ġ* ĠIf Ġthe Ġkey Ġalready Ġhad Ġa Ġvalue Ġassociated Ġwith Ġit , Ġthe Ġprevious Ġvalue Ġis Ġoverwritten . ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠThe Ġkey Ġto Ġset Ġthe Ġvalue Ġfor ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĠThe Ġvalue Ġto Ġassociate Ġwith Ġ[ key ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġ< T > Ġset ( key : ĠKey < T >, Ġvalue : ĠT ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstring Value Ġ= Ġif Ġ( value Ġ== Ġnull ) Ġnull Ġelse Ġkey . serializer ( value ) ĊĠĠĠĠĠĠĠ Ġkey Value Provider [ key . unique Name ] Ġ= Ġstring Value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġthe Ġspecified Ġkey Ġfrom Ġthis Ġkey - value - store . ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠThe Ġkey Ġto Ġremove Ġthe Ġvalue Ġof ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġvalue Ġthat Ġwas Ġpreviously Ġassociated Ġwith Ġ[ key ] Ġor Ġ` null ` Ġif Ġno Ġvalue Ġwas Ġassociated Ġwith Ġ[ key ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġremove Key ( key : ĠKey < T >): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprevious Value Ġ= Ġget IfExists ( key ) ĊĠĠĠĠĠĠĠ Ġset ( key , Ġnull ) ĊĠĠĠĠĠĠĠ Ġreturn Ġprevious Value ĊĠĠĠ Ġ} Ċ } Ċ