コード例 #1
0
 public Rooted <JS.Value> Invoke(
     JSHandleObject thisReference,
     params JS.Value[] arguments
     )
 {
     return(Pointer.InvokeFunction(Context, thisReference, arguments));
 }
コード例 #2
0
ファイル: Value.cs プロジェクト: t0rchwo0d/SpidermonkeySharp
        public unsafe Rooted <Value> InvokeFunction(
            JSContextPtr context,
            JSHandleObject thisReference,
            params Value[] arguments
            )
        {
            fixed(Value *pThis = &this)
            fixed(Value * pArgs = arguments)
            {
                var argsPtr    = new ValueArrayPtr((uint)arguments.Length, (IntPtr)pArgs);
                var resultRoot = new Rooted <Value>(context, Undefined);

                if (JSAPI.CallFunctionValue(
                        context, thisReference,
                        pThis,
                        ref argsPtr,
                        resultRoot
                        ))
                {
                    return(resultRoot);
                }

                resultRoot.Dispose();
                return(null);
            }
        }
コード例 #3
0
 public JSCustomClass(JSContextPtr context, string name, JSHandleObject globalObject)
 {
     Context         = context;
     ClassDefinition = new JSClass(name);
     ClassPtr        = new JSClassPtr(ClassDefinition, out ClassPin);
     GlobalObject    = globalObject;
     SetConstructor(DefaultConstructor);
 }
コード例 #4
0
        public Rooted <JS.Value> Evaluate(JSHandleObject scope, string scriptSource, string filename = null, uint lineNumber = 0)
        {
            var resultRoot = new Rooted <JS.Value>(this, JS.Value.Undefined);

            if (JSAPI.EvaluateScript(
                    this, scope,
                    scriptSource, filename, lineNumber,
                    resultRoot
                    ))
            {
                return(resultRoot);
            }

            resultRoot.Dispose();
            return(null);
        }
コード例 #5
0
        public Rooted <JS.Value> Evaluate(
            JSHandleObject scope, string scriptSource, out JSError error,
            string filename = null, uint lineNumber = 0
            )
        {
            var prior = ReportUncaughtExceptions;

            try {
                ReportUncaughtExceptions = false;

                var isAlreadyThrowing = Exception.IsPending;

                var result = Evaluate(scope, scriptSource, filename, lineNumber);

                if (Exception.IsPending && !isAlreadyThrowing)
                {
                    var exc = Exception.Get();
                    if (exc.Value.ValueType == JSValueType.OBJECT)
                    {
                        error = new JSError(this, exc.Value.AsObject);
                    }
                    else
                    {
                        exc   = Exception.Get();
                        error = null;
                    }
                    Exception.Clear();
                }
                else
                {
                    error = null;
                }

                return(result);
            } finally {
                ReportUncaughtExceptions = prior;
            }
        }
コード例 #6
0
        static unsafe JSBool global_resolve(
            JSContextPtr cx,
            JSHandleObject obj,
            JSHandleId id,
            ref JSObjectPtr objp
            )
        {
            JSBool resolved = false;

            objp = JSObjectPtr.Zero;

            if (!JSAPI.ResolveStandardClass(cx, obj, id, ref resolved))
            {
                return(false);
            }

            if (resolved)
            {
                objp = obj.Get();
                return(true);
            }

            return(true);
        }
コード例 #7
0
 static unsafe JSBool global_enumerate(JSContextPtr cx, JSHandleObject obj)
 {
     return(JSAPI.EnumerateStandardClasses(cx, obj));
 }