Example #1
0
 public JavaScriptConverter(JavaScriptEngine engine)
 {
     engine_           = engine.engineWeakReference;
     api_              = engine.Api;
     projectionTypes_  = new Dictionary <Type, JavaScriptProjection>();
     eventMarshallers_ = new Dictionary <Type, Expression>();
 }
 public JavaScriptConverter(JavaScriptEngine engine)
 {
     engine_ = new WeakReference<JavaScriptEngine>(engine);
     api_ = engine.Api;
     projectionTypes_ = new Dictionary<Type, JavaScriptProjection>();
     eventMarshallers_ = new Dictionary<Type, Expression>();
 }
Example #3
0
        internal JavaScriptValue(JavaScriptValueSafeHandle handle, JavaScriptValueType type, JavaScriptEngine engine)
        {
            Debug.Assert(handle != null);
            Debug.Assert(engine != null);
            Debug.Assert(Enum.IsDefined(typeof(JavaScriptValueType), type));
            handle.SetEngine(engine);
            api_ = engine.Api;

            uint count;
            Errors.ThrowIfIs(api_.JsAddRef(handle.DangerousGetHandle(), out count));

            handle_ = handle;
            type_ = type;
            engine_ = new WeakReference<JavaScriptEngine>(engine);
        }
Example #4
0
        internal JavaScriptEngine(JavaScriptEngineSafeHandle handle, JavaScriptRuntime runtime, ChakraApi api)
        {
            Debug.Assert(handle != null);
            Debug.Assert(runtime != null);
            Debug.Assert(api != null);
            api_ = api;

            handle_               = handle;
            runtime_              = new WeakReference <JavaScriptRuntime>(runtime);
            converter_            = new JavaScriptConverter(this);
            nativeFunctionThunks_ = new List <NativeFunctionThunkData>();
            externalObjects_      = new HashSet <ExternalObjectThunkData>();

            handlesToRelease_  = new List <IntPtr>();
            handleReleaseLock_ = new object();
        }
Example #5
0
        internal JavaScriptEngine(JavaScriptEngineSafeHandle handle, JavaScriptRuntime runtime, ChakraApi api)
        {
            Debug.Assert(handle != null);
            Debug.Assert(runtime != null);
            Debug.Assert(api != null);
            api_ = api;

            handle_ = handle;
            runtime_ = new WeakReference<JavaScriptRuntime>(runtime);
            converter_ = new JavaScriptConverter(this);
            nativeFunctionThunks_ = new List<NativeFunctionThunkData>();
            externalObjects_ = new HashSet<ExternalObjectThunkData>();

            handlesToRelease_ = new List<IntPtr>();
            handleReleaseLock_ = new object();
        }
Example #6
0
        internal JavaScriptValue(JavaScriptValueSafeHandle handle, JavaScriptValueType type, JavaScriptEngine engine)
        {
            Debug.Assert(handle != null);
            Debug.Assert(engine != null);
            Debug.Assert(type >= 0 && type <= JavaScriptValueType.DataView);
            handle.SetEngine(engine);
            api_ = engine.Api;

            uint count;

            Errors.ThrowIfIs(api_.JsAddRef(handle.DangerousGetHandle(), out count));

            handle_ = handle;
            type_   = type;
            engine_ = engine.engineWeakReference;
        }
Example #7
0
        internal JavaScriptValue(JavaScriptValueSafeHandle handle, JavaScriptValueType type, JavaScriptEngine engine)
        {
            Debug.Assert(handle != null);
            Debug.Assert(engine != null);
            Debug.Assert(Enum.IsDefined(typeof(JavaScriptValueType), type));
            handle.SetEngine(engine);
            api_ = engine.Api;

            uint count;

            Errors.ThrowIfIs(api_.JsAddRef(handle.DangerousGetHandle(), out count));

            handle_ = handle;
            type_   = type;
            engine_ = new WeakReference <JavaScriptEngine>(engine);
        }
Example #8
0
        internal JavaScriptEngine(JavaScriptEngineSafeHandle handle, JavaScriptRuntime runtime, ChakraApi api)
        {
            Debug.Assert(handle != null);
            Debug.Assert(runtime != null);
            Debug.Assert(api != null);
            api_ = api;

            handle_               = handle;
            runtime_              = new WeakReference <JavaScriptRuntime>(runtime);
            converter_            = new JavaScriptConverter(this);
            nativeFunctionThunks_ = new List <NativeFunctionThunkData>();
            externalObjects_      = new HashSet <ExternalObjectThunkData>();

            handlesToRelease_  = new List <IntPtr>();
            handleReleaseLock_ = new object();

            ClaimContextPrivate();
            JavaScriptValueSafeHandle global;

            Errors.ThrowIfIs(api_.JsGetGlobalObject(out global));
            global_ = CreateObjectFromHandle(global);
            JavaScriptValueSafeHandle undef;

            Errors.ThrowIfIs(api_.JsGetUndefinedValue(out undef));
            undefined_ = CreateValueFromHandle(undef);
            JavaScriptValueSafeHandle @null;

            Errors.ThrowIfIs(api_.JsGetNullValue(out @null));
            null_ = CreateObjectFromHandle(@null);
            JavaScriptValueSafeHandle @true;

            Errors.ThrowIfIs(api_.JsGetTrueValue(out @true));
            true_ = CreateValueFromHandle(@true);
            JavaScriptValueSafeHandle @false;

            Errors.ThrowIfIs(api_.JsGetFalseValue(out @false));
            false_ = CreateValueFromHandle(@false);
            ReleaseContextPrivate();
        }
Example #9
0
 public JavaScriptConverter(JavaScriptEngine engine)
 {
     engine_ = new WeakReference <JavaScriptEngine>(engine);
     api_    = engine.Api;
 }
 public JavaScriptConverter(JavaScriptEngine engine)
 {
     engine_ = new WeakReference<JavaScriptEngine>(engine);
     api_ = engine.Api;
 }