/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠRealm ĠInc . Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ*/ Ċ Ċ package Ġio . realm Ċ Ċ import Ġio . realm . internal . Mediator Ċ import Ġio . realm . internal . Notification Token Ċ import Ġio . realm . internal . Realm Object Internal Ċ import Ġio . realm . internal . check Realm Closed Ċ import Ġio . realm . internal . link Ċ import Ġio . realm . interop . Link Ċ import Ġio . realm . interop . Native Pointer Ċ import Ġio . realm . interop . Realm Interop Ċ import Ġkotlin . reflect . K Class Ċ Ċ // ĠFIXME ĠAPI - QUERY ĠFinal Ġquery Ġdesign Ġis Ġtracked Ġin Ġhttps :// github . com / realm / realm - kotlin / issues / 8 4 Ċ // Ġ Ġ- ĠLazy ĠAPI Ġmakes Ġit Ġhar ded Ġto Ġdebug Ċ // Ġ Ġ- ĠPost pon ing Ġexecution Ġto Ġactually Ġaccessing Ġthe Ġelements Ġalso Ġprevents Ġquery Ġparser Ġerrors Ġto Ċ // ĠĠĠ Ġbe Ġraised . ĠMaybe Ġwe Ġcan Ġget Ġan Ġoption Ġto Ġpre validate Ġqueries Ġin Ġthe ĠC - API ? Ċ class ĠRealm Results < T Ġ: ĠRealm Object > Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġrealm Configuration : ĠRealm Configuration , ĊĠĠĠ Ġprivate Ġval Ġrealm : ĠNative Pointer , ĊĠĠĠ Ġprivate Ġval Ġquery Pointer : Ġ() Ġ-> ĠNative Pointer , ĊĠĠĠ Ġprivate Ġval Ġclazz : ĠK Class < T >, ĊĠĠĠ Ġprivate Ġval Ġmedi ator : ĠMed iator Ċ ) Ġ: ĠAbstract List < T >(), ĠQuery able < T > Ġ{ ĊĊĠĠĠ Ġpublic Ġvar Ġversion : ĠVersion Id Ġ= ĠVersion Id ( 0 ) ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Realm Closed ( realm , Ġrealm Configuration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠVersion Id ( Realm Interop . realm _ get _ version _ id ( realm )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġquery : ĠNative Pointer Ġby Ġlazy Ġ{ Ġquery Pointer () Ġ} ĊĠĠĠ Ġprivate Ġval Ġresult : ĠNative Pointer Ġby Ġlazy Ġ{ ĠRealm Interop . realm _ query _ find _ all ( query ) Ġ} ĊĠĠĠ Ġoverride Ġval Ġsize : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠRealm Interop . realm _ results _ count ( result ). toInt () ĊĊĠĠĠ Ġoverride Ġfun Ġget ( index : ĠInt ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlink : ĠLink Ġ= ĠRealm Interop . realm _ results _ get < T >( result , Ġindex . to Long ()) ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= Ġmedi ator . create InstanceOf ( clazz ) Ġas ĠRealm Object Internal ĊĠĠĠĠĠĠĠ Ġmodel . link ( realm , Ġmedi ator , Ġclazz , Ġlink ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmodel Ġas ĠT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠQuery Ġstring Ġfollows Ġthe ĠSwift / JS Ġfilter / sort - syntax Ġas Ġdescribed Ġin ĊĠĠĠ Ġ// Ġhttps :// realm . io / docs / javascript / latest /# filtering ĊĠĠĠ Ġ// ĠEx .: ĊĠĠĠ Ġ// ĠĠ Ġ' color Ġ= Ġ" tan " ĠAND Ġname ĠBEGIN SW ITH Ġ" B " ĠSORT ( name ĠDESC ) ĠLIMIT ( 5 )' ĊĠĠĠ Ġ@ Suppress (" Spread Operator ") ĊĠĠĠ Ġoverride Ġfun Ġquery ( query : ĠString , Ġvar arg Ġargs : ĠAny ): ĠRealm Results < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRealm Results ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrealm Configuration , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrealm , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠRealm Interop . realm _ query _ parse ( result , Ġclazz . simple Name !! , Ġquery , Ġ* args ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclazz , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedi ator , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOb serve Ġchanges Ġto Ġa ĠRealm Ġresult . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠFollow s Ġthe Ġpattern Ġof Ġ[ Realm . observe ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġobserve ( callback : ĠCallback < Realm Results < T >> ): ĠC ancellable Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= ĠRealm Interop . realm _ results _ add _ notification _ callback ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: Ġio . realm . interop . Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonChange ( collection Changes : ĠNative Pointer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFIXME ĠNeed Ġto Ġexpose Ġchange Ġdetails Ġto Ġthe Ġuser ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġhttps :// github . com / realm / realm - kotlin / issues / 1 1 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . onChange ( this @ Realm Results ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn ĠNotification Token ( callback , Ġtoken ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠOP TIMI ZE ĠAre Ġthere Ġmore Ġefficient Ġways Ġto Ġdo Ġthis ? Ġrealm _ query _ delete _ all Ġis Ġnot ĊĠĠĠĠĠĠĠ Ġ// Ġ Ġavailable Ġin ĠC - API Ġyet , Ġbut Ġshould Ġprobably Ġawait Ġfinal Ġquery Ġdesign ĊĠĠĠĠĠĠĠ Ġ// Ġ Ġhttps :// github . com / realm / realm - kotlin / issues / 8 4 ĊĠĠĠĠĠĠĠ ĠRealm Interop . realm _ results _ delete _ all ( result ) ĊĠĠĠ Ġ} Ċ } Ċ