Пример #1
0
        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;
            }
        }
Пример #2
0
        //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);
            }
        }
Пример #3
0
        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));
            }
        }
Пример #4
0
 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);
     }
 }
Пример #5
0
        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;
            }
        }
Пример #6
0
 public override string ToString()
 {
     return(PrimitiveValue.AsString());
 }