зеркало из https://github.com/mozilla/pjs.git
294 строки
8.9 KiB
C
294 строки
8.9 KiB
C
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* The contents of this file are subject to the Netscape Public License
|
|
* Version 1.0 (the "NPL"); you may not use this file except in
|
|
* compliance with the NPL. You may obtain a copy of the NPL at
|
|
* http://www.mozilla.org/NPL/
|
|
*
|
|
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
|
* for the specific language governing rights and limitations under the
|
|
* NPL.
|
|
*
|
|
* The Initial Developer of this code under the NPL is Netscape
|
|
* Communications Corporation. Portions created by Netscape are
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
|
* Reserved.
|
|
*/
|
|
|
|
/*
|
|
** Header for JavaScript Debugger for Navigator interfaces
|
|
*/
|
|
|
|
#ifndef jsdebug_h___
|
|
#define jsdebug_h___
|
|
|
|
#include "ntypes.h"
|
|
#ifndef NSPR20
|
|
#include "prmacros.h"
|
|
#else
|
|
#include "prtypes.h"
|
|
#endif
|
|
#include "jsapi.h"
|
|
|
|
NSPR_BEGIN_EXTERN_C
|
|
|
|
/***************************************************************************/
|
|
/* Opaque typdefs for handles */
|
|
|
|
typedef struct JSDContext JSDContext;
|
|
typedef struct JSDScript JSDScript;
|
|
typedef struct JSDSourceText JSDSourceText;
|
|
typedef struct JSDThreadState JSDThreadState;
|
|
typedef struct JSDStackFrameInfo JSDStackFrameInfo;
|
|
|
|
/***************************************************************************/
|
|
/* High Level calls */
|
|
|
|
PR_PUBLIC_API(JSDContext*)
|
|
JSD_DebuggerOn(void);
|
|
|
|
PR_PUBLIC_API(void)
|
|
JSD_DebuggerOff(JSDContext* jsdc);
|
|
|
|
PR_PUBLIC_API(PRUintn)
|
|
JSD_GetMajorVersion(void);
|
|
|
|
PR_PUBLIC_API(PRUintn)
|
|
JSD_GetMinorVersion(void);
|
|
|
|
PR_PUBLIC_API(JSContext*)
|
|
JSD_GetDefaultJSContext(JSDContext* jsdc);
|
|
|
|
/* callback stuff for calls in EXE to be accessed by this code in a DLL */
|
|
|
|
typedef void
|
|
(*JSD_SetContextProc)(JSDContext* jsdc, void* user);
|
|
|
|
typedef struct
|
|
{
|
|
PRUintn size; /* size of this struct (init before use)*/
|
|
JSD_SetContextProc setContext;
|
|
} JSD_UserCallbacks;
|
|
|
|
PR_PUBLIC_API(void)
|
|
JSD_SetUserCallbacks(JSTaskState* jstaskstate, JSD_UserCallbacks* callbacks, void* user);
|
|
|
|
/***************************************************************************/
|
|
/* Script functions */
|
|
|
|
PR_PUBLIC_API(void)
|
|
JSD_LockScriptSubsystem(JSDContext* jsdc);
|
|
|
|
PR_PUBLIC_API(void)
|
|
JSD_UnlockScriptSubsystem(JSDContext* jsdc);
|
|
|
|
PR_PUBLIC_API(JSDScript*)
|
|
JSD_IterateScripts(JSDContext* jsdc, JSDScript **iterp);
|
|
|
|
PR_PUBLIC_API(const char*)
|
|
JSD_GetScriptFilename(JSDContext* jsdc, JSDScript *jsdscript);
|
|
|
|
PR_PUBLIC_API(const char*)
|
|
JSD_GetScriptFunctionName(JSDContext* jsdc, JSDScript *jsdscript);
|
|
|
|
PR_PUBLIC_API(PRUintn)
|
|
JSD_GetScriptBaseLineNumber(JSDContext* jsdc, JSDScript *jsdscript);
|
|
|
|
PR_PUBLIC_API(PRUintn)
|
|
JSD_GetScriptLineExtent(JSDContext* jsdc, JSDScript *jsdscript);
|
|
|
|
typedef void
|
|
(*JSD_ScriptHookProc)( JSDContext* jsdc,
|
|
JSDScript* jsdscript,
|
|
JSBool creating,
|
|
void* callerdata );
|
|
|
|
PR_PUBLIC_API(JSD_ScriptHookProc)
|
|
JSD_SetScriptHook(JSDContext* jsdc, JSD_ScriptHookProc hook, void* callerdata);
|
|
|
|
PR_PUBLIC_API(JSD_ScriptHookProc)
|
|
JSD_GetScriptHook(JSDContext* jsdc);
|
|
|
|
PR_PUBLIC_API(prword_t)
|
|
JSD_GetClosestPC(JSDContext* jsdc, JSDScript* jsdscript, PRUintn line);
|
|
|
|
PR_PUBLIC_API(PRUintn)
|
|
JSD_GetClosestLine(JSDContext* jsdc, JSDScript* jsdscript, prword_t pc);
|
|
|
|
/***************************************************************************/
|
|
/* Source Text functions */
|
|
|
|
/* these coorespond to netscape.jsdebug.SourceTextItem.java values -
|
|
* change in both places if anywhere
|
|
*/
|
|
|
|
typedef enum
|
|
{
|
|
JSD_SOURCE_INITED,
|
|
JSD_SOURCE_PARTIAL,
|
|
JSD_SOURCE_COMPLETED,
|
|
JSD_SOURCE_ABORTED,
|
|
JSD_SOURCE_FAILED,
|
|
JSD_SOURCE_CLEARED
|
|
} JSDSourceStatus;
|
|
|
|
PR_PUBLIC_API(void)
|
|
JSD_LockSourceTextSubsystem(JSDContext* jsdc);
|
|
|
|
PR_PUBLIC_API(void)
|
|
JSD_UnlockSourceTextSubsystem(JSDContext* jsdc);
|
|
|
|
PR_PUBLIC_API(JSDSourceText*)
|
|
JSD_IterateSources(JSDContext* jsdc, JSDSourceText **iterp);
|
|
|
|
PR_PUBLIC_API(JSDSourceText*)
|
|
JSD_FindSourceForURL(JSDContext* jsdc, const char* url);
|
|
|
|
PR_PUBLIC_API(const char*)
|
|
JSD_GetSourceURL(JSDContext* jsdc, JSDSourceText* jsdsrc);
|
|
|
|
PR_PUBLIC_API(JSBool)
|
|
JSD_GetSourceText(JSDContext* jsdc, JSDSourceText* jsdsrc,
|
|
const char** ppBuf, int* pLen);
|
|
|
|
PR_PUBLIC_API(void)
|
|
JSD_ClearSourceText(JSDContext* jsdc, JSDSourceText* jsdsrc);
|
|
|
|
PR_PUBLIC_API(JSDSourceStatus)
|
|
JSD_GetSourceStatus(JSDContext* jsdc, JSDSourceText* jsdsrc);
|
|
|
|
PR_PUBLIC_API(JSBool)
|
|
JSD_IsSourceDirty(JSDContext* jsdc, JSDSourceText* jsdsrc);
|
|
|
|
PR_PUBLIC_API(void)
|
|
JSD_SetSourceDirty(JSDContext* jsdc, JSDSourceText* jsdsrc, JSBool dirty);
|
|
|
|
PR_PUBLIC_API(PRUintn)
|
|
JSD_GetSourceAlterCount(JSDContext* jsdc, JSDSourceText* jsdsrc);
|
|
|
|
PR_PUBLIC_API(PRUintn)
|
|
JSD_IncrementSourceAlterCount(JSDContext* jsdc, JSDSourceText* jsdsrc);
|
|
|
|
/* functions for adding source items */
|
|
|
|
PR_PUBLIC_API(JSDSourceText*)
|
|
JSD_NewSourceText(JSDContext* jsdc, const char* url);
|
|
|
|
PR_PUBLIC_API(JSDSourceText*)
|
|
JSD_AppendSourceText(JSDContext* jsdc,
|
|
JSDSourceText* jsdsrc,
|
|
const char* text, /* *not* zero terminated */
|
|
size_t length,
|
|
JSDSourceStatus status);
|
|
|
|
/***************************************************************************/
|
|
/* Execution/Interrupt Hook functions */
|
|
|
|
#define JSD_HOOK_INTERRUPTED 0
|
|
#define JSD_HOOK_BREAKPOINT 1
|
|
#define JSD_HOOK_DEBUG_REQUESTED 2
|
|
|
|
#define JSD_HOOK_RETURN_HOOK_ERROR 0
|
|
#define JSD_HOOK_RETURN_CONTINUE 1
|
|
#define JSD_HOOK_RETURN_ABORT 2
|
|
#define JSD_HOOK_RETURN_RET_WITH_VAL 3 /* not yet supported */
|
|
|
|
typedef PRUintn
|
|
(*JSD_ExecutionHookProc)( JSDContext* jsdc,
|
|
JSDThreadState* jsdthreadstate,
|
|
PRUintn type,
|
|
void* callerdata );
|
|
PR_PUBLIC_API(JSBool)
|
|
JSD_SetExecutionHook(JSDContext* jsdc,
|
|
JSDScript* jsdscript,
|
|
prword_t pc,
|
|
JSD_ExecutionHookProc hook,
|
|
void* callerdata);
|
|
|
|
PR_PUBLIC_API(JSBool)
|
|
JSD_ClearExecutionHook(JSDContext* jsdc,
|
|
JSDScript* jsdscript,
|
|
prword_t pc);
|
|
|
|
PR_PUBLIC_API(JSBool)
|
|
JSD_ClearAllExecutionHooksForScript(JSDContext* jsdc, JSDScript* jsdscript);
|
|
|
|
PR_PUBLIC_API(JSBool)
|
|
JSD_ClearAllExecutionHooks(JSDContext* jsdc);
|
|
|
|
PR_PUBLIC_API(JSBool)
|
|
JSD_SetInterruptHook(JSDContext* jsdc,
|
|
JSD_ExecutionHookProc hook,
|
|
void* callerdata);
|
|
|
|
PR_PUBLIC_API(JSBool)
|
|
JSD_ClearInterruptHook(JSDContext* jsdc);
|
|
|
|
PR_PUBLIC_API(JSBool)
|
|
JSD_SetDebugBreakHook(JSDContext* jsdc,
|
|
JSD_ExecutionHookProc hook,
|
|
void* callerdata);
|
|
|
|
PR_PUBLIC_API(JSBool)
|
|
JSD_ClearDebugBreakHook(JSDContext* jsdc);
|
|
|
|
|
|
/***************************************************************************/
|
|
/* Stack Frame functions */
|
|
|
|
PR_PUBLIC_API(PRUintn)
|
|
JSD_GetCountOfStackFrames(JSDContext* jsdc, JSDThreadState* jsdthreadstate);
|
|
|
|
PR_PUBLIC_API(JSDStackFrameInfo*)
|
|
JSD_GetStackFrame(JSDContext* jsdc, JSDThreadState* jsdthreadstate);
|
|
|
|
PR_PUBLIC_API(JSDStackFrameInfo*)
|
|
JSD_GetCallingStackFrame(JSDContext* jsdc,
|
|
JSDThreadState* jsdthreadstate,
|
|
JSDStackFrameInfo* jsdframe);
|
|
|
|
PR_PUBLIC_API(JSDScript*)
|
|
JSD_GetScriptForStackFrame(JSDContext* jsdc,
|
|
JSDThreadState* jsdthreadstate,
|
|
JSDStackFrameInfo* jsdframe);
|
|
|
|
PR_PUBLIC_API(prword_t)
|
|
JSD_GetPCForStackFrame(JSDContext* jsdc,
|
|
JSDThreadState* jsdthreadstate,
|
|
JSDStackFrameInfo* jsdframe);
|
|
|
|
PR_PUBLIC_API(JSBool)
|
|
JSD_EvaluateScriptInStackFrame(JSDContext* jsdc,
|
|
JSDThreadState* jsdthreadstate,
|
|
JSDStackFrameInfo* jsdframe,
|
|
const char *bytes, PRUintn length,
|
|
const char *filename, PRUintn lineno, jsval *rval);
|
|
|
|
PR_PUBLIC_API(JSString*)
|
|
JSD_ValToStringInStackFrame(JSDContext* jsdc,
|
|
JSDThreadState* jsdthreadstate,
|
|
JSDStackFrameInfo* jsdframe,
|
|
jsval val);
|
|
|
|
/***************************************************************************/
|
|
/* Error Reporter functions */
|
|
|
|
#define JSD_ERROR_REPORTER_PASS_ALONG 0
|
|
#define JSD_ERROR_REPORTER_RETURN 1
|
|
#define JSD_ERROR_REPORTER_DEBUG 2
|
|
|
|
typedef PRUintn
|
|
(*JSD_ErrorReporter)( JSDContext* jsdc,
|
|
JSContext* cx,
|
|
const char* message,
|
|
JSErrorReport* report,
|
|
void* callerdata );
|
|
|
|
PR_PUBLIC_API(JSD_ErrorReporter)
|
|
JSD_SetErrorReporter( JSDContext* jsdc, JSD_ErrorReporter reporter, void* callerdata);
|
|
|
|
NSPR_END_EXTERN_C
|
|
|
|
#endif /* jsdebug_h___ */
|