| /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- |
| * vim: set ts=8 sts=4 et sw=4 tw=99: |
| * This Source Code Form is subject to the terms of the Mozilla Public |
| * License, v. 2.0. If a copy of the MPL was not distributed with this |
| * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| |
| /* |
| * JavaScript Debugging support - All public functions |
| */ |
| |
| #include "jsd.h" |
| |
| /***************************************************************************/ |
| /* High Level calls */ |
| |
| JSD_PUBLIC_API(JSDContext*) |
| JSD_DebuggerOnForUser(JSRuntime* jsrt, |
| JSD_UserCallbacks* callbacks, |
| void* user) |
| { |
| return jsd_DebuggerOnForUser(jsrt, callbacks, user, NULL); |
| } |
| |
| JSD_PUBLIC_API(JSDContext*) |
| JSD_DebuggerOn(void) |
| { |
| return jsd_DebuggerOn(); |
| } |
| |
| JSD_PUBLIC_API(void) |
| JSD_DebuggerOff(JSDContext* jsdc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| jsd_DebuggerOff(jsdc); |
| } |
| |
| JSD_PUBLIC_API(void) |
| JSD_DebuggerPause(JSDContext* jsdc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| jsd_DebuggerPause(jsdc, JS_FALSE); |
| } |
| |
| JSD_PUBLIC_API(void) |
| JSD_DebuggerUnpause(JSDContext* jsdc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| jsd_DebuggerUnpause(jsdc); |
| } |
| |
| JSD_PUBLIC_API(unsigned) |
| JSD_GetMajorVersion(void) |
| { |
| return JSD_MAJOR_VERSION; |
| } |
| |
| JSD_PUBLIC_API(unsigned) |
| JSD_GetMinorVersion(void) |
| { |
| return JSD_MINOR_VERSION; |
| } |
| |
| JSD_PUBLIC_API(JSObject*) |
| JSD_GetDefaultGlobal(JSDContext* jsdc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsdc->glob; |
| } |
| |
| JSD_PUBLIC_API(JSRuntime*) |
| JSD_GetJSRuntime(JSDContext* jsdc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsdc->jsrt; |
| } |
| |
| JSD_PUBLIC_API(void) |
| JSD_SetUserCallbacks(JSRuntime* jsrt, JSD_UserCallbacks* callbacks, void* user) |
| { |
| jsd_SetUserCallbacks(jsrt, callbacks, user); |
| } |
| |
| JSD_PUBLIC_API(void) |
| JSD_JSContextInUse(JSDContext* jsdc, JSContext* context) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| /* we no longer need this information - may need it again in the future */ |
| } |
| |
| JSD_PUBLIC_API(void *) |
| JSD_SetContextPrivate(JSDContext *jsdc, void *data) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_SetContextPrivate (jsdc, data); |
| } |
| |
| JSD_PUBLIC_API(void *) |
| JSD_GetContextPrivate(JSDContext *jsdc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetContextPrivate (jsdc); |
| } |
| |
| JSD_PUBLIC_API(void) |
| JSD_ClearAllProfileData(JSDContext *jsdc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| jsd_ClearAllProfileData(jsdc); |
| } |
| |
| JSD_PUBLIC_API(void) |
| JSD_SetContextFlags(JSDContext *jsdc, uint32_t flags) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| jsdc->flags = flags; |
| if (flags & JSD_COLLECT_PROFILE_DATA) { |
| /* Need to reenable our call hooks now */ |
| JS_SetExecuteHook(jsdc->jsrt, jsd_TopLevelCallHook, jsdc); |
| JS_SetCallHook(jsdc->jsrt, jsd_FunctionCallHook, jsdc); |
| } |
| } |
| |
| JSD_PUBLIC_API(uint32_t) |
| JSD_GetContextFlags(JSDContext *jsdc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsdc->flags; |
| } |
| |
| JSD_PUBLIC_API(JSDContext*) |
| JSD_JSDContextForJSContext(JSContext* context) |
| { |
| return jsd_JSDContextForJSContext(context); |
| } |
| |
| /***************************************************************************/ |
| /* Script functions */ |
| |
| JSD_PUBLIC_API(void) |
| JSD_LockScriptSubsystem(JSDContext* jsdc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_LOCK_SCRIPTS(jsdc); |
| } |
| |
| JSD_PUBLIC_API(void) |
| JSD_UnlockScriptSubsystem(JSDContext* jsdc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_UNLOCK_SCRIPTS(jsdc); |
| } |
| |
| JSD_PUBLIC_API(JSDScript*) |
| JSD_IterateScripts(JSDContext* jsdc, JSDScript **iterp) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_IterateScripts(jsdc, iterp); |
| } |
| |
| JSD_PUBLIC_API(uint32_t) |
| JSD_GetScriptFlags(JSDContext *jsdc, JSDScript *script) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetScriptFlags(jsdc, script); |
| } |
| |
| JSD_PUBLIC_API(void) |
| JSD_SetScriptFlags(JSDContext *jsdc, JSDScript *script, uint32_t flags) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| jsd_SetScriptFlags(jsdc, script, flags); |
| } |
| |
| JSD_PUBLIC_API(unsigned) |
| JSD_GetScriptCallCount(JSDContext* jsdc, JSDScript *script) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetScriptCallCount(jsdc, script); |
| } |
| |
| JSD_PUBLIC_API(unsigned) |
| JSD_GetScriptMaxRecurseDepth(JSDContext* jsdc, JSDScript *script) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetScriptMaxRecurseDepth(jsdc, script); |
| } |
| |
| |
| JSD_PUBLIC_API(double) |
| JSD_GetScriptMinExecutionTime(JSDContext* jsdc, JSDScript *script) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetScriptMinExecutionTime(jsdc, script); |
| } |
| |
| JSD_PUBLIC_API(double) |
| JSD_GetScriptMaxExecutionTime(JSDContext* jsdc, JSDScript *script) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetScriptMaxExecutionTime(jsdc, script); |
| } |
| |
| JSD_PUBLIC_API(double) |
| JSD_GetScriptTotalExecutionTime(JSDContext* jsdc, JSDScript *script) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetScriptTotalExecutionTime(jsdc, script); |
| } |
| |
| JSD_PUBLIC_API(double) |
| JSD_GetScriptMinOwnExecutionTime(JSDContext* jsdc, JSDScript *script) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetScriptMinOwnExecutionTime(jsdc, script); |
| } |
| |
| JSD_PUBLIC_API(double) |
| JSD_GetScriptMaxOwnExecutionTime(JSDContext* jsdc, JSDScript *script) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetScriptMaxOwnExecutionTime(jsdc, script); |
| } |
| |
| JSD_PUBLIC_API(double) |
| JSD_GetScriptTotalOwnExecutionTime(JSDContext* jsdc, JSDScript *script) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetScriptTotalOwnExecutionTime(jsdc, script); |
| } |
| |
| JSD_PUBLIC_API(void) |
| JSD_ClearScriptProfileData(JSDContext* jsdc, JSDScript *script) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| jsd_ClearScriptProfileData(jsdc, script); |
| } |
| |
| JSD_PUBLIC_API(JSScript*) |
| JSD_GetJSScript(JSDContext* jsdc, JSDScript *script) |
| { |
| return jsd_GetJSScript(jsdc, script); |
| } |
| |
| JSD_PUBLIC_API(JSFunction*) |
| JSD_GetJSFunction(JSDContext* jsdc, JSDScript *script) |
| { |
| return jsd_GetJSFunction (jsdc, script); |
| } |
| |
| JSD_PUBLIC_API(void *) |
| JSD_SetScriptPrivate(JSDScript *jsdscript, void *data) |
| { |
| JSD_ASSERT_VALID_SCRIPT(jsdscript); |
| return jsd_SetScriptPrivate (jsdscript, data); |
| } |
| |
| JSD_PUBLIC_API(void *) |
| JSD_GetScriptPrivate(JSDScript *jsdscript) |
| { |
| JSD_ASSERT_VALID_SCRIPT(jsdscript); |
| return jsd_GetScriptPrivate (jsdscript); |
| } |
| |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_IsActiveScript(JSDContext* jsdc, JSDScript *jsdscript) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_IsActiveScript(jsdc, jsdscript); |
| } |
| |
| JSD_PUBLIC_API(const char*) |
| JSD_GetScriptFilename(JSDContext* jsdc, JSDScript *jsdscript) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SCRIPT(jsdscript); |
| return jsd_GetScriptFilename(jsdc, jsdscript); |
| } |
| |
| JSD_PUBLIC_API(JSString *) |
| JSD_GetScriptFunctionId(JSDContext* jsdc, JSDScript *jsdscript) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SCRIPT(jsdscript); |
| return jsd_GetScriptFunctionId(jsdc, jsdscript); |
| } |
| |
| JSD_PUBLIC_API(unsigned) |
| JSD_GetScriptBaseLineNumber(JSDContext* jsdc, JSDScript *jsdscript) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SCRIPT(jsdscript); |
| return jsd_GetScriptBaseLineNumber(jsdc, jsdscript); |
| } |
| |
| JSD_PUBLIC_API(unsigned) |
| JSD_GetScriptLineExtent(JSDContext* jsdc, JSDScript *jsdscript) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SCRIPT(jsdscript); |
| return jsd_GetScriptLineExtent(jsdc, jsdscript); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_SetScriptHook(JSDContext* jsdc, JSD_ScriptHookProc hook, void* callerdata) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_SetScriptHook(jsdc, hook, callerdata); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_GetScriptHook(JSDContext* jsdc, JSD_ScriptHookProc* hook, void** callerdata) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetScriptHook(jsdc, hook, callerdata); |
| } |
| |
| JSD_PUBLIC_API(uintptr_t) |
| JSD_GetClosestPC(JSDContext* jsdc, JSDScript* jsdscript, unsigned line) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SCRIPT(jsdscript); |
| return jsd_GetClosestPC(jsdc, jsdscript, line); |
| } |
| |
| JSD_PUBLIC_API(unsigned) |
| JSD_GetClosestLine(JSDContext* jsdc, JSDScript* jsdscript, uintptr_t pc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SCRIPT(jsdscript); |
| return jsd_GetClosestLine(jsdc, jsdscript, pc); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_GetLinePCs(JSDContext* jsdc, JSDScript* jsdscript, |
| unsigned startLine, unsigned maxLines, |
| unsigned* count, unsigned** lines, uintptr_t** pcs) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SCRIPT(jsdscript); |
| return jsd_GetLinePCs(jsdc, jsdscript, startLine, maxLines, count, lines, pcs); |
| } |
| |
| JSD_PUBLIC_API(void) |
| JSD_ScriptCreated(JSDContext* jsdc, |
| JSContext *cx, |
| const char *filename, /* URL this script loads from */ |
| unsigned lineno, /* line where this script starts */ |
| JSScript *script, |
| JSFunction *fun) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| jsd_ScriptCreated(jsdc, cx, filename, lineno, script, fun); |
| } |
| |
| JSD_PUBLIC_API(void) |
| JSD_ScriptDestroyed(JSDContext* jsdc, |
| JSFreeOp *fop, |
| JSScript *script) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| jsd_ScriptDestroyed(jsdc, fop, script); |
| } |
| |
| /***************************************************************************/ |
| /* Source Text functions */ |
| |
| JSD_PUBLIC_API(void) |
| JSD_LockSourceTextSubsystem(JSDContext* jsdc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_LOCK_SOURCE_TEXT(jsdc); |
| } |
| |
| JSD_PUBLIC_API(void) |
| JSD_UnlockSourceTextSubsystem(JSDContext* jsdc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_UNLOCK_SOURCE_TEXT(jsdc); |
| } |
| |
| JSD_PUBLIC_API(JSDSourceText*) |
| JSD_IterateSources(JSDContext* jsdc, JSDSourceText **iterp) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_IterateSources(jsdc, iterp); |
| } |
| |
| JSD_PUBLIC_API(JSDSourceText*) |
| JSD_FindSourceForURL(JSDContext* jsdc, const char* url) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JS_ASSERT(url); |
| return jsd_FindSourceForURL(jsdc, url); |
| } |
| |
| JSD_PUBLIC_API(const char*) |
| JSD_GetSourceURL(JSDContext* jsdc, JSDSourceText* jsdsrc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc); |
| return jsd_GetSourceURL(jsdc,jsdsrc); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_GetSourceText(JSDContext* jsdc, JSDSourceText* jsdsrc, |
| const char** ppBuf, int* pLen) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc); |
| JS_ASSERT(ppBuf); |
| JS_ASSERT(pLen); |
| return jsd_GetSourceText(jsdc, jsdsrc, ppBuf, pLen); |
| } |
| |
| JSD_PUBLIC_API(void) |
| JSD_ClearSourceText(JSDContext* jsdc, JSDSourceText* jsdsrc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc); |
| jsd_ClearSourceText(jsdc, jsdsrc); |
| } |
| |
| |
| JSD_PUBLIC_API(JSDSourceStatus) |
| JSD_GetSourceStatus(JSDContext* jsdc, JSDSourceText* jsdsrc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc); |
| return jsd_GetSourceStatus(jsdc, jsdsrc); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_IsSourceDirty(JSDContext* jsdc, JSDSourceText* jsdsrc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc); |
| return jsd_IsSourceDirty(jsdc, jsdsrc); |
| } |
| |
| JSD_PUBLIC_API(void) |
| JSD_SetSourceDirty(JSDContext* jsdc, JSDSourceText* jsdsrc, JSBool dirty) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc); |
| jsd_SetSourceDirty(jsdc, jsdsrc, dirty); |
| } |
| |
| JSD_PUBLIC_API(unsigned) |
| JSD_GetSourceAlterCount(JSDContext* jsdc, JSDSourceText* jsdsrc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc); |
| return jsd_GetSourceAlterCount(jsdc, jsdsrc); |
| } |
| |
| JSD_PUBLIC_API(unsigned) |
| JSD_IncrementSourceAlterCount(JSDContext* jsdc, JSDSourceText* jsdsrc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc); |
| return jsd_IncrementSourceAlterCount(jsdc, jsdsrc); |
| } |
| |
| JSD_PUBLIC_API(void) |
| JSD_DestroyAllSources( JSDContext* jsdc ) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| jsd_DestroyAllSources(jsdc); |
| } |
| |
| JSD_PUBLIC_API(JSDSourceText*) |
| JSD_NewSourceText(JSDContext* jsdc, const char* url) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JS_ASSERT(url); |
| return jsd_NewSourceText(jsdc, url); |
| } |
| |
| JSD_PUBLIC_API(JSDSourceText*) |
| JSD_AppendSourceText(JSDContext* jsdc, |
| JSDSourceText* jsdsrc, |
| const char* text, /* *not* zero terminated */ |
| size_t length, |
| JSDSourceStatus status) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc); |
| return jsd_AppendSourceText(jsdc, jsdsrc, text, length, status); |
| } |
| |
| extern JSD_PUBLIC_API(JSDSourceText*) |
| JSD_AppendUCSourceText(JSDContext* jsdc, |
| JSDSourceText* jsdsrc, |
| const jschar* text, /* *not* zero terminated */ |
| size_t length, |
| JSDSourceStatus status) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc); |
| return jsd_AppendUCSourceText(jsdc, jsdsrc, text, length, status); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_AddFullSourceText(JSDContext* jsdc, |
| const char* text, /* *not* zero terminated */ |
| size_t length, |
| const char* url) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JS_ASSERT(url); |
| return jsd_AddFullSourceText(jsdc, text, length, url); |
| } |
| |
| /***************************************************************************/ |
| /* Execution/Interrupt Hook functions */ |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_SetExecutionHook(JSDContext* jsdc, |
| JSDScript* jsdscript, |
| uintptr_t pc, |
| JSD_ExecutionHookProc hook, |
| void* callerdata) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SCRIPT(jsdscript); |
| return jsd_SetExecutionHook(jsdc, jsdscript, pc, hook, callerdata); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_ClearExecutionHook(JSDContext* jsdc, |
| JSDScript* jsdscript, |
| uintptr_t pc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SCRIPT(jsdscript); |
| return jsd_ClearExecutionHook(jsdc, jsdscript, pc); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_ClearAllExecutionHooksForScript(JSDContext* jsdc, JSDScript* jsdscript) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SCRIPT(jsdscript); |
| return jsd_ClearAllExecutionHooksForScript(jsdc, jsdscript); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_ClearAllExecutionHooks(JSDContext* jsdc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_ClearAllExecutionHooks(jsdc); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_SetInterruptHook(JSDContext* jsdc, |
| JSD_ExecutionHookProc hook, |
| void* callerdata) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_SetInterruptHook(jsdc, hook, callerdata); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_EnableSingleStepInterrupts(JSDContext* jsdc, JSDScript* jsdscript, JSBool enable) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SCRIPT(jsdscript); |
| return jsd_EnableSingleStepInterrupts(jsdc, jsdscript, enable); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_ClearInterruptHook(JSDContext* jsdc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_ClearInterruptHook(jsdc); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_SetDebugBreakHook(JSDContext* jsdc, |
| JSD_ExecutionHookProc hook, |
| void* callerdata) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_SetDebugBreakHook(jsdc, hook, callerdata); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_ClearDebugBreakHook(JSDContext* jsdc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_ClearDebugBreakHook(jsdc); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_SetDebuggerHook(JSDContext* jsdc, |
| JSD_ExecutionHookProc hook, |
| void* callerdata) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_SetDebuggerHook(jsdc, hook, callerdata); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_ClearDebuggerHook(JSDContext* jsdc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_ClearDebuggerHook(jsdc); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_SetThrowHook(JSDContext* jsdc, |
| JSD_ExecutionHookProc hook, |
| void* callerdata) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_SetThrowHook(jsdc, hook, callerdata); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_ClearThrowHook(JSDContext* jsdc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_ClearThrowHook(jsdc); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_SetTopLevelHook(JSDContext* jsdc, |
| JSD_CallHookProc hook, |
| void* callerdata) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_SetTopLevelHook(jsdc, hook, callerdata); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_ClearTopLevelHook(JSDContext* jsdc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_ClearTopLevelHook(jsdc); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_SetFunctionHook(JSDContext* jsdc, |
| JSD_CallHookProc hook, |
| void* callerdata) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_SetFunctionHook(jsdc, hook, callerdata); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_ClearFunctionHook(JSDContext* jsdc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_ClearFunctionHook(jsdc); |
| } |
| |
| /***************************************************************************/ |
| /* Stack Frame functions */ |
| |
| JSD_PUBLIC_API(unsigned) |
| JSD_GetCountOfStackFrames(JSDContext* jsdc, JSDThreadState* jsdthreadstate) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetCountOfStackFrames(jsdc, jsdthreadstate); |
| } |
| |
| JSD_PUBLIC_API(JSDStackFrameInfo*) |
| JSD_GetStackFrame(JSDContext* jsdc, JSDThreadState* jsdthreadstate) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetStackFrame(jsdc, jsdthreadstate); |
| } |
| |
| JSD_PUBLIC_API(JSContext*) |
| JSD_GetJSContext(JSDContext* jsdc, JSDThreadState* jsdthreadstate) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetJSContext(jsdc, jsdthreadstate); |
| } |
| |
| JSD_PUBLIC_API(JSDStackFrameInfo*) |
| JSD_GetCallingStackFrame(JSDContext* jsdc, |
| JSDThreadState* jsdthreadstate, |
| JSDStackFrameInfo* jsdframe) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetCallingStackFrame(jsdc, jsdthreadstate, jsdframe); |
| } |
| |
| JSD_PUBLIC_API(JSDScript*) |
| JSD_GetScriptForStackFrame(JSDContext* jsdc, |
| JSDThreadState* jsdthreadstate, |
| JSDStackFrameInfo* jsdframe) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetScriptForStackFrame(jsdc, jsdthreadstate, jsdframe); |
| } |
| |
| JSD_PUBLIC_API(uintptr_t) |
| JSD_GetPCForStackFrame(JSDContext* jsdc, |
| JSDThreadState* jsdthreadstate, |
| JSDStackFrameInfo* jsdframe) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetPCForStackFrame(jsdc, jsdthreadstate, jsdframe); |
| } |
| |
| JSD_PUBLIC_API(JSDValue*) |
| JSD_GetCallObjectForStackFrame(JSDContext* jsdc, |
| JSDThreadState* jsdthreadstate, |
| JSDStackFrameInfo* jsdframe) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetCallObjectForStackFrame(jsdc, jsdthreadstate, jsdframe); |
| } |
| |
| JSD_PUBLIC_API(JSDValue*) |
| JSD_GetScopeChainForStackFrame(JSDContext* jsdc, |
| JSDThreadState* jsdthreadstate, |
| JSDStackFrameInfo* jsdframe) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetScopeChainForStackFrame(jsdc, jsdthreadstate, jsdframe); |
| } |
| |
| JSD_PUBLIC_API(JSDValue*) |
| JSD_GetThisForStackFrame(JSDContext* jsdc, |
| JSDThreadState* jsdthreadstate, |
| JSDStackFrameInfo* jsdframe) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetThisForStackFrame(jsdc, jsdthreadstate, jsdframe); |
| } |
| |
| JSD_PUBLIC_API(JSString *) |
| JSD_GetIdForStackFrame(JSDContext* jsdc, |
| JSDThreadState* jsdthreadstate, |
| JSDStackFrameInfo* jsdframe) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetIdForStackFrame(jsdc, jsdthreadstate, jsdframe); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_IsStackFrameDebugger(JSDContext* jsdc, |
| JSDThreadState* jsdthreadstate, |
| JSDStackFrameInfo* jsdframe) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_IsStackFrameDebugger(jsdc, jsdthreadstate, jsdframe); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_IsStackFrameConstructing(JSDContext* jsdc, |
| JSDThreadState* jsdthreadstate, |
| JSDStackFrameInfo* jsdframe) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_IsStackFrameConstructing(jsdc, jsdthreadstate, jsdframe); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_EvaluateUCScriptInStackFrame(JSDContext* jsdc, |
| JSDThreadState* jsdthreadstate, |
| JSDStackFrameInfo* jsdframe, |
| const jschar *bytes, unsigned length, |
| const char *filename, unsigned lineno, JS::MutableHandleValue rval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JS_ASSERT(bytes); |
| JS_ASSERT(length); |
| JS_ASSERT(filename); |
| |
| return jsd_EvaluateUCScriptInStackFrame(jsdc, jsdthreadstate,jsdframe, |
| bytes, length, filename, lineno, |
| JS_TRUE, rval); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_AttemptUCScriptInStackFrame(JSDContext* jsdc, |
| JSDThreadState* jsdthreadstate, |
| JSDStackFrameInfo* jsdframe, |
| const jschar *bytes, unsigned length, |
| const char *filename, unsigned lineno, |
| JS::MutableHandleValue rval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JS_ASSERT(bytes); |
| JS_ASSERT(length); |
| JS_ASSERT(filename); |
| |
| return jsd_EvaluateUCScriptInStackFrame(jsdc, jsdthreadstate,jsdframe, |
| bytes, length, filename, lineno, |
| JS_FALSE, rval); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_EvaluateScriptInStackFrame(JSDContext* jsdc, |
| JSDThreadState* jsdthreadstate, |
| JSDStackFrameInfo* jsdframe, |
| const char *bytes, unsigned length, |
| const char *filename, unsigned lineno, JS::MutableHandleValue rval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JS_ASSERT(bytes); |
| JS_ASSERT(length); |
| JS_ASSERT(filename); |
| |
| return jsd_EvaluateScriptInStackFrame(jsdc, jsdthreadstate,jsdframe, |
| bytes, length, |
| filename, lineno, JS_TRUE, rval); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_AttemptScriptInStackFrame(JSDContext* jsdc, |
| JSDThreadState* jsdthreadstate, |
| JSDStackFrameInfo* jsdframe, |
| const char *bytes, unsigned length, |
| const char *filename, unsigned lineno, JS::MutableHandleValue rval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JS_ASSERT(bytes); |
| JS_ASSERT(length); |
| JS_ASSERT(filename); |
| |
| return jsd_EvaluateScriptInStackFrame(jsdc, jsdthreadstate,jsdframe, |
| bytes, length, |
| filename, lineno, JS_FALSE, rval); |
| } |
| |
| JSD_PUBLIC_API(JSString*) |
| JSD_ValToStringInStackFrame(JSDContext* jsdc, |
| JSDThreadState* jsdthreadstate, |
| JSDStackFrameInfo* jsdframe, |
| jsval val) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_ValToStringInStackFrame(jsdc, jsdthreadstate, jsdframe, val); |
| } |
| |
| JSD_PUBLIC_API(JSDValue*) |
| JSD_GetException(JSDContext* jsdc, JSDThreadState* jsdthreadstate) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetException(jsdc, jsdthreadstate); |
| } |
| |
| extern JSD_PUBLIC_API(JSBool) |
| JSD_SetException(JSDContext* jsdc, JSDThreadState* jsdthreadstate, |
| JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_SetException(jsdc, jsdthreadstate, jsdval); |
| } |
| |
| /***************************************************************************/ |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_SetErrorReporter(JSDContext* jsdc, |
| JSD_ErrorReporter reporter, |
| void* callerdata) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_SetErrorReporter(jsdc, reporter, callerdata); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_GetErrorReporter(JSDContext* jsdc, |
| JSD_ErrorReporter* reporter, |
| void** callerdata) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetErrorReporter(jsdc, reporter, callerdata); |
| } |
| |
| /***************************************************************************/ |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_IsLockingAndThreadIdSupported() |
| { |
| #ifdef JSD_THREADSAFE |
| return JS_TRUE; |
| #else |
| return JS_FALSE; |
| #endif |
| } |
| |
| JSD_PUBLIC_API(JSDStaticLock*) |
| JSD_CreateLock() |
| { |
| #ifdef JSD_THREADSAFE |
| return jsd_CreateLock(); |
| #else |
| return (void*)1; |
| #endif |
| } |
| |
| JSD_PUBLIC_API(void) |
| JSD_Lock(JSDStaticLock* lock) |
| { |
| #ifdef JSD_THREADSAFE |
| jsd_Lock(lock); |
| #endif |
| } |
| |
| JSD_PUBLIC_API(void) |
| JSD_Unlock(JSDStaticLock* lock) |
| { |
| #ifdef JSD_THREADSAFE |
| jsd_Unlock(lock); |
| #endif |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_IsLocked(JSDStaticLock* lock) |
| { |
| #if defined(JSD_THREADSAFE) && defined(DEBUG) |
| return jsd_IsLocked(lock); |
| #else |
| return JS_TRUE; |
| #endif |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_IsUnlocked(JSDStaticLock* lock) |
| { |
| #if defined(JSD_THREADSAFE) && defined(DEBUG) |
| return ! jsd_IsLocked(lock); |
| #else |
| return JS_TRUE; |
| #endif |
| } |
| |
| JSD_PUBLIC_API(void*) |
| JSD_CurrentThread() |
| { |
| return JSD_CURRENT_THREAD(); |
| } |
| |
| /***************************************************************************/ |
| /* Value and Property Functions */ |
| |
| JSD_PUBLIC_API(JSDValue*) |
| JSD_NewValue(JSDContext* jsdc, jsval val) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_NewValue(jsdc, val); |
| } |
| |
| JSD_PUBLIC_API(void) |
| JSD_DropValue(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| jsd_DropValue(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(jsval) |
| JSD_GetValueWrappedJSVal(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_GetValueWrappedJSVal(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(void) |
| JSD_RefreshValue(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| jsd_RefreshValue(jsdc, jsdval); |
| } |
| |
| /**************************************************/ |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_IsValueObject(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_IsValueObject(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_IsValueNumber(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_IsValueNumber(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_IsValueInt(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_IsValueInt(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_IsValueDouble(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_IsValueDouble(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_IsValueString(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_IsValueString(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_IsValueBoolean(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_IsValueBoolean(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_IsValueNull(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_IsValueNull(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_IsValueVoid(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_IsValueVoid(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_IsValuePrimitive(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_IsValuePrimitive(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_IsValueFunction(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_IsValueFunction(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_IsValueNative(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_IsValueNative(jsdc, jsdval); |
| } |
| |
| /**************************************************/ |
| |
| JSD_PUBLIC_API(JSBool) |
| JSD_GetValueBoolean(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_GetValueBoolean(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(int32_t) |
| JSD_GetValueInt(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_GetValueInt(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(double) |
| JSD_GetValueDouble(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_GetValueDouble(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(JSString*) |
| JSD_GetValueString(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_GetValueString(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(JSString *) |
| JSD_GetValueFunctionId(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_GetValueFunctionId(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(JSFunction*) |
| JSD_GetValueFunction(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_GetValueFunction(jsdc, jsdval); |
| } |
| |
| /**************************************************/ |
| |
| JSD_PUBLIC_API(unsigned) |
| JSD_GetCountOfProperties(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_GetCountOfProperties(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(JSDProperty*) |
| JSD_IterateProperties(JSDContext* jsdc, JSDValue* jsdval, JSDProperty **iterp) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| JS_ASSERT(iterp); |
| return jsd_IterateProperties(jsdc, jsdval, iterp); |
| } |
| |
| JSD_PUBLIC_API(JSDProperty*) |
| JSD_GetValueProperty(JSDContext* jsdc, JSDValue* jsdval, JSString* name) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| JS_ASSERT(name); |
| return jsd_GetValueProperty(jsdc, jsdval, name); |
| } |
| |
| JSD_PUBLIC_API(JSDValue*) |
| JSD_GetValuePrototype(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_GetValuePrototype(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(JSDValue*) |
| JSD_GetValueParent(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_GetValueParent(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(JSDValue*) |
| JSD_GetValueConstructor(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_GetValueConstructor(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(const char*) |
| JSD_GetValueClassName(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_GetValueClassName(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(JSDScript*) |
| JSD_GetScriptForValue(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_GetScriptForValue(jsdc, jsdval); |
| } |
| /**************************************************/ |
| |
| JSD_PUBLIC_API(void) |
| JSD_DropProperty(JSDContext* jsdc, JSDProperty* jsdprop) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_PROPERTY(jsdprop); |
| jsd_DropProperty(jsdc, jsdprop); |
| } |
| |
| |
| JSD_PUBLIC_API(JSDValue*) |
| JSD_GetPropertyName(JSDContext* jsdc, JSDProperty* jsdprop) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_PROPERTY(jsdprop); |
| return jsd_GetPropertyName(jsdc, jsdprop); |
| } |
| |
| JSD_PUBLIC_API(JSDValue*) |
| JSD_GetPropertyValue(JSDContext* jsdc, JSDProperty* jsdprop) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_PROPERTY(jsdprop); |
| return jsd_GetPropertyValue(jsdc, jsdprop); |
| } |
| |
| JSD_PUBLIC_API(JSDValue*) |
| JSD_GetPropertyAlias(JSDContext* jsdc, JSDProperty* jsdprop) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_PROPERTY(jsdprop); |
| return jsd_GetPropertyAlias(jsdc, jsdprop); |
| } |
| |
| JSD_PUBLIC_API(unsigned) |
| JSD_GetPropertyFlags(JSDContext* jsdc, JSDProperty* jsdprop) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_PROPERTY(jsdprop); |
| return jsd_GetPropertyFlags(jsdc, jsdprop); |
| } |
| |
| /**************************************************/ |
| /* Object Functions */ |
| |
| JSD_PUBLIC_API(void) |
| JSD_LockObjectSubsystem(JSDContext* jsdc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_LOCK_OBJECTS(jsdc); |
| } |
| |
| JSD_PUBLIC_API(void) |
| JSD_UnlockObjectSubsystem(JSDContext* jsdc) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_UNLOCK_OBJECTS(jsdc); |
| } |
| |
| JSD_PUBLIC_API(JSDObject*) |
| JSD_IterateObjects(JSDContext* jsdc, JSDObject** iterp) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| return jsd_IterateObjects(jsdc, iterp); |
| } |
| |
| JSD_PUBLIC_API(JSObject*) |
| JSD_GetWrappedObject(JSDContext* jsdc, JSDObject* jsdobj) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_OBJECT(jsdobj); |
| return jsd_GetWrappedObject(jsdc, jsdobj); |
| |
| } |
| |
| JSD_PUBLIC_API(const char*) |
| JSD_GetObjectNewURL(JSDContext* jsdc, JSDObject* jsdobj) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_OBJECT(jsdobj); |
| return jsd_GetObjectNewURL(jsdc, jsdobj); |
| } |
| |
| JSD_PUBLIC_API(unsigned) |
| JSD_GetObjectNewLineNumber(JSDContext* jsdc, JSDObject* jsdobj) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_OBJECT(jsdobj); |
| return jsd_GetObjectNewLineNumber(jsdc, jsdobj); |
| } |
| |
| JSD_PUBLIC_API(const char*) |
| JSD_GetObjectConstructorURL(JSDContext* jsdc, JSDObject* jsdobj) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_OBJECT(jsdobj); |
| return jsd_GetObjectConstructorURL(jsdc, jsdobj); |
| } |
| |
| JSD_PUBLIC_API(unsigned) |
| JSD_GetObjectConstructorLineNumber(JSDContext* jsdc, JSDObject* jsdobj) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_OBJECT(jsdobj); |
| return jsd_GetObjectConstructorLineNumber(jsdc, jsdobj); |
| } |
| |
| JSD_PUBLIC_API(const char*) |
| JSD_GetObjectConstructorName(JSDContext* jsdc, JSDObject* jsdobj) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_OBJECT(jsdobj); |
| return jsd_GetObjectConstructorName(jsdc, jsdobj); |
| } |
| |
| JSD_PUBLIC_API(JSDObject*) |
| JSD_GetJSDObjectForJSObject(JSDContext* jsdc, JSObject* jsobj) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JS_ASSERT(jsobj); |
| return jsd_GetJSDObjectForJSObject(jsdc, jsobj); |
| } |
| |
| JSD_PUBLIC_API(JSDObject*) |
| JSD_GetObjectForValue(JSDContext* jsdc, JSDValue* jsdval) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_VALUE(jsdval); |
| return jsd_GetObjectForValue(jsdc, jsdval); |
| } |
| |
| JSD_PUBLIC_API(JSDValue*) |
| JSD_GetValueForObject(JSDContext* jsdc, JSDObject* jsdobj) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_OBJECT(jsdobj); |
| return jsd_GetValueForObject(jsdc, jsdobj); |
| } |
| |
| /***************************************************************************/ |
| /* Livewire specific API */ |
| #ifdef LIVEWIRE |
| |
| JSD_PUBLIC_API(LWDBGScript*) |
| JSDLW_GetLWScript(JSDContext* jsdc, JSDScript* jsdscript) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SCRIPT(jsdscript); |
| return jsdlw_GetLWScript(jsdc, jsdscript); |
| } |
| |
| JSD_PUBLIC_API(JSDSourceText*) |
| JSDLW_PreLoadSource( JSDContext* jsdc, LWDBGApp* app, |
| const char* filename, JSBool clear ) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JS_ASSERT(app); |
| JS_ASSERT(filename); |
| return jsdlw_PreLoadSource(jsdc, app, filename, clear); |
| } |
| |
| JSD_PUBLIC_API(JSDSourceText*) |
| JSDLW_ForceLoadSource( JSDContext* jsdc, JSDSourceText* jsdsrc ) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc); |
| return jsdlw_ForceLoadSource(jsdc, jsdsrc); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSDLW_RawToProcessedLineNumber(JSDContext* jsdc, JSDScript* jsdscript, |
| unsigned lineIn, unsigned* lineOut) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SCRIPT(jsdscript); |
| return jsdlw_RawToProcessedLineNumber(jsdc, jsdscript, lineIn, lineOut); |
| } |
| |
| JSD_PUBLIC_API(JSBool) |
| JSDLW_ProcessedToRawLineNumber(JSDContext* jsdc, JSDScript* jsdscript, |
| unsigned lineIn, unsigned* lineOut) |
| { |
| JSD_ASSERT_VALID_CONTEXT(jsdc); |
| JSD_ASSERT_VALID_SCRIPT(jsdscript); |
| return jsdlw_ProcessedToRawLineNumber(jsdc, jsdscript, lineIn, lineOut); |
| } |
| |
| #endif |
| /***************************************************************************/ |