Annotation of sbbs/javascript/include/mozilla/js/jsdbgapi.h, revision 1.1.1.1

1.1       root        1: /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
                      2:  *
                      3:  * The contents of this file are subject to the Netscape Public
                      4:  * License Version 1.1 (the "License"); you may not use this file
                      5:  * except in compliance with the License. You may obtain a copy of
                      6:  * the License at http://www.mozilla.org/NPL/
                      7:  *
                      8:  * Software distributed under the License is distributed on an "AS
                      9:  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
                     10:  * implied. See the License for the specific language governing
                     11:  * rights and limitations under the License.
                     12:  *
                     13:  * The Original Code is Mozilla Communicator client code, released
                     14:  * March 31, 1998.
                     15:  *
                     16:  * The Initial Developer of the Original Code is Netscape
                     17:  * Communications Corporation.  Portions created by Netscape are
                     18:  * Copyright (C) 1998 Netscape Communications Corporation. All
                     19:  * Rights Reserved.
                     20:  *
                     21:  * Contributor(s): 
                     22:  *
                     23:  * Alternatively, the contents of this file may be used under the
                     24:  * terms of the GNU Public License (the "GPL"), in which case the
                     25:  * provisions of the GPL are applicable instead of those above.
                     26:  * If you wish to allow use of your version of this file only
                     27:  * under the terms of the GPL and not to allow others to use your
                     28:  * version of this file under the NPL, indicate your decision by
                     29:  * deleting the provisions above and replace them with the notice
                     30:  * and other provisions required by the GPL.  If you do not delete
                     31:  * the provisions above, a recipient may use your version of this
                     32:  * file under either the NPL or the GPL.
                     33:  */
                     34: 
                     35: #ifndef jsdbgapi_h___
                     36: #define jsdbgapi_h___
                     37: /*
                     38:  * JS debugger API.
                     39:  */
                     40: #include "jsapi.h"
                     41: #include "jsopcode.h"
                     42: #include "jsprvtd.h"
                     43: 
                     44: JS_BEGIN_EXTERN_C
                     45: 
                     46: extern void
                     47: js_PatchOpcode(JSContext *cx, JSScript *script, jsbytecode *pc, JSOp op);
                     48: 
                     49: extern JS_PUBLIC_API(JSBool)
                     50: JS_SetTrap(JSContext *cx, JSScript *script, jsbytecode *pc,
                     51:           JSTrapHandler handler, void *closure);
                     52: 
                     53: extern JS_PUBLIC_API(JSOp)
                     54: JS_GetTrapOpcode(JSContext *cx, JSScript *script, jsbytecode *pc);
                     55: 
                     56: extern JS_PUBLIC_API(void)
                     57: JS_ClearTrap(JSContext *cx, JSScript *script, jsbytecode *pc,
                     58:             JSTrapHandler *handlerp, void **closurep);
                     59: 
                     60: extern JS_PUBLIC_API(void)
                     61: JS_ClearScriptTraps(JSContext *cx, JSScript *script);
                     62: 
                     63: extern JS_PUBLIC_API(void)
                     64: JS_ClearAllTraps(JSContext *cx);
                     65: 
                     66: extern JS_PUBLIC_API(JSTrapStatus)
                     67: JS_HandleTrap(JSContext *cx, JSScript *script, jsbytecode *pc, jsval *rval);
                     68: 
                     69: extern JS_PUBLIC_API(JSBool)
                     70: JS_SetInterrupt(JSRuntime *rt, JSTrapHandler handler, void *closure);
                     71: 
                     72: extern JS_PUBLIC_API(JSBool)
                     73: JS_ClearInterrupt(JSRuntime *rt, JSTrapHandler *handlerp, void **closurep);
                     74: 
                     75: /************************************************************************/
                     76: 
                     77: extern JS_PUBLIC_API(JSBool)
                     78: JS_SetWatchPoint(JSContext *cx, JSObject *obj, jsval id,
                     79:                 JSWatchPointHandler handler, void *closure);
                     80: 
                     81: extern JS_PUBLIC_API(JSBool)
                     82: JS_ClearWatchPoint(JSContext *cx, JSObject *obj, jsval id,
                     83:                   JSWatchPointHandler *handlerp, void **closurep);
                     84: 
                     85: extern JS_PUBLIC_API(JSBool)
                     86: JS_ClearWatchPointsForObject(JSContext *cx, JSObject *obj);
                     87: 
                     88: extern JS_PUBLIC_API(JSBool)
                     89: JS_ClearAllWatchPoints(JSContext *cx);
                     90: 
                     91: #ifdef JS_HAS_OBJ_WATCHPOINT
                     92: /*
                     93:  * Hide these non-API function prototypes by testing whether the internal
                     94:  * header file "jsconfig.h" has been included.
                     95:  */
                     96: extern void
                     97: js_MarkWatchPoints(JSRuntime *rt);
                     98: 
                     99: extern JSScopeProperty *
                    100: js_FindWatchPoint(JSRuntime *rt, JSScope *scope, jsid id);
                    101: 
                    102: extern JSPropertyOp
                    103: js_GetWatchedSetter(JSRuntime *rt, JSScope *scope,
                    104:                     const JSScopeProperty *sprop);
                    105: 
                    106: extern JSBool JS_DLL_CALLBACK
                    107: js_watch_set(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
                    108: 
                    109: extern JSBool JS_DLL_CALLBACK
                    110: js_watch_set_wrapper(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
                    111:                      jsval *rval);
                    112: 
                    113: extern JSPropertyOp
                    114: js_WrapWatchedSetter(JSContext *cx, jsid id, uintN attrs, JSPropertyOp setter);
                    115: 
                    116: #endif /* JS_HAS_OBJ_WATCHPOINT */
                    117: 
                    118: /************************************************************************/
                    119: 
                    120: extern JS_PUBLIC_API(uintN)
                    121: JS_PCToLineNumber(JSContext *cx, JSScript *script, jsbytecode *pc);
                    122: 
                    123: extern JS_PUBLIC_API(jsbytecode *)
                    124: JS_LineNumberToPC(JSContext *cx, JSScript *script, uintN lineno);
                    125: 
                    126: extern JS_PUBLIC_API(JSScript *)
                    127: JS_GetFunctionScript(JSContext *cx, JSFunction *fun);
                    128: 
                    129: extern JS_PUBLIC_API(JSPrincipals *)
                    130: JS_GetScriptPrincipals(JSContext *cx, JSScript *script);
                    131: 
                    132: /*
                    133:  * Stack Frame Iterator
                    134:  *
                    135:  * Used to iterate through the JS stack frames to extract
                    136:  * information from the frames.
                    137:  */
                    138: 
                    139: extern JS_PUBLIC_API(JSStackFrame *)
                    140: JS_FrameIterator(JSContext *cx, JSStackFrame **iteratorp);
                    141: 
                    142: extern JS_PUBLIC_API(JSScript *)
                    143: JS_GetFrameScript(JSContext *cx, JSStackFrame *fp);
                    144: 
                    145: extern JS_PUBLIC_API(jsbytecode *)
                    146: JS_GetFramePC(JSContext *cx, JSStackFrame *fp);
                    147: 
                    148: extern JS_PUBLIC_API(JSBool)
                    149: JS_IsNativeFrame(JSContext *cx, JSStackFrame *fp);
                    150: 
                    151: extern JS_PUBLIC_API(void *)
                    152: JS_GetFrameAnnotation(JSContext *cx, JSStackFrame *fp);
                    153: 
                    154: extern JS_PUBLIC_API(void)
                    155: JS_SetFrameAnnotation(JSContext *cx, JSStackFrame *fp, void *annotation);
                    156: 
                    157: extern JS_PUBLIC_API(void *)
                    158: JS_GetFramePrincipalArray(JSContext *cx, JSStackFrame *fp);
                    159: 
                    160: /* this is deprecated, use JS_GetFrameScopeChain instead */
                    161: extern JS_PUBLIC_API(JSObject *)
                    162: JS_GetFrameObject(JSContext *cx, JSStackFrame *fp);
                    163: 
                    164: extern JS_PUBLIC_API(JSObject *)
                    165: JS_GetFrameScopeChain(JSContext *cx, JSStackFrame *fp);
                    166: 
                    167: extern JS_PUBLIC_API(JSObject *)
                    168: JS_GetFrameCallObject(JSContext *cx, JSStackFrame *fp);
                    169: 
                    170: extern JS_PUBLIC_API(JSObject *)
                    171: JS_GetFrameThis(JSContext *cx, JSStackFrame *fp);
                    172: 
                    173: extern JS_PUBLIC_API(JSFunction *)
                    174: JS_GetFrameFunction(JSContext *cx, JSStackFrame *fp);
                    175: 
                    176: extern JS_PUBLIC_API(JSObject *)
                    177: JS_GetFrameFunctionObject(JSContext *cx, JSStackFrame *fp);
                    178: 
                    179: /* XXXrginda Initially published with typo */
                    180: #define JS_IsContructorFrame JS_IsConstructorFrame
                    181: extern JS_PUBLIC_API(JSBool)
                    182: JS_IsConstructorFrame(JSContext *cx, JSStackFrame *fp);
                    183: 
                    184: extern JS_PUBLIC_API(JSBool)
                    185: JS_IsDebuggerFrame(JSContext *cx, JSStackFrame *fp);
                    186: 
                    187: extern JS_PUBLIC_API(jsval)
                    188: JS_GetFrameReturnValue(JSContext *cx, JSStackFrame *fp);
                    189: 
                    190: extern JS_PUBLIC_API(void)
                    191: JS_SetFrameReturnValue(JSContext *cx, JSStackFrame *fp, jsval rval);
                    192: 
                    193: /************************************************************************/
                    194: 
                    195: extern JS_PUBLIC_API(const char *)
                    196: JS_GetScriptFilename(JSContext *cx, JSScript *script);
                    197: 
                    198: extern JS_PUBLIC_API(uintN)
                    199: JS_GetScriptBaseLineNumber(JSContext *cx, JSScript *script);
                    200: 
                    201: extern JS_PUBLIC_API(uintN)
                    202: JS_GetScriptLineExtent(JSContext *cx, JSScript *script);
                    203: 
                    204: extern JS_PUBLIC_API(JSVersion)
                    205: JS_GetScriptVersion(JSContext *cx, JSScript *script);
                    206:      
                    207: /************************************************************************/
                    208: 
                    209: /*
                    210:  * Hook setters for script creation and destruction, see jsprvtd.h for the
                    211:  * typedefs.  These macros provide binary compatibility and newer, shorter
                    212:  * synonyms.
                    213:  */
                    214: #define JS_SetNewScriptHook     JS_SetNewScriptHookProc
                    215: #define JS_SetDestroyScriptHook JS_SetDestroyScriptHookProc
                    216: 
                    217: extern JS_PUBLIC_API(void)
                    218: JS_SetNewScriptHook(JSRuntime *rt, JSNewScriptHook hook, void *callerdata);
                    219: 
                    220: extern JS_PUBLIC_API(void)
                    221: JS_SetDestroyScriptHook(JSRuntime *rt, JSDestroyScriptHook hook,
                    222:                        void *callerdata);
                    223: 
                    224: /************************************************************************/
                    225: 
                    226: extern JS_PUBLIC_API(JSBool)
                    227: JS_EvaluateUCInStackFrame(JSContext *cx, JSStackFrame *fp,
                    228:                           const jschar *bytes, uintN length,
                    229:                           const char *filename, uintN lineno,
                    230:                           jsval *rval);
                    231: 
                    232: extern JS_PUBLIC_API(JSBool)
                    233: JS_EvaluateInStackFrame(JSContext *cx, JSStackFrame *fp,
                    234:                        const char *bytes, uintN length,
                    235:                        const char *filename, uintN lineno,
                    236:                        jsval *rval);
                    237: 
                    238: /************************************************************************/
                    239: 
                    240: typedef struct JSPropertyDesc {
                    241:     jsval           id;         /* primary id, a string or int */
                    242:     jsval           value;      /* property value */
                    243:     uint8           flags;      /* flags, see below */
                    244:     uint8           spare;      /* unused */
                    245:     uint16          slot;       /* argument/variable slot */
                    246:     jsval           alias;      /* alias id if JSPD_ALIAS flag */
                    247: } JSPropertyDesc;
                    248: 
                    249: #define JSPD_ENUMERATE  0x01    /* visible to for/in loop */
                    250: #define JSPD_READONLY   0x02    /* assignment is error */
                    251: #define JSPD_PERMANENT  0x04    /* property cannot be deleted */
                    252: #define JSPD_ALIAS      0x08    /* property has an alias id */
                    253: #define JSPD_ARGUMENT   0x10    /* argument to function */
                    254: #define JSPD_VARIABLE   0x20    /* local variable in function */
                    255: #define JSPD_EXCEPTION  0x40    /* exception occurred fetching the property, */
                    256:                                 /* value is exception */
                    257: #define JSPD_ERROR      0x80    /* native getter returned JS_FALSE without */
                    258:                                 /* throwing an exception */
                    259: 
                    260: typedef struct JSPropertyDescArray {
                    261:     uint32          length;     /* number of elements in array */
                    262:     JSPropertyDesc  *array;     /* alloc'd by Get, freed by Put */
                    263: } JSPropertyDescArray;
                    264: 
                    265: extern JS_PUBLIC_API(JSScopeProperty *)
                    266: JS_PropertyIterator(JSObject *obj, JSScopeProperty **iteratorp);
                    267: 
                    268: extern JS_PUBLIC_API(JSBool)
                    269: JS_GetPropertyDesc(JSContext *cx, JSObject *obj, JSScopeProperty *sprop,
                    270:                   JSPropertyDesc *pd);
                    271: 
                    272: extern JS_PUBLIC_API(JSBool)
                    273: JS_GetPropertyDescArray(JSContext *cx, JSObject *obj, JSPropertyDescArray *pda);
                    274: 
                    275: extern JS_PUBLIC_API(void)
                    276: JS_PutPropertyDescArray(JSContext *cx, JSPropertyDescArray *pda);
                    277: 
                    278: /************************************************************************/
                    279: 
                    280: extern JS_PUBLIC_API(JSBool)
                    281: JS_SetDebuggerHandler(JSRuntime *rt, JSTrapHandler handler, void *closure);
                    282: 
                    283: extern JS_PUBLIC_API(JSBool)
                    284: JS_SetSourceHandler(JSRuntime *rt, JSSourceHandler handler, void *closure);
                    285: 
                    286: extern JS_PUBLIC_API(JSBool)
                    287: JS_SetExecuteHook(JSRuntime *rt, JSInterpreterHook hook, void *closure);
                    288: 
                    289: extern JS_PUBLIC_API(JSBool)
                    290: JS_SetCallHook(JSRuntime *rt, JSInterpreterHook hook, void *closure);
                    291: 
                    292: extern JS_PUBLIC_API(JSBool)
                    293: JS_SetObjectHook(JSRuntime *rt, JSObjectHook hook, void *closure);
                    294: 
                    295: extern JS_PUBLIC_API(JSBool)
                    296: JS_SetThrowHook(JSRuntime *rt, JSTrapHandler hook, void *closure);
                    297: 
                    298: extern JS_PUBLIC_API(JSBool)
                    299: JS_SetDebugErrorHook(JSRuntime *rt, JSDebugErrorHook hook, void *closure);
                    300: 
                    301: /************************************************************************/
                    302: 
                    303: extern JS_PUBLIC_API(size_t)
                    304: JS_GetObjectTotalSize(JSContext *cx, JSObject *obj);
                    305: 
                    306: extern JS_PUBLIC_API(size_t)
                    307: JS_GetFunctionTotalSize(JSContext *cx, JSFunction *fun);
                    308: 
                    309: extern JS_PUBLIC_API(size_t)
                    310: JS_GetScriptTotalSize(JSContext *cx, JSScript *script);
                    311: 
                    312: JS_END_EXTERN_C
                    313: 
                    314: #endif /* jsdbgapi_h___ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.