package Ġcom . ch ock qi u . datastore proxy Ċ Ċ import Ġcom . alibaba . fastjson . JSON Ċ import Ġkotlin . reflect . K Property Ċ Ċ open Ġclass ĠCommon Property < T >( ĊĠĠĠ Ġprotected Ġval Ġm DataStore : ĠData Store , ĊĠĠĠ Ġprotected Ġval Ġdefault : ĠT , ĊĠĠĠ Ġprotected Ġval Ġkey : ĠString ? Ġ= Ġnull Ċ ) Ġ{ ĊĊĠĠĠ Ġopen Ġoperator Ġfun ĠgetValue ( this Ref : ĠAny ?, Ġproperty : ĠK Property < *> ): ĠT Ġ= ĊĠĠĠĠĠĠĠ ĠgetValue ( key Ġ?: Ġproperty . name , Ġdefault ) ĊĊĠĠĠ Ġopen Ġoperator Ġfun ĠsetValue ( this Ref : ĠAny ?, Ġproperty : ĠK Property <* >, Ġvalue : ĠT ) Ġ= ĊĠĠĠĠĠĠĠ Ġput Value ( key Ġ?: Ġproperty . name , Ġvalue ) ĊĊĠĠĠ Ġprotected Ġfun ĠgetValue ( name : ĠString , Ġdefault : ĠT ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġwhen Ġ( default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> Ġm DataStore . readInt ( name , Ġdefault ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLong Ġ-> Ġm DataStore . read Long ( name , Ġdefault ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDouble Ġ-> Ġm DataStore . read Double ( name , Ġdefault ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFloat Ġ-> Ġm DataStore . read Float ( name , Ġdefault ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> Ġm DataStore . read Boolean ( name , Ġdefault ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġm DataStore . readString ( name , Ġdefault ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠByteArray Ġ-> Ġm DataStore . read Bytes ( name , Ġdefault ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġm DataStore . readString ( name , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( res Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJSON . parse Object ( res , Ġdefault !! :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġres Ġas ĠT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġput Value ( key : ĠString , Ġvalue : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm DataStore . delete ( key ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm DataStore . write ( key , Ġvalue Ġas ĠInt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLong Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm DataStore . write ( key , Ġvalue Ġas ĠLong ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDouble Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm DataStore . write ( key , Ġvalue Ġas ĠDouble ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFloat Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm DataStore . write ( key , Ġvalue Ġas ĠFloat ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm DataStore . write ( key , Ġvalue Ġas ĠBoolean ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm DataStore . write ( key , Ġvalue Ġas ĠString ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠByteArray Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm DataStore . write ( key , Ġvalue Ġas ĠByteArray ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm DataStore . write ( key , ĠJSON . toJSON String ( value )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }