/* * DO NOT EDIT! This is a generated file. * * XPCOM IDL (XPIDL) definition for VirtualBox Main API (COM interfaces) * generated from XIDL (XML interface definition). * * Source : src/VBox/Main/idl/VirtualBox.xidl * Generator : src/VBox/Main/idl/xpcidl.xsl * * This file contains portions from the following Mozilla XPCOM files: * xpcom/include/xpcom/nsID.h * xpcom/include/nsIException.h * xpcom/include/nsprpub/prtypes.h * xpcom/include/xpcom/nsISupportsBase.h * * These files were originally triple-licensed (MPL/GPL2/LGPL2.1). Sun * elects to distribute this derived work under the LGPL2.1 only. */ /* * Copyright (C) 2008-2010 Oracle Corporation * * This file is part of a free software library; you can redistribute * it and/or modify it under the terms of the GNU Lesser General * Public License version 2.1 as published by the Free Software * Foundation and shipped in the "COPYING" file with this library. * The library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY of any kind. * * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if * any license choice other than GPL or LGPL is available it will * apply instead, Oracle elects to use only the Lesser General Public * License version 2.1 (LGPLv2) at this time for any software where * a choice of LGPL license versions is made available with the * language indicating that LGPLv2 or any later version may be used, * or where a choice of which version of the LGPL is applied is * otherwise unspecified. */ #ifndef ___VirtualBox_CXPCOM_h #define ___VirtualBox_CXPCOM_h #ifdef __cplusplus # include "VirtualBox_XPCOM.h" #else /* !__cplusplus */ #include <stddef.h> #include "wchar.h" #if defined(WIN32) #define PR_EXPORT(__type) extern __declspec(dllexport) __type #define PR_EXPORT_DATA(__type) extern __declspec(dllexport) __type #define PR_IMPORT(__type) __declspec(dllimport) __type #define PR_IMPORT_DATA(__type) __declspec(dllimport) __type #define PR_EXTERN(__type) extern __declspec(dllexport) __type #define PR_IMPLEMENT(__type) __declspec(dllexport) __type #define PR_EXTERN_DATA(__type) extern __declspec(dllexport) __type #define PR_IMPLEMENT_DATA(__type) __declspec(dllexport) __type #define PR_CALLBACK #define PR_CALLBACK_DECL #define PR_STATIC_CALLBACK(__x) static __x #elif defined(XP_BEOS) #define PR_EXPORT(__type) extern __declspec(dllexport) __type #define PR_EXPORT_DATA(__type) extern __declspec(dllexport) __type #define PR_IMPORT(__type) extern __declspec(dllexport) __type #define PR_IMPORT_DATA(__type) extern __declspec(dllexport) __type #define PR_EXTERN(__type) extern __declspec(dllexport) __type #define PR_IMPLEMENT(__type) __declspec(dllexport) __type #define PR_EXTERN_DATA(__type) extern __declspec(dllexport) __type #define PR_IMPLEMENT_DATA(__type) __declspec(dllexport) __type #define PR_CALLBACK #define PR_CALLBACK_DECL #define PR_STATIC_CALLBACK(__x) static __x #elif defined(WIN16) #define PR_CALLBACK_DECL __cdecl #if defined(_WINDLL) #define PR_EXPORT(__type) extern __type _cdecl _export _loadds #define PR_IMPORT(__type) extern __type _cdecl _export _loadds #define PR_EXPORT_DATA(__type) extern __type _export #define PR_IMPORT_DATA(__type) extern __type _export #define PR_EXTERN(__type) extern __type _cdecl _export _loadds #define PR_IMPLEMENT(__type) __type _cdecl _export _loadds #define PR_EXTERN_DATA(__type) extern __type _export #define PR_IMPLEMENT_DATA(__type) __type _export #define PR_CALLBACK __cdecl __loadds #define PR_STATIC_CALLBACK(__x) static __x PR_CALLBACK #else /* this must be .EXE */ #define PR_EXPORT(__type) extern __type _cdecl _export #define PR_IMPORT(__type) extern __type _cdecl _export #define PR_EXPORT_DATA(__type) extern __type _export #define PR_IMPORT_DATA(__type) extern __type _export #define PR_EXTERN(__type) extern __type _cdecl _export #define PR_IMPLEMENT(__type) __type _cdecl _export #define PR_EXTERN_DATA(__type) extern __type _export #define PR_IMPLEMENT_DATA(__type) __type _export #define PR_CALLBACK __cdecl __loadds #define PR_STATIC_CALLBACK(__x) __x PR_CALLBACK #endif /* _WINDLL */ #elif defined(XP_MAC) #define PR_EXPORT(__type) extern __declspec(export) __type #define PR_EXPORT_DATA(__type) extern __declspec(export) __type #define PR_IMPORT(__type) extern __declspec(export) __type #define PR_IMPORT_DATA(__type) extern __declspec(export) __type #define PR_EXTERN(__type) extern __declspec(export) __type #define PR_IMPLEMENT(__type) __declspec(export) __type #define PR_EXTERN_DATA(__type) extern __declspec(export) __type #define PR_IMPLEMENT_DATA(__type) __declspec(export) __type #define PR_CALLBACK #define PR_CALLBACK_DECL #define PR_STATIC_CALLBACK(__x) static __x #elif defined(XP_OS2) && defined(__declspec) #define PR_EXPORT(__type) extern __declspec(dllexport) __type #define PR_EXPORT_DATA(__type) extern __declspec(dllexport) __type #define PR_IMPORT(__type) __declspec(dllimport) __type #define PR_IMPORT_DATA(__type) __declspec(dllimport) __type #define PR_EXTERN(__type) extern __declspec(dllexport) __type #define PR_IMPLEMENT(__type) __declspec(dllexport) __type #define PR_EXTERN_DATA(__type) extern __declspec(dllexport) __type #define PR_IMPLEMENT_DATA(__type) __declspec(dllexport) __type #define PR_CALLBACK #define PR_CALLBACK_DECL #define PR_STATIC_CALLBACK(__x) static __x #elif defined(XP_OS2_VACPP) #define PR_EXPORT(__type) extern __type #define PR_EXPORT_DATA(__type) extern __type #define PR_IMPORT(__type) extern __type #define PR_IMPORT_DATA(__type) extern __type #define PR_EXTERN(__type) extern __type #define PR_IMPLEMENT(__type) __type #define PR_EXTERN_DATA(__type) extern __type #define PR_IMPLEMENT_DATA(__type) __type #define PR_CALLBACK _Optlink #define PR_CALLBACK_DECL #define PR_STATIC_CALLBACK(__x) static __x PR_CALLBACK #else /* Unix */ # ifdef VBOX_HAVE_VISIBILITY_HIDDEN # define PR_EXPORT(__type) __attribute__((visibility("default"))) extern __type # define PR_EXPORT_DATA(__type) __attribute__((visibility("default"))) extern __type # define PR_IMPORT(__type) extern __type # define PR_IMPORT_DATA(__type) extern __type # define PR_EXTERN(__type) __attribute__((visibility("default"))) extern __type # define PR_IMPLEMENT(__type) __attribute__((visibility("default"))) __type # define PR_EXTERN_DATA(__type) __attribute__((visibility("default"))) extern __type # define PR_IMPLEMENT_DATA(__type) __attribute__((visibility("default"))) __type # define PR_CALLBACK # define PR_CALLBACK_DECL # define PR_STATIC_CALLBACK(__x) static __x # else # define PR_EXPORT(__type) extern __type # define PR_EXPORT_DATA(__type) extern __type # define PR_IMPORT(__type) extern __type # define PR_IMPORT_DATA(__type) extern __type # define PR_EXTERN(__type) extern __type # define PR_IMPLEMENT(__type) __type # define PR_EXTERN_DATA(__type) extern __type # define PR_IMPLEMENT_DATA(__type) __type # define PR_CALLBACK # define PR_CALLBACK_DECL # define PR_STATIC_CALLBACK(__x) static __x # endif #endif #if defined(_NSPR_BUILD_) #define NSPR_API(__type) PR_EXPORT(__type) #define NSPR_DATA_API(__type) PR_EXPORT_DATA(__type) #else #define NSPR_API(__type) PR_IMPORT(__type) #define NSPR_DATA_API(__type) PR_IMPORT_DATA(__type) #endif typedef unsigned char PRUint8; #if (defined(HPUX) && defined(__cplusplus) \ && !defined(__GNUC__) && __cplusplus < 199707L) \ || (defined(SCO) && defined(__cplusplus) \ && !defined(__GNUC__) && __cplusplus == 1L) typedef char PRInt8; #else typedef signed char PRInt8; #endif #define PR_INT8_MAX 127 #define PR_INT8_MIN (-128) #define PR_UINT8_MAX 255U typedef unsigned short PRUint16; typedef short PRInt16; #define PR_INT16_MAX 32767 #define PR_INT16_MIN (-32768) #define PR_UINT16_MAX 65535U typedef unsigned int PRUint32; typedef int PRInt32; #define PR_INT32(x) x #define PR_UINT32(x) x ## U #define PR_INT32_MAX PR_INT32(2147483647) #define PR_INT32_MIN (-PR_INT32_MAX - 1) #define PR_UINT32_MAX PR_UINT32(4294967295) typedef long PRInt64; typedef unsigned long PRUint64; typedef int PRIntn; typedef unsigned int PRUintn; typedef double PRFloat64; typedef size_t PRSize; typedef ptrdiff_t PRPtrdiff; typedef unsigned long PRUptrdiff; typedef PRIntn PRBool; #define PR_TRUE 1 #define PR_FALSE 0 typedef PRUint8 PRPackedBool; /* ** Status code used by some routines that have a single point of failure or ** special status return. */ typedef enum { PR_FAILURE = -1, PR_SUCCESS = 0 } PRStatus; #ifndef __PRUNICHAR__ #define __PRUNICHAR__ #if defined(WIN32) || defined(XP_MAC) typedef wchar_t PRUnichar; #else typedef PRUint16 PRUnichar; #endif #endif typedef long PRWord; typedef unsigned long PRUword; #define nsnull 0 typedef PRUint32 nsresult; #if defined(__GNUC__) && (__GNUC__ > 2) #define NS_LIKELY(x) (__builtin_expect((x), 1)) #define NS_UNLIKELY(x) (__builtin_expect((x), 0)) #else #define NS_LIKELY(x) (x) #define NS_UNLIKELY(x) (x) #endif #define NS_FAILED(_nsresult) (NS_UNLIKELY((_nsresult) & 0x80000000)) #define NS_SUCCEEDED(_nsresult) (NS_LIKELY(!((_nsresult) & 0x80000000))) #ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP # define PR_IntervalNow VBoxNsprPR_IntervalNow # define PR_TicksPerSecond VBoxNsprPR_TicksPerSecond # define PR_SecondsToInterval VBoxNsprPR_SecondsToInterval # define PR_MillisecondsToInterval VBoxNsprPR_MillisecondsToInterval # define PR_MicrosecondsToInterval VBoxNsprPR_MicrosecondsToInterval # define PR_IntervalToSeconds VBoxNsprPR_IntervalToSeconds # define PR_IntervalToMilliseconds VBoxNsprPR_IntervalToMilliseconds # define PR_IntervalToMicroseconds VBoxNsprPR_IntervalToMicroseconds # define PR_EnterMonitor VBoxNsprPR_EnterMonitor # define PR_ExitMonitor VBoxNsprPR_ExitMonitor # define PR_Notify VBoxNsprPR_Notify # define PR_NotifyAll VBoxNsprPR_NotifyAll # define PR_Wait VBoxNsprPR_Wait # define PR_NewMonitor VBoxNsprPR_NewMonitor # define PR_DestroyMonitor VBoxNsprPR_DestroyMonitor #endif /* VBOX_WITH_XPCOM_NAMESPACE_CLEANUP */ typedef PRUint32 PRIntervalTime; #define PR_INTERVAL_MIN 1000UL #define PR_INTERVAL_MAX 100000UL #define PR_INTERVAL_NO_WAIT 0UL #define PR_INTERVAL_NO_TIMEOUT 0xffffffffUL NSPR_API(PRIntervalTime) PR_IntervalNow(void); NSPR_API(PRUint32) PR_TicksPerSecond(void); NSPR_API(PRIntervalTime) PR_SecondsToInterval(PRUint32 seconds); NSPR_API(PRIntervalTime) PR_MillisecondsToInterval(PRUint32 milli); NSPR_API(PRIntervalTime) PR_MicrosecondsToInterval(PRUint32 micro); NSPR_API(PRUint32) PR_IntervalToSeconds(PRIntervalTime ticks); NSPR_API(PRUint32) PR_IntervalToMilliseconds(PRIntervalTime ticks); NSPR_API(PRUint32) PR_IntervalToMicroseconds(PRIntervalTime ticks); typedef struct PRMonitor PRMonitor; NSPR_API(PRMonitor*) PR_NewMonitor(void); NSPR_API(void) PR_DestroyMonitor(PRMonitor *mon); NSPR_API(void) PR_EnterMonitor(PRMonitor *mon); NSPR_API(PRStatus) PR_ExitMonitor(PRMonitor *mon); NSPR_API(PRStatus) PR_Wait(PRMonitor *mon, PRIntervalTime ticks); NSPR_API(PRStatus) PR_Notify(PRMonitor *mon); NSPR_API(PRStatus) PR_NotifyAll(PRMonitor *mon); #ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP # define PR_CreateThread VBoxNsprPR_CreateThread # define PR_JoinThread VBoxNsprPR_JoinThread # define PR_Sleep VBoxNsprPR_Sleep # define PR_GetCurrentThread VBoxNsprPR_GetCurrentThread # define PR_GetThreadState VBoxNsprPR_GetThreadState # define PR_SetThreadPrivate VBoxNsprPR_SetThreadPrivate # define PR_GetThreadPrivate VBoxNsprPR_GetThreadPrivate # define PR_NewThreadPrivateIndex VBoxNsprPR_NewThreadPrivateIndex # define PR_GetThreadPriority VBoxNsprPR_GetThreadPriority # define PR_SetThreadPriority VBoxNsprPR_SetThreadPriority # define PR_Interrupt VBoxNsprPR_Interrupt # define PR_ClearInterrupt VBoxNsprPR_ClearInterrupt # define PR_BlockInterrupt VBoxNsprPR_BlockInterrupt # define PR_UnblockInterrupt VBoxNsprPR_UnblockInterrupt # define PR_GetThreadScope VBoxNsprPR_GetThreadScope # define PR_GetThreadType VBoxNsprPR_GetThreadType #endif /* VBOX_WITH_XPCOM_NAMESPACE_CLEANUP */ typedef struct PRThread PRThread; typedef struct PRThreadStack PRThreadStack; typedef enum PRThreadType { PR_USER_THREAD, PR_SYSTEM_THREAD } PRThreadType; typedef enum PRThreadScope { PR_LOCAL_THREAD, PR_GLOBAL_THREAD, PR_GLOBAL_BOUND_THREAD } PRThreadScope; typedef enum PRThreadState { PR_JOINABLE_THREAD, PR_UNJOINABLE_THREAD } PRThreadState; typedef enum PRThreadPriority { PR_PRIORITY_FIRST = 0, /* just a placeholder */ PR_PRIORITY_LOW = 0, /* the lowest possible priority */ PR_PRIORITY_NORMAL = 1, /* most common expected priority */ PR_PRIORITY_HIGH = 2, /* slightly more aggressive scheduling */ PR_PRIORITY_URGENT = 3, /* it does little good to have more than one */ PR_PRIORITY_LAST = 3 /* this is just a placeholder */ } PRThreadPriority; NSPR_API(PRThread*) PR_CreateThread(PRThreadType type, void (PR_CALLBACK *start)(void *arg), void *arg, PRThreadPriority priority, PRThreadScope scope, PRThreadState state, PRUint32 stackSize); NSPR_API(PRStatus) PR_JoinThread(PRThread *thread); NSPR_API(PRThread*) PR_GetCurrentThread(void); #ifndef NO_NSPR_10_SUPPORT #define PR_CurrentThread() PR_GetCurrentThread() /* for nspr1.0 compat. */ #endif /* NO_NSPR_10_SUPPORT */ NSPR_API(PRThreadPriority) PR_GetThreadPriority(const PRThread *thread); NSPR_API(void) PR_SetThreadPriority(PRThread *thread, PRThreadPriority priority); typedef void (PR_CALLBACK *PRThreadPrivateDTOR)(void *priv); NSPR_API(PRStatus) PR_NewThreadPrivateIndex( PRUintn *newIndex, PRThreadPrivateDTOR destructor); NSPR_API(PRStatus) PR_SetThreadPrivate(PRUintn tpdIndex, void *priv); NSPR_API(void*) PR_GetThreadPrivate(PRUintn tpdIndex); NSPR_API(PRStatus) PR_Interrupt(PRThread *thread); NSPR_API(void) PR_ClearInterrupt(void); NSPR_API(void) PR_BlockInterrupt(void); NSPR_API(void) PR_UnblockInterrupt(void); NSPR_API(PRStatus) PR_Sleep(PRIntervalTime ticks); NSPR_API(PRThreadScope) PR_GetThreadScope(const PRThread *thread); NSPR_API(PRThreadType) PR_GetThreadType(const PRThread *thread); NSPR_API(PRThreadState) PR_GetThreadState(const PRThread *thread); #ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP # define PR_DestroyLock VBoxNsprPR_DestroyLock # define PR_Lock VBoxNsprPR_Lock # define PR_NewLock VBoxNsprPR_NewLock # define PR_Unlock VBoxNsprPR_Unlock #endif /* VBOX_WITH_XPCOM_NAMESPACE_CLEANUP */ typedef struct PRLock PRLock; NSPR_API(PRLock*) PR_NewLock(void); NSPR_API(void) PR_DestroyLock(PRLock *lock); NSPR_API(void) PR_Lock(PRLock *lock); NSPR_API(PRStatus) PR_Unlock(PRLock *lock); #ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP # define PR_NewCondVar VBoxNsprPR_NewCondVar # define PR_DestroyCondVar VBoxNsprPR_DestroyCondVar # define PR_WaitCondVar VBoxNsprPR_WaitCondVar # define PR_NotifyCondVar VBoxNsprPR_NotifyCondVar # define PR_NotifyAllCondVar VBoxNsprPR_NotifyAllCondVar #endif /* VBOX_WITH_XPCOM_NAMESPACE_CLEANUP */ typedef struct PRCondVar PRCondVar; NSPR_API(PRCondVar*) PR_NewCondVar(PRLock *lock); NSPR_API(void) PR_DestroyCondVar(PRCondVar *cvar); NSPR_API(PRStatus) PR_WaitCondVar(PRCondVar *cvar, PRIntervalTime timeout); NSPR_API(PRStatus) PR_NotifyCondVar(PRCondVar *cvar); NSPR_API(PRStatus) PR_NotifyAllCondVar(PRCondVar *cvar); typedef struct PRCListStr PRCList; struct PRCListStr { PRCList *next; PRCList *prev; }; #ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP # define PL_DestroyEvent VBoxNsplPL_DestroyEvent # define PL_HandleEvent VBoxNsplPL_HandleEvent # define PL_InitEvent VBoxNsplPL_InitEvent # define PL_CreateEventQueue VBoxNsplPL_CreateEventQueue # define PL_CreateMonitoredEventQueue VBoxNsplPL_CreateMonitoredEventQueue # define PL_CreateNativeEventQueue VBoxNsplPL_CreateNativeEventQueue # define PL_DequeueEvent VBoxNsplPL_DequeueEvent # define PL_DestroyEventQueue VBoxNsplPL_DestroyEventQueue # define PL_EventAvailable VBoxNsplPL_EventAvailable # define PL_EventLoop VBoxNsplPL_EventLoop # define PL_GetEvent VBoxNsplPL_GetEvent # define PL_GetEventOwner VBoxNsplPL_GetEventOwner # define PL_GetEventQueueMonitor VBoxNsplPL_GetEventQueueMonitor # define PL_GetEventQueueSelectFD VBoxNsplPL_GetEventQueueSelectFD # define PL_MapEvents VBoxNsplPL_MapEvents # define PL_PostEvent VBoxNsplPL_PostEvent # define PL_PostSynchronousEvent VBoxNsplPL_PostSynchronousEvent # define PL_ProcessEventsBeforeID VBoxNsplPL_ProcessEventsBeforeID # define PL_ProcessPendingEvents VBoxNsplPL_ProcessPendingEvents # define PL_RegisterEventIDFunc VBoxNsplPL_RegisterEventIDFunc # define PL_RevokeEvents VBoxNsplPL_RevokeEvents # define PL_UnregisterEventIDFunc VBoxNsplPL_UnregisterEventIDFunc # define PL_WaitForEvent VBoxNsplPL_WaitForEvent # define PL_IsQueueNative VBoxNsplPL_IsQueueNative # define PL_IsQueueOnCurrentThread VBoxNsplPL_IsQueueOnCurrentThread # define PL_FavorPerformanceHint VBoxNsplPL_FavorPerformanceHint #endif /* VBOX_WITH_XPCOM_NAMESPACE_CLEANUP */ typedef struct PLEvent PLEvent; typedef struct PLEventQueue PLEventQueue; PR_EXTERN(PLEventQueue*) PL_CreateEventQueue(const char* name, PRThread* handlerThread); PR_EXTERN(PLEventQueue *) PL_CreateNativeEventQueue( const char *name, PRThread *handlerThread ); PR_EXTERN(PLEventQueue *) PL_CreateMonitoredEventQueue( const char *name, PRThread *handlerThread ); PR_EXTERN(void) PL_DestroyEventQueue(PLEventQueue* self); PR_EXTERN(PRMonitor*) PL_GetEventQueueMonitor(PLEventQueue* self); #define PL_ENTER_EVENT_QUEUE_MONITOR(queue) \ PR_EnterMonitor(PL_GetEventQueueMonitor(queue)) #define PL_EXIT_EVENT_QUEUE_MONITOR(queue) \ PR_ExitMonitor(PL_GetEventQueueMonitor(queue)) PR_EXTERN(PRStatus) PL_PostEvent(PLEventQueue* self, PLEvent* event); PR_EXTERN(void*) PL_PostSynchronousEvent(PLEventQueue* self, PLEvent* event); PR_EXTERN(PLEvent*) PL_GetEvent(PLEventQueue* self); PR_EXTERN(PRBool) PL_EventAvailable(PLEventQueue* self); typedef void (PR_CALLBACK *PLEventFunProc)(PLEvent* event, void* data, PLEventQueue* queue); PR_EXTERN(void) PL_MapEvents(PLEventQueue* self, PLEventFunProc fun, void* data); PR_EXTERN(void) PL_RevokeEvents(PLEventQueue* self, void* owner); PR_EXTERN(void) PL_ProcessPendingEvents(PLEventQueue* self); PR_EXTERN(PLEvent*) PL_WaitForEvent(PLEventQueue* self); PR_EXTERN(void) PL_EventLoop(PLEventQueue* self); PR_EXTERN(PRInt32) PL_GetEventQueueSelectFD(PLEventQueue* self); PR_EXTERN(PRBool) PL_IsQueueOnCurrentThread( PLEventQueue *queue ); PR_EXTERN(PRBool) PL_IsQueueNative(PLEventQueue *queue); typedef void* (PR_CALLBACK *PLHandleEventProc)(PLEvent* self); typedef void (PR_CALLBACK *PLDestroyEventProc)(PLEvent* self); PR_EXTERN(void) PL_InitEvent(PLEvent* self, void* owner, PLHandleEventProc handler, PLDestroyEventProc destructor); PR_EXTERN(void*) PL_GetEventOwner(PLEvent* self); PR_EXTERN(void) PL_HandleEvent(PLEvent* self); PR_EXTERN(void) PL_DestroyEvent(PLEvent* self); PR_EXTERN(void) PL_DequeueEvent(PLEvent* self, PLEventQueue* queue); PR_EXTERN(void) PL_FavorPerformanceHint(PRBool favorPerformanceOverEventStarvation, PRUint32 starvationDelay); struct PLEvent { PRCList link; PLHandleEventProc handler; PLDestroyEventProc destructor; void* owner; void* synchronousResult; PRLock* lock; PRCondVar* condVar; PRBool handled; #ifdef PL_POST_TIMINGS PRIntervalTime postTime; #endif #ifdef XP_UNIX unsigned long id; #endif /* XP_UNIX */ /* other fields follow... */ }; #if defined(XP_WIN) || defined(XP_OS2) PR_EXTERN(HWND) PL_GetNativeEventReceiverWindow( PLEventQueue *eqp ); #endif /* XP_WIN || XP_OS2 */ #ifdef XP_UNIX PR_EXTERN(PRInt32) PL_ProcessEventsBeforeID(PLEventQueue *aSelf, unsigned long aID); typedef unsigned long (PR_CALLBACK *PLGetEventIDFunc)(void *aClosure); PR_EXTERN(void) PL_RegisterEventIDFunc(PLEventQueue *aSelf, PLGetEventIDFunc aFunc, void *aClosure); PR_EXTERN(void) PL_UnregisterEventIDFunc(PLEventQueue *aSelf); #endif /* XP_UNIX */ /* Standard "it worked" return value */ #define NS_OK 0 #define NS_ERROR_BASE ((nsresult) 0xC1F30000) /* Returned when an instance is not initialized */ #define NS_ERROR_NOT_INITIALIZED (NS_ERROR_BASE + 1) /* Returned when an instance is already initialized */ #define NS_ERROR_ALREADY_INITIALIZED (NS_ERROR_BASE + 2) /* Returned by a not implemented function */ #define NS_ERROR_NOT_IMPLEMENTED ((nsresult) 0x80004001L) /* Returned when a given interface is not supported. */ #define NS_NOINTERFACE ((nsresult) 0x80004002L) #define NS_ERROR_NO_INTERFACE NS_NOINTERFACE #define NS_ERROR_INVALID_POINTER ((nsresult) 0x80004003L) #define NS_ERROR_NULL_POINTER NS_ERROR_INVALID_POINTER /* Returned when a function aborts */ #define NS_ERROR_ABORT ((nsresult) 0x80004004L) /* Returned when a function fails */ #define NS_ERROR_FAILURE ((nsresult) 0x80004005L) /* Returned when an unexpected error occurs */ #define NS_ERROR_UNEXPECTED ((nsresult) 0x8000ffffL) /* Returned when a memory allocation fails */ #define NS_ERROR_OUT_OF_MEMORY ((nsresult) 0x8007000eL) /* Returned when an illegal value is passed */ #define NS_ERROR_ILLEGAL_VALUE ((nsresult) 0x80070057L) #define NS_ERROR_INVALID_ARG NS_ERROR_ILLEGAL_VALUE /* Returned when a class doesn't allow aggregation */ #define NS_ERROR_NO_AGGREGATION ((nsresult) 0x80040110L) /* Returned when an operation can't complete due to an unavailable resource */ #define NS_ERROR_NOT_AVAILABLE ((nsresult) 0x80040111L) /* Returned when a class is not registered */ #define NS_ERROR_FACTORY_NOT_REGISTERED ((nsresult) 0x80040154L) /* Returned when a class cannot be registered, but may be tried again later */ #define NS_ERROR_FACTORY_REGISTER_AGAIN ((nsresult) 0x80040155L) /* Returned when a dynamically loaded factory couldn't be found */ #define NS_ERROR_FACTORY_NOT_LOADED ((nsresult) 0x800401f8L) /* Returned when a factory doesn't support signatures */ #define NS_ERROR_FACTORY_NO_SIGNATURE_SUPPORT \ (NS_ERROR_BASE + 0x101) /* Returned when a factory already is registered */ #define NS_ERROR_FACTORY_EXISTS (NS_ERROR_BASE + 0x100) /** * An "interface id" which can be used to uniquely identify a given * interface. * A "unique identifier". This is modeled after OSF DCE UUIDs. */ struct nsID { PRUint32 m0; PRUint16 m1; PRUint16 m2; PRUint8 m3[8]; }; typedef struct nsID nsID; typedef nsID nsIID; struct nsISupports; /* forward declaration */ struct nsIStackFrame; /* forward declaration */ struct nsIException; /* forward declaration */ typedef struct nsISupports nsISupports; /* forward declaration */ typedef struct nsIStackFrame nsIStackFrame; /* forward declaration */ typedef struct nsIException nsIException; /* forward declaration */ /** * IID for the nsISupports interface * {00000000-0000-0000-c000-000000000046} * * To maintain binary compatibility with COM's IUnknown, we define the IID * of nsISupports to be the same as that of COM's IUnknown. */ #define NS_ISUPPORTS_IID \ { 0x00000000, 0x0000, 0x0000, \ {0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} } /** * Reference count values * * This is the return type for AddRef() and Release() in nsISupports. * IUnknown of COM returns an unsigned long from equivalent functions. * The following ifdef exists to maintain binary compatibility with * IUnknown. */ /** * Basic component object model interface. Objects which implement * this interface support runtime interface discovery (QueryInterface) * and a reference counted memory model (AddRef/Release). This is * modelled after the win32 IUnknown API. */ struct nsISupports_vtbl { /** * @name Methods */ /** * A run time mechanism for interface discovery. * @param aIID [in] A requested interface IID * @param aInstancePtr [out] A pointer to an interface pointer to * receive the result. * @return NS_OK if the interface is supported by the associated * instance, NS_NOINTERFACE if it is not. * NS_ERROR_INVALID_POINTER if aInstancePtr is NULL. */ nsresult (*QueryInterface)(nsISupports *pThis, const nsID *iid, void **resultp); /** * Increases the reference count for this interface. * The associated instance will not be deleted unless * the reference count is returned to zero. * * @return The resulting reference count. */ nsresult (*AddRef)(nsISupports *pThis); /** * Decreases the reference count for this interface. * Generally, if the reference count returns to zero, * the associated instance is deleted. * * @return The resulting reference count. */ nsresult (*Release)(nsISupports *pThis); }; struct nsISupports { struct nsISupports_vtbl *vtbl; }; /* starting interface: nsIException */ #define NS_IEXCEPTION_IID_STR "f3a8d3b4-c424-4edc-8bf6-8974c983ba78" #define NS_IEXCEPTION_IID \ {0xf3a8d3b4, 0xc424, 0x4edc, \ { 0x8b, 0xf6, 0x89, 0x74, 0xc9, 0x83, 0xba, 0x78 }} struct nsIException_vtbl { /* Methods from the Class nsISupports */ struct nsISupports_vtbl nsisupports; /* readonly attribute string message; */ nsresult (*GetMessage)(nsIException *pThis, PRUnichar * *aMessage); /* readonly attribute nsresult (*result; */ nsresult (*GetResult)(nsIException *pThis, nsresult *aResult); /* readonly attribute string name; */ nsresult (*GetName)(nsIException *pThis, PRUnichar * *aName); /* readonly attribute string filename; */ nsresult (*GetFilename)(nsIException *pThis, PRUnichar * *aFilename); /* readonly attribute PRUint32 lineNumber; */ nsresult (*GetLineNumber)(nsIException *pThis, PRUint32 *aLineNumber); /* readonly attribute PRUint32 columnNumber; */ nsresult (*GetColumnNumber)(nsIException *pThis, PRUint32 *aColumnNumber); /* readonly attribute nsIStackFrame location; */ nsresult (*GetLocation)(nsIException *pThis, nsIStackFrame * *aLocation); /* readonly attribute nsIException inner; */ nsresult (*GetInner)(nsIException *pThis, nsIException * *aInner); /* readonly attribute nsISupports data; */ nsresult (*GetData)(nsIException *pThis, nsISupports * *aData); /* string toString (); */ nsresult (*ToString)(nsIException *pThis, PRUnichar **_retval); }; struct nsIException { struct nsIException_vtbl *vtbl; }; /* starting interface: nsIStackFrame */ #define NS_ISTACKFRAME_IID_STR "91d82105-7c62-4f8b-9779-154277c0ee90" #define NS_ISTACKFRAME_IID \ {0x91d82105, 0x7c62, 0x4f8b, \ { 0x97, 0x79, 0x15, 0x42, 0x77, 0xc0, 0xee, 0x90 }} struct nsIStackFrame_vtbl { /* Methods from the Class nsISupports */ struct nsISupports_vtbl nsisupports; /* readonly attribute PRUint32 language; */ nsresult (*GetLanguage)(nsIStackFrame *pThis, PRUint32 *aLanguage); /* readonly attribute string languageName; */ nsresult (*GetLanguageName)(nsIStackFrame *pThis, PRUnichar * *aLanguageName); /* readonly attribute string filename; */ nsresult (*GetFilename)(nsIStackFrame *pThis, PRUnichar * *aFilename); /* readonly attribute string name; */ nsresult (*GetName)(nsIStackFrame *pThis, PRUnichar * *aName); /* readonly attribute PRInt32 lineNumber; */ nsresult (*GetLineNumber)(nsIStackFrame *pThis, PRInt32 *aLineNumber); /* readonly attribute string sourceLine; */ nsresult (*GetSourceLine)(nsIStackFrame *pThis, PRUnichar * *aSourceLine); /* readonly attribute nsIStackFrame caller; */ nsresult (*GetCaller)(nsIStackFrame *pThis, nsIStackFrame * *aCaller); /* string toString (); */ nsresult (*ToString)(nsIStackFrame *pThis, PRUnichar **_retval); }; struct nsIStackFrame { struct nsIStackFrame_vtbl *vtbl; }; /* starting interface: nsIEventTarget */ #define NS_IEVENTTARGET_IID_STR "ea99ad5b-cc67-4efb-97c9-2ef620a59f2a" #define NS_IEVENTTARGET_IID \ {0xea99ad5b, 0xcc67, 0x4efb, \ { 0x97, 0xc9, 0x2e, 0xf6, 0x20, 0xa5, 0x9f, 0x2a }} struct nsIEventTarget; typedef struct nsIEventTarget nsIEventTarget; struct nsIEventTarget_vtbl { struct nsISupports_vtbl nsisupports; nsresult (*PostEvent)(nsIEventTarget *pThis, PLEvent * aEvent); nsresult (*IsOnCurrentThread)(nsIEventTarget *pThis, PRBool *_retval); }; struct nsIEventTarget { struct nsIEventTarget_vtbl *vtbl; }; /* starting interface: nsIEventQueue */ #define NS_IEVENTQUEUE_IID_STR "176afb41-00a4-11d3-9f2a-00400553eef0" #define NS_IEVENTQUEUE_IID \ {0x176afb41, 0x00a4, 0x11d3, \ { 0x9f, 0x2a, 0x00, 0x40, 0x05, 0x53, 0xee, 0xf0 }} struct nsIEventQueue; typedef struct nsIEventQueue nsIEventQueue; struct nsIEventQueue_vtbl { struct nsIEventTarget_vtbl nsieventtarget; nsresult (*InitEvent)(nsIEventQueue *pThis, PLEvent * aEvent, void * owner, PLHandleEventProc handler, PLDestroyEventProc destructor); nsresult (*PostSynchronousEvent)(nsIEventQueue *pThis, PLEvent * aEvent, void * *aResult); nsresult (*PendingEvents)(nsIEventQueue *pThis, PRBool *_retval); nsresult (*ProcessPendingEvents)(nsIEventQueue *pThis); nsresult (*EventLoop)(nsIEventQueue *pThis); nsresult (*EventAvailable)(nsIEventQueue *pThis, PRBool *aResult); nsresult (*GetEvent)(nsIEventQueue *pThis, PLEvent * *_retval); nsresult (*HandleEvent)(nsIEventQueue *pThis, PLEvent * aEvent); nsresult (*WaitForEvent)(nsIEventQueue *pThis, PLEvent * *_retval); PRInt32 (*GetEventQueueSelectFD)(nsIEventQueue *pThis); nsresult (*Init)(nsIEventQueue *pThis, PRBool aNative); nsresult (*InitFromPRThread)(nsIEventQueue *pThis, PRThread * thread, PRBool aNative); nsresult (*InitFromPLQueue)(nsIEventQueue *pThis, PLEventQueue * aQueue); nsresult (*EnterMonitor)(nsIEventQueue *pThis); nsresult (*ExitMonitor)(nsIEventQueue *pThis); nsresult (*RevokeEvents)(nsIEventQueue *pThis, void * owner); nsresult (*GetPLEventQueue)(nsIEventQueue *pThis, PLEventQueue * *_retval); nsresult (*IsQueueNative)(nsIEventQueue *pThis, PRBool *_retval); nsresult (*StopAcceptingEvents)(nsIEventQueue *pThis); }; struct nsIEventQueue { struct nsIEventQueue_vtbl *vtbl; }; #endif /* !__cplusplus */ #ifdef IN_VBOXXPCOMC # define VBOXXPCOMC_DECL(type) PR_EXPORT(type) #else # define VBOXXPCOMC_DECL(type) PR_IMPORT(type) #endif #ifdef __cplusplus extern "C" { #endif /** * Function table for dynamic linking. * Use VBoxGetFunctions() to obtain the pointer to it. */ typedef struct VBOXXPCOMC { /** The size of the structure. */ unsigned cb; /** The structure version. */ unsigned uVersion; unsigned int (*pfnGetVersion)(void); void (*pfnComInitialize)(const char *pszVirtualBoxIID, IVirtualBox **ppVirtualBox, const char *pszSessionIID, ISession **ppSession); void (*pfnComUninitialize)(void); void (*pfnComUnallocMem)(void *pv); void (*pfnUtf16Free)(PRUnichar *pwszString); void (*pfnUtf8Free)(char *pszString); int (*pfnUtf16ToUtf8)(const PRUnichar *pwszString, char **ppszString); int (*pfnUtf8ToUtf16)(const char *pszString, PRUnichar **ppwszString); void (*pfnGetEventQueue)(nsIEventQueue **eventQueue); /** Tail version, same as uVersion. */ unsigned uEndVersion; } VBOXXPCOMC; /** Pointer to a const VBoxXPCOMC function table. */ typedef VBOXXPCOMC const *PCVBOXXPCOM; /** The current interface version. * For use with VBoxGetXPCOMCFunctions and to be found in * VBOXXPCOMC::uVersion. */ #define VBOX_XPCOMC_VERSION 0x00020000U VBOXXPCOMC_DECL(PCVBOXXPCOM) VBoxGetXPCOMCFunctions(unsigned uVersion); /** Typedef for VBoxGetXPCOMCFunctions. */ typedef PCVBOXXPCOM (*PFNVBOXGETXPCOMCFUNCTIONS)(unsigned uVersion); /** The symbol name of VBoxGetXPCOMCFunctions. */ #if defined(__OS2__) # define VBOX_GET_XPCOMC_FUNCTIONS_SYMBOL_NAME "_VBoxGetXPCOMCFunctions" #else # define VBOX_GET_XPCOMC_FUNCTIONS_SYMBOL_NAME "VBoxGetXPCOMCFunctions" #endif #ifdef __cplusplus } #endif #endif /* !___VirtualBox_CXPCOM_h */ @if attributes are not currently allowed because xpidl lacks support for #ifdef and stuff. #if #endif struct ; typedef struct ; /* Start of struct Declaration */ #define #define _IID { \ 0x , 0x , 0x , \ { 0x , 0x , 0x , 0x , 0x , 0x , 0x , 0x } \ } struct _vtbl { struct nsISupports_vtbl nsisupports; struct nsISupports_vtbl nsisupports; struct nsIException_vtbl nsiexception; struct _vtbl ; }; struct { struct _vtbl *vtbl; }; /* End of struct Declaration */ nsresult (*Get )( *pThis, PRUint32 * Size, ** ); nsresult set ( in unsigned long Size, [array, size_is( Size)] in ); nsresult (*Get )( *pThis, * ); nsresult (*Get )( *pThis, * ); nsresult (*Set )( *pThis, ); #define COM_FORWARD_ _GETTER_ _TO(smth) NS_IMETHOD Get ( PRUint32 * a Size, * * a ) { return smth Get ( a Size, a ); } #define COM_FORWARD_ _GETTER_ _TO_OBJ(obj) COM_FORWARD_ _GETTER_ _TO ((obj)->) #define COM_FORWARD_ _GETTER_ _TO_BASE(base) COM_FORWARD_ _GETTER_ _TO (base::) #define COM_FORWARD_ _SETTER_ _TO(smth) NS_IMETHOD Set ( PRUint32 a Size, const * a ) { return smth Set (a ); } #define COM_FORWARD_ _SETTER_ _TO_OBJ(obj) COM_FORWARD_ _SETTER_ _TO ((obj)->) #define COM_FORWARD_ _SETTER_ _TO_BASE(base) COM_FORWARD_ _SETTER_ _TO (base::) nsresult (* )( *pThis, , ); )( *pThis ); #define COM_FORWARD_ _ _TO(smth) NS_IMETHOD ( , ) { return smth ( a Size+++, a , a Size, a ); } () { return smth (); } #define COM_FORWARD_ _ _TO_OBJ(obj) COM_FORWARD_ _ _TO ((obj)->) #define COM_FORWARD_ _ _TO_BASE(base) COM_FORWARD_ _ _TO (base::) #define NS_ _CID { \ 0x , 0x , 0x , \ { 0x , 0x , 0x , 0x , 0x , 0x , 0x , 0x } \ } #define NS_ _CONTRACTID "@ / ;1" /* for compatibility with Win32 */ #define CLSID_ (nsCID) NS_ _CID /* Start of enum Declaration */ #define #define _IID { \ 0x , 0x , 0x , \ { 0x , 0x , 0x , 0x , 0x , 0x , 0x , 0x } \ } enum { _ = , }; /* End of enum Declaration */ PRUint32 Size, PRUint32 * Size, PRUint32 * Size, PRUint32 Size, * * * ** * * * PRUint32 * a Size, * * a booleanPtr octetPtr shortPtr ushortPtr longPtr llongPtr ulongPtr ullongPtr attribute 'mod= ' cannot be used with type wstring attribute 'mod= ' cannot be used with type of attribute 'mod' is invalid! nsresult boolean octet short unsigned short long long long unsigned long unsigned long long char wchar string wstring nsIDPtr : Non-readonly uuid attributes are not supported! nsIDRef nsIDPtr nsISupports PRUint32 Unknown parameter type: PRBool * PRUint8 * PRInt16 * PRUint16 * PRInt32 * PRInt64 * PRUint32 * PRUint64 * attribute 'mod= ' cannot be used with type PRUnichar * attribute 'mod= ' cannot be used with type nsresult PRBool PRUint8 PRInt16 PRUint16 PRInt32 PRInt64 PRUint32 PRUint64 char PRUnichar char * PRUnichar * nsID * const nsID * nsID * nsISupports * PRUint32 *