public bool TryGet(string key, RealmObjectBase.Metadata metadata, Realm realm, out RealmValue value) { RealmValue keyValue = key; var(primitiveKey, keyHandles) = keyValue.ToNative(); var containsValue = NativeMethods.try_get_value(this, primitiveKey, out var result, out var nativeException); keyHandles?.Dispose(); nativeException.ThrowIfNecessary(); if (!containsValue) { value = default; return(false); } if (result.Type != RealmValueType.Object) { value = new RealmValue(result); } else { var objectHandle = result.AsObject(Root); if (metadata == null) { throw new NotImplementedException("Mixed objects are not supported yet."); } value = new RealmValue(realm.MakeObject(metadata, objectHandle)); } return(true); }
public KeyValuePair <string, TValue> GetValueAtIndex <TValue>(int index, RealmObjectBase.Metadata metadata, Realm realm) { NativeMethods.get_at_index(this, (IntPtr)index, out var key, out var primitiveValue, out var ex); ex.ThrowIfNecessary(); var value = ToRealmValue(primitiveValue, metadata, realm); return(new KeyValuePair <string, TValue>(key.AsString(), value.As <TValue>())); }
public RealmValue GetValue(string propertyName, RealmObjectBase.Metadata metadata, Realm realm) { var propertyIndex = metadata.PropertyIndices[propertyName]; NativeMethods.get_value(this, propertyIndex, out var result, out var nativeException); nativeException.ThrowIfNecessary(); return(new RealmValue(result, realm, this, propertyIndex)); }
public RealmValue GetValueAtIndex(int index, RealmObjectBase.Metadata metadata, Realm realm) { GetValueAtIndexCore((IntPtr)index, out var result, out var nativeException); nativeException.ThrowIfNecessary(); if (result.Type != RealmValueType.Object) { return(new RealmValue(result)); } var objectHandle = result.AsObject(Root); return(new RealmValue(realm.MakeObject(metadata, objectHandle))); }
protected RealmValue ToRealmValue(PrimitiveValue primitive, RealmObjectBase.Metadata metadata, Realm realm) { if (primitive.Type != RealmValueType.Object) { return(new RealmValue(primitive)); } var objectHandle = primitive.AsObject(Root); if (metadata == null) { throw new NotImplementedException("Mixed objects are not supported yet."); } return(new RealmValue(realm.MakeObject(metadata, objectHandle))); }
public RealmValue GetValue(string propertyName, RealmObjectBase.Metadata metadata, Realm realm) { var propertyIndex = metadata.PropertyIndices[propertyName]; NativeMethods.get_value(this, propertyIndex, out var result, out var nativeException); nativeException.ThrowIfNecessary(); if (result.Type != RealmValueType.Object) { return(new RealmValue(result, this, propertyIndex)); } var objectHandle = result.AsObject(Root); metadata.Schema.TryFindProperty(propertyName, out var property); return(new RealmValue(realm.MakeObject(realm.Metadata[property.ObjectType], objectHandle))); }
internal ThreadSafeReference(IThreadConfined value, Type type) { if (value == null) { throw new ArgumentNullException(nameof(value)); } if (!value.IsManaged) { throw new RealmException("Cannot construct reference to unmanaged object, which can be passed across threads directly."); } if (!value.IsValid) { throw new RealmException("Cannot construct reference to invalidated object."); } Handle = value.Handle.GetThreadSafeReference(); Metadata = value.Metadata; ReferenceType = type; }
internal RealmResultsProvider(Realm realm, RealmObjectBase.Metadata metadata) { _realm = realm; _metadata = metadata; }
internal RealmCollectionBase(Realm realm, RealmObjectBase.Metadata metadata) { Realm = realm; Handle = new Lazy <CollectionHandleBase>(GetOrCreateHandle); Metadata = metadata; }
internal RealmResults(Realm realm, RealmObjectBase.Metadata metadata) : this(realm, metadata.Table.CreateResults(realm.SharedRealmHandle), metadata) { }
internal RealmResults(Realm realm, ResultsHandle handle, RealmObjectBase.Metadata metadata) : this(realm, metadata, new RealmResultsProvider(realm, metadata), null) { _handle = handle; }
internal RealmResults(Realm realm, RealmObjectBase.Metadata metadata, RealmResultsProvider realmResultsProvider, Expression expression) : base(realm, metadata) { Provider = realmResultsProvider; Expression = expression ?? Expression.Constant(this); }
internal RealmResultsVisitor(Realm realm, RealmObjectBase.Metadata metadata) { _realm = realm; _metadata = metadata; }
internal RealmList(Realm realm, ListHandle adoptedList, RealmObjectBase.Metadata metadata) : base(realm, metadata) { _listHandle = adoptedList; }
public RealmValue GetValueAtIndex(int index, RealmObjectBase.Metadata metadata, Realm realm) { NativeMethods.get_value(this, (IntPtr)index, out var result, out var ex); ex.ThrowIfNecessary(); return(ToRealmValue(result, metadata, realm)); }
internal RealmSet(Realm realm, SetHandle adoptedSet, RealmObjectBase.Metadata metadata) : base(realm, metadata) { _setHandle = adoptedSet; }
internal RealmDictionary(Realm realm, DictionaryHandle adoptedDictionary, RealmObjectBase.Metadata metadata) : base(realm, metadata) { _dictionaryHandle = adoptedDictionary; }