1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /* ***** BEGIN LICENSE BLOCK *****
3 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
5 * The contents of this file are subject to the Mozilla Public License Version
6 * 1.1 (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 * http://www.mozilla.org/MPL/
10 * Software distributed under the License is distributed on an "AS IS" basis,
11 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12 * for the specific language governing rights and limitations under the
15 * The Original Code is mozilla.org code.
17 * The Initial Developer of the Original Code is
18 * Netscape Communications Corporation.
19 * Portions created by the Initial Developer are Copyright (C) 1998
20 * the Initial Developer. All Rights Reserved.
24 * Alternatively, the contents of this file may be used under the terms of
25 * either the GNU General Public License Version 2 or later (the "GPL"), or
26 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
27 * in which case the provisions of the GPL or the LGPL are applicable instead
28 * of those above. If you wish to allow use of your version of this file only
29 * under the terms of either the GPL or the LGPL, and not to allow others to
30 * use your version of this file under the terms of the MPL, indicate your
31 * decision by deleting the provisions above and replace them with the notice
32 * and other provisions required by the GPL or the LGPL. If you do not delete
33 * the provisions above, a recipient may use your version of this file under
34 * the terms of any one of the MPL, the GPL or the LGPL.
36 * ***** END LICENSE BLOCK ***** */
39 * JavaScript Debugging support - All public functions
44 /***************************************************************************/
45 /* High Level calls */
47 JSD_PUBLIC_API(JSDContext*)
48 JSD_DebuggerOnForUser(JSRuntime* jsrt,
49 JSD_UserCallbacks* callbacks,
52 return jsd_DebuggerOnForUser(jsrt, callbacks, user, NULL);
55 JSD_PUBLIC_API(JSDContext*)
58 return jsd_DebuggerOn();
62 JSD_DebuggerOff(JSDContext* jsdc)
64 JSD_ASSERT_VALID_CONTEXT(jsdc);
65 jsd_DebuggerOff(jsdc);
69 JSD_DebuggerPause(JSDContext* jsdc)
71 JSD_ASSERT_VALID_CONTEXT(jsdc);
72 jsd_DebuggerPause(jsdc, JS_FALSE);
76 JSD_DebuggerUnpause(JSDContext* jsdc)
78 JSD_ASSERT_VALID_CONTEXT(jsdc);
79 jsd_DebuggerUnpause(jsdc);
83 JSD_GetMajorVersion(void)
85 return JSD_MAJOR_VERSION;
89 JSD_GetMinorVersion(void)
91 return JSD_MINOR_VERSION;
94 JSD_PUBLIC_API(JSContext*)
95 JSD_GetDefaultJSContext(JSDContext* jsdc)
97 JSD_ASSERT_VALID_CONTEXT(jsdc);
98 return jsdc->dumbContext;
102 JSD_SetUserCallbacks(JSRuntime* jsrt, JSD_UserCallbacks* callbacks, void* user)
104 jsd_SetUserCallbacks(jsrt, callbacks, user);
108 JSD_JSContextInUse(JSDContext* jsdc, JSContext* context)
110 JSD_ASSERT_VALID_CONTEXT(jsdc);
111 /* we no longer need this information - may need it again in the future */
114 JSD_PUBLIC_API(void *)
115 JSD_SetContextPrivate(JSDContext *jsdc, void *data)
117 JSD_ASSERT_VALID_CONTEXT(jsdc);
118 return jsd_SetContextPrivate (jsdc, data);
121 JSD_PUBLIC_API(void *)
122 JSD_GetContextPrivate(JSDContext *jsdc)
124 JSD_ASSERT_VALID_CONTEXT(jsdc);
125 return jsd_GetContextPrivate (jsdc);
129 JSD_ClearAllProfileData(JSDContext *jsdc)
131 JSD_ASSERT_VALID_CONTEXT(jsdc);
132 jsd_ClearAllProfileData(jsdc);
136 JSD_SetContextFlags(JSDContext *jsdc, uint32 flags)
138 uint32 oldFlags = jsdc->flags;
139 JSD_ASSERT_VALID_CONTEXT(jsdc);
141 if (flags & JSD_COLLECT_PROFILE_DATA) {
142 /* Need to reenable our call hooks now */
143 JS_SetExecuteHook(jsdc->jsrt, jsd_TopLevelCallHook, jsdc);
144 JS_SetCallHook(jsdc->jsrt, jsd_FunctionCallHook, jsdc);
148 JSD_PUBLIC_API(uint32)
149 JSD_GetContextFlags(JSDContext *jsdc)
151 JSD_ASSERT_VALID_CONTEXT(jsdc);
155 JSD_PUBLIC_API(JSDContext*)
156 JSD_JSDContextForJSContext(JSContext* context)
158 return jsd_JSDContextForJSContext(context);
161 /***************************************************************************/
162 /* Script functions */
165 JSD_LockScriptSubsystem(JSDContext* jsdc)
167 JSD_ASSERT_VALID_CONTEXT(jsdc);
168 JSD_LOCK_SCRIPTS(jsdc);
172 JSD_UnlockScriptSubsystem(JSDContext* jsdc)
174 JSD_ASSERT_VALID_CONTEXT(jsdc);
175 JSD_UNLOCK_SCRIPTS(jsdc);
178 JSD_PUBLIC_API(JSDScript*)
179 JSD_IterateScripts(JSDContext* jsdc, JSDScript **iterp)
181 JSD_ASSERT_VALID_CONTEXT(jsdc);
182 return jsd_IterateScripts(jsdc, iterp);
185 JSD_PUBLIC_API(uint32)
186 JSD_GetScriptFlags(JSDContext *jsdc, JSDScript *script)
188 JSD_ASSERT_VALID_CONTEXT(jsdc);
189 return jsd_GetScriptFlags(jsdc, script);
193 JSD_SetScriptFlags(JSDContext *jsdc, JSDScript *script, uint32 flags)
195 JSD_ASSERT_VALID_CONTEXT(jsdc);
196 jsd_SetScriptFlags(jsdc, script, flags);
199 JSD_PUBLIC_API(uintN)
200 JSD_GetScriptCallCount(JSDContext* jsdc, JSDScript *script)
202 JSD_ASSERT_VALID_CONTEXT(jsdc);
203 return jsd_GetScriptCallCount(jsdc, script);
206 JSD_PUBLIC_API(uintN)
207 JSD_GetScriptMaxRecurseDepth(JSDContext* jsdc, JSDScript *script)
209 JSD_ASSERT_VALID_CONTEXT(jsdc);
210 return jsd_GetScriptMaxRecurseDepth(jsdc, script);
214 JSD_PUBLIC_API(jsdouble)
215 JSD_GetScriptMinExecutionTime(JSDContext* jsdc, JSDScript *script)
217 JSD_ASSERT_VALID_CONTEXT(jsdc);
218 return jsd_GetScriptMinExecutionTime(jsdc, script);
221 JSD_PUBLIC_API(jsdouble)
222 JSD_GetScriptMaxExecutionTime(JSDContext* jsdc, JSDScript *script)
224 JSD_ASSERT_VALID_CONTEXT(jsdc);
225 return jsd_GetScriptMaxExecutionTime(jsdc, script);
228 JSD_PUBLIC_API(jsdouble)
229 JSD_GetScriptTotalExecutionTime(JSDContext* jsdc, JSDScript *script)
231 JSD_ASSERT_VALID_CONTEXT(jsdc);
232 return jsd_GetScriptTotalExecutionTime(jsdc, script);
235 JSD_PUBLIC_API(jsdouble)
236 JSD_GetScriptMinOwnExecutionTime(JSDContext* jsdc, JSDScript *script)
238 JSD_ASSERT_VALID_CONTEXT(jsdc);
239 return jsd_GetScriptMinOwnExecutionTime(jsdc, script);
242 JSD_PUBLIC_API(jsdouble)
243 JSD_GetScriptMaxOwnExecutionTime(JSDContext* jsdc, JSDScript *script)
245 JSD_ASSERT_VALID_CONTEXT(jsdc);
246 return jsd_GetScriptMaxOwnExecutionTime(jsdc, script);
249 JSD_PUBLIC_API(jsdouble)
250 JSD_GetScriptTotalOwnExecutionTime(JSDContext* jsdc, JSDScript *script)
252 JSD_ASSERT_VALID_CONTEXT(jsdc);
253 return jsd_GetScriptTotalOwnExecutionTime(jsdc, script);
257 JSD_ClearScriptProfileData(JSDContext* jsdc, JSDScript *script)
259 JSD_ASSERT_VALID_CONTEXT(jsdc);
260 jsd_ClearScriptProfileData(jsdc, script);
263 JSD_PUBLIC_API(JSScript*)
264 JSD_GetJSScript(JSDContext* jsdc, JSDScript *script)
266 return jsd_GetJSScript(jsdc, script);
269 JSD_PUBLIC_API(JSFunction*)
270 JSD_GetJSFunction(JSDContext* jsdc, JSDScript *script)
272 return jsd_GetJSFunction (jsdc, script);
275 JSD_PUBLIC_API(void *)
276 JSD_SetScriptPrivate(JSDScript *jsdscript, void *data)
278 JSD_ASSERT_VALID_SCRIPT(jsdscript);
279 return jsd_SetScriptPrivate (jsdscript, data);
282 JSD_PUBLIC_API(void *)
283 JSD_GetScriptPrivate(JSDScript *jsdscript)
285 JSD_ASSERT_VALID_SCRIPT(jsdscript);
286 return jsd_GetScriptPrivate (jsdscript);
290 JSD_PUBLIC_API(JSBool)
291 JSD_IsActiveScript(JSDContext* jsdc, JSDScript *jsdscript)
293 JSD_ASSERT_VALID_CONTEXT(jsdc);
294 return jsd_IsActiveScript(jsdc, jsdscript);
297 JSD_PUBLIC_API(const char*)
298 JSD_GetScriptFilename(JSDContext* jsdc, JSDScript *jsdscript)
300 JSD_ASSERT_VALID_CONTEXT(jsdc);
301 JSD_ASSERT_VALID_SCRIPT(jsdscript);
302 return jsd_GetScriptFilename(jsdc, jsdscript);
305 JSD_PUBLIC_API(JSString *)
306 JSD_GetScriptFunctionId(JSDContext* jsdc, JSDScript *jsdscript)
308 JSD_ASSERT_VALID_CONTEXT(jsdc);
309 JSD_ASSERT_VALID_SCRIPT(jsdscript);
310 return jsd_GetScriptFunctionId(jsdc, jsdscript);
313 JSD_PUBLIC_API(uintN)
314 JSD_GetScriptBaseLineNumber(JSDContext* jsdc, JSDScript *jsdscript)
316 JSD_ASSERT_VALID_CONTEXT(jsdc);
317 JSD_ASSERT_VALID_SCRIPT(jsdscript);
318 return jsd_GetScriptBaseLineNumber(jsdc, jsdscript);
321 JSD_PUBLIC_API(uintN)
322 JSD_GetScriptLineExtent(JSDContext* jsdc, JSDScript *jsdscript)
324 JSD_ASSERT_VALID_CONTEXT(jsdc);
325 JSD_ASSERT_VALID_SCRIPT(jsdscript);
326 return jsd_GetScriptLineExtent(jsdc, jsdscript);
329 JSD_PUBLIC_API(JSBool)
330 JSD_SetScriptHook(JSDContext* jsdc, JSD_ScriptHookProc hook, void* callerdata)
332 JSD_ASSERT_VALID_CONTEXT(jsdc);
333 return jsd_SetScriptHook(jsdc, hook, callerdata);
336 JSD_PUBLIC_API(JSBool)
337 JSD_GetScriptHook(JSDContext* jsdc, JSD_ScriptHookProc* hook, void** callerdata)
339 JSD_ASSERT_VALID_CONTEXT(jsdc);
340 return jsd_GetScriptHook(jsdc, hook, callerdata);
343 JSD_PUBLIC_API(jsuword)
344 JSD_GetClosestPC(JSDContext* jsdc, JSDScript* jsdscript, uintN line)
346 JSD_ASSERT_VALID_CONTEXT(jsdc);
347 JSD_ASSERT_VALID_SCRIPT(jsdscript);
348 return jsd_GetClosestPC(jsdc, jsdscript, line);
351 JSD_PUBLIC_API(uintN)
352 JSD_GetClosestLine(JSDContext* jsdc, JSDScript* jsdscript, jsuword pc)
354 JSD_ASSERT_VALID_CONTEXT(jsdc);
355 JSD_ASSERT_VALID_SCRIPT(jsdscript);
356 return jsd_GetClosestLine(jsdc, jsdscript, pc);
360 JSD_ScriptCreated(JSDContext* jsdc,
362 const char *filename, /* URL this script loads from */
363 uintN lineno, /* line where this script starts */
367 JSD_ASSERT_VALID_CONTEXT(jsdc);
368 jsd_ScriptCreated(jsdc, cx, filename, lineno, script, fun);
372 JSD_ScriptDestroyed(JSDContext* jsdc,
376 JSD_ASSERT_VALID_CONTEXT(jsdc);
377 jsd_ScriptDestroyed(jsdc, cx, script);
380 /***************************************************************************/
381 /* Source Text functions */
384 JSD_LockSourceTextSubsystem(JSDContext* jsdc)
386 JSD_ASSERT_VALID_CONTEXT(jsdc);
387 JSD_LOCK_SOURCE_TEXT(jsdc);
391 JSD_UnlockSourceTextSubsystem(JSDContext* jsdc)
393 JSD_ASSERT_VALID_CONTEXT(jsdc);
394 JSD_UNLOCK_SOURCE_TEXT(jsdc);
397 JSD_PUBLIC_API(JSDSourceText*)
398 JSD_IterateSources(JSDContext* jsdc, JSDSourceText **iterp)
400 JSD_ASSERT_VALID_CONTEXT(jsdc);
401 return jsd_IterateSources(jsdc, iterp);
404 JSD_PUBLIC_API(JSDSourceText*)
405 JSD_FindSourceForURL(JSDContext* jsdc, const char* url)
407 JSD_ASSERT_VALID_CONTEXT(jsdc);
409 return jsd_FindSourceForURL(jsdc, url);
412 JSD_PUBLIC_API(const char*)
413 JSD_GetSourceURL(JSDContext* jsdc, JSDSourceText* jsdsrc)
415 JSD_ASSERT_VALID_CONTEXT(jsdc);
416 JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc);
417 return jsd_GetSourceURL(jsdc,jsdsrc);
420 JSD_PUBLIC_API(JSBool)
421 JSD_GetSourceText(JSDContext* jsdc, JSDSourceText* jsdsrc,
422 const char** ppBuf, intN* pLen)
424 JSD_ASSERT_VALID_CONTEXT(jsdc);
425 JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc);
428 return jsd_GetSourceText(jsdc, jsdsrc, ppBuf, pLen);
432 JSD_ClearSourceText(JSDContext* jsdc, JSDSourceText* jsdsrc)
434 JSD_ASSERT_VALID_CONTEXT(jsdc);
435 JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc);
436 jsd_ClearSourceText(jsdc, jsdsrc);
440 JSD_PUBLIC_API(JSDSourceStatus)
441 JSD_GetSourceStatus(JSDContext* jsdc, JSDSourceText* jsdsrc)
443 JSD_ASSERT_VALID_CONTEXT(jsdc);
444 JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc);
445 return jsd_GetSourceStatus(jsdc, jsdsrc);
448 JSD_PUBLIC_API(JSBool)
449 JSD_IsSourceDirty(JSDContext* jsdc, JSDSourceText* jsdsrc)
451 JSD_ASSERT_VALID_CONTEXT(jsdc);
452 JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc);
453 return jsd_IsSourceDirty(jsdc, jsdsrc);
457 JSD_SetSourceDirty(JSDContext* jsdc, JSDSourceText* jsdsrc, JSBool dirty)
459 JSD_ASSERT_VALID_CONTEXT(jsdc);
460 JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc);
461 jsd_SetSourceDirty(jsdc, jsdsrc, dirty);
464 JSD_PUBLIC_API(uintN)
465 JSD_GetSourceAlterCount(JSDContext* jsdc, JSDSourceText* jsdsrc)
467 JSD_ASSERT_VALID_CONTEXT(jsdc);
468 JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc);
469 return jsd_GetSourceAlterCount(jsdc, jsdsrc);
472 JSD_PUBLIC_API(uintN)
473 JSD_IncrementSourceAlterCount(JSDContext* jsdc, JSDSourceText* jsdsrc)
475 JSD_ASSERT_VALID_CONTEXT(jsdc);
476 JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc);
477 return jsd_IncrementSourceAlterCount(jsdc, jsdsrc);
481 JSD_DestroyAllSources( JSDContext* jsdc )
483 JSD_ASSERT_VALID_CONTEXT(jsdc);
484 jsd_DestroyAllSources(jsdc);
487 JSD_PUBLIC_API(JSDSourceText*)
488 JSD_NewSourceText(JSDContext* jsdc, const char* url)
490 JSD_ASSERT_VALID_CONTEXT(jsdc);
492 return jsd_NewSourceText(jsdc, url);
495 JSD_PUBLIC_API(JSDSourceText*)
496 JSD_AppendSourceText(JSDContext* jsdc,
497 JSDSourceText* jsdsrc,
498 const char* text, /* *not* zero terminated */
500 JSDSourceStatus status)
502 JSD_ASSERT_VALID_CONTEXT(jsdc);
503 JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc);
504 return jsd_AppendSourceText(jsdc, jsdsrc, text, length, status);
507 extern JSD_PUBLIC_API(JSDSourceText*)
508 JSD_AppendUCSourceText(JSDContext* jsdc,
509 JSDSourceText* jsdsrc,
510 const jschar* text, /* *not* zero terminated */
512 JSDSourceStatus status)
514 JSD_ASSERT_VALID_CONTEXT(jsdc);
515 JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc);
516 return jsd_AppendUCSourceText(jsdc, jsdsrc, text, length, status);
519 JSD_PUBLIC_API(JSBool)
520 JSD_AddFullSourceText(JSDContext* jsdc,
521 const char* text, /* *not* zero terminated */
525 JSD_ASSERT_VALID_CONTEXT(jsdc);
527 return jsd_AddFullSourceText(jsdc, text, length, url);
530 /***************************************************************************/
531 /* Execution/Interrupt Hook functions */
533 JSD_PUBLIC_API(JSBool)
534 JSD_SetExecutionHook(JSDContext* jsdc,
535 JSDScript* jsdscript,
537 JSD_ExecutionHookProc hook,
540 JSD_ASSERT_VALID_CONTEXT(jsdc);
541 JSD_ASSERT_VALID_SCRIPT(jsdscript);
542 return jsd_SetExecutionHook(jsdc, jsdscript, pc, hook, callerdata);
545 JSD_PUBLIC_API(JSBool)
546 JSD_ClearExecutionHook(JSDContext* jsdc,
547 JSDScript* jsdscript,
550 JSD_ASSERT_VALID_CONTEXT(jsdc);
551 JSD_ASSERT_VALID_SCRIPT(jsdscript);
552 return jsd_ClearExecutionHook(jsdc, jsdscript, pc);
555 JSD_PUBLIC_API(JSBool)
556 JSD_ClearAllExecutionHooksForScript(JSDContext* jsdc, JSDScript* jsdscript)
558 JSD_ASSERT_VALID_CONTEXT(jsdc);
559 JSD_ASSERT_VALID_SCRIPT(jsdscript);
560 return jsd_ClearAllExecutionHooksForScript(jsdc, jsdscript);
563 JSD_PUBLIC_API(JSBool)
564 JSD_ClearAllExecutionHooks(JSDContext* jsdc)
566 JSD_ASSERT_VALID_CONTEXT(jsdc);
567 return jsd_ClearAllExecutionHooks(jsdc);
570 JSD_PUBLIC_API(JSBool)
571 JSD_SetInterruptHook(JSDContext* jsdc,
572 JSD_ExecutionHookProc hook,
575 JSD_ASSERT_VALID_CONTEXT(jsdc);
576 return jsd_SetInterruptHook(jsdc, hook, callerdata);
579 JSD_PUBLIC_API(JSBool)
580 JSD_EnableSingleStepInterrupts(JSDContext* jsdc, JSDScript* jsdscript, JSBool enable)
582 JSD_ASSERT_VALID_CONTEXT(jsdc);
583 JSD_ASSERT_VALID_SCRIPT(jsdscript);
584 return jsd_EnableSingleStepInterrupts(jsdc, jsdscript, enable);
587 JSD_PUBLIC_API(JSBool)
588 JSD_ClearInterruptHook(JSDContext* jsdc)
590 JSD_ASSERT_VALID_CONTEXT(jsdc);
591 return jsd_ClearInterruptHook(jsdc);
594 JSD_PUBLIC_API(JSBool)
595 JSD_SetDebugBreakHook(JSDContext* jsdc,
596 JSD_ExecutionHookProc hook,
599 JSD_ASSERT_VALID_CONTEXT(jsdc);
600 return jsd_SetDebugBreakHook(jsdc, hook, callerdata);
603 JSD_PUBLIC_API(JSBool)
604 JSD_ClearDebugBreakHook(JSDContext* jsdc)
606 JSD_ASSERT_VALID_CONTEXT(jsdc);
607 return jsd_ClearDebugBreakHook(jsdc);
610 JSD_PUBLIC_API(JSBool)
611 JSD_SetDebuggerHook(JSDContext* jsdc,
612 JSD_ExecutionHookProc hook,
615 JSD_ASSERT_VALID_CONTEXT(jsdc);
616 return jsd_SetDebuggerHook(jsdc, hook, callerdata);
619 JSD_PUBLIC_API(JSBool)
620 JSD_ClearDebuggerHook(JSDContext* jsdc)
622 JSD_ASSERT_VALID_CONTEXT(jsdc);
623 return jsd_ClearDebuggerHook(jsdc);
626 JSD_PUBLIC_API(JSBool)
627 JSD_SetThrowHook(JSDContext* jsdc,
628 JSD_ExecutionHookProc hook,
631 JSD_ASSERT_VALID_CONTEXT(jsdc);
632 return jsd_SetThrowHook(jsdc, hook, callerdata);
635 JSD_PUBLIC_API(JSBool)
636 JSD_ClearThrowHook(JSDContext* jsdc)
638 JSD_ASSERT_VALID_CONTEXT(jsdc);
639 return jsd_ClearThrowHook(jsdc);
642 JSD_PUBLIC_API(JSBool)
643 JSD_SetTopLevelHook(JSDContext* jsdc,
644 JSD_CallHookProc hook,
647 JSD_ASSERT_VALID_CONTEXT(jsdc);
648 return jsd_SetTopLevelHook(jsdc, hook, callerdata);
651 JSD_PUBLIC_API(JSBool)
652 JSD_ClearTopLevelHook(JSDContext* jsdc)
654 JSD_ASSERT_VALID_CONTEXT(jsdc);
655 return jsd_ClearTopLevelHook(jsdc);
658 JSD_PUBLIC_API(JSBool)
659 JSD_SetFunctionHook(JSDContext* jsdc,
660 JSD_CallHookProc hook,
663 JSD_ASSERT_VALID_CONTEXT(jsdc);
664 return jsd_SetFunctionHook(jsdc, hook, callerdata);
667 JSD_PUBLIC_API(JSBool)
668 JSD_ClearFunctionHook(JSDContext* jsdc)
670 JSD_ASSERT_VALID_CONTEXT(jsdc);
671 return jsd_ClearFunctionHook(jsdc);
674 /***************************************************************************/
675 /* Stack Frame functions */
677 JSD_PUBLIC_API(uintN)
678 JSD_GetCountOfStackFrames(JSDContext* jsdc, JSDThreadState* jsdthreadstate)
680 JSD_ASSERT_VALID_CONTEXT(jsdc);
681 return jsd_GetCountOfStackFrames(jsdc, jsdthreadstate);
684 JSD_PUBLIC_API(JSDStackFrameInfo*)
685 JSD_GetStackFrame(JSDContext* jsdc, JSDThreadState* jsdthreadstate)
687 JSD_ASSERT_VALID_CONTEXT(jsdc);
688 return jsd_GetStackFrame(jsdc, jsdthreadstate);
691 JSD_PUBLIC_API(JSContext*)
692 JSD_GetJSContext(JSDContext* jsdc, JSDThreadState* jsdthreadstate)
694 JSD_ASSERT_VALID_CONTEXT(jsdc);
695 return jsd_GetJSContext(jsdc, jsdthreadstate);
698 JSD_PUBLIC_API(JSDStackFrameInfo*)
699 JSD_GetCallingStackFrame(JSDContext* jsdc,
700 JSDThreadState* jsdthreadstate,
701 JSDStackFrameInfo* jsdframe)
703 JSD_ASSERT_VALID_CONTEXT(jsdc);
704 return jsd_GetCallingStackFrame(jsdc, jsdthreadstate, jsdframe);
707 JSD_PUBLIC_API(JSDScript*)
708 JSD_GetScriptForStackFrame(JSDContext* jsdc,
709 JSDThreadState* jsdthreadstate,
710 JSDStackFrameInfo* jsdframe)
712 JSD_ASSERT_VALID_CONTEXT(jsdc);
713 return jsd_GetScriptForStackFrame(jsdc, jsdthreadstate, jsdframe);
716 JSD_PUBLIC_API(jsuword)
717 JSD_GetPCForStackFrame(JSDContext* jsdc,
718 JSDThreadState* jsdthreadstate,
719 JSDStackFrameInfo* jsdframe)
721 JSD_ASSERT_VALID_CONTEXT(jsdc);
722 return jsd_GetPCForStackFrame(jsdc, jsdthreadstate, jsdframe);
725 JSD_PUBLIC_API(JSDValue*)
726 JSD_GetCallObjectForStackFrame(JSDContext* jsdc,
727 JSDThreadState* jsdthreadstate,
728 JSDStackFrameInfo* jsdframe)
730 JSD_ASSERT_VALID_CONTEXT(jsdc);
731 return jsd_GetCallObjectForStackFrame(jsdc, jsdthreadstate, jsdframe);
734 JSD_PUBLIC_API(JSDValue*)
735 JSD_GetScopeChainForStackFrame(JSDContext* jsdc,
736 JSDThreadState* jsdthreadstate,
737 JSDStackFrameInfo* jsdframe)
739 JSD_ASSERT_VALID_CONTEXT(jsdc);
740 return jsd_GetScopeChainForStackFrame(jsdc, jsdthreadstate, jsdframe);
743 JSD_PUBLIC_API(JSDValue*)
744 JSD_GetThisForStackFrame(JSDContext* jsdc,
745 JSDThreadState* jsdthreadstate,
746 JSDStackFrameInfo* jsdframe)
748 JSD_ASSERT_VALID_CONTEXT(jsdc);
749 return jsd_GetThisForStackFrame(jsdc, jsdthreadstate, jsdframe);
752 JSD_PUBLIC_API(JSString *)
753 JSD_GetIdForStackFrame(JSDContext* jsdc,
754 JSDThreadState* jsdthreadstate,
755 JSDStackFrameInfo* jsdframe)
757 JSD_ASSERT_VALID_CONTEXT(jsdc);
758 return jsd_GetIdForStackFrame(jsdc, jsdthreadstate, jsdframe);
761 JSD_PUBLIC_API(JSBool)
762 JSD_IsStackFrameDebugger(JSDContext* jsdc,
763 JSDThreadState* jsdthreadstate,
764 JSDStackFrameInfo* jsdframe)
766 JSD_ASSERT_VALID_CONTEXT(jsdc);
767 return jsd_IsStackFrameDebugger(jsdc, jsdthreadstate, jsdframe);
770 JSD_PUBLIC_API(JSBool)
771 JSD_IsStackFrameConstructing(JSDContext* jsdc,
772 JSDThreadState* jsdthreadstate,
773 JSDStackFrameInfo* jsdframe)
775 JSD_ASSERT_VALID_CONTEXT(jsdc);
776 return jsd_IsStackFrameConstructing(jsdc, jsdthreadstate, jsdframe);
779 JSD_PUBLIC_API(JSBool)
780 JSD_EvaluateUCScriptInStackFrame(JSDContext* jsdc,
781 JSDThreadState* jsdthreadstate,
782 JSDStackFrameInfo* jsdframe,
783 const jschar *bytes, uintN length,
784 const char *filename, uintN lineno, jsval *rval)
786 JSD_ASSERT_VALID_CONTEXT(jsdc);
792 return jsd_EvaluateUCScriptInStackFrame(jsdc, jsdthreadstate,jsdframe,
793 bytes, length, filename, lineno,
797 JSD_PUBLIC_API(JSBool)
798 JSD_AttemptUCScriptInStackFrame(JSDContext* jsdc,
799 JSDThreadState* jsdthreadstate,
800 JSDStackFrameInfo* jsdframe,
801 const jschar *bytes, uintN length,
802 const char *filename, uintN lineno,
805 JSD_ASSERT_VALID_CONTEXT(jsdc);
811 return jsd_EvaluateUCScriptInStackFrame(jsdc, jsdthreadstate,jsdframe,
812 bytes, length, filename, lineno,
816 JSD_PUBLIC_API(JSBool)
817 JSD_EvaluateScriptInStackFrame(JSDContext* jsdc,
818 JSDThreadState* jsdthreadstate,
819 JSDStackFrameInfo* jsdframe,
820 const char *bytes, uintN length,
821 const char *filename, uintN lineno, jsval *rval)
823 JSD_ASSERT_VALID_CONTEXT(jsdc);
829 return jsd_EvaluateScriptInStackFrame(jsdc, jsdthreadstate,jsdframe,
831 filename, lineno, JS_TRUE, rval);
834 JSD_PUBLIC_API(JSBool)
835 JSD_AttemptScriptInStackFrame(JSDContext* jsdc,
836 JSDThreadState* jsdthreadstate,
837 JSDStackFrameInfo* jsdframe,
838 const char *bytes, uintN length,
839 const char *filename, uintN lineno, jsval *rval)
841 JSD_ASSERT_VALID_CONTEXT(jsdc);
847 return jsd_EvaluateScriptInStackFrame(jsdc, jsdthreadstate,jsdframe,
849 filename, lineno, JS_FALSE, rval);
852 JSD_PUBLIC_API(JSString*)
853 JSD_ValToStringInStackFrame(JSDContext* jsdc,
854 JSDThreadState* jsdthreadstate,
855 JSDStackFrameInfo* jsdframe,
858 JSD_ASSERT_VALID_CONTEXT(jsdc);
859 return jsd_ValToStringInStackFrame(jsdc, jsdthreadstate, jsdframe, val);
862 JSD_PUBLIC_API(JSDValue*)
863 JSD_GetException(JSDContext* jsdc, JSDThreadState* jsdthreadstate)
865 JSD_ASSERT_VALID_CONTEXT(jsdc);
866 return jsd_GetException(jsdc, jsdthreadstate);
869 extern JSD_PUBLIC_API(JSBool)
870 JSD_SetException(JSDContext* jsdc, JSDThreadState* jsdthreadstate,
873 JSD_ASSERT_VALID_CONTEXT(jsdc);
874 return jsd_SetException(jsdc, jsdthreadstate, jsdval);
877 /***************************************************************************/
879 JSD_PUBLIC_API(JSBool)
880 JSD_SetErrorReporter(JSDContext* jsdc,
881 JSD_ErrorReporter reporter,
884 JSD_ASSERT_VALID_CONTEXT(jsdc);
885 return jsd_SetErrorReporter(jsdc, reporter, callerdata);
888 JSD_PUBLIC_API(JSBool)
889 JSD_GetErrorReporter(JSDContext* jsdc,
890 JSD_ErrorReporter* reporter,
893 JSD_ASSERT_VALID_CONTEXT(jsdc);
894 return jsd_GetErrorReporter(jsdc, reporter, callerdata);
897 /***************************************************************************/
899 JSD_PUBLIC_API(JSBool)
900 JSD_IsLockingAndThreadIdSupported()
902 #ifdef JSD_THREADSAFE
909 JSD_PUBLIC_API(void*)
912 #ifdef JSD_THREADSAFE
913 return jsd_CreateLock();
922 #ifdef JSD_THREADSAFE
928 JSD_Unlock(void* lock)
930 #ifdef JSD_THREADSAFE
935 JSD_PUBLIC_API(JSBool)
936 JSD_IsLocked(void* lock)
938 #if defined(JSD_THREADSAFE) && defined(DEBUG)
939 return jsd_IsLocked(lock);
945 JSD_PUBLIC_API(JSBool)
946 JSD_IsUnlocked(void* lock)
948 #if defined(JSD_THREADSAFE) && defined(DEBUG)
949 return ! jsd_IsLocked(lock);
955 JSD_PUBLIC_API(void*)
958 return JSD_CURRENT_THREAD();
961 /***************************************************************************/
962 /* Value and Property Functions */
964 JSD_PUBLIC_API(JSDValue*)
965 JSD_NewValue(JSDContext* jsdc, jsval val)
967 JSD_ASSERT_VALID_CONTEXT(jsdc);
968 return jsd_NewValue(jsdc, val);
972 JSD_DropValue(JSDContext* jsdc, JSDValue* jsdval)
974 JSD_ASSERT_VALID_CONTEXT(jsdc);
975 JSD_ASSERT_VALID_VALUE(jsdval);
976 jsd_DropValue(jsdc, jsdval);
979 JSD_PUBLIC_API(jsval)
980 JSD_GetValueWrappedJSVal(JSDContext* jsdc, JSDValue* jsdval)
982 JSD_ASSERT_VALID_CONTEXT(jsdc);
983 JSD_ASSERT_VALID_VALUE(jsdval);
984 return jsd_GetValueWrappedJSVal(jsdc, jsdval);
988 JSD_RefreshValue(JSDContext* jsdc, JSDValue* jsdval)
990 JSD_ASSERT_VALID_CONTEXT(jsdc);
991 JSD_ASSERT_VALID_VALUE(jsdval);
992 jsd_RefreshValue(jsdc, jsdval);
995 /**************************************************/
997 JSD_PUBLIC_API(JSBool)
998 JSD_IsValueObject(JSDContext* jsdc, JSDValue* jsdval)
1000 JSD_ASSERT_VALID_CONTEXT(jsdc);
1001 JSD_ASSERT_VALID_VALUE(jsdval);
1002 return jsd_IsValueObject(jsdc, jsdval);
1005 JSD_PUBLIC_API(JSBool)
1006 JSD_IsValueNumber(JSDContext* jsdc, JSDValue* jsdval)
1008 JSD_ASSERT_VALID_CONTEXT(jsdc);
1009 JSD_ASSERT_VALID_VALUE(jsdval);
1010 return jsd_IsValueNumber(jsdc, jsdval);
1013 JSD_PUBLIC_API(JSBool)
1014 JSD_IsValueInt(JSDContext* jsdc, JSDValue* jsdval)
1016 JSD_ASSERT_VALID_CONTEXT(jsdc);
1017 JSD_ASSERT_VALID_VALUE(jsdval);
1018 return jsd_IsValueInt(jsdc, jsdval);
1021 JSD_PUBLIC_API(JSBool)
1022 JSD_IsValueDouble(JSDContext* jsdc, JSDValue* jsdval)
1024 JSD_ASSERT_VALID_CONTEXT(jsdc);
1025 JSD_ASSERT_VALID_VALUE(jsdval);
1026 return jsd_IsValueDouble(jsdc, jsdval);
1029 JSD_PUBLIC_API(JSBool)
1030 JSD_IsValueString(JSDContext* jsdc, JSDValue* jsdval)
1032 JSD_ASSERT_VALID_CONTEXT(jsdc);
1033 JSD_ASSERT_VALID_VALUE(jsdval);
1034 return jsd_IsValueString(jsdc, jsdval);
1037 JSD_PUBLIC_API(JSBool)
1038 JSD_IsValueBoolean(JSDContext* jsdc, JSDValue* jsdval)
1040 JSD_ASSERT_VALID_CONTEXT(jsdc);
1041 JSD_ASSERT_VALID_VALUE(jsdval);
1042 return jsd_IsValueBoolean(jsdc, jsdval);
1045 JSD_PUBLIC_API(JSBool)
1046 JSD_IsValueNull(JSDContext* jsdc, JSDValue* jsdval)
1048 JSD_ASSERT_VALID_CONTEXT(jsdc);
1049 JSD_ASSERT_VALID_VALUE(jsdval);
1050 return jsd_IsValueNull(jsdc, jsdval);
1053 JSD_PUBLIC_API(JSBool)
1054 JSD_IsValueVoid(JSDContext* jsdc, JSDValue* jsdval)
1056 JSD_ASSERT_VALID_CONTEXT(jsdc);
1057 JSD_ASSERT_VALID_VALUE(jsdval);
1058 return jsd_IsValueVoid(jsdc, jsdval);
1061 JSD_PUBLIC_API(JSBool)
1062 JSD_IsValuePrimitive(JSDContext* jsdc, JSDValue* jsdval)
1064 JSD_ASSERT_VALID_CONTEXT(jsdc);
1065 JSD_ASSERT_VALID_VALUE(jsdval);
1066 return jsd_IsValuePrimitive(jsdc, jsdval);
1069 JSD_PUBLIC_API(JSBool)
1070 JSD_IsValueFunction(JSDContext* jsdc, JSDValue* jsdval)
1072 JSD_ASSERT_VALID_CONTEXT(jsdc);
1073 JSD_ASSERT_VALID_VALUE(jsdval);
1074 return jsd_IsValueFunction(jsdc, jsdval);
1077 JSD_PUBLIC_API(JSBool)
1078 JSD_IsValueNative(JSDContext* jsdc, JSDValue* jsdval)
1080 JSD_ASSERT_VALID_CONTEXT(jsdc);
1081 JSD_ASSERT_VALID_VALUE(jsdval);
1082 return jsd_IsValueNative(jsdc, jsdval);
1085 /**************************************************/
1087 JSD_PUBLIC_API(JSBool)
1088 JSD_GetValueBoolean(JSDContext* jsdc, JSDValue* jsdval)
1090 JSD_ASSERT_VALID_CONTEXT(jsdc);
1091 JSD_ASSERT_VALID_VALUE(jsdval);
1092 return jsd_GetValueBoolean(jsdc, jsdval);
1095 JSD_PUBLIC_API(int32)
1096 JSD_GetValueInt(JSDContext* jsdc, JSDValue* jsdval)
1098 JSD_ASSERT_VALID_CONTEXT(jsdc);
1099 JSD_ASSERT_VALID_VALUE(jsdval);
1100 return jsd_GetValueInt(jsdc, jsdval);
1103 JSD_PUBLIC_API(jsdouble)
1104 JSD_GetValueDouble(JSDContext* jsdc, JSDValue* jsdval)
1106 JSD_ASSERT_VALID_CONTEXT(jsdc);
1107 JSD_ASSERT_VALID_VALUE(jsdval);
1108 return jsd_GetValueDouble(jsdc, jsdval);
1111 JSD_PUBLIC_API(JSString*)
1112 JSD_GetValueString(JSDContext* jsdc, JSDValue* jsdval)
1114 JSD_ASSERT_VALID_CONTEXT(jsdc);
1115 JSD_ASSERT_VALID_VALUE(jsdval);
1116 return jsd_GetValueString(jsdc, jsdval);
1119 JSD_PUBLIC_API(JSString *)
1120 JSD_GetValueFunctionId(JSDContext* jsdc, JSDValue* jsdval)
1122 JSD_ASSERT_VALID_CONTEXT(jsdc);
1123 JSD_ASSERT_VALID_VALUE(jsdval);
1124 return jsd_GetValueFunctionId(jsdc, jsdval);
1127 JSD_PUBLIC_API(JSFunction*)
1128 JSD_GetValueFunction(JSDContext* jsdc, JSDValue* jsdval)
1130 JSD_ASSERT_VALID_CONTEXT(jsdc);
1131 JSD_ASSERT_VALID_VALUE(jsdval);
1132 return jsd_GetValueFunction(jsdc, jsdval);
1135 /**************************************************/
1137 JSD_PUBLIC_API(uintN)
1138 JSD_GetCountOfProperties(JSDContext* jsdc, JSDValue* jsdval)
1140 JSD_ASSERT_VALID_CONTEXT(jsdc);
1141 JSD_ASSERT_VALID_VALUE(jsdval);
1142 return jsd_GetCountOfProperties(jsdc, jsdval);
1145 JSD_PUBLIC_API(JSDProperty*)
1146 JSD_IterateProperties(JSDContext* jsdc, JSDValue* jsdval, JSDProperty **iterp)
1148 JSD_ASSERT_VALID_CONTEXT(jsdc);
1149 JSD_ASSERT_VALID_VALUE(jsdval);
1151 return jsd_IterateProperties(jsdc, jsdval, iterp);
1154 JSD_PUBLIC_API(JSDProperty*)
1155 JSD_GetValueProperty(JSDContext* jsdc, JSDValue* jsdval, JSString* name)
1157 JSD_ASSERT_VALID_CONTEXT(jsdc);
1158 JSD_ASSERT_VALID_VALUE(jsdval);
1160 return jsd_GetValueProperty(jsdc, jsdval, name);
1163 JSD_PUBLIC_API(JSDValue*)
1164 JSD_GetValuePrototype(JSDContext* jsdc, JSDValue* jsdval)
1166 JSD_ASSERT_VALID_CONTEXT(jsdc);
1167 JSD_ASSERT_VALID_VALUE(jsdval);
1168 return jsd_GetValuePrototype(jsdc, jsdval);
1171 JSD_PUBLIC_API(JSDValue*)
1172 JSD_GetValueParent(JSDContext* jsdc, JSDValue* jsdval)
1174 JSD_ASSERT_VALID_CONTEXT(jsdc);
1175 JSD_ASSERT_VALID_VALUE(jsdval);
1176 return jsd_GetValueParent(jsdc, jsdval);
1179 JSD_PUBLIC_API(JSDValue*)
1180 JSD_GetValueConstructor(JSDContext* jsdc, JSDValue* jsdval)
1182 JSD_ASSERT_VALID_CONTEXT(jsdc);
1183 JSD_ASSERT_VALID_VALUE(jsdval);
1184 return jsd_GetValueConstructor(jsdc, jsdval);
1187 JSD_PUBLIC_API(const char*)
1188 JSD_GetValueClassName(JSDContext* jsdc, JSDValue* jsdval)
1190 JSD_ASSERT_VALID_CONTEXT(jsdc);
1191 JSD_ASSERT_VALID_VALUE(jsdval);
1192 return jsd_GetValueClassName(jsdc, jsdval);
1195 JSD_PUBLIC_API(JSDScript*)
1196 JSD_GetScriptForValue(JSDContext* jsdc, JSDValue* jsdval)
1198 JSD_ASSERT_VALID_CONTEXT(jsdc);
1199 return jsd_GetScriptForValue(jsdc, jsdval);
1201 /**************************************************/
1203 JSD_PUBLIC_API(void)
1204 JSD_DropProperty(JSDContext* jsdc, JSDProperty* jsdprop)
1206 JSD_ASSERT_VALID_CONTEXT(jsdc);
1207 JSD_ASSERT_VALID_PROPERTY(jsdprop);
1208 jsd_DropProperty(jsdc, jsdprop);
1212 JSD_PUBLIC_API(JSDValue*)
1213 JSD_GetPropertyName(JSDContext* jsdc, JSDProperty* jsdprop)
1215 JSD_ASSERT_VALID_CONTEXT(jsdc);
1216 JSD_ASSERT_VALID_PROPERTY(jsdprop);
1217 return jsd_GetPropertyName(jsdc, jsdprop);
1220 JSD_PUBLIC_API(JSDValue*)
1221 JSD_GetPropertyValue(JSDContext* jsdc, JSDProperty* jsdprop)
1223 JSD_ASSERT_VALID_CONTEXT(jsdc);
1224 JSD_ASSERT_VALID_PROPERTY(jsdprop);
1225 return jsd_GetPropertyValue(jsdc, jsdprop);
1228 JSD_PUBLIC_API(JSDValue*)
1229 JSD_GetPropertyAlias(JSDContext* jsdc, JSDProperty* jsdprop)
1231 JSD_ASSERT_VALID_CONTEXT(jsdc);
1232 JSD_ASSERT_VALID_PROPERTY(jsdprop);
1233 return jsd_GetPropertyAlias(jsdc, jsdprop);
1236 JSD_PUBLIC_API(uintN)
1237 JSD_GetPropertyFlags(JSDContext* jsdc, JSDProperty* jsdprop)
1239 JSD_ASSERT_VALID_CONTEXT(jsdc);
1240 JSD_ASSERT_VALID_PROPERTY(jsdprop);
1241 return jsd_GetPropertyFlags(jsdc, jsdprop);
1244 JSD_PUBLIC_API(uintN)
1245 JSD_GetPropertyVarArgSlot(JSDContext* jsdc, JSDProperty* jsdprop)
1247 JSD_ASSERT_VALID_CONTEXT(jsdc);
1248 JSD_ASSERT_VALID_PROPERTY(jsdprop);
1249 return jsd_GetPropertyVarArgSlot(jsdc, jsdprop);
1252 /**************************************************/
1253 /* Object Functions */
1255 JSD_PUBLIC_API(void)
1256 JSD_LockObjectSubsystem(JSDContext* jsdc)
1258 JSD_ASSERT_VALID_CONTEXT(jsdc);
1259 JSD_LOCK_OBJECTS(jsdc);
1262 JSD_PUBLIC_API(void)
1263 JSD_UnlockObjectSubsystem(JSDContext* jsdc)
1265 JSD_ASSERT_VALID_CONTEXT(jsdc);
1266 JSD_UNLOCK_OBJECTS(jsdc);
1269 JSD_PUBLIC_API(JSDObject*)
1270 JSD_IterateObjects(JSDContext* jsdc, JSDObject** iterp)
1272 JSD_ASSERT_VALID_CONTEXT(jsdc);
1273 return jsd_IterateObjects(jsdc, iterp);
1276 JSD_PUBLIC_API(JSObject*)
1277 JSD_GetWrappedObject(JSDContext* jsdc, JSDObject* jsdobj)
1279 JSD_ASSERT_VALID_CONTEXT(jsdc);
1280 JSD_ASSERT_VALID_OBJECT(jsdobj);
1281 return jsd_GetWrappedObject(jsdc, jsdobj);
1285 JSD_PUBLIC_API(const char*)
1286 JSD_GetObjectNewURL(JSDContext* jsdc, JSDObject* jsdobj)
1288 JSD_ASSERT_VALID_CONTEXT(jsdc);
1289 JSD_ASSERT_VALID_OBJECT(jsdobj);
1290 return jsd_GetObjectNewURL(jsdc, jsdobj);
1293 JSD_PUBLIC_API(uintN)
1294 JSD_GetObjectNewLineNumber(JSDContext* jsdc, JSDObject* jsdobj)
1296 JSD_ASSERT_VALID_CONTEXT(jsdc);
1297 JSD_ASSERT_VALID_OBJECT(jsdobj);
1298 return jsd_GetObjectNewLineNumber(jsdc, jsdobj);
1301 JSD_PUBLIC_API(const char*)
1302 JSD_GetObjectConstructorURL(JSDContext* jsdc, JSDObject* jsdobj)
1304 JSD_ASSERT_VALID_CONTEXT(jsdc);
1305 JSD_ASSERT_VALID_OBJECT(jsdobj);
1306 return jsd_GetObjectConstructorURL(jsdc, jsdobj);
1309 JSD_PUBLIC_API(uintN)
1310 JSD_GetObjectConstructorLineNumber(JSDContext* jsdc, JSDObject* jsdobj)
1312 JSD_ASSERT_VALID_CONTEXT(jsdc);
1313 JSD_ASSERT_VALID_OBJECT(jsdobj);
1314 return jsd_GetObjectConstructorLineNumber(jsdc, jsdobj);
1317 JSD_PUBLIC_API(const char*)
1318 JSD_GetObjectConstructorName(JSDContext* jsdc, JSDObject* jsdobj)
1320 JSD_ASSERT_VALID_CONTEXT(jsdc);
1321 JSD_ASSERT_VALID_OBJECT(jsdobj);
1322 return jsd_GetObjectConstructorName(jsdc, jsdobj);
1325 JSD_PUBLIC_API(JSDObject*)
1326 JSD_GetJSDObjectForJSObject(JSDContext* jsdc, JSObject* jsobj)
1328 JSD_ASSERT_VALID_CONTEXT(jsdc);
1330 return jsd_GetJSDObjectForJSObject(jsdc, jsobj);
1333 JSD_PUBLIC_API(JSDObject*)
1334 JSD_GetObjectForValue(JSDContext* jsdc, JSDValue* jsdval)
1336 JSD_ASSERT_VALID_CONTEXT(jsdc);
1337 JSD_ASSERT_VALID_VALUE(jsdval);
1338 return jsd_GetObjectForValue(jsdc, jsdval);
1341 JSD_PUBLIC_API(JSDValue*)
1342 JSD_GetValueForObject(JSDContext* jsdc, JSDObject* jsdobj)
1344 JSD_ASSERT_VALID_CONTEXT(jsdc);
1345 JSD_ASSERT_VALID_OBJECT(jsdobj);
1346 return jsd_GetValueForObject(jsdc, jsdobj);
1349 /***************************************************************************/
1350 /* Livewire specific API */
1353 JSD_PUBLIC_API(LWDBGScript*)
1354 JSDLW_GetLWScript(JSDContext* jsdc, JSDScript* jsdscript)
1356 JSD_ASSERT_VALID_CONTEXT(jsdc);
1357 JSD_ASSERT_VALID_SCRIPT(jsdscript);
1358 return jsdlw_GetLWScript(jsdc, jsdscript);
1361 JSD_PUBLIC_API(JSDSourceText*)
1362 JSDLW_PreLoadSource( JSDContext* jsdc, LWDBGApp* app,
1363 const char* filename, JSBool clear )
1365 JSD_ASSERT_VALID_CONTEXT(jsdc);
1367 JS_ASSERT(filename);
1368 return jsdlw_PreLoadSource(jsdc, app, filename, clear);
1371 JSD_PUBLIC_API(JSDSourceText*)
1372 JSDLW_ForceLoadSource( JSDContext* jsdc, JSDSourceText* jsdsrc )
1374 JSD_ASSERT_VALID_CONTEXT(jsdc);
1375 JSD_ASSERT_VALID_SOURCE_TEXT(jsdsrc);
1376 return jsdlw_ForceLoadSource(jsdc, jsdsrc);
1379 JSD_PUBLIC_API(JSBool)
1380 JSDLW_RawToProcessedLineNumber(JSDContext* jsdc, JSDScript* jsdscript,
1381 uintN lineIn, uintN* lineOut)
1383 JSD_ASSERT_VALID_CONTEXT(jsdc);
1384 JSD_ASSERT_VALID_SCRIPT(jsdscript);
1385 return jsdlw_RawToProcessedLineNumber(jsdc, jsdscript, lineIn, lineOut);
1388 JSD_PUBLIC_API(JSBool)
1389 JSDLW_ProcessedToRawLineNumber(JSDContext* jsdc, JSDScript* jsdscript,
1390 uintN lineIn, uintN* lineOut)
1392 JSD_ASSERT_VALID_CONTEXT(jsdc);
1393 JSD_ASSERT_VALID_SCRIPT(jsdscript);
1394 return jsdlw_ProcessedToRawLineNumber(jsdc, jsdscript, lineIn, lineOut);
1398 /***************************************************************************/