internal RealmValue(PrimitiveValue primitive, Realm realm = null, ObjectHandle handle = default, IntPtr propertyIndex = default) : this() { Type = primitive.Type; _objectHandle = handle; _propertyIndex = propertyIndex; switch (Type) { case RealmValueType.Data: _dataValue = primitive.AsBinary(); break; case RealmValueType.String: _stringValue = primitive.AsString(); break; case RealmValueType.Object: Argument.NotNull(realm, nameof(realm)); _objectValue = primitive.AsObject(realm); break; default: _primitiveValue = primitive; break; } }
private static string ConvertRealmValueTypeToFilterAttribute(RealmValueType rvt) { return(rvt switch { RealmValueType.Null => "null", RealmValueType.Int => "int", RealmValueType.Bool => "bool", RealmValueType.String => "string", RealmValueType.Data => "binary", RealmValueType.Date => "date", RealmValueType.Float => "float", RealmValueType.Double => "double", RealmValueType.Decimal128 => "decimal", RealmValueType.ObjectId => "objectid", RealmValueType.Object => "object", RealmValueType.Guid => "uuid", _ => throw new NotImplementedException(), });
internal static RealmValue Create <T>(T value, RealmValueType type) { if (value is null) { return(new RealmValue(PrimitiveValue.Null())); } return(type switch { RealmValueType.String => String(Operator.Convert <T, string>(value)), RealmValueType.Data => Data(Operator.Convert <T, byte[]>(value)), RealmValueType.Bool => Bool(Operator.Convert <T, bool>(value)), RealmValueType.Int => Int(Operator.Convert <T, long>(value)), RealmValueType.Float => Float(Operator.Convert <T, float>(value)), RealmValueType.Double => Double(Operator.Convert <T, double>(value)), RealmValueType.Date => Date(Operator.Convert <T, DateTimeOffset>(value)), RealmValueType.Decimal128 => Decimal(Operator.Convert <T, Decimal128>(value)), RealmValueType.ObjectId => ObjectId(Operator.Convert <T, ObjectId>(value)), RealmValueType.Guid => Guid(Operator.Convert <T, Guid>(value)), RealmValueType.Object => Object(Operator.Convert <T, RealmObjectBase>(value)), _ => throw new NotSupportedException($"RealmValueType {type} is not supported."), });
internal RealmValue(PrimitiveValue primitive, ObjectHandle handle = default, IntPtr propertyIndex = default) : this() { Type = primitive.Type; _objectHandle = handle; _propertyIndex = propertyIndex; switch (Type) { case RealmValueType.Data: _dataValue = primitive.AsBinary(); break; case RealmValueType.String: _stringValue = primitive.AsString(); break; case RealmValueType.Object: throw new NotSupportedException("Use RealmValue(RealmObject) instead."); default: _primitiveValue = primitive; break; } }
internal RealmValue(RealmObjectBase obj) : this() { Type = obj == null ? RealmValueType.Null : RealmValueType.Object; _objectValue = obj; }
internal RealmValue(string value) : this() { Type = value == null ? RealmValueType.Null : RealmValueType.String; _stringValue = value; }
internal RealmValue(byte[] data) : this() { Type = data == null ? RealmValueType.Null : RealmValueType.Data; _dataValue = data; }
public static extern void realm_value_type_not_equal(QueryHandle queryPtr, SharedRealmHandle realm, IntPtr property_ndx, RealmValueType realm_value_type, out NativeException ex);