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