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; } }
//public override bool ToBoolean() { return !string.IsNullOrEmpty(Value);/* return System.Convert.ToBoolean(Value); */} //public override float ToFloat() { return (float)ToDouble(); } //public override double ToDouble() //{ // if (Value.StartsWith("0x")) // return (Double)Convert.ToInt64(Value, 16); // if (Value.StartsWith("0.")) // return Convert.ToDouble(Value); // if (Value.StartsWith("0")) // return (Double)Convert.ToInt64(Value, 8); // if (Value == "Infinity" || Value == "+Infinity") // return double.PositiveInfinity; // if (Value == "-Infinity") // return double.NegativeInfinity; // try // { // return System.Convert.ToDouble(Value); // } // catch (FormatException) // { // return double.NaN; // } // catch (OverflowException) // { // return double.NaN; // } //} //public override sbyte ToInt8() { return (sbyte)ToDouble(); } //public override short ToInt16() { return (short)ToDouble(); } //public override int ToInt32() { return (int)ToDouble(); } //public override long ToInt64() { return (long)ToDouble(); } //public override byte ToUInt8() { return (byte)ToDouble(); } //public override ushort ToUInt16() { return (ushort)ToDouble(); } //public override uint ToUInt32() { return (uint)ToDouble(); } //public override ulong ToUInt64() { return (ulong)ToDouble(); } //public override DObject Set(string v) //{ // if (v == Value) // return this; // return base.Set(v); //} #region GetPropertyDescriptor public override PropertyDescriptor GetPropertyDescriptor(int field) { if (field < PrimitiveValue.AsString().Length) { var accessor = Runtime.Instance.StringItemAccessor; accessor.Index = field; return(accessor); } else { return(UndefinedItemAccessor); } }
private static unsafe void HandleBsonCallback(IntPtr tcs_ptr, PrimitiveValue response, AppError error) { var tcsHandle = GCHandle.FromIntPtr(tcs_ptr); var tcs = (TaskCompletionSource <string>)tcsHandle.Target; if (error.is_null) { tcs.TrySetResult(response.AsString()); } else { tcs.TrySetException(new AppException(error)); } }
private static unsafe void HandleLogMessage(IntPtr managedHandler, PrimitiveValue messageValue, LogLevel level) { try { var message = messageValue.AsString(); var logger = (Logger)GCHandle.FromIntPtr(managedHandler).Target; logger.Log(level, message); } catch (Exception ex) { var errorMessage = $"An error occurred while trying to log a message: {ex}"; Logger.LogDefault(LogLevel.Error, errorMessage); } }
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; } }
public override string ToString() { return(PrimitiveValue.AsString()); }