/* * DO NOT EDIT. THIS FILE IS GENERATED FROM jsdIDebuggerService.idl */ #ifndef __gen_jsdIDebuggerService_h__ #define __gen_jsdIDebuggerService_h__ #ifndef __gen_nsISupports_h__ #include "nsISupports.h" #endif /* For IDL files that don't want to include root IDL files. */ #ifndef NS_NO_VTABLE #define NS_NO_VTABLE #endif #include "jsdebug.h" #include "nsAString.h" class jsdIDebuggerService; /* forward declaration */ class jsdIFilter; /* forward declaration */ class jsdINestCallback; /* forward declaration */ class jsdIFilterEnumerator; /* forward declaration */ class jsdIContextEnumerator; /* forward declaration */ class jsdIScriptEnumerator; /* forward declaration */ class jsdIScriptHook; /* forward declaration */ class jsdIErrorHook; /* forward declaration */ class jsdIExecutionHook; /* forward declaration */ class jsdICallHook; /* forward declaration */ class jsdIEphemeral; /* forward declaration */ class jsdIPC; /* forward declaration */ class jsdIContext; /* forward declaration */ class jsdIStackFrame; /* forward declaration */ class jsdIScript; /* forward declaration */ class jsdIValue; /* forward declaration */ class jsdIObject; /* forward declaration */ class jsdIProperty; /* forward declaration */ /* starting interface: jsdIDebuggerService */ #define JSDIDEBUGGERSERVICE_IID_STR "01be7f9a-1dd2-11b2-9d55-aaf919b27c73" #define JSDIDEBUGGERSERVICE_IID \ {0x01be7f9a, 0x1dd2, 0x11b2, \ { 0x9d, 0x55, 0xaa, 0xf9, 0x19, 0xb2, 0x7c, 0x73 }} class NS_NO_VTABLE jsdIDebuggerService : public nsISupports { public: NS_DEFINE_STATIC_IID_ACCESSOR(JSDIDEBUGGERSERVICE_IID) /** * Debugger service. It's not a good idea to have more than one active client of * the debugger service. */ /** Internal use only. */ /* [noscript] readonly attribute JSDContext JSDContext; */ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext) = 0; /** * Called when an error or warning occurs. */ /* attribute jsdIErrorHook errorHook; */ NS_IMETHOD GetErrorHook(jsdIErrorHook * *aErrorHook) = 0; NS_IMETHOD SetErrorHook(jsdIErrorHook * aErrorHook) = 0; /** * Called when a jsdIScript is created or destroyed. */ /* attribute jsdIScriptHook scriptHook; */ NS_IMETHOD GetScriptHook(jsdIScriptHook * *aScriptHook) = 0; NS_IMETHOD SetScriptHook(jsdIScriptHook * aScriptHook) = 0; /** * Called when the engine encounters a breakpoint. */ /* attribute jsdIExecutionHook breakpointHook; */ NS_IMETHOD GetBreakpointHook(jsdIExecutionHook * *aBreakpointHook) = 0; NS_IMETHOD SetBreakpointHook(jsdIExecutionHook * aBreakpointHook) = 0; /** * Called when the engine encounters the debugger keyword. */ /* attribute jsdIExecutionHook debuggerHook; */ NS_IMETHOD GetDebuggerHook(jsdIExecutionHook * *aDebuggerHook) = 0; NS_IMETHOD SetDebuggerHook(jsdIExecutionHook * aDebuggerHook) = 0; /** * Called when the errorHook returns false. */ /* attribute jsdIExecutionHook debugHook; */ NS_IMETHOD GetDebugHook(jsdIExecutionHook * *aDebugHook) = 0; NS_IMETHOD SetDebugHook(jsdIExecutionHook * aDebugHook) = 0; /** * Called before the next PC is executed. */ /* attribute jsdIExecutionHook interruptHook; */ NS_IMETHOD GetInterruptHook(jsdIExecutionHook * *aInterruptHook) = 0; NS_IMETHOD SetInterruptHook(jsdIExecutionHook * aInterruptHook) = 0; /** * Called when an exception is thrown (even if it will be caught.) */ /* attribute jsdIExecutionHook throwHook; */ NS_IMETHOD GetThrowHook(jsdIExecutionHook * *aThrowHook) = 0; NS_IMETHOD SetThrowHook(jsdIExecutionHook * aThrowHook) = 0; /** * Called before and after a toplevel script is evaluated. */ /* attribute jsdICallHook topLevelHook; */ NS_IMETHOD GetTopLevelHook(jsdICallHook * *aTopLevelHook) = 0; NS_IMETHOD SetTopLevelHook(jsdICallHook * aTopLevelHook) = 0; /** * Called before and after a function is called. */ /* attribute jsdICallHook functionHook; */ NS_IMETHOD GetFunctionHook(jsdICallHook * *aFunctionHook) = 0; NS_IMETHOD SetFunctionHook(jsdICallHook * aFunctionHook) = 0; /** * VERSION_* values must be kept in sync with the JSVersion enumeration in * jspubtd.h. */ /** * Possible values for jsdIScript::version and jsdIContext::version. */ enum { VERSION_1_0 = 100 }; enum { VERSION_1_1 = 110 }; enum { VERSION_1_2 = 120 }; enum { VERSION_1_3 = 130 }; enum { VERSION_1_4 = 140 }; enum { VERSION_1_5 = 150 }; enum { VERSION_DEFAULT = 0 }; enum { VERSION_UNKNOWN = -1 }; /** * These flags need to be kept in sync with the context flags defined in * jsdebug.h */ /** * Link native frames in call stacks. */ enum { ENABLE_NATIVE_FRAMES = 1U }; /** * Normally, if a script has a 0 in JSD_SCRIPT_PROFILE_BIT it is included in * profile data, otherwise it is not profiled. Setting the * PROFILE_WHEN_SET flag reverses this convention. */ enum { PROFILE_WHEN_SET = 2U }; /** * Normally, when the script in the top frame of a thread state has a 1 in * JSD_SCRIPT_DEBUG_BIT, the execution hook is ignored. Setting the * DEBUG_WHEN_SET flag reverses this convention. */ enum { DEBUG_WHEN_SET = 4U }; /** * When this flag is set the internal call hook will collect profile data. */ enum { COLLECT_PROFILE_DATA = 8U }; /** * Debugger service flags. */ /* attribute unsigned long flags; */ NS_IMETHOD GetFlags(PRUint32 *aFlags) = 0; NS_IMETHOD SetFlags(PRUint32 aFlags) = 0; /** * |true| if the debugger should register an app-start observer in order * to begin collecting debug information when mozilla is launched. */ /* attribute boolean initAtStartup; */ NS_IMETHOD GetInitAtStartup(PRBool *aInitAtStartup) = 0; NS_IMETHOD SetInitAtStartup(PRBool aInitAtStartup) = 0; /** * |true| if the debugger service has been turned on. This does not * necessarily mean another app is actively using the service, as the * autostart pref may have turned the service on. */ /* readonly attribute boolean isOn; */ NS_IMETHOD GetIsOn(PRBool *aIsOn) = 0; /** * Turn on the debugger. This function should only be called from JavaScript * code. The debugger will be enabled on the runtime the call is made on, * as determined by nsIXPCNativeCallContext. */ /* void on (); */ NS_IMETHOD On(void) = 0; /** * Turn on the debugger for a given runtime. * * @param rt The runtime you want to debug. You cannot turn the debugger * on for multiple runtimes. */ /* [noscript] void onForRuntime (in JSRuntime rt); */ NS_IMETHOD OnForRuntime(JSRuntime * rt) = 0; /** * Turn the debugger off. This will invalidate all of your jsdIEphemeral * derived objects, and clear all of your breakpoints. In theory you * should be able to turn the debugger back on at some later time without * any problems. */ /* void off (); */ NS_IMETHOD Off(void) = 0; /** * Peek at the current pause depth of the debugger. * * @return depth Number of pause() calls still waiting to be unPause()d. */ /* readonly attribute unsigned long pauseDepth; */ NS_IMETHOD GetPauseDepth(PRUint32 *aPauseDepth) = 0; /** * Temporarily disable the debugger. Hooks will not be called while the * debugger is paused. Multiple calls to pause will increase the "pause * depth", and equal number of unPause calles must be made to resume * normal debugging. * * @return depth Number of times pause has been called since the debugger * has been unpaused. */ /* unsigned long pause (); */ NS_IMETHOD Pause(PRUint32 *_retval) = 0; /** * Undo a pause. * * @return depth The number of remaining pending pause calls. */ /* unsigned long unPause (); */ NS_IMETHOD UnPause(PRUint32 *_retval) = 0; /** * Force the engine to perform garbage collection. */ /* void GC (); */ NS_IMETHOD GC(void) = 0; /** * Clear profile data for all scripts. */ /* void clearProfileData (); */ NS_IMETHOD ClearProfileData(void) = 0; /** * Adds an execution hook filter. These filters are consulted each time one * of the jsdIExecutionHooks is about to be called. Filters are matched in * a first in, first compared fashion. The first filter to match determines * whether or not the hook is called. Use swapFilter to reorder existing * filters, and removeFilter to remove them. * * If |filter| is already present this method throws NS_ERROR_INVALID_ARG. * * @param filter Object representing the filter to add. * @param after Insert |filter| after this one. Pass null to insert at * the beginning. */ /* void insertFilter (in jsdIFilter filter, in jsdIFilter after); */ NS_IMETHOD InsertFilter(jsdIFilter *filter, jsdIFilter *after) = 0; /** * Same as insertFilter, except always add to the end of the list. */ /* void appendFilter (in jsdIFilter filter); */ NS_IMETHOD AppendFilter(jsdIFilter *filter) = 0; /** * Remove a filter. * * If |filter| is not present this method throws NS_ERROR_INVALID_ARG. * * @param filter Object representing the filter to remove. Must be the exact * object passed to addFilter, not just a new object with the same * properties. */ /* void removeFilter (in jsdIFilter filter); */ NS_IMETHOD RemoveFilter(jsdIFilter *filter) = 0; /** * Swap position of two filters. * * If |filter_a| is not present, this method throws NS_ERROR_INVALID_ARG. * If |filter_b| is not present, filter_a is replaced by filter_b. * If |filter_a| == |filter_b|, then filter is refreshed. */ /* void swapFilters (in jsdIFilter filter_a, in jsdIFilter filter_b); */ NS_IMETHOD SwapFilters(jsdIFilter *filter_a, jsdIFilter *filter_b) = 0; /** * Enumerate registered filters. This routine refreshes each filter before * passing them on to the enumeration function. Calling this with a null * |enumerator| is equivilant to jsdIService::refreshFilters. * * @param enumerator jsdIFilterEnumerator instance to be called back for the * enumeration. */ /* void enumerateFilters (in jsdIFilterEnumerator enumerator); */ NS_IMETHOD EnumerateFilters(jsdIFilterEnumerator *enumerator) = 0; /** * Force the debugger to resync its internal filter cache with the * actual values in the jsdIFilter objects. To refresh a single filter * use jsdIService::swapFilters. This method is equivilant to * jsdIService::enumerateFilters with a null enumerator. */ /* void refreshFilters (); */ NS_IMETHOD RefreshFilters(void) = 0; /** * Clear the list of filters. */ /* void clearFilters (); */ NS_IMETHOD ClearFilters(void) = 0; /** * Enumerate all known contexts. */ /* void enumerateContexts (in jsdIContextEnumerator enumerator); */ NS_IMETHOD EnumerateContexts(jsdIContextEnumerator *enumerator) = 0; /** * Enumerate all scripts the debugger knows about. Any scripts created * before you turned the debugger on, or after turning the debugger off * will not be available unless the autostart perf is set. * * @param enumerator jsdIScriptEnumerator instance to be called back for * the enumeration. */ /* void enumerateScripts (in jsdIScriptEnumerator enumerator); */ NS_IMETHOD EnumerateScripts(jsdIScriptEnumerator *enumerator) = 0; /** * Clear all breakpoints in all scripts. */ /* void clearAllBreakpoints (); */ NS_IMETHOD ClearAllBreakpoints(void) = 0; /** * When called from JavaScript, this method returns the jsdIValue wrapper * for the given value. If a wrapper does not exist one will be created. * When called from another language this method returns an xpconnect * defined error code. */ /* jsdIValue wrapValue (); */ NS_IMETHOD WrapValue(jsdIValue **_retval) = 0; /** * Push a new network queue, and enter a new UI event loop. * @param callback jsdINestCallback instance to be called back after the * network queue has been pushed, but before the * UI loop starts. * @return depth returns the current number of times the event loop has been * nested. your code can use it for sanity checks. */ /* unsigned long enterNestedEventLoop (in jsdINestCallback callback); */ NS_IMETHOD EnterNestedEventLoop(jsdINestCallback *callback, PRUint32 *_retval) = 0; /** * Exit the current nested event loop after the current iteration completes, * and pop the network event queue. * * @return depth returns the current number of times the event loop has been * nested. your code can use it for sanity checks. */ /* unsigned long exitNestedEventLoop (); */ NS_IMETHOD ExitNestedEventLoop(PRUint32 *_retval) = 0; }; /* Use this macro when declaring classes that implement this interface. */ #define NS_DECL_JSDIDEBUGGERSERVICE \ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext); \ NS_IMETHOD GetErrorHook(jsdIErrorHook * *aErrorHook); \ NS_IMETHOD SetErrorHook(jsdIErrorHook * aErrorHook); \ NS_IMETHOD GetScriptHook(jsdIScriptHook * *aScriptHook); \ NS_IMETHOD SetScriptHook(jsdIScriptHook * aScriptHook); \ NS_IMETHOD GetBreakpointHook(jsdIExecutionHook * *aBreakpointHook); \ NS_IMETHOD SetBreakpointHook(jsdIExecutionHook * aBreakpointHook); \ NS_IMETHOD GetDebuggerHook(jsdIExecutionHook * *aDebuggerHook); \ NS_IMETHOD SetDebuggerHook(jsdIExecutionHook * aDebuggerHook); \ NS_IMETHOD GetDebugHook(jsdIExecutionHook * *aDebugHook); \ NS_IMETHOD SetDebugHook(jsdIExecutionHook * aDebugHook); \ NS_IMETHOD GetInterruptHook(jsdIExecutionHook * *aInterruptHook); \ NS_IMETHOD SetInterruptHook(jsdIExecutionHook * aInterruptHook); \ NS_IMETHOD GetThrowHook(jsdIExecutionHook * *aThrowHook); \ NS_IMETHOD SetThrowHook(jsdIExecutionHook * aThrowHook); \ NS_IMETHOD GetTopLevelHook(jsdICallHook * *aTopLevelHook); \ NS_IMETHOD SetTopLevelHook(jsdICallHook * aTopLevelHook); \ NS_IMETHOD GetFunctionHook(jsdICallHook * *aFunctionHook); \ NS_IMETHOD SetFunctionHook(jsdICallHook * aFunctionHook); \ NS_IMETHOD GetFlags(PRUint32 *aFlags); \ NS_IMETHOD SetFlags(PRUint32 aFlags); \ NS_IMETHOD GetInitAtStartup(PRBool *aInitAtStartup); \ NS_IMETHOD SetInitAtStartup(PRBool aInitAtStartup); \ NS_IMETHOD GetIsOn(PRBool *aIsOn); \ NS_IMETHOD On(void); \ NS_IMETHOD OnForRuntime(JSRuntime * rt); \ NS_IMETHOD Off(void); \ NS_IMETHOD GetPauseDepth(PRUint32 *aPauseDepth); \ NS_IMETHOD Pause(PRUint32 *_retval); \ NS_IMETHOD UnPause(PRUint32 *_retval); \ NS_IMETHOD GC(void); \ NS_IMETHOD ClearProfileData(void); \ NS_IMETHOD InsertFilter(jsdIFilter *filter, jsdIFilter *after); \ NS_IMETHOD AppendFilter(jsdIFilter *filter); \ NS_IMETHOD RemoveFilter(jsdIFilter *filter); \ NS_IMETHOD SwapFilters(jsdIFilter *filter_a, jsdIFilter *filter_b); \ NS_IMETHOD EnumerateFilters(jsdIFilterEnumerator *enumerator); \ NS_IMETHOD RefreshFilters(void); \ NS_IMETHOD ClearFilters(void); \ NS_IMETHOD EnumerateContexts(jsdIContextEnumerator *enumerator); \ NS_IMETHOD EnumerateScripts(jsdIScriptEnumerator *enumerator); \ NS_IMETHOD ClearAllBreakpoints(void); \ NS_IMETHOD WrapValue(jsdIValue **_retval); \ NS_IMETHOD EnterNestedEventLoop(jsdINestCallback *callback, PRUint32 *_retval); \ NS_IMETHOD ExitNestedEventLoop(PRUint32 *_retval); /* Use this macro to declare functions that forward the behavior of this interface to another object. */ #define NS_FORWARD_JSDIDEBUGGERSERVICE(_to) \ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext) { return _to GetJSDContext(aJSDContext); } \ NS_IMETHOD GetErrorHook(jsdIErrorHook * *aErrorHook) { return _to GetErrorHook(aErrorHook); } \ NS_IMETHOD SetErrorHook(jsdIErrorHook * aErrorHook) { return _to SetErrorHook(aErrorHook); } \ NS_IMETHOD GetScriptHook(jsdIScriptHook * *aScriptHook) { return _to GetScriptHook(aScriptHook); } \ NS_IMETHOD SetScriptHook(jsdIScriptHook * aScriptHook) { return _to SetScriptHook(aScriptHook); } \ NS_IMETHOD GetBreakpointHook(jsdIExecutionHook * *aBreakpointHook) { return _to GetBreakpointHook(aBreakpointHook); } \ NS_IMETHOD SetBreakpointHook(jsdIExecutionHook * aBreakpointHook) { return _to SetBreakpointHook(aBreakpointHook); } \ NS_IMETHOD GetDebuggerHook(jsdIExecutionHook * *aDebuggerHook) { return _to GetDebuggerHook(aDebuggerHook); } \ NS_IMETHOD SetDebuggerHook(jsdIExecutionHook * aDebuggerHook) { return _to SetDebuggerHook(aDebuggerHook); } \ NS_IMETHOD GetDebugHook(jsdIExecutionHook * *aDebugHook) { return _to GetDebugHook(aDebugHook); } \ NS_IMETHOD SetDebugHook(jsdIExecutionHook * aDebugHook) { return _to SetDebugHook(aDebugHook); } \ NS_IMETHOD GetInterruptHook(jsdIExecutionHook * *aInterruptHook) { return _to GetInterruptHook(aInterruptHook); } \ NS_IMETHOD SetInterruptHook(jsdIExecutionHook * aInterruptHook) { return _to SetInterruptHook(aInterruptHook); } \ NS_IMETHOD GetThrowHook(jsdIExecutionHook * *aThrowHook) { return _to GetThrowHook(aThrowHook); } \ NS_IMETHOD SetThrowHook(jsdIExecutionHook * aThrowHook) { return _to SetThrowHook(aThrowHook); } \ NS_IMETHOD GetTopLevelHook(jsdICallHook * *aTopLevelHook) { return _to GetTopLevelHook(aTopLevelHook); } \ NS_IMETHOD SetTopLevelHook(jsdICallHook * aTopLevelHook) { return _to SetTopLevelHook(aTopLevelHook); } \ NS_IMETHOD GetFunctionHook(jsdICallHook * *aFunctionHook) { return _to GetFunctionHook(aFunctionHook); } \ NS_IMETHOD SetFunctionHook(jsdICallHook * aFunctionHook) { return _to SetFunctionHook(aFunctionHook); } \ NS_IMETHOD GetFlags(PRUint32 *aFlags) { return _to GetFlags(aFlags); } \ NS_IMETHOD SetFlags(PRUint32 aFlags) { return _to SetFlags(aFlags); } \ NS_IMETHOD GetInitAtStartup(PRBool *aInitAtStartup) { return _to GetInitAtStartup(aInitAtStartup); } \ NS_IMETHOD SetInitAtStartup(PRBool aInitAtStartup) { return _to SetInitAtStartup(aInitAtStartup); } \ NS_IMETHOD GetIsOn(PRBool *aIsOn) { return _to GetIsOn(aIsOn); } \ NS_IMETHOD On(void) { return _to On(); } \ NS_IMETHOD OnForRuntime(JSRuntime * rt) { return _to OnForRuntime(rt); } \ NS_IMETHOD Off(void) { return _to Off(); } \ NS_IMETHOD GetPauseDepth(PRUint32 *aPauseDepth) { return _to GetPauseDepth(aPauseDepth); } \ NS_IMETHOD Pause(PRUint32 *_retval) { return _to Pause(_retval); } \ NS_IMETHOD UnPause(PRUint32 *_retval) { return _to UnPause(_retval); } \ NS_IMETHOD GC(void) { return _to GC(); } \ NS_IMETHOD ClearProfileData(void) { return _to ClearProfileData(); } \ NS_IMETHOD InsertFilter(jsdIFilter *filter, jsdIFilter *after) { return _to InsertFilter(filter, after); } \ NS_IMETHOD AppendFilter(jsdIFilter *filter) { return _to AppendFilter(filter); } \ NS_IMETHOD RemoveFilter(jsdIFilter *filter) { return _to RemoveFilter(filter); } \ NS_IMETHOD SwapFilters(jsdIFilter *filter_a, jsdIFilter *filter_b) { return _to SwapFilters(filter_a, filter_b); } \ NS_IMETHOD EnumerateFilters(jsdIFilterEnumerator *enumerator) { return _to EnumerateFilters(enumerator); } \ NS_IMETHOD RefreshFilters(void) { return _to RefreshFilters(); } \ NS_IMETHOD ClearFilters(void) { return _to ClearFilters(); } \ NS_IMETHOD EnumerateContexts(jsdIContextEnumerator *enumerator) { return _to EnumerateContexts(enumerator); } \ NS_IMETHOD EnumerateScripts(jsdIScriptEnumerator *enumerator) { return _to EnumerateScripts(enumerator); } \ NS_IMETHOD ClearAllBreakpoints(void) { return _to ClearAllBreakpoints(); } \ NS_IMETHOD WrapValue(jsdIValue **_retval) { return _to WrapValue(_retval); } \ NS_IMETHOD EnterNestedEventLoop(jsdINestCallback *callback, PRUint32 *_retval) { return _to EnterNestedEventLoop(callback, _retval); } \ NS_IMETHOD ExitNestedEventLoop(PRUint32 *_retval) { return _to ExitNestedEventLoop(_retval); } /* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */ #define NS_FORWARD_SAFE_JSDIDEBUGGERSERVICE(_to) \ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetJSDContext(aJSDContext); } \ NS_IMETHOD GetErrorHook(jsdIErrorHook * *aErrorHook) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetErrorHook(aErrorHook); } \ NS_IMETHOD SetErrorHook(jsdIErrorHook * aErrorHook) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetErrorHook(aErrorHook); } \ NS_IMETHOD GetScriptHook(jsdIScriptHook * *aScriptHook) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetScriptHook(aScriptHook); } \ NS_IMETHOD SetScriptHook(jsdIScriptHook * aScriptHook) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetScriptHook(aScriptHook); } \ NS_IMETHOD GetBreakpointHook(jsdIExecutionHook * *aBreakpointHook) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBreakpointHook(aBreakpointHook); } \ NS_IMETHOD SetBreakpointHook(jsdIExecutionHook * aBreakpointHook) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBreakpointHook(aBreakpointHook); } \ NS_IMETHOD GetDebuggerHook(jsdIExecutionHook * *aDebuggerHook) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDebuggerHook(aDebuggerHook); } \ NS_IMETHOD SetDebuggerHook(jsdIExecutionHook * aDebuggerHook) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDebuggerHook(aDebuggerHook); } \ NS_IMETHOD GetDebugHook(jsdIExecutionHook * *aDebugHook) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDebugHook(aDebugHook); } \ NS_IMETHOD SetDebugHook(jsdIExecutionHook * aDebugHook) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDebugHook(aDebugHook); } \ NS_IMETHOD GetInterruptHook(jsdIExecutionHook * *aInterruptHook) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInterruptHook(aInterruptHook); } \ NS_IMETHOD SetInterruptHook(jsdIExecutionHook * aInterruptHook) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetInterruptHook(aInterruptHook); } \ NS_IMETHOD GetThrowHook(jsdIExecutionHook * *aThrowHook) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetThrowHook(aThrowHook); } \ NS_IMETHOD SetThrowHook(jsdIExecutionHook * aThrowHook) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetThrowHook(aThrowHook); } \ NS_IMETHOD GetTopLevelHook(jsdICallHook * *aTopLevelHook) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTopLevelHook(aTopLevelHook); } \ NS_IMETHOD SetTopLevelHook(jsdICallHook * aTopLevelHook) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTopLevelHook(aTopLevelHook); } \ NS_IMETHOD GetFunctionHook(jsdICallHook * *aFunctionHook) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFunctionHook(aFunctionHook); } \ NS_IMETHOD SetFunctionHook(jsdICallHook * aFunctionHook) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFunctionHook(aFunctionHook); } \ NS_IMETHOD GetFlags(PRUint32 *aFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFlags(aFlags); } \ NS_IMETHOD SetFlags(PRUint32 aFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFlags(aFlags); } \ NS_IMETHOD GetInitAtStartup(PRBool *aInitAtStartup) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInitAtStartup(aInitAtStartup); } \ NS_IMETHOD SetInitAtStartup(PRBool aInitAtStartup) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetInitAtStartup(aInitAtStartup); } \ NS_IMETHOD GetIsOn(PRBool *aIsOn) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsOn(aIsOn); } \ NS_IMETHOD On(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->On(); } \ NS_IMETHOD OnForRuntime(JSRuntime * rt) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnForRuntime(rt); } \ NS_IMETHOD Off(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Off(); } \ NS_IMETHOD GetPauseDepth(PRUint32 *aPauseDepth) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPauseDepth(aPauseDepth); } \ NS_IMETHOD Pause(PRUint32 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->Pause(_retval); } \ NS_IMETHOD UnPause(PRUint32 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnPause(_retval); } \ NS_IMETHOD GC(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->GC(); } \ NS_IMETHOD ClearProfileData(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearProfileData(); } \ NS_IMETHOD InsertFilter(jsdIFilter *filter, jsdIFilter *after) { return !_to ? NS_ERROR_NULL_POINTER : _to->InsertFilter(filter, after); } \ NS_IMETHOD AppendFilter(jsdIFilter *filter) { return !_to ? NS_ERROR_NULL_POINTER : _to->AppendFilter(filter); } \ NS_IMETHOD RemoveFilter(jsdIFilter *filter) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveFilter(filter); } \ NS_IMETHOD SwapFilters(jsdIFilter *filter_a, jsdIFilter *filter_b) { return !_to ? NS_ERROR_NULL_POINTER : _to->SwapFilters(filter_a, filter_b); } \ NS_IMETHOD EnumerateFilters(jsdIFilterEnumerator *enumerator) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnumerateFilters(enumerator); } \ NS_IMETHOD RefreshFilters(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->RefreshFilters(); } \ NS_IMETHOD ClearFilters(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearFilters(); } \ NS_IMETHOD EnumerateContexts(jsdIContextEnumerator *enumerator) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnumerateContexts(enumerator); } \ NS_IMETHOD EnumerateScripts(jsdIScriptEnumerator *enumerator) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnumerateScripts(enumerator); } \ NS_IMETHOD ClearAllBreakpoints(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearAllBreakpoints(); } \ NS_IMETHOD WrapValue(jsdIValue **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->WrapValue(_retval); } \ NS_IMETHOD EnterNestedEventLoop(jsdINestCallback *callback, PRUint32 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnterNestedEventLoop(callback, _retval); } \ NS_IMETHOD ExitNestedEventLoop(PRUint32 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->ExitNestedEventLoop(_retval); } #if 0 /* Use the code below as a template for the implementation class for this interface. */ /* Header file */ class _MYCLASS_ : public jsdIDebuggerService { public: NS_DECL_ISUPPORTS NS_DECL_JSDIDEBUGGERSERVICE _MYCLASS_(); virtual ~_MYCLASS_(); /* additional members */ }; /* Implementation file */ NS_IMPL_ISUPPORTS1(_MYCLASS_, jsdIDebuggerService) _MYCLASS_::_MYCLASS_() { NS_INIT_ISUPPORTS(); /* member initializers and constructor code */ } _MYCLASS_::~_MYCLASS_() { /* destructor code */ } /* [noscript] readonly attribute JSDContext JSDContext; */ NS_IMETHODIMP _MYCLASS_::GetJSDContext(JSDContext * *aJSDContext) { return NS_ERROR_NOT_IMPLEMENTED; } /* attribute jsdIErrorHook errorHook; */ NS_IMETHODIMP _MYCLASS_::GetErrorHook(jsdIErrorHook * *aErrorHook) { return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP _MYCLASS_::SetErrorHook(jsdIErrorHook * aErrorHook) { return NS_ERROR_NOT_IMPLEMENTED; } /* attribute jsdIScriptHook scriptHook; */ NS_IMETHODIMP _MYCLASS_::GetScriptHook(jsdIScriptHook * *aScriptHook) { return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP _MYCLASS_::SetScriptHook(jsdIScriptHook * aScriptHook) { return NS_ERROR_NOT_IMPLEMENTED; } /* attribute jsdIExecutionHook breakpointHook; */ NS_IMETHODIMP _MYCLASS_::GetBreakpointHook(jsdIExecutionHook * *aBreakpointHook) { return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP _MYCLASS_::SetBreakpointHook(jsdIExecutionHook * aBreakpointHook) { return NS_ERROR_NOT_IMPLEMENTED; } /* attribute jsdIExecutionHook debuggerHook; */ NS_IMETHODIMP _MYCLASS_::GetDebuggerHook(jsdIExecutionHook * *aDebuggerHook) { return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP _MYCLASS_::SetDebuggerHook(jsdIExecutionHook * aDebuggerHook) { return NS_ERROR_NOT_IMPLEMENTED; } /* attribute jsdIExecutionHook debugHook; */ NS_IMETHODIMP _MYCLASS_::GetDebugHook(jsdIExecutionHook * *aDebugHook) { return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP _MYCLASS_::SetDebugHook(jsdIExecutionHook * aDebugHook) { return NS_ERROR_NOT_IMPLEMENTED; } /* attribute jsdIExecutionHook interruptHook; */ NS_IMETHODIMP _MYCLASS_::GetInterruptHook(jsdIExecutionHook * *aInterruptHook) { return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP _MYCLASS_::SetInterruptHook(jsdIExecutionHook * aInterruptHook) { return NS_ERROR_NOT_IMPLEMENTED; } /* attribute jsdIExecutionHook throwHook; */ NS_IMETHODIMP _MYCLASS_::GetThrowHook(jsdIExecutionHook * *aThrowHook) { return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP _MYCLASS_::SetThrowHook(jsdIExecutionHook * aThrowHook) { return NS_ERROR_NOT_IMPLEMENTED; } /* attribute jsdICallHook topLevelHook; */ NS_IMETHODIMP _MYCLASS_::GetTopLevelHook(jsdICallHook * *aTopLevelHook) { return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP _MYCLASS_::SetTopLevelHook(jsdICallHook * aTopLevelHook) { return NS_ERROR_NOT_IMPLEMENTED; } /* attribute jsdICallHook functionHook; */ NS_IMETHODIMP _MYCLASS_::GetFunctionHook(jsdICallHook * *aFunctionHook) { return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP _MYCLASS_::SetFunctionHook(jsdICallHook * aFunctionHook) { return NS_ERROR_NOT_IMPLEMENTED; } /* attribute unsigned long flags; */ NS_IMETHODIMP _MYCLASS_::GetFlags(PRUint32 *aFlags) { return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP _MYCLASS_::SetFlags(PRUint32 aFlags) { return NS_ERROR_NOT_IMPLEMENTED; } /* attribute boolean initAtStartup; */ NS_IMETHODIMP _MYCLASS_::GetInitAtStartup(PRBool *aInitAtStartup) { return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP _MYCLASS_::SetInitAtStartup(PRBool aInitAtStartup) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute boolean isOn; */ NS_IMETHODIMP _MYCLASS_::GetIsOn(PRBool *aIsOn) { return NS_ERROR_NOT_IMPLEMENTED; } /* void on (); */ NS_IMETHODIMP _MYCLASS_::On() { return NS_ERROR_NOT_IMPLEMENTED; } /* [noscript] void onForRuntime (in JSRuntime rt); */ NS_IMETHODIMP _MYCLASS_::OnForRuntime(JSRuntime * rt) { return NS_ERROR_NOT_IMPLEMENTED; } /* void off (); */ NS_IMETHODIMP _MYCLASS_::Off() { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute unsigned long pauseDepth; */ NS_IMETHODIMP _MYCLASS_::GetPauseDepth(PRUint32 *aPauseDepth) { return NS_ERROR_NOT_IMPLEMENTED; } /* unsigned long pause (); */ NS_IMETHODIMP _MYCLASS_::Pause(PRUint32 *_retval) { return NS_ERROR_NOT_IMPLEMENTED; } /* unsigned long unPause (); */ NS_IMETHODIMP _MYCLASS_::UnPause(PRUint32 *_retval) { return NS_ERROR_NOT_IMPLEMENTED; } /* void GC (); */ NS_IMETHODIMP _MYCLASS_::GC() { return NS_ERROR_NOT_IMPLEMENTED; } /* void clearProfileData (); */ NS_IMETHODIMP _MYCLASS_::ClearProfileData() { return NS_ERROR_NOT_IMPLEMENTED; } /* void insertFilter (in jsdIFilter filter, in jsdIFilter after); */ NS_IMETHODIMP _MYCLASS_::InsertFilter(jsdIFilter *filter, jsdIFilter *after) { return NS_ERROR_NOT_IMPLEMENTED; } /* void appendFilter (in jsdIFilter filter); */ NS_IMETHODIMP _MYCLASS_::AppendFilter(jsdIFilter *filter) { return NS_ERROR_NOT_IMPLEMENTED; } /* void removeFilter (in jsdIFilter filter); */ NS_IMETHODIMP _MYCLASS_::RemoveFilter(jsdIFilter *filter) { return NS_ERROR_NOT_IMPLEMENTED; } /* void swapFilters (in jsdIFilter filter_a, in jsdIFilter filter_b); */ NS_IMETHODIMP _MYCLASS_::SwapFilters(jsdIFilter *filter_a, jsdIFilter *filter_b) { return NS_ERROR_NOT_IMPLEMENTED; } /* void enumerateFilters (in jsdIFilterEnumerator enumerator); */ NS_IMETHODIMP _MYCLASS_::EnumerateFilters(jsdIFilterEnumerator *enumerator) { return NS_ERROR_NOT_IMPLEMENTED; } /* void refreshFilters (); */ NS_IMETHODIMP _MYCLASS_::RefreshFilters() { return NS_ERROR_NOT_IMPLEMENTED; } /* void clearFilters (); */ NS_IMETHODIMP _MYCLASS_::ClearFilters() { return NS_ERROR_NOT_IMPLEMENTED; } /* void enumerateContexts (in jsdIContextEnumerator enumerator); */ NS_IMETHODIMP _MYCLASS_::EnumerateContexts(jsdIContextEnumerator *enumerator) { return NS_ERROR_NOT_IMPLEMENTED; } /* void enumerateScripts (in jsdIScriptEnumerator enumerator); */ NS_IMETHODIMP _MYCLASS_::EnumerateScripts(jsdIScriptEnumerator *enumerator) { return NS_ERROR_NOT_IMPLEMENTED; } /* void clearAllBreakpoints (); */ NS_IMETHODIMP _MYCLASS_::ClearAllBreakpoints() { return NS_ERROR_NOT_IMPLEMENTED; } /* jsdIValue wrapValue (); */ NS_IMETHODIMP _MYCLASS_::WrapValue(jsdIValue **_retval) { return NS_ERROR_NOT_IMPLEMENTED; } /* unsigned long enterNestedEventLoop (in jsdINestCallback callback); */ NS_IMETHODIMP _MYCLASS_::EnterNestedEventLoop(jsdINestCallback *callback, PRUint32 *_retval) { return NS_ERROR_NOT_IMPLEMENTED; } /* unsigned long exitNestedEventLoop (); */ NS_IMETHODIMP _MYCLASS_::ExitNestedEventLoop(PRUint32 *_retval) { return NS_ERROR_NOT_IMPLEMENTED; } /* End of implementation class template. */ #endif /* starting interface: jsdIFilter */ #define JSDIFILTER_IID_STR "05593438-1b83-4517-864f-3cea3d37a266" #define JSDIFILTER_IID \ {0x05593438, 0x1b83, 0x4517, \ { 0x86, 0x4f, 0x3c, 0xea, 0x3d, 0x37, 0xa2, 0x66 }} class NS_NO_VTABLE jsdIFilter : public nsISupports { public: NS_DEFINE_STATIC_IID_ACCESSOR(JSDIFILTER_IID) /** * Object representing a pattern of global object and/or url the debugger should * ignore. The debugger service itself will not modify properties of these * objects. */ /** * These two bytes of the flags attribute are reserved for interpretation * by the jsdService implementation. You can do what you like with the * remaining flags. */ enum { FLAG_RESERVED_MASK = 255U }; /** * Filters without this flag set are ignored. */ enum { FLAG_ENABLED = 1U }; /** * Filters with this flag set are "pass" filters, they allow matching hooks * to continue. Filters without this flag block matching hooks. */ enum { FLAG_PASS = 2U }; /** * FLAG_* values from above, OR'd together. */ /* attribute unsigned long flags; */ NS_IMETHOD GetFlags(PRUint32 *aFlags) = 0; NS_IMETHOD SetFlags(PRUint32 aFlags) = 0; /** * An nsISupports version of the global object to be filtered. A null glob * matches all hooks. This attribute must be QI'able to the * (non-scriptable) nsIScriptGlobalObject interface. * * The jsdIService caches this value internally, to if it changes you must * swap the filter with itself using jsdIService::swapFilters. */ /* attribute nsISupports globalObject; */ NS_IMETHOD GetGlobalObject(nsISupports * *aGlobalObject) = 0; NS_IMETHOD SetGlobalObject(nsISupports * aGlobalObject) = 0; /** * String representing the url pattern to be filtered. Supports limited * glob matching, at the beginning and end of the pattern only. For example, * "chrome://venkman*" filters all urls that start with chrome/venkman, * "*.cgi" filters all cgi's, and "http://myserver/utils.js" filters only * the utils.js file on "myserver". A null urlPattern matches all urls. * * The jsdIService caches this value internally, to if it changes you must * swap the filter with itself using jsdIService::swapFilters. */ /* attribute string urlPattern; */ NS_IMETHOD GetUrlPattern(char * *aUrlPattern) = 0; NS_IMETHOD SetUrlPattern(const char * aUrlPattern) = 0; /** * Line number for the start of this filter. Line numbers are one based. * Assigning a 0 to this attribute will tell the debugger to ignore the * entire file. */ /* attribute unsigned long startLine; */ NS_IMETHOD GetStartLine(PRUint32 *aStartLine) = 0; NS_IMETHOD SetStartLine(PRUint32 aStartLine) = 0; /** * Line number for the end of this filter. Line numbers are one based. * Assigning a 0 to this attribute will tell the debugger to ignore from * |startLine| to the end of the file. */ /* attribute unsigned long endLine; */ NS_IMETHOD GetEndLine(PRUint32 *aEndLine) = 0; NS_IMETHOD SetEndLine(PRUint32 aEndLine) = 0; }; /* Use this macro when declaring classes that implement this interface. */ #define NS_DECL_JSDIFILTER \ NS_IMETHOD GetFlags(PRUint32 *aFlags); \ NS_IMETHOD SetFlags(PRUint32 aFlags); \ NS_IMETHOD GetGlobalObject(nsISupports * *aGlobalObject); \ NS_IMETHOD SetGlobalObject(nsISupports * aGlobalObject); \ NS_IMETHOD GetUrlPattern(char * *aUrlPattern); \ NS_IMETHOD SetUrlPattern(const char * aUrlPattern); \ NS_IMETHOD GetStartLine(PRUint32 *aStartLine); \ NS_IMETHOD SetStartLine(PRUint32 aStartLine); \ NS_IMETHOD GetEndLine(PRUint32 *aEndLine); \ NS_IMETHOD SetEndLine(PRUint32 aEndLine); /* Use this macro to declare functions that forward the behavior of this interface to another object. */ #define NS_FORWARD_JSDIFILTER(_to) \ NS_IMETHOD GetFlags(PRUint32 *aFlags) { return _to GetFlags(aFlags); } \ NS_IMETHOD SetFlags(PRUint32 aFlags) { return _to SetFlags(aFlags); } \ NS_IMETHOD GetGlobalObject(nsISupports * *aGlobalObject) { return _to GetGlobalObject(aGlobalObject); } \ NS_IMETHOD SetGlobalObject(nsISupports * aGlobalObject) { return _to SetGlobalObject(aGlobalObject); } \ NS_IMETHOD GetUrlPattern(char * *aUrlPattern) { return _to GetUrlPattern(aUrlPattern); } \ NS_IMETHOD SetUrlPattern(const char * aUrlPattern) { return _to SetUrlPattern(aUrlPattern); } \ NS_IMETHOD GetStartLine(PRUint32 *aStartLine) { return _to GetStartLine(aStartLine); } \ NS_IMETHOD SetStartLine(PRUint32 aStartLine) { return _to SetStartLine(aStartLine); } \ NS_IMETHOD GetEndLine(PRUint32 *aEndLine) { return _to GetEndLine(aEndLine); } \ NS_IMETHOD SetEndLine(PRUint32 aEndLine) { return _to SetEndLine(aEndLine); } /* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */ #define NS_FORWARD_SAFE_JSDIFILTER(_to) \ NS_IMETHOD GetFlags(PRUint32 *aFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFlags(aFlags); } \ NS_IMETHOD SetFlags(PRUint32 aFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFlags(aFlags); } \ NS_IMETHOD GetGlobalObject(nsISupports * *aGlobalObject) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGlobalObject(aGlobalObject); } \ NS_IMETHOD SetGlobalObject(nsISupports * aGlobalObject) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetGlobalObject(aGlobalObject); } \ NS_IMETHOD GetUrlPattern(char * *aUrlPattern) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUrlPattern(aUrlPattern); } \ NS_IMETHOD SetUrlPattern(const char * aUrlPattern) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetUrlPattern(aUrlPattern); } \ NS_IMETHOD GetStartLine(PRUint32 *aStartLine) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStartLine(aStartLine); } \ NS_IMETHOD SetStartLine(PRUint32 aStartLine) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetStartLine(aStartLine); } \ NS_IMETHOD GetEndLine(PRUint32 *aEndLine) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEndLine(aEndLine); } \ NS_IMETHOD SetEndLine(PRUint32 aEndLine) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEndLine(aEndLine); } #if 0 /* Use the code below as a template for the implementation class for this interface. */ /* Header file */ class _MYCLASS_ : public jsdIFilter { public: NS_DECL_ISUPPORTS NS_DECL_JSDIFILTER _MYCLASS_(); virtual ~_MYCLASS_(); /* additional members */ }; /* Implementation file */ NS_IMPL_ISUPPORTS1(_MYCLASS_, jsdIFilter) _MYCLASS_::_MYCLASS_() { NS_INIT_ISUPPORTS(); /* member initializers and constructor code */ } _MYCLASS_::~_MYCLASS_() { /* destructor code */ } /* attribute unsigned long flags; */ NS_IMETHODIMP _MYCLASS_::GetFlags(PRUint32 *aFlags) { return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP _MYCLASS_::SetFlags(PRUint32 aFlags) { return NS_ERROR_NOT_IMPLEMENTED; } /* attribute nsISupports globalObject; */ NS_IMETHODIMP _MYCLASS_::GetGlobalObject(nsISupports * *aGlobalObject) { return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP _MYCLASS_::SetGlobalObject(nsISupports * aGlobalObject) { return NS_ERROR_NOT_IMPLEMENTED; } /* attribute string urlPattern; */ NS_IMETHODIMP _MYCLASS_::GetUrlPattern(char * *aUrlPattern) { return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP _MYCLASS_::SetUrlPattern(const char * aUrlPattern) { return NS_ERROR_NOT_IMPLEMENTED; } /* attribute unsigned long startLine; */ NS_IMETHODIMP _MYCLASS_::GetStartLine(PRUint32 *aStartLine) { return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP _MYCLASS_::SetStartLine(PRUint32 aStartLine) { return NS_ERROR_NOT_IMPLEMENTED; } /* attribute unsigned long endLine; */ NS_IMETHODIMP _MYCLASS_::GetEndLine(PRUint32 *aEndLine) { return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP _MYCLASS_::SetEndLine(PRUint32 aEndLine) { return NS_ERROR_NOT_IMPLEMENTED; } /* End of implementation class template. */ #endif /* starting interface: jsdINestCallback */ #define JSDINESTCALLBACK_IID_STR "88bea60f-9b5d-4b39-b08b-1c3a278782c6" #define JSDINESTCALLBACK_IID \ {0x88bea60f, 0x9b5d, 0x4b39, \ { 0xb0, 0x8b, 0x1c, 0x3a, 0x27, 0x87, 0x82, 0xc6 }} class NS_NO_VTABLE jsdINestCallback : public nsISupports { public: NS_DEFINE_STATIC_IID_ACCESSOR(JSDINESTCALLBACK_IID) /** * Pass an instance of one of these to jsdIDebuggerService::enterNestedEventLoop. */ /** * This method will be called after pre-nesting work has completed, such * as pushing the js context and network event queue, but before the new * event loop starts. */ /* void onNest (); */ NS_IMETHOD OnNest(void) = 0; }; /* Use this macro when declaring classes that implement this interface. */ #define NS_DECL_JSDINESTCALLBACK \ NS_IMETHOD OnNest(void); /* Use this macro to declare functions that forward the behavior of this interface to another object. */ #define NS_FORWARD_JSDINESTCALLBACK(_to) \ NS_IMETHOD OnNest(void) { return _to OnNest(); } /* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */ #define NS_FORWARD_SAFE_JSDINESTCALLBACK(_to) \ NS_IMETHOD OnNest(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnNest(); } #if 0 /* Use the code below as a template for the implementation class for this interface. */ /* Header file */ class _MYCLASS_ : public jsdINestCallback { public: NS_DECL_ISUPPORTS NS_DECL_JSDINESTCALLBACK _MYCLASS_(); virtual ~_MYCLASS_(); /* additional members */ }; /* Implementation file */ NS_IMPL_ISUPPORTS1(_MYCLASS_, jsdINestCallback) _MYCLASS_::_MYCLASS_() { NS_INIT_ISUPPORTS(); /* member initializers and constructor code */ } _MYCLASS_::~_MYCLASS_() { /* destructor code */ } /* void onNest (); */ NS_IMETHODIMP _MYCLASS_::OnNest() { return NS_ERROR_NOT_IMPLEMENTED; } /* End of implementation class template. */ #endif /* starting interface: jsdIFilterEnumerator */ #define JSDIFILTERENUMERATOR_IID_STR "54382875-ed12-4f90-9a63-1f0498d0a3f2" #define JSDIFILTERENUMERATOR_IID \ {0x54382875, 0xed12, 0x4f90, \ { 0x9a, 0x63, 0x1f, 0x04, 0x98, 0xd0, 0xa3, 0xf2 }} class NS_NO_VTABLE jsdIFilterEnumerator : public nsISupports { public: NS_DEFINE_STATIC_IID_ACCESSOR(JSDIFILTERENUMERATOR_IID) /** * Pass an instance of one of these to jsdIDebuggerService::enumerateFilters. */ /** * The enumerateFilter method will be called once for every filter the * debugger knows about. */ /* void enumerateFilter (in jsdIFilter filter); */ NS_IMETHOD EnumerateFilter(jsdIFilter *filter) = 0; }; /* Use this macro when declaring classes that implement this interface. */ #define NS_DECL_JSDIFILTERENUMERATOR \ NS_IMETHOD EnumerateFilter(jsdIFilter *filter); /* Use this macro to declare functions that forward the behavior of this interface to another object. */ #define NS_FORWARD_JSDIFILTERENUMERATOR(_to) \ NS_IMETHOD EnumerateFilter(jsdIFilter *filter) { return _to EnumerateFilter(filter); } /* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */ #define NS_FORWARD_SAFE_JSDIFILTERENUMERATOR(_to) \ NS_IMETHOD EnumerateFilter(jsdIFilter *filter) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnumerateFilter(filter); } #if 0 /* Use the code below as a template for the implementation class for this interface. */ /* Header file */ class _MYCLASS_ : public jsdIFilterEnumerator { public: NS_DECL_ISUPPORTS NS_DECL_JSDIFILTERENUMERATOR _MYCLASS_(); virtual ~_MYCLASS_(); /* additional members */ }; /* Implementation file */ NS_IMPL_ISUPPORTS1(_MYCLASS_, jsdIFilterEnumerator) _MYCLASS_::_MYCLASS_() { NS_INIT_ISUPPORTS(); /* member initializers and constructor code */ } _MYCLASS_::~_MYCLASS_() { /* destructor code */ } /* void enumerateFilter (in jsdIFilter filter); */ NS_IMETHODIMP _MYCLASS_::EnumerateFilter(jsdIFilter *filter) { return NS_ERROR_NOT_IMPLEMENTED; } /* End of implementation class template. */ #endif /* starting interface: jsdIScriptEnumerator */ #define JSDISCRIPTENUMERATOR_IID_STR "4c2f706e-1dd2-11b2-9ebc-85a06e948830" #define JSDISCRIPTENUMERATOR_IID \ {0x4c2f706e, 0x1dd2, 0x11b2, \ { 0x9e, 0xbc, 0x85, 0xa0, 0x6e, 0x94, 0x88, 0x30 }} class NS_NO_VTABLE jsdIScriptEnumerator : public nsISupports { public: NS_DEFINE_STATIC_IID_ACCESSOR(JSDISCRIPTENUMERATOR_IID) /** * Pass an instance of one of these to jsdIDebuggerService::enumerateScripts. */ /** * The enumerateScript method will be called once for every script the * debugger knows about. */ /* void enumerateScript (in jsdIScript script); */ NS_IMETHOD EnumerateScript(jsdIScript *script) = 0; }; /* Use this macro when declaring classes that implement this interface. */ #define NS_DECL_JSDISCRIPTENUMERATOR \ NS_IMETHOD EnumerateScript(jsdIScript *script); /* Use this macro to declare functions that forward the behavior of this interface to another object. */ #define NS_FORWARD_JSDISCRIPTENUMERATOR(_to) \ NS_IMETHOD EnumerateScript(jsdIScript *script) { return _to EnumerateScript(script); } /* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */ #define NS_FORWARD_SAFE_JSDISCRIPTENUMERATOR(_to) \ NS_IMETHOD EnumerateScript(jsdIScript *script) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnumerateScript(script); } #if 0 /* Use the code below as a template for the implementation class for this interface. */ /* Header file */ class _MYCLASS_ : public jsdIScriptEnumerator { public: NS_DECL_ISUPPORTS NS_DECL_JSDISCRIPTENUMERATOR _MYCLASS_(); virtual ~_MYCLASS_(); /* additional members */ }; /* Implementation file */ NS_IMPL_ISUPPORTS1(_MYCLASS_, jsdIScriptEnumerator) _MYCLASS_::_MYCLASS_() { NS_INIT_ISUPPORTS(); /* member initializers and constructor code */ } _MYCLASS_::~_MYCLASS_() { /* destructor code */ } /* void enumerateScript (in jsdIScript script); */ NS_IMETHODIMP _MYCLASS_::EnumerateScript(jsdIScript *script) { return NS_ERROR_NOT_IMPLEMENTED; } /* End of implementation class template. */ #endif /* starting interface: jsdIContextEnumerator */ #define JSDICONTEXTENUMERATOR_IID_STR "912e342a-1dd2-11b2-b09f-cf3af38c15f0" #define JSDICONTEXTENUMERATOR_IID \ {0x912e342a, 0x1dd2, 0x11b2, \ { 0xb0, 0x9f, 0xcf, 0x3a, 0xf3, 0x8c, 0x15, 0xf0 }} class NS_NO_VTABLE jsdIContextEnumerator : public nsISupports { public: NS_DEFINE_STATIC_IID_ACCESSOR(JSDICONTEXTENUMERATOR_IID) /** * Pass an instance of one of these to jsdIDebuggerService::enumerateContexts. */ /** * The enumerateContext method will be called once for every context * currently in use. */ /* void enumerateContext (in jsdIContext executionContext); */ NS_IMETHOD EnumerateContext(jsdIContext *executionContext) = 0; }; /* Use this macro when declaring classes that implement this interface. */ #define NS_DECL_JSDICONTEXTENUMERATOR \ NS_IMETHOD EnumerateContext(jsdIContext *executionContext); /* Use this macro to declare functions that forward the behavior of this interface to another object. */ #define NS_FORWARD_JSDICONTEXTENUMERATOR(_to) \ NS_IMETHOD EnumerateContext(jsdIContext *executionContext) { return _to EnumerateContext(executionContext); } /* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */ #define NS_FORWARD_SAFE_JSDICONTEXTENUMERATOR(_to) \ NS_IMETHOD EnumerateContext(jsdIContext *executionContext) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnumerateContext(executionContext); } #if 0 /* Use the code below as a template for the implementation class for this interface. */ /* Header file */ class _MYCLASS_ : public jsdIContextEnumerator { public: NS_DECL_ISUPPORTS NS_DECL_JSDICONTEXTENUMERATOR _MYCLASS_(); virtual ~_MYCLASS_(); /* additional members */ }; /* Implementation file */ NS_IMPL_ISUPPORTS1(_MYCLASS_, jsdIContextEnumerator) _MYCLASS_::_MYCLASS_() { NS_INIT_ISUPPORTS(); /* member initializers and constructor code */ } _MYCLASS_::~_MYCLASS_() { /* destructor code */ } /* void enumerateContext (in jsdIContext executionContext); */ NS_IMETHODIMP _MYCLASS_::EnumerateContext(jsdIContext *executionContext) { return NS_ERROR_NOT_IMPLEMENTED; } /* End of implementation class template. */ #endif /* starting interface: jsdIScriptHook */ #define JSDISCRIPTHOOK_IID_STR "ae89a7e2-1dd1-11b2-8c2f-af82086291a5" #define JSDISCRIPTHOOK_IID \ {0xae89a7e2, 0x1dd1, 0x11b2, \ { 0x8c, 0x2f, 0xaf, 0x82, 0x08, 0x62, 0x91, 0xa5 }} class NS_NO_VTABLE jsdIScriptHook : public nsISupports { public: NS_DEFINE_STATIC_IID_ACCESSOR(JSDISCRIPTHOOK_IID) /** * Set jsdIDebuggerService::scriptHook to an instance of one of these. */ /** * Called when scripts are created. */ /* void onScriptCreated (in jsdIScript script); */ NS_IMETHOD OnScriptCreated(jsdIScript *script) = 0; /** * Called when the JavaScript engine destroys a script. The jsdIScript * object passed in will already be invalidated. */ /* void onScriptDestroyed (in jsdIScript script); */ NS_IMETHOD OnScriptDestroyed(jsdIScript *script) = 0; }; /* Use this macro when declaring classes that implement this interface. */ #define NS_DECL_JSDISCRIPTHOOK \ NS_IMETHOD OnScriptCreated(jsdIScript *script); \ NS_IMETHOD OnScriptDestroyed(jsdIScript *script); /* Use this macro to declare functions that forward the behavior of this interface to another object. */ #define NS_FORWARD_JSDISCRIPTHOOK(_to) \ NS_IMETHOD OnScriptCreated(jsdIScript *script) { return _to OnScriptCreated(script); } \ NS_IMETHOD OnScriptDestroyed(jsdIScript *script) { return _to OnScriptDestroyed(script); } /* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */ #define NS_FORWARD_SAFE_JSDISCRIPTHOOK(_to) \ NS_IMETHOD OnScriptCreated(jsdIScript *script) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnScriptCreated(script); } \ NS_IMETHOD OnScriptDestroyed(jsdIScript *script) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnScriptDestroyed(script); } #if 0 /* Use the code below as a template for the implementation class for this interface. */ /* Header file */ class _MYCLASS_ : public jsdIScriptHook { public: NS_DECL_ISUPPORTS NS_DECL_JSDISCRIPTHOOK _MYCLASS_(); virtual ~_MYCLASS_(); /* additional members */ }; /* Implementation file */ NS_IMPL_ISUPPORTS1(_MYCLASS_, jsdIScriptHook) _MYCLASS_::_MYCLASS_() { NS_INIT_ISUPPORTS(); /* member initializers and constructor code */ } _MYCLASS_::~_MYCLASS_() { /* destructor code */ } /* void onScriptCreated (in jsdIScript script); */ NS_IMETHODIMP _MYCLASS_::OnScriptCreated(jsdIScript *script) { return NS_ERROR_NOT_IMPLEMENTED; } /* void onScriptDestroyed (in jsdIScript script); */ NS_IMETHODIMP _MYCLASS_::OnScriptDestroyed(jsdIScript *script) { return NS_ERROR_NOT_IMPLEMENTED; } /* End of implementation class template. */ #endif /* starting interface: jsdICallHook */ #define JSDICALLHOOK_IID_STR "f102caf6-1dd1-11b2-bd43-c1dbacb95a98" #define JSDICALLHOOK_IID \ {0xf102caf6, 0x1dd1, 0x11b2, \ { 0xbd, 0x43, 0xc1, 0xdb, 0xac, 0xb9, 0x5a, 0x98 }} class NS_NO_VTABLE jsdICallHook : public nsISupports { public: NS_DEFINE_STATIC_IID_ACCESSOR(JSDICALLHOOK_IID) /** * Hook instances of this interface up to the * jsdIDebuggerService::functionHook and toplevelHook properties. */ /** * TYPE_* values must be kept in sync with the JSD_HOOK_* #defines * in jsdebug.h. */ /** * Toplevel script is starting. */ enum { TYPE_TOPLEVEL_START = 0U }; /** * Toplevel script has completed. */ enum { TYPE_TOPLEVEL_END = 1U }; /** * Function is being called. */ enum { TYPE_FUNCTION_CALL = 2U }; /** * Function is returning. */ enum { TYPE_FUNCTION_RETURN = 3U }; /** * Called before the JavaScript engine executes a top level script or calls * a function. */ /* void onCall (in jsdIStackFrame frame, in unsigned long type); */ NS_IMETHOD OnCall(jsdIStackFrame *frame, PRUint32 type) = 0; }; /* Use this macro when declaring classes that implement this interface. */ #define NS_DECL_JSDICALLHOOK \ NS_IMETHOD OnCall(jsdIStackFrame *frame, PRUint32 type); /* Use this macro to declare functions that forward the behavior of this interface to another object. */ #define NS_FORWARD_JSDICALLHOOK(_to) \ NS_IMETHOD OnCall(jsdIStackFrame *frame, PRUint32 type) { return _to OnCall(frame, type); } /* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */ #define NS_FORWARD_SAFE_JSDICALLHOOK(_to) \ NS_IMETHOD OnCall(jsdIStackFrame *frame, PRUint32 type) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnCall(frame, type); } #if 0 /* Use the code below as a template for the implementation class for this interface. */ /* Header file */ class _MYCLASS_ : public jsdICallHook { public: NS_DECL_ISUPPORTS NS_DECL_JSDICALLHOOK _MYCLASS_(); virtual ~_MYCLASS_(); /* additional members */ }; /* Implementation file */ NS_IMPL_ISUPPORTS1(_MYCLASS_, jsdICallHook) _MYCLASS_::_MYCLASS_() { NS_INIT_ISUPPORTS(); /* member initializers and constructor code */ } _MYCLASS_::~_MYCLASS_() { /* destructor code */ } /* void onCall (in jsdIStackFrame frame, in unsigned long type); */ NS_IMETHODIMP _MYCLASS_::OnCall(jsdIStackFrame *frame, PRUint32 type) { return NS_ERROR_NOT_IMPLEMENTED; } /* End of implementation class template. */ #endif /* starting interface: jsdIErrorHook */ #define JSDIERRORHOOK_IID_STR "b7dd3c1c-1dd1-11b2-83eb-8a857d199e0f" #define JSDIERRORHOOK_IID \ {0xb7dd3c1c, 0x1dd1, 0x11b2, \ { 0x83, 0xeb, 0x8a, 0x85, 0x7d, 0x19, 0x9e, 0x0f }} class NS_NO_VTABLE jsdIErrorHook : public nsISupports { public: NS_DEFINE_STATIC_IID_ACCESSOR(JSDIERRORHOOK_IID) /** * REPORT_* values must be kept in sync with JSREPORT_* #defines in * jsapi.h */ /** * Report is an error. */ enum { REPORT_ERROR = 0U }; /** * Report is only a warning. */ enum { REPORT_WARNING = 1U }; /** * Report represents an uncaught exception. */ enum { REPORT_EXCEPTION = 2U }; /** * Report is due to strict mode. */ enum { REPORT_STRICT = 4U }; /** * Called when the JavaScript engine encounters an error. Return |true| * to pass the error along, |false| to invoke the debugHook. */ /* boolean onError (in string message, in string fileName, in unsigned long line, in unsigned long pos, in unsigned long flags, in unsigned long errnum, in jsdIValue exc); */ NS_IMETHOD OnError(const char *message, const char *fileName, PRUint32 line, PRUint32 pos, PRUint32 flags, PRUint32 errnum, jsdIValue *exc, PRBool *_retval) = 0; }; /* Use this macro when declaring classes that implement this interface. */ #define NS_DECL_JSDIERRORHOOK \ NS_IMETHOD OnError(const char *message, const char *fileName, PRUint32 line, PRUint32 pos, PRUint32 flags, PRUint32 errnum, jsdIValue *exc, PRBool *_retval); /* Use this macro to declare functions that forward the behavior of this interface to another object. */ #define NS_FORWARD_JSDIERRORHOOK(_to) \ NS_IMETHOD OnError(const char *message, const char *fileName, PRUint32 line, PRUint32 pos, PRUint32 flags, PRUint32 errnum, jsdIValue *exc, PRBool *_retval) { return _to OnError(message, fileName, line, pos, flags, errnum, exc, _retval); } /* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */ #define NS_FORWARD_SAFE_JSDIERRORHOOK(_to) \ NS_IMETHOD OnError(const char *message, const char *fileName, PRUint32 line, PRUint32 pos, PRUint32 flags, PRUint32 errnum, jsdIValue *exc, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnError(message, fileName, line, pos, flags, errnum, exc, _retval); } #if 0 /* Use the code below as a template for the implementation class for this interface. */ /* Header file */ class _MYCLASS_ : public jsdIErrorHook { public: NS_DECL_ISUPPORTS NS_DECL_JSDIERRORHOOK _MYCLASS_(); virtual ~_MYCLASS_(); /* additional members */ }; /* Implementation file */ NS_IMPL_ISUPPORTS1(_MYCLASS_, jsdIErrorHook) _MYCLASS_::_MYCLASS_() { NS_INIT_ISUPPORTS(); /* member initializers and constructor code */ } _MYCLASS_::~_MYCLASS_() { /* destructor code */ } /* boolean onError (in string message, in string fileName, in unsigned long line, in unsigned long pos, in unsigned long flags, in unsigned long errnum, in jsdIValue exc); */ NS_IMETHODIMP _MYCLASS_::OnError(const char *message, const char *fileName, PRUint32 line, PRUint32 pos, PRUint32 flags, PRUint32 errnum, jsdIValue *exc, PRBool *_retval) { return NS_ERROR_NOT_IMPLEMENTED; } /* End of implementation class template. */ #endif /* starting interface: jsdIExecutionHook */ #define JSDIEXECUTIONHOOK_IID_STR "9a7b6ad0-1dd1-11b2-a789-fcfae96356a2" #define JSDIEXECUTIONHOOK_IID \ {0x9a7b6ad0, 0x1dd1, 0x11b2, \ { 0xa7, 0x89, 0xfc, 0xfa, 0xe9, 0x63, 0x56, 0xa2 }} class NS_NO_VTABLE jsdIExecutionHook : public nsISupports { public: NS_DEFINE_STATIC_IID_ACCESSOR(JSDIEXECUTIONHOOK_IID) /** * Hook instances of this interface up to the * jsdIDebuggerService::breakpointHook, debuggerHook, errorHook, interruptHook, * and throwHook properties. */ /** * TYPE_* values must be kept in sync with JSD_HOOK_* #defines in jsdebug.h. */ /** * Execution stopped because we're in single step mode. */ enum { TYPE_INTERRUPTED = 0U }; /** * Execution stopped by a trap instruction (i.e. breakoint.) */ enum { TYPE_BREAKPOINT = 1U }; /** * Error handler returned an "invoke debugger" value. */ enum { TYPE_DEBUG_REQUESTED = 2U }; /** * Debugger keyword encountered. */ enum { TYPE_DEBUGGER_KEYWORD = 3U }; /** * Exception was thrown. */ enum { TYPE_THROW = 4U }; /** * RETURN_* values must be kept in sync with JSD_HOOK_RETURN_* #defines in * jsdebug.h. */ /** * Indicates unrecoverable error processing the hook. This will cause * the script being executed to be aborted without raising a JavaScript * exception. */ enum { RETURN_HOOK_ERROR = 0U }; /** * Continue processing normally. This is the "do nothing special" return * value for all hook types *except* TYPE_THROW. Returning RETURN_CONTINUE * from TYPE_THROW cause the exception to be ignored. Return * RETURN_CONTINUE_THROW to continue exception processing from TYPE_THROW * hooks. */ enum { RETURN_CONTINUE = 1U }; /** * Same effect as RETURN_HOOK_ERROR. */ enum { RETURN_ABORT = 2U }; /** * Return the value of the |val| parameter. */ enum { RETURN_RET_WITH_VAL = 3U }; /** * Throw the value of the |val| parameter. */ enum { RETURN_THROW_WITH_VAL = 4U }; /** * Continue the current throw. */ enum { RETURN_CONTINUE_THROW = 5U }; /** * @param frame A jsdIStackFrame object representing the bottom stack frame. * @param type One of the jsdIExecutionHook::TYPE_ constants. * @param val in - Current exception (if any) when this method is called. * out - If you return RETURN_THROW_WITH_VAL, value to be * thrown. * If you return RETURN_RET_WITH_VAL, value to return. * All other return values, not significant. * @retval One of the jsdIExecutionHook::RETURN_* constants. */ /* unsigned long onExecute (in jsdIStackFrame frame, in unsigned long type, inout jsdIValue val); */ NS_IMETHOD OnExecute(jsdIStackFrame *frame, PRUint32 type, jsdIValue **val, PRUint32 *_retval) = 0; }; /* Use this macro when declaring classes that implement this interface. */ #define NS_DECL_JSDIEXECUTIONHOOK \ NS_IMETHOD OnExecute(jsdIStackFrame *frame, PRUint32 type, jsdIValue **val, PRUint32 *_retval); /* Use this macro to declare functions that forward the behavior of this interface to another object. */ #define NS_FORWARD_JSDIEXECUTIONHOOK(_to) \ NS_IMETHOD OnExecute(jsdIStackFrame *frame, PRUint32 type, jsdIValue **val, PRUint32 *_retval) { return _to OnExecute(frame, type, val, _retval); } /* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */ #define NS_FORWARD_SAFE_JSDIEXECUTIONHOOK(_to) \ NS_IMETHOD OnExecute(jsdIStackFrame *frame, PRUint32 type, jsdIValue **val, PRUint32 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnExecute(frame, type, val, _retval); } #if 0 /* Use the code below as a template for the implementation class for this interface. */ /* Header file */ class _MYCLASS_ : public jsdIExecutionHook { public: NS_DECL_ISUPPORTS NS_DECL_JSDIEXECUTIONHOOK _MYCLASS_(); virtual ~_MYCLASS_(); /* additional members */ }; /* Implementation file */ NS_IMPL_ISUPPORTS1(_MYCLASS_, jsdIExecutionHook) _MYCLASS_::_MYCLASS_() { NS_INIT_ISUPPORTS(); /* member initializers and constructor code */ } _MYCLASS_::~_MYCLASS_() { /* destructor code */ } /* unsigned long onExecute (in jsdIStackFrame frame, in unsigned long type, inout jsdIValue val); */ NS_IMETHODIMP _MYCLASS_::OnExecute(jsdIStackFrame *frame, PRUint32 type, jsdIValue **val, PRUint32 *_retval) { return NS_ERROR_NOT_IMPLEMENTED; } /* End of implementation class template. */ #endif /* starting interface: jsdIEphemeral */ #define JSDIEPHEMERAL_IID_STR "46f1e23e-1dd2-11b2-9ceb-8285f2e95e69" #define JSDIEPHEMERAL_IID \ {0x46f1e23e, 0x1dd2, 0x11b2, \ { 0x9c, 0xeb, 0x82, 0x85, 0xf2, 0xe9, 0x5e, 0x69 }} class NS_NO_VTABLE jsdIEphemeral : public nsISupports { public: NS_DEFINE_STATIC_IID_ACCESSOR(JSDIEPHEMERAL_IID) /** * Objects which inherit this interface may go away, with (jsdIScript) or * without (all others) notification. These objects are generally wrappers * around JSD structures that go away when you call jsdService::Off(). */ /** * |true| if this object is still valid. If not, many or all of the methods * and/or properties of the inheritor may no longer be callable. */ /* readonly attribute boolean isValid; */ NS_IMETHOD GetIsValid(PRBool *aIsValid) = 0; /** * Mark this instance as invalid. */ /* [noscript] void invalidate (); */ NS_IMETHOD Invalidate(void) = 0; }; /* Use this macro when declaring classes that implement this interface. */ #define NS_DECL_JSDIEPHEMERAL \ NS_IMETHOD GetIsValid(PRBool *aIsValid); \ NS_IMETHOD Invalidate(void); /* Use this macro to declare functions that forward the behavior of this interface to another object. */ #define NS_FORWARD_JSDIEPHEMERAL(_to) \ NS_IMETHOD GetIsValid(PRBool *aIsValid) { return _to GetIsValid(aIsValid); } \ NS_IMETHOD Invalidate(void) { return _to Invalidate(); } /* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */ #define NS_FORWARD_SAFE_JSDIEPHEMERAL(_to) \ NS_IMETHOD GetIsValid(PRBool *aIsValid) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsValid(aIsValid); } \ NS_IMETHOD Invalidate(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Invalidate(); } #if 0 /* Use the code below as a template for the implementation class for this interface. */ /* Header file */ class _MYCLASS_ : public jsdIEphemeral { public: NS_DECL_ISUPPORTS NS_DECL_JSDIEPHEMERAL _MYCLASS_(); virtual ~_MYCLASS_(); /* additional members */ }; /* Implementation file */ NS_IMPL_ISUPPORTS1(_MYCLASS_, jsdIEphemeral) _MYCLASS_::_MYCLASS_() { NS_INIT_ISUPPORTS(); /* member initializers and constructor code */ } _MYCLASS_::~_MYCLASS_() { /* destructor code */ } /* readonly attribute boolean isValid; */ NS_IMETHODIMP _MYCLASS_::GetIsValid(PRBool *aIsValid) { return NS_ERROR_NOT_IMPLEMENTED; } /* [noscript] void invalidate (); */ NS_IMETHODIMP _MYCLASS_::Invalidate() { return NS_ERROR_NOT_IMPLEMENTED; } /* End of implementation class template. */ #endif /* starting interface: jsdIContext */ #define JSDICONTEXT_IID_STR "a2dd25a4-1dd1-11b2-bda6-ed525acd4c35" #define JSDICONTEXT_IID \ {0xa2dd25a4, 0x1dd1, 0x11b2, \ { 0xbd, 0xa6, 0xed, 0x52, 0x5a, 0xcd, 0x4c, 0x35 }} class NS_NO_VTABLE jsdIContext : public jsdIEphemeral { public: NS_DEFINE_STATIC_IID_ACCESSOR(JSDICONTEXT_IID) /** * Context object. Only context's which are also nsISupports objects can be * reflected by this interface. */ /* [noscript] readonly attribute JSContext JSContext; */ NS_IMETHOD GetJSContext(JSContext * *aJSContext) = 0; /** * OPT_* values must be kept in sync with JSOPTION_* #defines in jsapi.h. */ /** * Strict mode is on. */ enum { OPT_STRICT = 1 }; /** * Warnings reported as errors. */ enum { OPT_WERR = 2 }; /** * Makes eval() use the last object on its 'obj' param's scope chain as the * ECMA 'variables object'. */ enum { OPT_VAROBJFIX = 4 }; /** * Private data for this object is an nsISupports object. Attempting to * alter this bit will result in an NS_ERROR_ILLEGAL_VALUE. */ enum { OPT_ISUPPORTS = 8 }; /** * OPT_* values above, OR'd together. */ /* attribute unsigned long options; */ NS_IMETHOD GetOptions(PRUint32 *aOptions) = 0; NS_IMETHOD SetOptions(PRUint32 aOptions) = 0; /** * Last version set on this context. * Scripts typically select this with the "language" attribute. * See the VERSION_* consts on jsdIDebuggerService. */ /* attribute long version; */ NS_IMETHOD GetVersion(PRInt32 *aVersion) = 0; NS_IMETHOD SetVersion(PRInt32 aVersion) = 0; /** * Unique tag among all valid jsdIContext objects, useful as a hash key. */ /* readonly attribute unsigned long tag; */ NS_IMETHOD GetTag(PRUint32 *aTag) = 0; /** * Private data for this context, if it is an nsISupports, |null| otherwise. */ /* readonly attribute nsISupports privateData; */ NS_IMETHOD GetPrivateData(nsISupports * *aPrivateData) = 0; /** * Retrieve the underlying context wrapped by this jsdIContext. */ /* readonly attribute nsISupports wrappedContext; */ NS_IMETHOD GetWrappedContext(nsISupports * *aWrappedContext) = 0; /** * Top of the scope chain for this context. */ /* readonly attribute jsdIValue globalObject; */ NS_IMETHOD GetGlobalObject(jsdIValue * *aGlobalObject) = 0; /** * |true| if this context should be allowed to run scripts, |false| * otherwise. This attribute is only valid for contexts which implement * nsIScriptContext. Setting or getting this attribute on any other * context will throw a NS_ERROR_NO_INTERFACE exception. */ /* attribute boolean scriptsEnabled; */ NS_IMETHOD GetScriptsEnabled(PRBool *aScriptsEnabled) = 0; NS_IMETHOD SetScriptsEnabled(PRBool aScriptsEnabled) = 0; }; /* Use this macro when declaring classes that implement this interface. */ #define NS_DECL_JSDICONTEXT \ NS_IMETHOD GetJSContext(JSContext * *aJSContext); \ NS_IMETHOD GetOptions(PRUint32 *aOptions); \ NS_IMETHOD SetOptions(PRUint32 aOptions); \ NS_IMETHOD GetVersion(PRInt32 *aVersion); \ NS_IMETHOD SetVersion(PRInt32 aVersion); \ NS_IMETHOD GetTag(PRUint32 *aTag); \ NS_IMETHOD GetPrivateData(nsISupports * *aPrivateData); \ NS_IMETHOD GetWrappedContext(nsISupports * *aWrappedContext); \ NS_IMETHOD GetGlobalObject(jsdIValue * *aGlobalObject); \ NS_IMETHOD GetScriptsEnabled(PRBool *aScriptsEnabled); \ NS_IMETHOD SetScriptsEnabled(PRBool aScriptsEnabled); /* Use this macro to declare functions that forward the behavior of this interface to another object. */ #define NS_FORWARD_JSDICONTEXT(_to) \ NS_IMETHOD GetJSContext(JSContext * *aJSContext) { return _to GetJSContext(aJSContext); } \ NS_IMETHOD GetOptions(PRUint32 *aOptions) { return _to GetOptions(aOptions); } \ NS_IMETHOD SetOptions(PRUint32 aOptions) { return _to SetOptions(aOptions); } \ NS_IMETHOD GetVersion(PRInt32 *aVersion) { return _to GetVersion(aVersion); } \ NS_IMETHOD SetVersion(PRInt32 aVersion) { return _to SetVersion(aVersion); } \ NS_IMETHOD GetTag(PRUint32 *aTag) { return _to GetTag(aTag); } \ NS_IMETHOD GetPrivateData(nsISupports * *aPrivateData) { return _to GetPrivateData(aPrivateData); } \ NS_IMETHOD GetWrappedContext(nsISupports * *aWrappedContext) { return _to GetWrappedContext(aWrappedContext); } \ NS_IMETHOD GetGlobalObject(jsdIValue * *aGlobalObject) { return _to GetGlobalObject(aGlobalObject); } \ NS_IMETHOD GetScriptsEnabled(PRBool *aScriptsEnabled) { return _to GetScriptsEnabled(aScriptsEnabled); } \ NS_IMETHOD SetScriptsEnabled(PRBool aScriptsEnabled) { return _to SetScriptsEnabled(aScriptsEnabled); } /* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */ #define NS_FORWARD_SAFE_JSDICONTEXT(_to) \ NS_IMETHOD GetJSContext(JSContext * *aJSContext) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetJSContext(aJSContext); } \ NS_IMETHOD GetOptions(PRUint32 *aOptions) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOptions(aOptions); } \ NS_IMETHOD SetOptions(PRUint32 aOptions) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetOptions(aOptions); } \ NS_IMETHOD GetVersion(PRInt32 *aVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVersion(aVersion); } \ NS_IMETHOD SetVersion(PRInt32 aVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVersion(aVersion); } \ NS_IMETHOD GetTag(PRUint32 *aTag) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTag(aTag); } \ NS_IMETHOD GetPrivateData(nsISupports * *aPrivateData) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPrivateData(aPrivateData); } \ NS_IMETHOD GetWrappedContext(nsISupports * *aWrappedContext) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWrappedContext(aWrappedContext); } \ NS_IMETHOD GetGlobalObject(jsdIValue * *aGlobalObject) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGlobalObject(aGlobalObject); } \ NS_IMETHOD GetScriptsEnabled(PRBool *aScriptsEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetScriptsEnabled(aScriptsEnabled); } \ NS_IMETHOD SetScriptsEnabled(PRBool aScriptsEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetScriptsEnabled(aScriptsEnabled); } #if 0 /* Use the code below as a template for the implementation class for this interface. */ /* Header file */ class _MYCLASS_ : public jsdIContext { public: NS_DECL_ISUPPORTS NS_DECL_JSDICONTEXT _MYCLASS_(); virtual ~_MYCLASS_(); /* additional members */ }; /* Implementation file */ NS_IMPL_ISUPPORTS1(_MYCLASS_, jsdIContext) _MYCLASS_::_MYCLASS_() { NS_INIT_ISUPPORTS(); /* member initializers and constructor code */ } _MYCLASS_::~_MYCLASS_() { /* destructor code */ } /* [noscript] readonly attribute JSContext JSContext; */ NS_IMETHODIMP _MYCLASS_::GetJSContext(JSContext * *aJSContext) { return NS_ERROR_NOT_IMPLEMENTED; } /* attribute unsigned long options; */ NS_IMETHODIMP _MYCLASS_::GetOptions(PRUint32 *aOptions) { return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP _MYCLASS_::SetOptions(PRUint32 aOptions) { return NS_ERROR_NOT_IMPLEMENTED; } /* attribute long version; */ NS_IMETHODIMP _MYCLASS_::GetVersion(PRInt32 *aVersion) { return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP _MYCLASS_::SetVersion(PRInt32 aVersion) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute unsigned long tag; */ NS_IMETHODIMP _MYCLASS_::GetTag(PRUint32 *aTag) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute nsISupports privateData; */ NS_IMETHODIMP _MYCLASS_::GetPrivateData(nsISupports * *aPrivateData) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute nsISupports wrappedContext; */ NS_IMETHODIMP _MYCLASS_::GetWrappedContext(nsISupports * *aWrappedContext) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute jsdIValue globalObject; */ NS_IMETHODIMP _MYCLASS_::GetGlobalObject(jsdIValue * *aGlobalObject) { return NS_ERROR_NOT_IMPLEMENTED; } /* attribute boolean scriptsEnabled; */ NS_IMETHODIMP _MYCLASS_::GetScriptsEnabled(PRBool *aScriptsEnabled) { return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP _MYCLASS_::SetScriptsEnabled(PRBool aScriptsEnabled) { return NS_ERROR_NOT_IMPLEMENTED; } /* End of implementation class template. */ #endif /* starting interface: jsdIStackFrame */ #define JSDISTACKFRAME_IID_STR "b6d50784-1dd1-11b2-a932-882246c6fe45" #define JSDISTACKFRAME_IID \ {0xb6d50784, 0x1dd1, 0x11b2, \ { 0xa9, 0x32, 0x88, 0x22, 0x46, 0xc6, 0xfe, 0x45 }} class NS_NO_VTABLE jsdIStackFrame : public jsdIEphemeral { public: NS_DEFINE_STATIC_IID_ACCESSOR(JSDISTACKFRAME_IID) /** * Stack frame objects. These are only valid inside the jsdIExecutionHook which * gave it to you. After you return from that handler the bottom frame, and any * frame you found attached through it, are invalidated via the jsdIEphemeral * interface. Once a jsdIStackFrame has been invalidated all method and * property accesses will throw a NS_ERROR_NOT_AVAILABLE exception. */ /** Internal use only. */ /* [noscript] readonly attribute JSDContext JSDContext; */ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext) = 0; /** Internal use only. */ /* [noscript] readonly attribute JSDThreadState JSDThreadState; */ NS_IMETHOD GetJSDThreadState(JSDThreadState * *aJSDThreadState) = 0; /** Internal use only. */ /* [noscript] readonly attribute JSDStackFrameInfo JSDStackFrameInfo; */ NS_IMETHOD GetJSDStackFrameInfo(JSDStackFrameInfo * *aJSDStackFrameInfo) = 0; /** * True if stack frame represents a native frame. */ /* readonly attribute boolean isNative; */ NS_IMETHOD GetIsNative(PRBool *aIsNative) = 0; /** * True if stack frame represents a frame created as a result of a debugger * evaluation. */ /* readonly attribute boolean isDebugger; */ NS_IMETHOD GetIsDebugger(PRBool *aIsDebugger) = 0; /** * True if stack frame is constructing a new object. */ /* readonly attribute boolean isConstructing; */ NS_IMETHOD GetIsConstructing(PRBool *aIsConstructing) = 0; /** * Link to the caller's stack frame. */ /* readonly attribute jsdIStackFrame callingFrame; */ NS_IMETHOD GetCallingFrame(jsdIStackFrame * *aCallingFrame) = 0; /** * Executon context. */ /* readonly attribute jsdIContext executionContext; */ NS_IMETHOD GetExecutionContext(jsdIContext * *aExecutionContext) = 0; /** * Function name executing in this stack frame. */ /* readonly attribute string functionName; */ NS_IMETHOD GetFunctionName(char * *aFunctionName) = 0; /** * Script running in this stack frame, null for native frames. */ /* readonly attribute jsdIScript script; */ NS_IMETHOD GetScript(jsdIScript * *aScript) = 0; /** * Current program counter in this stack frame. */ /* readonly attribute unsigned long pc; */ NS_IMETHOD GetPc(PRUint32 *aPc) = 0; /** * Current line number (using the script's pc to line map.) */ /* readonly attribute unsigned long line; */ NS_IMETHOD GetLine(PRUint32 *aLine) = 0; /** * Function object running in this stack frame. */ /* readonly attribute jsdIValue callee; */ NS_IMETHOD GetCallee(jsdIValue * *aCallee) = 0; /** * Top object in the scope chain. */ /* readonly attribute jsdIValue scope; */ NS_IMETHOD GetScope(jsdIValue * *aScope) = 0; /** * |this| object for this stack frame. */ /* readonly attribute jsdIValue thisValue; */ NS_IMETHOD GetThisValue(jsdIValue * *aThisValue) = 0; /** * Evaluate arbitrary JavaScript in this stack frame. * @param bytes Script to be evaluated. * @param fileName Filename to compile this script under. This is the * filename you'll see in error messages, etc. * @param line Starting line number for this script. One based. * @retval Result of evaluating the script. */ /* boolean eval (in AString bytes, in string fileName, in unsigned long line, out jsdIValue result); */ NS_IMETHOD Eval(const nsAString & bytes, const char *fileName, PRUint32 line, jsdIValue **result, PRBool *_retval) = 0; }; /* Use this macro when declaring classes that implement this interface. */ #define NS_DECL_JSDISTACKFRAME \ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext); \ NS_IMETHOD GetJSDThreadState(JSDThreadState * *aJSDThreadState); \ NS_IMETHOD GetJSDStackFrameInfo(JSDStackFrameInfo * *aJSDStackFrameInfo); \ NS_IMETHOD GetIsNative(PRBool *aIsNative); \ NS_IMETHOD GetIsDebugger(PRBool *aIsDebugger); \ NS_IMETHOD GetIsConstructing(PRBool *aIsConstructing); \ NS_IMETHOD GetCallingFrame(jsdIStackFrame * *aCallingFrame); \ NS_IMETHOD GetExecutionContext(jsdIContext * *aExecutionContext); \ NS_IMETHOD GetFunctionName(char * *aFunctionName); \ NS_IMETHOD GetScript(jsdIScript * *aScript); \ NS_IMETHOD GetPc(PRUint32 *aPc); \ NS_IMETHOD GetLine(PRUint32 *aLine); \ NS_IMETHOD GetCallee(jsdIValue * *aCallee); \ NS_IMETHOD GetScope(jsdIValue * *aScope); \ NS_IMETHOD GetThisValue(jsdIValue * *aThisValue); \ NS_IMETHOD Eval(const nsAString & bytes, const char *fileName, PRUint32 line, jsdIValue **result, PRBool *_retval); /* Use this macro to declare functions that forward the behavior of this interface to another object. */ #define NS_FORWARD_JSDISTACKFRAME(_to) \ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext) { return _to GetJSDContext(aJSDContext); } \ NS_IMETHOD GetJSDThreadState(JSDThreadState * *aJSDThreadState) { return _to GetJSDThreadState(aJSDThreadState); } \ NS_IMETHOD GetJSDStackFrameInfo(JSDStackFrameInfo * *aJSDStackFrameInfo) { return _to GetJSDStackFrameInfo(aJSDStackFrameInfo); } \ NS_IMETHOD GetIsNative(PRBool *aIsNative) { return _to GetIsNative(aIsNative); } \ NS_IMETHOD GetIsDebugger(PRBool *aIsDebugger) { return _to GetIsDebugger(aIsDebugger); } \ NS_IMETHOD GetIsConstructing(PRBool *aIsConstructing) { return _to GetIsConstructing(aIsConstructing); } \ NS_IMETHOD GetCallingFrame(jsdIStackFrame * *aCallingFrame) { return _to GetCallingFrame(aCallingFrame); } \ NS_IMETHOD GetExecutionContext(jsdIContext * *aExecutionContext) { return _to GetExecutionContext(aExecutionContext); } \ NS_IMETHOD GetFunctionName(char * *aFunctionName) { return _to GetFunctionName(aFunctionName); } \ NS_IMETHOD GetScript(jsdIScript * *aScript) { return _to GetScript(aScript); } \ NS_IMETHOD GetPc(PRUint32 *aPc) { return _to GetPc(aPc); } \ NS_IMETHOD GetLine(PRUint32 *aLine) { return _to GetLine(aLine); } \ NS_IMETHOD GetCallee(jsdIValue * *aCallee) { return _to GetCallee(aCallee); } \ NS_IMETHOD GetScope(jsdIValue * *aScope) { return _to GetScope(aScope); } \ NS_IMETHOD GetThisValue(jsdIValue * *aThisValue) { return _to GetThisValue(aThisValue); } \ NS_IMETHOD Eval(const nsAString & bytes, const char *fileName, PRUint32 line, jsdIValue **result, PRBool *_retval) { return _to Eval(bytes, fileName, line, result, _retval); } /* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */ #define NS_FORWARD_SAFE_JSDISTACKFRAME(_to) \ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetJSDContext(aJSDContext); } \ NS_IMETHOD GetJSDThreadState(JSDThreadState * *aJSDThreadState) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetJSDThreadState(aJSDThreadState); } \ NS_IMETHOD GetJSDStackFrameInfo(JSDStackFrameInfo * *aJSDStackFrameInfo) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetJSDStackFrameInfo(aJSDStackFrameInfo); } \ NS_IMETHOD GetIsNative(PRBool *aIsNative) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsNative(aIsNative); } \ NS_IMETHOD GetIsDebugger(PRBool *aIsDebugger) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsDebugger(aIsDebugger); } \ NS_IMETHOD GetIsConstructing(PRBool *aIsConstructing) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsConstructing(aIsConstructing); } \ NS_IMETHOD GetCallingFrame(jsdIStackFrame * *aCallingFrame) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCallingFrame(aCallingFrame); } \ NS_IMETHOD GetExecutionContext(jsdIContext * *aExecutionContext) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExecutionContext(aExecutionContext); } \ NS_IMETHOD GetFunctionName(char * *aFunctionName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFunctionName(aFunctionName); } \ NS_IMETHOD GetScript(jsdIScript * *aScript) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetScript(aScript); } \ NS_IMETHOD GetPc(PRUint32 *aPc) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPc(aPc); } \ NS_IMETHOD GetLine(PRUint32 *aLine) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLine(aLine); } \ NS_IMETHOD GetCallee(jsdIValue * *aCallee) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCallee(aCallee); } \ NS_IMETHOD GetScope(jsdIValue * *aScope) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetScope(aScope); } \ NS_IMETHOD GetThisValue(jsdIValue * *aThisValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetThisValue(aThisValue); } \ NS_IMETHOD Eval(const nsAString & bytes, const char *fileName, PRUint32 line, jsdIValue **result, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->Eval(bytes, fileName, line, result, _retval); } #if 0 /* Use the code below as a template for the implementation class for this interface. */ /* Header file */ class _MYCLASS_ : public jsdIStackFrame { public: NS_DECL_ISUPPORTS NS_DECL_JSDISTACKFRAME _MYCLASS_(); virtual ~_MYCLASS_(); /* additional members */ }; /* Implementation file */ NS_IMPL_ISUPPORTS1(_MYCLASS_, jsdIStackFrame) _MYCLASS_::_MYCLASS_() { NS_INIT_ISUPPORTS(); /* member initializers and constructor code */ } _MYCLASS_::~_MYCLASS_() { /* destructor code */ } /* [noscript] readonly attribute JSDContext JSDContext; */ NS_IMETHODIMP _MYCLASS_::GetJSDContext(JSDContext * *aJSDContext) { return NS_ERROR_NOT_IMPLEMENTED; } /* [noscript] readonly attribute JSDThreadState JSDThreadState; */ NS_IMETHODIMP _MYCLASS_::GetJSDThreadState(JSDThreadState * *aJSDThreadState) { return NS_ERROR_NOT_IMPLEMENTED; } /* [noscript] readonly attribute JSDStackFrameInfo JSDStackFrameInfo; */ NS_IMETHODIMP _MYCLASS_::GetJSDStackFrameInfo(JSDStackFrameInfo * *aJSDStackFrameInfo) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute boolean isNative; */ NS_IMETHODIMP _MYCLASS_::GetIsNative(PRBool *aIsNative) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute boolean isDebugger; */ NS_IMETHODIMP _MYCLASS_::GetIsDebugger(PRBool *aIsDebugger) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute boolean isConstructing; */ NS_IMETHODIMP _MYCLASS_::GetIsConstructing(PRBool *aIsConstructing) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute jsdIStackFrame callingFrame; */ NS_IMETHODIMP _MYCLASS_::GetCallingFrame(jsdIStackFrame * *aCallingFrame) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute jsdIContext executionContext; */ NS_IMETHODIMP _MYCLASS_::GetExecutionContext(jsdIContext * *aExecutionContext) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute string functionName; */ NS_IMETHODIMP _MYCLASS_::GetFunctionName(char * *aFunctionName) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute jsdIScript script; */ NS_IMETHODIMP _MYCLASS_::GetScript(jsdIScript * *aScript) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute unsigned long pc; */ NS_IMETHODIMP _MYCLASS_::GetPc(PRUint32 *aPc) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute unsigned long line; */ NS_IMETHODIMP _MYCLASS_::GetLine(PRUint32 *aLine) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute jsdIValue callee; */ NS_IMETHODIMP _MYCLASS_::GetCallee(jsdIValue * *aCallee) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute jsdIValue scope; */ NS_IMETHODIMP _MYCLASS_::GetScope(jsdIValue * *aScope) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute jsdIValue thisValue; */ NS_IMETHODIMP _MYCLASS_::GetThisValue(jsdIValue * *aThisValue) { return NS_ERROR_NOT_IMPLEMENTED; } /* boolean eval (in AString bytes, in string fileName, in unsigned long line, out jsdIValue result); */ NS_IMETHODIMP _MYCLASS_::Eval(const nsAString & bytes, const char *fileName, PRUint32 line, jsdIValue **result, PRBool *_retval) { return NS_ERROR_NOT_IMPLEMENTED; } /* End of implementation class template. */ #endif /* starting interface: jsdIScript */ #define JSDISCRIPT_IID_STR "a38f65ca-1dd1-11b2-95d5-ff2947e9c920" #define JSDISCRIPT_IID \ {0xa38f65ca, 0x1dd1, 0x11b2, \ { 0x95, 0xd5, 0xff, 0x29, 0x47, 0xe9, 0xc9, 0x20 }} class NS_NO_VTABLE jsdIScript : public jsdIEphemeral { public: NS_DEFINE_STATIC_IID_ACCESSOR(JSDISCRIPT_IID) /** * Script object. In JavaScript engine terms, there's a single script for each * function, and one for the top level script. */ /** Internal use only. */ /* [noscript] readonly attribute JSDContext JSDContext; */ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext) = 0; /** Internal use only. */ /* [noscript] readonly attribute JSDScript JSDScript; */ NS_IMETHOD GetJSDScript(JSDScript * *aJSDScript) = 0; /** * Last version set on this context. * Scripts typically select this with the "language" attribute. * See the VERSION_* consts on jsdIDebuggerService. */ /* readonly attribute long version; */ NS_IMETHOD GetVersion(PRInt32 *aVersion) = 0; /** * Tag value guaranteed unique among jsdIScript objects. Useful as a * hash key in script. */ /* readonly attribute unsigned long tag; */ NS_IMETHOD GetTag(PRUint32 *aTag) = 0; /** * FLAG_* values need to be kept in sync with JSD_SCRIPT_* #defines in * jsdebug.h. */ /** * Determines whether or not to collect profile information for this * script. The context flag FLAG_PROFILE_WHEN_SET decides the logic. */ enum { FLAG_PROFILE = 1U }; /** * Determines whether or not to ignore breakpoints, etc. in this script. * The context flag JSD_DEBUG_WHEN_SET decides the logic. */ enum { FLAG_DEBUG = 2U }; /** * FLAG_* attributes from above, OR'd together. */ /* attribute unsigned long flags; */ NS_IMETHOD GetFlags(PRUint32 *aFlags) = 0; NS_IMETHOD SetFlags(PRUint32 aFlags) = 0; /** * Filename given for this script when it was compiled. * This data is copied from the underlying structure when the jsdIScript * instance is created and is therefore available even after the script is * invalidated. */ /* readonly attribute string fileName; */ NS_IMETHOD GetFileName(char * *aFileName) = 0; /** * Function name for this script. "anonymous" for unnamed functions (or * a function actually named anonymous), empty for top level scripts. * This data is copied from the underlying structure when the jsdIScript * instance is created and is therefore available even after the script is * invalidated. */ /* readonly attribute string functionName; */ NS_IMETHOD GetFunctionName(char * *aFunctionName) = 0; /** * Source code for this script, without function declaration. */ /* readonly attribute AString functionSource; */ NS_IMETHOD GetFunctionSource(nsAString & aFunctionSource) = 0; /** * Line number in source file containing the first line of this script. * This data is copied from the underlying structure when the jsdIScript * instance is created and is therefore available even after the script is * invalidated. */ /* readonly attribute unsigned long baseLineNumber; */ NS_IMETHOD GetBaseLineNumber(PRUint32 *aBaseLineNumber) = 0; /** * Total number of lines in this script. * This data is copied from the underlying structure when the jsdIScript * instance is created and is therefore available even after the script is * invalidated. */ /* readonly attribute unsigned long lineExtent; */ NS_IMETHOD GetLineExtent(PRUint32 *aLineExtent) = 0; /** * Number of times this script has been called. */ /* readonly attribute unsigned long callCount; */ NS_IMETHOD GetCallCount(PRUint32 *aCallCount) = 0; /** * Number of times this script called itself, directly or indirectly. */ /* readonly attribute unsigned long maxRecurseDepth; */ NS_IMETHOD GetMaxRecurseDepth(PRUint32 *aMaxRecurseDepth) = 0; /** * Shortest execution time recorded, in milliseconds. */ /* readonly attribute double minExecutionTime; */ NS_IMETHOD GetMinExecutionTime(double *aMinExecutionTime) = 0; /** * Longest execution time recorded, in milliseconds. */ /* readonly attribute double maxExecutionTime; */ NS_IMETHOD GetMaxExecutionTime(double *aMaxExecutionTime) = 0; /** * Total time spent in this function, in milliseconds. */ /* readonly attribute double totalExecutionTime; */ NS_IMETHOD GetTotalExecutionTime(double *aTotalExecutionTime) = 0; /** * Clear profile data for this script. */ /* void clearProfileData (); */ NS_IMETHOD ClearProfileData(void) = 0; enum { PCMAP_SOURCETEXT = 1U }; enum { PCMAP_PRETTYPRINT = 2U }; /** * Get the closest line number to a given PC. * The |pcmap| argument specifies which pc to source line map to use. */ /* unsigned long pcToLine (in unsigned long pc, in unsigned long pcmap); */ NS_IMETHOD PcToLine(PRUint32 pc, PRUint32 pcmap, PRUint32 *_retval) = 0; /** * Get the first PC associated with a line. * The |pcmap| argument specifies which pc to source line map to use. */ /* unsigned long lineToPc (in unsigned long line, in unsigned long pcmap); */ NS_IMETHOD LineToPc(PRUint32 line, PRUint32 pcmap, PRUint32 *_retval) = 0; /** * Determine is a particular line is executable, like checking that * lineToPc == pcToLine, except in one call. * The |pcmap| argument specifies which pc to source line map to use. */ /* boolean isLineExecutable (in unsigned long line, in unsigned long pcmap); */ NS_IMETHOD IsLineExecutable(PRUint32 line, PRUint32 pcmap, PRBool *_retval) = 0; /** * Set a breakpoint at a PC in this script. */ /* void setBreakpoint (in unsigned long pc); */ NS_IMETHOD SetBreakpoint(PRUint32 pc) = 0; /** * Clear a breakpoint at a PC in this script. */ /* void clearBreakpoint (in unsigned long pc); */ NS_IMETHOD ClearBreakpoint(PRUint32 pc) = 0; /** * Clear all breakpoints set in this script. */ /* void clearAllBreakpoints (); */ NS_IMETHOD ClearAllBreakpoints(void) = 0; }; /* Use this macro when declaring classes that implement this interface. */ #define NS_DECL_JSDISCRIPT \ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext); \ NS_IMETHOD GetJSDScript(JSDScript * *aJSDScript); \ NS_IMETHOD GetVersion(PRInt32 *aVersion); \ NS_IMETHOD GetTag(PRUint32 *aTag); \ NS_IMETHOD GetFlags(PRUint32 *aFlags); \ NS_IMETHOD SetFlags(PRUint32 aFlags); \ NS_IMETHOD GetFileName(char * *aFileName); \ NS_IMETHOD GetFunctionName(char * *aFunctionName); \ NS_IMETHOD GetFunctionSource(nsAString & aFunctionSource); \ NS_IMETHOD GetBaseLineNumber(PRUint32 *aBaseLineNumber); \ NS_IMETHOD GetLineExtent(PRUint32 *aLineExtent); \ NS_IMETHOD GetCallCount(PRUint32 *aCallCount); \ NS_IMETHOD GetMaxRecurseDepth(PRUint32 *aMaxRecurseDepth); \ NS_IMETHOD GetMinExecutionTime(double *aMinExecutionTime); \ NS_IMETHOD GetMaxExecutionTime(double *aMaxExecutionTime); \ NS_IMETHOD GetTotalExecutionTime(double *aTotalExecutionTime); \ NS_IMETHOD ClearProfileData(void); \ NS_IMETHOD PcToLine(PRUint32 pc, PRUint32 pcmap, PRUint32 *_retval); \ NS_IMETHOD LineToPc(PRUint32 line, PRUint32 pcmap, PRUint32 *_retval); \ NS_IMETHOD IsLineExecutable(PRUint32 line, PRUint32 pcmap, PRBool *_retval); \ NS_IMETHOD SetBreakpoint(PRUint32 pc); \ NS_IMETHOD ClearBreakpoint(PRUint32 pc); \ NS_IMETHOD ClearAllBreakpoints(void); /* Use this macro to declare functions that forward the behavior of this interface to another object. */ #define NS_FORWARD_JSDISCRIPT(_to) \ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext) { return _to GetJSDContext(aJSDContext); } \ NS_IMETHOD GetJSDScript(JSDScript * *aJSDScript) { return _to GetJSDScript(aJSDScript); } \ NS_IMETHOD GetVersion(PRInt32 *aVersion) { return _to GetVersion(aVersion); } \ NS_IMETHOD GetTag(PRUint32 *aTag) { return _to GetTag(aTag); } \ NS_IMETHOD GetFlags(PRUint32 *aFlags) { return _to GetFlags(aFlags); } \ NS_IMETHOD SetFlags(PRUint32 aFlags) { return _to SetFlags(aFlags); } \ NS_IMETHOD GetFileName(char * *aFileName) { return _to GetFileName(aFileName); } \ NS_IMETHOD GetFunctionName(char * *aFunctionName) { return _to GetFunctionName(aFunctionName); } \ NS_IMETHOD GetFunctionSource(nsAString & aFunctionSource) { return _to GetFunctionSource(aFunctionSource); } \ NS_IMETHOD GetBaseLineNumber(PRUint32 *aBaseLineNumber) { return _to GetBaseLineNumber(aBaseLineNumber); } \ NS_IMETHOD GetLineExtent(PRUint32 *aLineExtent) { return _to GetLineExtent(aLineExtent); } \ NS_IMETHOD GetCallCount(PRUint32 *aCallCount) { return _to GetCallCount(aCallCount); } \ NS_IMETHOD GetMaxRecurseDepth(PRUint32 *aMaxRecurseDepth) { return _to GetMaxRecurseDepth(aMaxRecurseDepth); } \ NS_IMETHOD GetMinExecutionTime(double *aMinExecutionTime) { return _to GetMinExecutionTime(aMinExecutionTime); } \ NS_IMETHOD GetMaxExecutionTime(double *aMaxExecutionTime) { return _to GetMaxExecutionTime(aMaxExecutionTime); } \ NS_IMETHOD GetTotalExecutionTime(double *aTotalExecutionTime) { return _to GetTotalExecutionTime(aTotalExecutionTime); } \ NS_IMETHOD ClearProfileData(void) { return _to ClearProfileData(); } \ NS_IMETHOD PcToLine(PRUint32 pc, PRUint32 pcmap, PRUint32 *_retval) { return _to PcToLine(pc, pcmap, _retval); } \ NS_IMETHOD LineToPc(PRUint32 line, PRUint32 pcmap, PRUint32 *_retval) { return _to LineToPc(line, pcmap, _retval); } \ NS_IMETHOD IsLineExecutable(PRUint32 line, PRUint32 pcmap, PRBool *_retval) { return _to IsLineExecutable(line, pcmap, _retval); } \ NS_IMETHOD SetBreakpoint(PRUint32 pc) { return _to SetBreakpoint(pc); } \ NS_IMETHOD ClearBreakpoint(PRUint32 pc) { return _to ClearBreakpoint(pc); } \ NS_IMETHOD ClearAllBreakpoints(void) { return _to ClearAllBreakpoints(); } /* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */ #define NS_FORWARD_SAFE_JSDISCRIPT(_to) \ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetJSDContext(aJSDContext); } \ NS_IMETHOD GetJSDScript(JSDScript * *aJSDScript) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetJSDScript(aJSDScript); } \ NS_IMETHOD GetVersion(PRInt32 *aVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVersion(aVersion); } \ NS_IMETHOD GetTag(PRUint32 *aTag) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTag(aTag); } \ NS_IMETHOD GetFlags(PRUint32 *aFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFlags(aFlags); } \ NS_IMETHOD SetFlags(PRUint32 aFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFlags(aFlags); } \ NS_IMETHOD GetFileName(char * *aFileName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFileName(aFileName); } \ NS_IMETHOD GetFunctionName(char * *aFunctionName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFunctionName(aFunctionName); } \ NS_IMETHOD GetFunctionSource(nsAString & aFunctionSource) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFunctionSource(aFunctionSource); } \ NS_IMETHOD GetBaseLineNumber(PRUint32 *aBaseLineNumber) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBaseLineNumber(aBaseLineNumber); } \ NS_IMETHOD GetLineExtent(PRUint32 *aLineExtent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLineExtent(aLineExtent); } \ NS_IMETHOD GetCallCount(PRUint32 *aCallCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCallCount(aCallCount); } \ NS_IMETHOD GetMaxRecurseDepth(PRUint32 *aMaxRecurseDepth) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxRecurseDepth(aMaxRecurseDepth); } \ NS_IMETHOD GetMinExecutionTime(double *aMinExecutionTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMinExecutionTime(aMinExecutionTime); } \ NS_IMETHOD GetMaxExecutionTime(double *aMaxExecutionTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxExecutionTime(aMaxExecutionTime); } \ NS_IMETHOD GetTotalExecutionTime(double *aTotalExecutionTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTotalExecutionTime(aTotalExecutionTime); } \ NS_IMETHOD ClearProfileData(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearProfileData(); } \ NS_IMETHOD PcToLine(PRUint32 pc, PRUint32 pcmap, PRUint32 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->PcToLine(pc, pcmap, _retval); } \ NS_IMETHOD LineToPc(PRUint32 line, PRUint32 pcmap, PRUint32 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->LineToPc(line, pcmap, _retval); } \ NS_IMETHOD IsLineExecutable(PRUint32 line, PRUint32 pcmap, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsLineExecutable(line, pcmap, _retval); } \ NS_IMETHOD SetBreakpoint(PRUint32 pc) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBreakpoint(pc); } \ NS_IMETHOD ClearBreakpoint(PRUint32 pc) { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearBreakpoint(pc); } \ NS_IMETHOD ClearAllBreakpoints(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearAllBreakpoints(); } #if 0 /* Use the code below as a template for the implementation class for this interface. */ /* Header file */ class _MYCLASS_ : public jsdIScript { public: NS_DECL_ISUPPORTS NS_DECL_JSDISCRIPT _MYCLASS_(); virtual ~_MYCLASS_(); /* additional members */ }; /* Implementation file */ NS_IMPL_ISUPPORTS1(_MYCLASS_, jsdIScript) _MYCLASS_::_MYCLASS_() { NS_INIT_ISUPPORTS(); /* member initializers and constructor code */ } _MYCLASS_::~_MYCLASS_() { /* destructor code */ } /* [noscript] readonly attribute JSDContext JSDContext; */ NS_IMETHODIMP _MYCLASS_::GetJSDContext(JSDContext * *aJSDContext) { return NS_ERROR_NOT_IMPLEMENTED; } /* [noscript] readonly attribute JSDScript JSDScript; */ NS_IMETHODIMP _MYCLASS_::GetJSDScript(JSDScript * *aJSDScript) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute long version; */ NS_IMETHODIMP _MYCLASS_::GetVersion(PRInt32 *aVersion) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute unsigned long tag; */ NS_IMETHODIMP _MYCLASS_::GetTag(PRUint32 *aTag) { return NS_ERROR_NOT_IMPLEMENTED; } /* attribute unsigned long flags; */ NS_IMETHODIMP _MYCLASS_::GetFlags(PRUint32 *aFlags) { return NS_ERROR_NOT_IMPLEMENTED; } NS_IMETHODIMP _MYCLASS_::SetFlags(PRUint32 aFlags) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute string fileName; */ NS_IMETHODIMP _MYCLASS_::GetFileName(char * *aFileName) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute string functionName; */ NS_IMETHODIMP _MYCLASS_::GetFunctionName(char * *aFunctionName) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute AString functionSource; */ NS_IMETHODIMP _MYCLASS_::GetFunctionSource(nsAString & aFunctionSource) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute unsigned long baseLineNumber; */ NS_IMETHODIMP _MYCLASS_::GetBaseLineNumber(PRUint32 *aBaseLineNumber) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute unsigned long lineExtent; */ NS_IMETHODIMP _MYCLASS_::GetLineExtent(PRUint32 *aLineExtent) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute unsigned long callCount; */ NS_IMETHODIMP _MYCLASS_::GetCallCount(PRUint32 *aCallCount) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute unsigned long maxRecurseDepth; */ NS_IMETHODIMP _MYCLASS_::GetMaxRecurseDepth(PRUint32 *aMaxRecurseDepth) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute double minExecutionTime; */ NS_IMETHODIMP _MYCLASS_::GetMinExecutionTime(double *aMinExecutionTime) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute double maxExecutionTime; */ NS_IMETHODIMP _MYCLASS_::GetMaxExecutionTime(double *aMaxExecutionTime) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute double totalExecutionTime; */ NS_IMETHODIMP _MYCLASS_::GetTotalExecutionTime(double *aTotalExecutionTime) { return NS_ERROR_NOT_IMPLEMENTED; } /* void clearProfileData (); */ NS_IMETHODIMP _MYCLASS_::ClearProfileData() { return NS_ERROR_NOT_IMPLEMENTED; } /* unsigned long pcToLine (in unsigned long pc, in unsigned long pcmap); */ NS_IMETHODIMP _MYCLASS_::PcToLine(PRUint32 pc, PRUint32 pcmap, PRUint32 *_retval) { return NS_ERROR_NOT_IMPLEMENTED; } /* unsigned long lineToPc (in unsigned long line, in unsigned long pcmap); */ NS_IMETHODIMP _MYCLASS_::LineToPc(PRUint32 line, PRUint32 pcmap, PRUint32 *_retval) { return NS_ERROR_NOT_IMPLEMENTED; } /* boolean isLineExecutable (in unsigned long line, in unsigned long pcmap); */ NS_IMETHODIMP _MYCLASS_::IsLineExecutable(PRUint32 line, PRUint32 pcmap, PRBool *_retval) { return NS_ERROR_NOT_IMPLEMENTED; } /* void setBreakpoint (in unsigned long pc); */ NS_IMETHODIMP _MYCLASS_::SetBreakpoint(PRUint32 pc) { return NS_ERROR_NOT_IMPLEMENTED; } /* void clearBreakpoint (in unsigned long pc); */ NS_IMETHODIMP _MYCLASS_::ClearBreakpoint(PRUint32 pc) { return NS_ERROR_NOT_IMPLEMENTED; } /* void clearAllBreakpoints (); */ NS_IMETHODIMP _MYCLASS_::ClearAllBreakpoints() { return NS_ERROR_NOT_IMPLEMENTED; } /* End of implementation class template. */ #endif /* starting interface: jsdIValue */ #define JSDIVALUE_IID_STR "b7964304-1dd1-11b2-ba20-cf4205772e9d" #define JSDIVALUE_IID \ {0xb7964304, 0x1dd1, 0x11b2, \ { 0xba, 0x20, 0xcf, 0x42, 0x05, 0x77, 0x2e, 0x9d }} class NS_NO_VTABLE jsdIValue : public jsdIEphemeral { public: NS_DEFINE_STATIC_IID_ACCESSOR(JSDIVALUE_IID) /** * Value objects. Represents typeless JavaScript values (jsval in SpiderMonkey * terminology.) These are valid until the debugger is turned off. Holding a * jsdIValue adds a root for the underlying JavaScript value, so don't keep it * if you don't need to. */ /** Internal use only. */ /* [noscript] readonly attribute JSDContext JSDContext; */ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext) = 0; /** Internal use only. */ /* [noscript] readonly attribute JSDValue JSDValue; */ NS_IMETHOD GetJSDValue(JSDValue * *aJSDValue) = 0; /** * |false| unless the value is a function declared in script. */ /* readonly attribute boolean isNative; */ NS_IMETHOD GetIsNative(PRBool *aIsNative) = 0; /** * |true| if the value represents a number, either double or integer. * |false| for all other values, including numbers assigned as strings * (eg. x = "1";) */ /* readonly attribute boolean isNumber; */ NS_IMETHOD GetIsNumber(PRBool *aIsNumber) = 0; /** * |true| if the value represents a JavaScript primitive number or string */ /* readonly attribute boolean isPrimitive; */ NS_IMETHOD GetIsPrimitive(PRBool *aIsPrimitive) = 0; /** Value is either |true| or |false|. */ enum { TYPE_BOOLEAN = 0U }; /** Value is a primitive number that is too large to fit in an integer. */ enum { TYPE_DOUBLE = 1U }; /** Value is a primitive number that fits into an integer. */ enum { TYPE_INT = 2U }; /** Value is a function. */ enum { TYPE_FUNCTION = 3U }; /** Value is |null|. */ enum { TYPE_NULL = 4U }; /** Value is an object. */ enum { TYPE_OBJECT = 5U }; /** Value is a primitive string. */ enum { TYPE_STRING = 6U }; /** Value is void. */ enum { TYPE_VOID = 7U }; /** * One of the TYPE_* values above. */ /* readonly attribute unsigned long jsType; */ NS_IMETHOD GetJsType(PRUint32 *aJsType) = 0; /** * Prototype value if this value represents an object, null if the value is * not an object or the object has no prototype. */ /* readonly attribute jsdIValue jsPrototype; */ NS_IMETHOD GetJsPrototype(jsdIValue * *aJsPrototype) = 0; /** * Parent value if this value represents an object, null if the value is not * an object or the object has no parent. */ /* readonly attribute jsdIValue jsParent; */ NS_IMETHOD GetJsParent(jsdIValue * *aJsParent) = 0; /** * Class name if this value represents an object. Empty string if the value * is not an object. */ /* readonly attribute string jsClassName; */ NS_IMETHOD GetJsClassName(char * *aJsClassName) = 0; /** * Constructor name if this value represents an object. Empty string if the * value is not an object. */ /* readonly attribute jsdIValue jsConstructor; */ NS_IMETHOD GetJsConstructor(jsdIValue * *aJsConstructor) = 0; /** * Function name if this value represents a function. Empty string if the * value is not a function. */ /* readonly attribute string jsFunctionName; */ NS_IMETHOD GetJsFunctionName(char * *aJsFunctionName) = 0; /** * Value if interpreted as a boolean. Converts if necessary. */ /* readonly attribute boolean booleanValue; */ NS_IMETHOD GetBooleanValue(PRBool *aBooleanValue) = 0; /** * Value if interpreted as a double. Converts if necessary. */ /* readonly attribute double doubleValue; */ NS_IMETHOD GetDoubleValue(double *aDoubleValue) = 0; /** * Value if interpreted as an integer. Converts if necessary. */ /* readonly attribute long intValue; */ NS_IMETHOD GetIntValue(PRInt32 *aIntValue) = 0; /** * Value if interpreted as an object. */ /* readonly attribute jsdIObject objectValue; */ NS_IMETHOD GetObjectValue(jsdIObject * *aObjectValue) = 0; /** * Value if interpreted as a string. Converts if necessary. */ /* readonly attribute string stringValue; */ NS_IMETHOD GetStringValue(char * *aStringValue) = 0; /** * Number of properties. 0 if the value is not an object, or the value is * an object but has no properties. */ /* readonly attribute long propertyCount; */ NS_IMETHOD GetPropertyCount(PRInt32 *aPropertyCount) = 0; /** * Retrieves all properties if this value represents an object. If this * value is not an object a 0 element array is returned. * @param propArray Array of jsdIProperty values for this value. * @param length Size of array. */ /* void getProperties ([array, size_is (length)] out jsdIProperty propArray, out unsigned long length); */ NS_IMETHOD GetProperties(jsdIProperty ***propArray, PRUint32 *length) = 0; /** * Retrieves a single property from the value. Only valid if the value * represents an object. * @param name Name of the property to retrieve. * @retval jsdIProperty for the requested property name or null if no * property exists for the requested name. */ /* jsdIProperty getProperty (in string name); */ NS_IMETHOD GetProperty(const char *name, jsdIProperty **_retval) = 0; /** * jsdIValues are wrappers around JavaScript engine structures. Much of the * data is copied instead of shared. The refresh method is used to resync * the jsdIValue with the underlying structure. */ /* void refresh (); */ NS_IMETHOD Refresh(void) = 0; /** * When called from JavaScript, this method returns the JavaScript value * wrapped by this jsdIValue. The calling script is free to use the result * as it would any other JavaScript value. * When called from another language this method returns an xpconnect * defined error code. */ /* void getWrappedValue (); */ NS_IMETHOD GetWrappedValue(void) = 0; }; /* Use this macro when declaring classes that implement this interface. */ #define NS_DECL_JSDIVALUE \ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext); \ NS_IMETHOD GetJSDValue(JSDValue * *aJSDValue); \ NS_IMETHOD GetIsNative(PRBool *aIsNative); \ NS_IMETHOD GetIsNumber(PRBool *aIsNumber); \ NS_IMETHOD GetIsPrimitive(PRBool *aIsPrimitive); \ NS_IMETHOD GetJsType(PRUint32 *aJsType); \ NS_IMETHOD GetJsPrototype(jsdIValue * *aJsPrototype); \ NS_IMETHOD GetJsParent(jsdIValue * *aJsParent); \ NS_IMETHOD GetJsClassName(char * *aJsClassName); \ NS_IMETHOD GetJsConstructor(jsdIValue * *aJsConstructor); \ NS_IMETHOD GetJsFunctionName(char * *aJsFunctionName); \ NS_IMETHOD GetBooleanValue(PRBool *aBooleanValue); \ NS_IMETHOD GetDoubleValue(double *aDoubleValue); \ NS_IMETHOD GetIntValue(PRInt32 *aIntValue); \ NS_IMETHOD GetObjectValue(jsdIObject * *aObjectValue); \ NS_IMETHOD GetStringValue(char * *aStringValue); \ NS_IMETHOD GetPropertyCount(PRInt32 *aPropertyCount); \ NS_IMETHOD GetProperties(jsdIProperty ***propArray, PRUint32 *length); \ NS_IMETHOD GetProperty(const char *name, jsdIProperty **_retval); \ NS_IMETHOD Refresh(void); \ NS_IMETHOD GetWrappedValue(void); /* Use this macro to declare functions that forward the behavior of this interface to another object. */ #define NS_FORWARD_JSDIVALUE(_to) \ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext) { return _to GetJSDContext(aJSDContext); } \ NS_IMETHOD GetJSDValue(JSDValue * *aJSDValue) { return _to GetJSDValue(aJSDValue); } \ NS_IMETHOD GetIsNative(PRBool *aIsNative) { return _to GetIsNative(aIsNative); } \ NS_IMETHOD GetIsNumber(PRBool *aIsNumber) { return _to GetIsNumber(aIsNumber); } \ NS_IMETHOD GetIsPrimitive(PRBool *aIsPrimitive) { return _to GetIsPrimitive(aIsPrimitive); } \ NS_IMETHOD GetJsType(PRUint32 *aJsType) { return _to GetJsType(aJsType); } \ NS_IMETHOD GetJsPrototype(jsdIValue * *aJsPrototype) { return _to GetJsPrototype(aJsPrototype); } \ NS_IMETHOD GetJsParent(jsdIValue * *aJsParent) { return _to GetJsParent(aJsParent); } \ NS_IMETHOD GetJsClassName(char * *aJsClassName) { return _to GetJsClassName(aJsClassName); } \ NS_IMETHOD GetJsConstructor(jsdIValue * *aJsConstructor) { return _to GetJsConstructor(aJsConstructor); } \ NS_IMETHOD GetJsFunctionName(char * *aJsFunctionName) { return _to GetJsFunctionName(aJsFunctionName); } \ NS_IMETHOD GetBooleanValue(PRBool *aBooleanValue) { return _to GetBooleanValue(aBooleanValue); } \ NS_IMETHOD GetDoubleValue(double *aDoubleValue) { return _to GetDoubleValue(aDoubleValue); } \ NS_IMETHOD GetIntValue(PRInt32 *aIntValue) { return _to GetIntValue(aIntValue); } \ NS_IMETHOD GetObjectValue(jsdIObject * *aObjectValue) { return _to GetObjectValue(aObjectValue); } \ NS_IMETHOD GetStringValue(char * *aStringValue) { return _to GetStringValue(aStringValue); } \ NS_IMETHOD GetPropertyCount(PRInt32 *aPropertyCount) { return _to GetPropertyCount(aPropertyCount); } \ NS_IMETHOD GetProperties(jsdIProperty ***propArray, PRUint32 *length) { return _to GetProperties(propArray, length); } \ NS_IMETHOD GetProperty(const char *name, jsdIProperty **_retval) { return _to GetProperty(name, _retval); } \ NS_IMETHOD Refresh(void) { return _to Refresh(); } \ NS_IMETHOD GetWrappedValue(void) { return _to GetWrappedValue(); } /* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */ #define NS_FORWARD_SAFE_JSDIVALUE(_to) \ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetJSDContext(aJSDContext); } \ NS_IMETHOD GetJSDValue(JSDValue * *aJSDValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetJSDValue(aJSDValue); } \ NS_IMETHOD GetIsNative(PRBool *aIsNative) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsNative(aIsNative); } \ NS_IMETHOD GetIsNumber(PRBool *aIsNumber) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsNumber(aIsNumber); } \ NS_IMETHOD GetIsPrimitive(PRBool *aIsPrimitive) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsPrimitive(aIsPrimitive); } \ NS_IMETHOD GetJsType(PRUint32 *aJsType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetJsType(aJsType); } \ NS_IMETHOD GetJsPrototype(jsdIValue * *aJsPrototype) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetJsPrototype(aJsPrototype); } \ NS_IMETHOD GetJsParent(jsdIValue * *aJsParent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetJsParent(aJsParent); } \ NS_IMETHOD GetJsClassName(char * *aJsClassName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetJsClassName(aJsClassName); } \ NS_IMETHOD GetJsConstructor(jsdIValue * *aJsConstructor) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetJsConstructor(aJsConstructor); } \ NS_IMETHOD GetJsFunctionName(char * *aJsFunctionName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetJsFunctionName(aJsFunctionName); } \ NS_IMETHOD GetBooleanValue(PRBool *aBooleanValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBooleanValue(aBooleanValue); } \ NS_IMETHOD GetDoubleValue(double *aDoubleValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDoubleValue(aDoubleValue); } \ NS_IMETHOD GetIntValue(PRInt32 *aIntValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIntValue(aIntValue); } \ NS_IMETHOD GetObjectValue(jsdIObject * *aObjectValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetObjectValue(aObjectValue); } \ NS_IMETHOD GetStringValue(char * *aStringValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStringValue(aStringValue); } \ NS_IMETHOD GetPropertyCount(PRInt32 *aPropertyCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPropertyCount(aPropertyCount); } \ NS_IMETHOD GetProperties(jsdIProperty ***propArray, PRUint32 *length) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProperties(propArray, length); } \ NS_IMETHOD GetProperty(const char *name, jsdIProperty **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProperty(name, _retval); } \ NS_IMETHOD Refresh(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Refresh(); } \ NS_IMETHOD GetWrappedValue(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWrappedValue(); } #if 0 /* Use the code below as a template for the implementation class for this interface. */ /* Header file */ class _MYCLASS_ : public jsdIValue { public: NS_DECL_ISUPPORTS NS_DECL_JSDIVALUE _MYCLASS_(); virtual ~_MYCLASS_(); /* additional members */ }; /* Implementation file */ NS_IMPL_ISUPPORTS1(_MYCLASS_, jsdIValue) _MYCLASS_::_MYCLASS_() { NS_INIT_ISUPPORTS(); /* member initializers and constructor code */ } _MYCLASS_::~_MYCLASS_() { /* destructor code */ } /* [noscript] readonly attribute JSDContext JSDContext; */ NS_IMETHODIMP _MYCLASS_::GetJSDContext(JSDContext * *aJSDContext) { return NS_ERROR_NOT_IMPLEMENTED; } /* [noscript] readonly attribute JSDValue JSDValue; */ NS_IMETHODIMP _MYCLASS_::GetJSDValue(JSDValue * *aJSDValue) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute boolean isNative; */ NS_IMETHODIMP _MYCLASS_::GetIsNative(PRBool *aIsNative) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute boolean isNumber; */ NS_IMETHODIMP _MYCLASS_::GetIsNumber(PRBool *aIsNumber) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute boolean isPrimitive; */ NS_IMETHODIMP _MYCLASS_::GetIsPrimitive(PRBool *aIsPrimitive) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute unsigned long jsType; */ NS_IMETHODIMP _MYCLASS_::GetJsType(PRUint32 *aJsType) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute jsdIValue jsPrototype; */ NS_IMETHODIMP _MYCLASS_::GetJsPrototype(jsdIValue * *aJsPrototype) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute jsdIValue jsParent; */ NS_IMETHODIMP _MYCLASS_::GetJsParent(jsdIValue * *aJsParent) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute string jsClassName; */ NS_IMETHODIMP _MYCLASS_::GetJsClassName(char * *aJsClassName) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute jsdIValue jsConstructor; */ NS_IMETHODIMP _MYCLASS_::GetJsConstructor(jsdIValue * *aJsConstructor) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute string jsFunctionName; */ NS_IMETHODIMP _MYCLASS_::GetJsFunctionName(char * *aJsFunctionName) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute boolean booleanValue; */ NS_IMETHODIMP _MYCLASS_::GetBooleanValue(PRBool *aBooleanValue) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute double doubleValue; */ NS_IMETHODIMP _MYCLASS_::GetDoubleValue(double *aDoubleValue) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute long intValue; */ NS_IMETHODIMP _MYCLASS_::GetIntValue(PRInt32 *aIntValue) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute jsdIObject objectValue; */ NS_IMETHODIMP _MYCLASS_::GetObjectValue(jsdIObject * *aObjectValue) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute string stringValue; */ NS_IMETHODIMP _MYCLASS_::GetStringValue(char * *aStringValue) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute long propertyCount; */ NS_IMETHODIMP _MYCLASS_::GetPropertyCount(PRInt32 *aPropertyCount) { return NS_ERROR_NOT_IMPLEMENTED; } /* void getProperties ([array, size_is (length)] out jsdIProperty propArray, out unsigned long length); */ NS_IMETHODIMP _MYCLASS_::GetProperties(jsdIProperty ***propArray, PRUint32 *length) { return NS_ERROR_NOT_IMPLEMENTED; } /* jsdIProperty getProperty (in string name); */ NS_IMETHODIMP _MYCLASS_::GetProperty(const char *name, jsdIProperty **_retval) { return NS_ERROR_NOT_IMPLEMENTED; } /* void refresh (); */ NS_IMETHODIMP _MYCLASS_::Refresh() { return NS_ERROR_NOT_IMPLEMENTED; } /* void getWrappedValue (); */ NS_IMETHODIMP _MYCLASS_::GetWrappedValue() { return NS_ERROR_NOT_IMPLEMENTED; } /* End of implementation class template. */ #endif /* starting interface: jsdIObject */ #define JSDIOBJECT_IID_STR "d500e8b8-1dd1-11b2-89a1-cdf55d91cbbd" #define JSDIOBJECT_IID \ {0xd500e8b8, 0x1dd1, 0x11b2, \ { 0x89, 0xa1, 0xcd, 0xf5, 0x5d, 0x91, 0xcb, 0xbd }} class NS_NO_VTABLE jsdIObject : public nsISupports { public: NS_DEFINE_STATIC_IID_ACCESSOR(JSDIOBJECT_IID) /** * Properties specific to values which are also objects. * XXX We don't add roots for these yet, so make sure you hold on to the * jsdIValue from whence your jsdIObject instance came for at least as long as * you hold the jsdIObject. * XXX Maybe the jsClassName, jsConstructorName, and property related attribute/ * functions from jsdIValue should move to this interface. We could inherit from * jsdIValue or use interface flattening or something. */ /** Internal use only. */ /* [noscript] readonly attribute JSDContext JSDContext; */ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext) = 0; /** Internal use only. */ /* [noscript] readonly attribute JSDObject JSDObject; */ NS_IMETHOD GetJSDObject(JSDObject * *aJSDObject) = 0; /** * The URL (filename) that contains the script which caused this object * to be created. */ /* readonly attribute string creatorURL; */ NS_IMETHOD GetCreatorURL(char * *aCreatorURL) = 0; /** * Line number in the creatorURL where this object was created. */ /* readonly attribute unsigned long creatorLine; */ NS_IMETHOD GetCreatorLine(PRUint32 *aCreatorLine) = 0; /** * The URL (filename) that contains the script which defined the constructor * used to create this object. */ /* readonly attribute string constructorURL; */ NS_IMETHOD GetConstructorURL(char * *aConstructorURL) = 0; /** * Line number in the creatorURL where this object was created. */ /* readonly attribute unsigned long constructorLine; */ NS_IMETHOD GetConstructorLine(PRUint32 *aConstructorLine) = 0; /** * jsdIValue for this object. */ /* readonly attribute jsdIValue value; */ NS_IMETHOD GetValue(jsdIValue * *aValue) = 0; }; /* Use this macro when declaring classes that implement this interface. */ #define NS_DECL_JSDIOBJECT \ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext); \ NS_IMETHOD GetJSDObject(JSDObject * *aJSDObject); \ NS_IMETHOD GetCreatorURL(char * *aCreatorURL); \ NS_IMETHOD GetCreatorLine(PRUint32 *aCreatorLine); \ NS_IMETHOD GetConstructorURL(char * *aConstructorURL); \ NS_IMETHOD GetConstructorLine(PRUint32 *aConstructorLine); \ NS_IMETHOD GetValue(jsdIValue * *aValue); /* Use this macro to declare functions that forward the behavior of this interface to another object. */ #define NS_FORWARD_JSDIOBJECT(_to) \ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext) { return _to GetJSDContext(aJSDContext); } \ NS_IMETHOD GetJSDObject(JSDObject * *aJSDObject) { return _to GetJSDObject(aJSDObject); } \ NS_IMETHOD GetCreatorURL(char * *aCreatorURL) { return _to GetCreatorURL(aCreatorURL); } \ NS_IMETHOD GetCreatorLine(PRUint32 *aCreatorLine) { return _to GetCreatorLine(aCreatorLine); } \ NS_IMETHOD GetConstructorURL(char * *aConstructorURL) { return _to GetConstructorURL(aConstructorURL); } \ NS_IMETHOD GetConstructorLine(PRUint32 *aConstructorLine) { return _to GetConstructorLine(aConstructorLine); } \ NS_IMETHOD GetValue(jsdIValue * *aValue) { return _to GetValue(aValue); } /* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */ #define NS_FORWARD_SAFE_JSDIOBJECT(_to) \ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetJSDContext(aJSDContext); } \ NS_IMETHOD GetJSDObject(JSDObject * *aJSDObject) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetJSDObject(aJSDObject); } \ NS_IMETHOD GetCreatorURL(char * *aCreatorURL) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCreatorURL(aCreatorURL); } \ NS_IMETHOD GetCreatorLine(PRUint32 *aCreatorLine) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCreatorLine(aCreatorLine); } \ NS_IMETHOD GetConstructorURL(char * *aConstructorURL) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetConstructorURL(aConstructorURL); } \ NS_IMETHOD GetConstructorLine(PRUint32 *aConstructorLine) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetConstructorLine(aConstructorLine); } \ NS_IMETHOD GetValue(jsdIValue * *aValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetValue(aValue); } #if 0 /* Use the code below as a template for the implementation class for this interface. */ /* Header file */ class _MYCLASS_ : public jsdIObject { public: NS_DECL_ISUPPORTS NS_DECL_JSDIOBJECT _MYCLASS_(); virtual ~_MYCLASS_(); /* additional members */ }; /* Implementation file */ NS_IMPL_ISUPPORTS1(_MYCLASS_, jsdIObject) _MYCLASS_::_MYCLASS_() { NS_INIT_ISUPPORTS(); /* member initializers and constructor code */ } _MYCLASS_::~_MYCLASS_() { /* destructor code */ } /* [noscript] readonly attribute JSDContext JSDContext; */ NS_IMETHODIMP _MYCLASS_::GetJSDContext(JSDContext * *aJSDContext) { return NS_ERROR_NOT_IMPLEMENTED; } /* [noscript] readonly attribute JSDObject JSDObject; */ NS_IMETHODIMP _MYCLASS_::GetJSDObject(JSDObject * *aJSDObject) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute string creatorURL; */ NS_IMETHODIMP _MYCLASS_::GetCreatorURL(char * *aCreatorURL) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute unsigned long creatorLine; */ NS_IMETHODIMP _MYCLASS_::GetCreatorLine(PRUint32 *aCreatorLine) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute string constructorURL; */ NS_IMETHODIMP _MYCLASS_::GetConstructorURL(char * *aConstructorURL) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute unsigned long constructorLine; */ NS_IMETHODIMP _MYCLASS_::GetConstructorLine(PRUint32 *aConstructorLine) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute jsdIValue value; */ NS_IMETHODIMP _MYCLASS_::GetValue(jsdIValue * *aValue) { return NS_ERROR_NOT_IMPLEMENTED; } /* End of implementation class template. */ #endif /* starting interface: jsdIProperty */ #define JSDIPROPERTY_IID_STR "b8816e56-1dd1-11b2-81dc-8ba99a833d9e" #define JSDIPROPERTY_IID \ {0xb8816e56, 0x1dd1, 0x11b2, \ { 0x81, 0xdc, 0x8b, 0xa9, 0x9a, 0x83, 0x3d, 0x9e }} class NS_NO_VTABLE jsdIProperty : public jsdIEphemeral { public: NS_DEFINE_STATIC_IID_ACCESSOR(JSDIPROPERTY_IID) /** * Representation of a property of an object. When an instance is invalid, all * method and property access will result in a NS_UNAVAILABLE error. */ /** Internal use only. */ /* [noscript] readonly attribute JSDContext JSDContext; */ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext) = 0; /** Internal use only. */ /* [noscript] readonly attribute JSDProperty JSDProperty; */ NS_IMETHOD GetJSDProperty(JSDProperty * *aJSDProperty) = 0; /** * FLAG_* values must be kept in sync with JSDPD_* #defines in jsdebug.h. */ /** visible to for/in loop */ enum { FLAG_ENUMERATE = 1U }; /** assignment is error */ enum { FLAG_READONLY = 2U }; /** property cannot be deleted */ enum { FLAG_PERMANENT = 4U }; /** property has an alias id */ enum { FLAG_ALIAS = 8U }; /** argument to function */ enum { FLAG_ARGUMENT = 16U }; /** local variable in function */ enum { FLAG_VARIABLE = 32U }; /** exception occurred looking up property, value is exception */ enum { FLAG_EXCEPTION = 64U }; /** native getter returned JS_FALSE without throwing an exception */ enum { FLAG_ERROR = 128U }; /** found via explicit lookup (property defined elsewhere.) */ enum { FLAG_HINTED = 2048U }; /** FLAG_* values OR'd together, representing the flags for this property. */ /* readonly attribute unsigned long flags; */ NS_IMETHOD GetFlags(PRUint32 *aFlags) = 0; /** jsdIValue representing the alias for this property. */ /* readonly attribute jsdIValue alias; */ NS_IMETHOD GetAlias(jsdIValue * *aAlias) = 0; /** name for this property. */ /* readonly attribute jsdIValue name; */ NS_IMETHOD GetName(jsdIValue * *aName) = 0; /** value of this property. */ /* readonly attribute jsdIValue value; */ NS_IMETHOD GetValue(jsdIValue * *aValue) = 0; /** slot number if this property is a local variable or parameter. */ /* readonly attribute unsigned long varArgSlot; */ NS_IMETHOD GetVarArgSlot(PRUint32 *aVarArgSlot) = 0; }; /* Use this macro when declaring classes that implement this interface. */ #define NS_DECL_JSDIPROPERTY \ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext); \ NS_IMETHOD GetJSDProperty(JSDProperty * *aJSDProperty); \ NS_IMETHOD GetFlags(PRUint32 *aFlags); \ NS_IMETHOD GetAlias(jsdIValue * *aAlias); \ NS_IMETHOD GetName(jsdIValue * *aName); \ NS_IMETHOD GetValue(jsdIValue * *aValue); \ NS_IMETHOD GetVarArgSlot(PRUint32 *aVarArgSlot); /* Use this macro to declare functions that forward the behavior of this interface to another object. */ #define NS_FORWARD_JSDIPROPERTY(_to) \ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext) { return _to GetJSDContext(aJSDContext); } \ NS_IMETHOD GetJSDProperty(JSDProperty * *aJSDProperty) { return _to GetJSDProperty(aJSDProperty); } \ NS_IMETHOD GetFlags(PRUint32 *aFlags) { return _to GetFlags(aFlags); } \ NS_IMETHOD GetAlias(jsdIValue * *aAlias) { return _to GetAlias(aAlias); } \ NS_IMETHOD GetName(jsdIValue * *aName) { return _to GetName(aName); } \ NS_IMETHOD GetValue(jsdIValue * *aValue) { return _to GetValue(aValue); } \ NS_IMETHOD GetVarArgSlot(PRUint32 *aVarArgSlot) { return _to GetVarArgSlot(aVarArgSlot); } /* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */ #define NS_FORWARD_SAFE_JSDIPROPERTY(_to) \ NS_IMETHOD GetJSDContext(JSDContext * *aJSDContext) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetJSDContext(aJSDContext); } \ NS_IMETHOD GetJSDProperty(JSDProperty * *aJSDProperty) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetJSDProperty(aJSDProperty); } \ NS_IMETHOD GetFlags(PRUint32 *aFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFlags(aFlags); } \ NS_IMETHOD GetAlias(jsdIValue * *aAlias) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAlias(aAlias); } \ NS_IMETHOD GetName(jsdIValue * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \ NS_IMETHOD GetValue(jsdIValue * *aValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetValue(aValue); } \ NS_IMETHOD GetVarArgSlot(PRUint32 *aVarArgSlot) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVarArgSlot(aVarArgSlot); } #if 0 /* Use the code below as a template for the implementation class for this interface. */ /* Header file */ class _MYCLASS_ : public jsdIProperty { public: NS_DECL_ISUPPORTS NS_DECL_JSDIPROPERTY _MYCLASS_(); virtual ~_MYCLASS_(); /* additional members */ }; /* Implementation file */ NS_IMPL_ISUPPORTS1(_MYCLASS_, jsdIProperty) _MYCLASS_::_MYCLASS_() { NS_INIT_ISUPPORTS(); /* member initializers and constructor code */ } _MYCLASS_::~_MYCLASS_() { /* destructor code */ } /* [noscript] readonly attribute JSDContext JSDContext; */ NS_IMETHODIMP _MYCLASS_::GetJSDContext(JSDContext * *aJSDContext) { return NS_ERROR_NOT_IMPLEMENTED; } /* [noscript] readonly attribute JSDProperty JSDProperty; */ NS_IMETHODIMP _MYCLASS_::GetJSDProperty(JSDProperty * *aJSDProperty) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute unsigned long flags; */ NS_IMETHODIMP _MYCLASS_::GetFlags(PRUint32 *aFlags) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute jsdIValue alias; */ NS_IMETHODIMP _MYCLASS_::GetAlias(jsdIValue * *aAlias) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute jsdIValue name; */ NS_IMETHODIMP _MYCLASS_::GetName(jsdIValue * *aName) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute jsdIValue value; */ NS_IMETHODIMP _MYCLASS_::GetValue(jsdIValue * *aValue) { return NS_ERROR_NOT_IMPLEMENTED; } /* readonly attribute unsigned long varArgSlot; */ NS_IMETHODIMP _MYCLASS_::GetVarArgSlot(PRUint32 *aVarArgSlot) { return NS_ERROR_NOT_IMPLEMENTED; } /* End of implementation class template. */ #endif #endif /* __gen_jsdIDebuggerService_h__ */ .