/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM /build/virtualbox/src/VirtualBox-4.3.20/out/linux.amd64/release/bin/sdk/bindings/xpcom/idl/VirtualBox_XPCOM.idl
 */

#ifndef __gen_VirtualBox_XPCOM_h__
#define __gen_VirtualBox_XPCOM_h__


#ifndef __gen_nsISupports_h__
#include "nsISupports.h"
#endif

#ifndef __gen_nsIException_h__
#include "nsIException.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
/* currently, nsISupportsImpl.h lacks the below-like macros */
#define NS_IMPL_THREADSAFE_QUERY_INTERFACE1_CI NS_IMPL_QUERY_INTERFACE1_CI
#define NS_IMPL_THREADSAFE_QUERY_INTERFACE2_CI NS_IMPL_QUERY_INTERFACE2_CI
#define NS_IMPL_THREADSAFE_QUERY_INTERFACE3_CI NS_IMPL_QUERY_INTERFACE3_CI
#define NS_IMPL_THREADSAFE_QUERY_INTERFACE4_CI NS_IMPL_QUERY_INTERFACE4_CI
#define NS_IMPL_THREADSAFE_QUERY_INTERFACE5_CI NS_IMPL_QUERY_INTERFACE5_CI
#define NS_IMPL_THREADSAFE_QUERY_INTERFACE6_CI NS_IMPL_QUERY_INTERFACE6_CI
#define NS_IMPL_THREADSAFE_QUERY_INTERFACE7_CI NS_IMPL_QUERY_INTERFACE7_CI
#define NS_IMPL_THREADSAFE_QUERY_INTERFACE8_CI NS_IMPL_QUERY_INTERFACE8_CI
#ifndef NS_IMPL_THREADSAFE_ISUPPORTS1_CI
# define NS_IMPL_THREADSAFE_ISUPPORTS1_CI(_class, _interface)                 \
  NS_IMPL_THREADSAFE_ADDREF(_class)                                           \
  NS_IMPL_THREADSAFE_RELEASE(_class)                                          \
  NS_IMPL_THREADSAFE_QUERY_INTERFACE1_CI(_class, _interface)                  \
  NS_IMPL_CI_INTERFACE_GETTER1(_class, _interface)
#endif
#ifndef NS_IMPL_THREADSAFE_ISUPPORTS2_CI
# define NS_IMPL_THREADSAFE_ISUPPORTS2_CI(_class, _i1, _i2)                   \
  NS_IMPL_THREADSAFE_ADDREF(_class)                                           \
  NS_IMPL_THREADSAFE_RELEASE(_class)                                          \
  NS_IMPL_THREADSAFE_QUERY_INTERFACE2_CI(_class, _i1, _i2)                    \
  NS_IMPL_CI_INTERFACE_GETTER2(_class, _i1, _i2)
#endif
#ifndef NS_IMPL_THREADSAFE_ISUPPORTS3_CI
# define NS_IMPL_THREADSAFE_ISUPPORTS3_CI(_class, _i1, _i2, _i3)              \
  NS_IMPL_THREADSAFE_ADDREF(_class)                                           \
  NS_IMPL_THREADSAFE_RELEASE(_class)                                          \
  NS_IMPL_THREADSAFE_QUERY_INTERFACE3_CI(_class, _i1, _i2, _i3)               \
  NS_IMPL_CI_INTERFACE_GETTER3(_class, _i1, _i2, _i3)
#endif
#ifndef NS_IMPL_THREADSAFE_ISUPPORTS4_CI
# define NS_IMPL_THREADSAFE_ISUPPORTS4_CI(_class, _i1, _i2, _i3, _i4)         \
  NS_IMPL_THREADSAFE_ADDREF(_class)                                           \
  NS_IMPL_THREADSAFE_RELEASE(_class)                                          \
  NS_IMPL_THREADSAFE_QUERY_INTERFACE4_CI(_class, _i1, _i2, _i3, _i4)          \
  NS_IMPL_CI_INTERFACE_GETTER4(_class, _i1, _i2, _i3, _i4)
#endif
#ifndef NS_IMPL_THREADSAFE_ISUPPORTS5_CI
# define NS_IMPL_THREADSAFE_ISUPPORTS5_CI(_class, _i1, _i2, _i3, _i4, _i5)    \
  NS_IMPL_THREADSAFE_ADDREF(_class)                                           \
  NS_IMPL_THREADSAFE_RELEASE(_class)                                          \
  NS_IMPL_THREADSAFE_QUERY_INTERFACE5_CI(_class, _i1, _i2, _i3, _i4, _i5)     \
  NS_IMPL_CI_INTERFACE_GETTER5(_class, _i1, _i2, _i3, _i4, _i5)
#endif
#ifndef NS_IMPL_THREADSAFE_ISUPPORTS6_CI
# define NS_IMPL_THREADSAFE_ISUPPORTS6_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6) \
  NS_IMPL_THREADSAFE_ADDREF(_class) \
  NS_IMPL_THREADSAFE_RELEASE(_class) \
  NS_IMPL_THREADSAFE_QUERY_INTERFACE6_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6) \
  NS_IMPL_CI_INTERFACE_GETTER6(_class, _i1, _i2, _i3, _i4, _i5, _i6)
#endif
#ifndef NS_IMPL_THREADSAFE_ISUPPORTS7_CI
# define NS_IMPL_THREADSAFE_ISUPPORTS7_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7) \
  NS_IMPL_THREADSAFE_ADDREF(_class) \
  NS_IMPL_THREADSAFE_RELEASE(_class) \
  NS_IMPL_THREADSAFE_QUERY_INTERFACE7_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7) \
  NS_IMPL_CI_INTERFACE_GETTER7(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7)
#endif
#ifndef NS_IMPL_THREADSAFE_ISUPPORTS8_CI
# define NS_IMPL_THREADSAFE_ISUPPORTS8_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8) \
  NS_IMPL_THREADSAFE_ADDREF(_class) \
  NS_IMPL_THREADSAFE_RELEASE(_class) \
  NS_IMPL_THREADSAFE_QUERY_INTERFACE8_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8) \
  NS_IMPL_CI_INTERFACE_GETTER8(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8)
#endif
#ifndef NS_IMPL_QUERY_INTERFACE1_AMBIGUOUS_CI
# define NS_IMPL_QUERY_INTERFACE1_AMBIGUOUS_CI(_class, _i1, _ic1)             \
  NS_INTERFACE_MAP_BEGIN(_class)                                              \
    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_i1, _ic1)                               \
    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _ic1)                       \
    NS_IMPL_QUERY_CLASSINFO(_class)                                           \
  NS_INTERFACE_MAP_END
#endif
#ifndef NS_IMPL_QUERY_INTERFACE2_AMBIGUOUS_CI
# define NS_IMPL_QUERY_INTERFACE2_AMBIGUOUS_CI(_class, _i1, _ic1,             \
                                               _i2, _ic2)                     \
  NS_INTERFACE_MAP_BEGIN(_class)                                              \
    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_i1, _ic1)                               \
    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_i2, _ic2)                               \
    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _ic1)                       \
    NS_IMPL_QUERY_CLASSINFO(_class)                                           \
  NS_INTERFACE_MAP_END
#endif
#ifndef NS_IMPL_QUERY_INTERFACE3_AMBIGUOUS_CI
# define NS_IMPL_QUERY_INTERFACE3_AMBIGUOUS_CI(_class, _i1, _ic1,             \
                                               _i2, _ic2, _i3, _ic3)          \
  NS_INTERFACE_MAP_BEGIN(_class)                                              \
    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_i1, _ic1)                               \
    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_i2, _ic2)                               \
    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_i3, _ic3)                               \
    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _ic1)                       \
    NS_IMPL_QUERY_CLASSINFO(_class)                                           \
  NS_INTERFACE_MAP_END
#endif
#define NS_IMPL_THREADSAFE_QUERY_INTERFACE1_AMBIGUOUS_CI NS_IMPL_QUERY_INTERFACE1_AMBIGUOUS_CI
#define NS_IMPL_THREADSAFE_QUERY_INTERFACE2_AMBIGUOUS_CI NS_IMPL_QUERY_INTERFACE2_AMBIGUOUS_CI
#define NS_IMPL_THREADSAFE_QUERY_INTERFACE3_AMBIGUOUS_CI NS_IMPL_QUERY_INTERFACE3_AMBIGUOUS_CI
#ifndef NS_IMPL_THREADSAFE_ISUPPORTS1_AMBIGUOUS_CI
# define NS_IMPL_THREADSAFE_ISUPPORTS1_AMBIGUOUS_CI(_class, _i1, _ic1)        \
  NS_IMPL_THREADSAFE_ADDREF(_class)                                           \
  NS_IMPL_THREADSAFE_RELEASE(_class)                                          \
  NS_IMPL_THREADSAFE_QUERY_INTERFACE1_AMBIGUOUS_CI(_class, _i1, _ic1)         \
  NS_IMPL_CI_INTERFACE_GETTER1(_class, _i1)
#endif
#ifndef NS_IMPL_THREADSAFE_ISUPPORTS2_AMBIGUOUS_CI
# define NS_IMPL_THREADSAFE_ISUPPORTS2_AMBIGUOUS_CI(_class, _i1, _ic1,        \
                                                     _i2, _ic2)               \
  NS_IMPL_THREADSAFE_ADDREF(_class)                                           \
  NS_IMPL_THREADSAFE_RELEASE(_class)                                          \
  NS_IMPL_THREADSAFE_QUERY_INTERFACE2_AMBIGUOUS_CI(_class, _i1, _ic1,         \
                                                   _i2, _ic2)                 \
  NS_IMPL_CI_INTERFACE_GETTER2(_class, _i1, _i2)
#endif
#ifndef NS_IMPL_THREADSAFE_ISUPPORTS3_AMBIGUOUS_CI
# define NS_IMPL_THREADSAFE_ISUPPORTS3_AMBIGUOUS_CI(_class, _i1, _ic1,        \
                                                     _i2, _ic2, _i3, _ic3)    \
  NS_IMPL_THREADSAFE_ADDREF(_class)                                           \
  NS_IMPL_THREADSAFE_RELEASE(_class)                                          \
  NS_IMPL_THREADSAFE_QUERY_INTERFACE3_AMBIGUOUS_CI(_class, _i1, _ic1,         \
                                                   _i2, _ic2, _i3, _ic3)      \
  NS_IMPL_CI_INTERFACE_GETTER3(_class, _i1, _i2, _i3)
#endif
  
#ifndef VBOX_EXTERN_C
# ifdef __cplusplus
#  define VBOX_EXTERN_C extern "C"
# else // !__cplusplus
#  define VBOX_EXTERN_C extern
# endif // !__cplusplus
#endif // !VBOX_EXTERN_C
// result codes declared in API spec
#define VBOX_E_OBJECT_NOT_FOUND 0x80BB0001
#define VBOX_E_INVALID_VM_STATE 0x80BB0002
#define VBOX_E_VM_ERROR 0x80BB0003
#define VBOX_E_FILE_ERROR 0x80BB0004
#define VBOX_E_IPRT_ERROR 0x80BB0005
#define VBOX_E_PDM_ERROR 0x80BB0006
#define VBOX_E_INVALID_OBJECT_STATE 0x80BB0007
#define VBOX_E_HOST_ERROR 0x80BB0008
#define VBOX_E_NOT_SUPPORTED 0x80BB0009
#define VBOX_E_XML_ERROR 0x80BB000A
#define VBOX_E_INVALID_SESSION_STATE 0x80BB000B
#define VBOX_E_OBJECT_IN_USE 0x80BB000C
class IVirtualBoxErrorInfo; /* forward declaration */

class INATNetwork; /* forward declaration */

class IDHCPServer; /* forward declaration */

class IVirtualBox; /* forward declaration */

class IVFSExplorer; /* forward declaration */

class IAppliance; /* forward declaration */

class IVirtualSystemDescription; /* forward declaration */

class IInternalMachineControl; /* forward declaration */

class IBIOSSettings; /* forward declaration */

class IPCIAddress; /* forward declaration */

class IPCIDeviceAttachment; /* forward declaration */

class IMachine; /* forward declaration */

class IEmulatedUSB; /* forward declaration */

class IVRDEServerInfo; /* forward declaration */

class IConsole; /* forward declaration */

class IHostNetworkInterface; /* forward declaration */

class IHostVideoInputDevice; /* forward declaration */

class IHost; /* forward declaration */

class ISystemProperties; /* forward declaration */

class IGuestOSType; /* forward declaration */

class IAdditionsFacility; /* forward declaration */

class IGuestSession; /* forward declaration */

class IProcess; /* forward declaration */

class IGuestProcess; /* forward declaration */

class IDirectory; /* forward declaration */

class IGuestDirectory; /* forward declaration */

class IFile; /* forward declaration */

class IGuestFile; /* forward declaration */

class IFsObjInfo; /* forward declaration */

class IGuestFsObjInfo; /* forward declaration */

class IGuest; /* forward declaration */

class IProgress; /* forward declaration */

class ISnapshot; /* forward declaration */

class IMediumAttachment; /* forward declaration */

class IMedium; /* forward declaration */

class IMediumFormat; /* forward declaration */

class IToken; /* forward declaration */

class IKeyboard; /* forward declaration */

class IMouse; /* forward declaration */

class IFramebuffer; /* forward declaration */

class IFramebufferOverlay; /* forward declaration */

class IDisplay; /* forward declaration */

class INetworkAdapter; /* forward declaration */

class ISerialPort; /* forward declaration */

class IParallelPort; /* forward declaration */

class IMachineDebugger; /* forward declaration */

class IUSBDeviceFilters; /* forward declaration */

class IUSBController; /* forward declaration */

class IUSBDevice; /* forward declaration */

class IUSBDeviceFilter; /* forward declaration */

class IHostUSBDevice; /* forward declaration */

class IHostUSBDeviceFilter; /* forward declaration */

class IAudioAdapter; /* forward declaration */

class IVRDEServer; /* forward declaration */

class ISharedFolder; /* forward declaration */

class IInternalSessionControl; /* forward declaration */

class ISession; /* forward declaration */

class IStorageController; /* forward declaration */

class IPerformanceMetric; /* forward declaration */

class IPerformanceCollector; /* forward declaration */

class INATEngine; /* forward declaration */

class IExtPackPlugIn; /* forward declaration */

class IExtPackBase; /* forward declaration */

class IExtPack; /* forward declaration */

class IExtPackFile; /* forward declaration */

class IExtPackManager; /* forward declaration */

class IBandwidthGroup; /* forward declaration */

class IBandwidthControl; /* forward declaration */

class IVirtualBoxClient; /* forward declaration */

class IEventSource; /* forward declaration */

class IEventListener; /* forward declaration */

class IEvent; /* forward declaration */

class IReusableEvent; /* forward declaration */

class IMachineEvent; /* forward declaration */

class IMachineStateChangedEvent; /* forward declaration */

class IMachineDataChangedEvent; /* forward declaration */

class IMediumRegisteredEvent; /* forward declaration */

class IMachineRegisteredEvent; /* forward declaration */

class ISessionStateChangedEvent; /* forward declaration */

class IGuestPropertyChangedEvent; /* forward declaration */

class ISnapshotEvent; /* forward declaration */

class ISnapshotTakenEvent; /* forward declaration */

class ISnapshotDeletedEvent; /* forward declaration */

class ISnapshotChangedEvent; /* forward declaration */

class IMousePointerShapeChangedEvent; /* forward declaration */

class IMouseCapabilityChangedEvent; /* forward declaration */

class IKeyboardLedsChangedEvent; /* forward declaration */

class IStateChangedEvent; /* forward declaration */

class IAdditionsStateChangedEvent; /* forward declaration */

class INetworkAdapterChangedEvent; /* forward declaration */

class ISerialPortChangedEvent; /* forward declaration */

class IParallelPortChangedEvent; /* forward declaration */

class IStorageControllerChangedEvent; /* forward declaration */

class IMediumChangedEvent; /* forward declaration */

class IClipboardModeChangedEvent; /* forward declaration */

class IDragAndDropModeChangedEvent; /* forward declaration */

class ICPUChangedEvent; /* forward declaration */

class ICPUExecutionCapChangedEvent; /* forward declaration */

class IGuestKeyboardEvent; /* forward declaration */

class IGuestMouseEvent; /* forward declaration */

class IGuestMultiTouchEvent; /* forward declaration */

class IGuestSessionEvent; /* forward declaration */

class IGuestSessionStateChangedEvent; /* forward declaration */

class IGuestSessionRegisteredEvent; /* forward declaration */

class IGuestProcessEvent; /* forward declaration */

class IGuestProcessRegisteredEvent; /* forward declaration */

class IGuestProcessStateChangedEvent; /* forward declaration */

class IGuestProcessIOEvent; /* forward declaration */

class IGuestProcessInputNotifyEvent; /* forward declaration */

class IGuestProcessOutputEvent; /* forward declaration */

class IGuestFileEvent; /* forward declaration */

class IGuestFileRegisteredEvent; /* forward declaration */

class IGuestFileStateChangedEvent; /* forward declaration */

class IGuestFileIOEvent; /* forward declaration */

class IGuestFileOffsetChangedEvent; /* forward declaration */

class IGuestFileReadEvent; /* forward declaration */

class IGuestFileWriteEvent; /* forward declaration */

class IVRDEServerChangedEvent; /* forward declaration */

class IVRDEServerInfoChangedEvent; /* forward declaration */

class IVideoCaptureChangedEvent; /* forward declaration */

class IUSBControllerChangedEvent; /* forward declaration */

class IUSBDeviceStateChangedEvent; /* forward declaration */

class ISharedFolderChangedEvent; /* forward declaration */

class IRuntimeErrorEvent; /* forward declaration */

class IEventSourceChangedEvent; /* forward declaration */

class IExtraDataChangedEvent; /* forward declaration */

class IVetoEvent; /* forward declaration */

class IExtraDataCanChangeEvent; /* forward declaration */

class ICanShowWindowEvent; /* forward declaration */

class IShowWindowEvent; /* forward declaration */

class INATRedirectEvent; /* forward declaration */

class IHostPCIDevicePlugEvent; /* forward declaration */

class IVBoxSVCAvailabilityChangedEvent; /* forward declaration */

class IBandwidthGroupChangedEvent; /* forward declaration */

class IGuestMonitorChangedEvent; /* forward declaration */

class IGuestUserStateChangedEvent; /* forward declaration */

class IStorageDeviceChangedEvent; /* forward declaration */

class INATNetworkChangedEvent; /* forward declaration */

class INATNetworkStartStopEvent; /* forward declaration */

class INATNetworkAlterEvent; /* forward declaration */

class INATNetworkCreationDeletionEvent; /* forward declaration */

class INATNetworkSettingEvent; /* forward declaration */

class INATNetworkPortForwardEvent; /* forward declaration */

class IHostNameResolutionConfigurationChangeEvent; /* forward declaration */


/* starting interface:    SettingsVersion */
#define SETTINGSVERSION_IID_STR "d5b15ca7-3de7-46b2-a63a-ddcce42bfa3f"

#define SETTINGSVERSION_IID \
  {0xd5b15ca7, 0x3de7, 0x46b2, \
    { 0xa6, 0x3a, 0xdd, 0xcc, 0xe4, 0x2b, 0xfa, 0x3f }}

class NS_NO_VTABLE SettingsVersion {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(SETTINGSVERSION_IID)

  enum { Null = 0U };

  enum { v1_0 = 1U };

  enum { v1_1 = 2U };

  enum { v1_2 = 3U };

  enum { v1_3pre = 4U };

  enum { v1_3 = 5U };

  enum { v1_4 = 6U };

  enum { v1_5 = 7U };

  enum { v1_6 = 8U };

  enum { v1_7 = 9U };

  enum { v1_8 = 10U };

  enum { v1_9 = 11U };

  enum { v1_10 = 12U };

  enum { v1_11 = 13U };

  enum { v1_12 = 14U };

  enum { v1_13 = 15U };

  enum { v1_14 = 16U };

  enum { Future = 99999U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_SETTINGSVERSION \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_SETTINGSVERSION(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_SETTINGSVERSION(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public SettingsVersion
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_SETTINGSVERSION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, SettingsVersion)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define SettingsVersion_T PRUint32
#define SettingsVersion_Null SettingsVersion::Null
#define SettingsVersion_v1_0 SettingsVersion::v1_0
#define SettingsVersion_v1_1 SettingsVersion::v1_1
#define SettingsVersion_v1_2 SettingsVersion::v1_2
#define SettingsVersion_v1_3pre SettingsVersion::v1_3pre
#define SettingsVersion_v1_3 SettingsVersion::v1_3
#define SettingsVersion_v1_4 SettingsVersion::v1_4
#define SettingsVersion_v1_5 SettingsVersion::v1_5
#define SettingsVersion_v1_6 SettingsVersion::v1_6
#define SettingsVersion_v1_7 SettingsVersion::v1_7
#define SettingsVersion_v1_8 SettingsVersion::v1_8
#define SettingsVersion_v1_9 SettingsVersion::v1_9
#define SettingsVersion_v1_10 SettingsVersion::v1_10
#define SettingsVersion_v1_11 SettingsVersion::v1_11
#define SettingsVersion_v1_12 SettingsVersion::v1_12
#define SettingsVersion_v1_13 SettingsVersion::v1_13
#define SettingsVersion_v1_14 SettingsVersion::v1_14
#define SettingsVersion_Future SettingsVersion::Future

/* starting interface:    AccessMode */
#define ACCESSMODE_IID_STR "1da0007c-ddf7-4be8-bcac-d84a1558785f"

#define ACCESSMODE_IID \
  {0x1da0007c, 0xddf7, 0x4be8, \
    { 0xbc, 0xac, 0xd8, 0x4a, 0x15, 0x58, 0x78, 0x5f }}

class NS_NO_VTABLE AccessMode {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ACCESSMODE_IID)

  enum { ReadOnly = 1U };

  enum { ReadWrite = 2U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ACCESSMODE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ACCESSMODE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ACCESSMODE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public AccessMode
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ACCESSMODE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, AccessMode)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define AccessMode_T PRUint32
#define AccessMode_ReadOnly AccessMode::ReadOnly
#define AccessMode_ReadWrite AccessMode::ReadWrite

/* starting interface:    MachineState */
#define MACHINESTATE_IID_STR "ec6c6a9e-113d-4ff4-b44f-0b69f21c97fe"

#define MACHINESTATE_IID \
  {0xec6c6a9e, 0x113d, 0x4ff4, \
    { 0xb4, 0x4f, 0x0b, 0x69, 0xf2, 0x1c, 0x97, 0xfe }}

class NS_NO_VTABLE MachineState {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(MACHINESTATE_IID)

  enum { Null = 0U };

  enum { PoweredOff = 1U };

  enum { Saved = 2U };

  enum { Teleported = 3U };

  enum { Aborted = 4U };

  enum { Running = 5U };

  enum { Paused = 6U };

  enum { Stuck = 7U };

  enum { Teleporting = 8U };

  enum { LiveSnapshotting = 9U };

  enum { Starting = 10U };

  enum { Stopping = 11U };

  enum { Saving = 12U };

  enum { Restoring = 13U };

  enum { TeleportingPausedVM = 14U };

  enum { TeleportingIn = 15U };

  enum { FaultTolerantSyncing = 16U };

  enum { DeletingSnapshotOnline = 17U };

  enum { DeletingSnapshotPaused = 18U };

  enum { RestoringSnapshot = 19U };

  enum { DeletingSnapshot = 20U };

  enum { SettingUp = 21U };

  enum { FirstOnline = 5U };

  enum { LastOnline = 18U };

  enum { FirstTransient = 8U };

  enum { LastTransient = 21U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_MACHINESTATE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_MACHINESTATE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_MACHINESTATE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public MachineState
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_MACHINESTATE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, MachineState)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define MachineState_T PRUint32
#define MachineState_Null MachineState::Null
#define MachineState_PoweredOff MachineState::PoweredOff
#define MachineState_Saved MachineState::Saved
#define MachineState_Teleported MachineState::Teleported
#define MachineState_Aborted MachineState::Aborted
#define MachineState_Running MachineState::Running
#define MachineState_Paused MachineState::Paused
#define MachineState_Stuck MachineState::Stuck
#define MachineState_Teleporting MachineState::Teleporting
#define MachineState_LiveSnapshotting MachineState::LiveSnapshotting
#define MachineState_Starting MachineState::Starting
#define MachineState_Stopping MachineState::Stopping
#define MachineState_Saving MachineState::Saving
#define MachineState_Restoring MachineState::Restoring
#define MachineState_TeleportingPausedVM MachineState::TeleportingPausedVM
#define MachineState_TeleportingIn MachineState::TeleportingIn
#define MachineState_FaultTolerantSyncing MachineState::FaultTolerantSyncing
#define MachineState_DeletingSnapshotOnline MachineState::DeletingSnapshotOnline
#define MachineState_DeletingSnapshotPaused MachineState::DeletingSnapshotPaused
#define MachineState_RestoringSnapshot MachineState::RestoringSnapshot
#define MachineState_DeletingSnapshot MachineState::DeletingSnapshot
#define MachineState_SettingUp MachineState::SettingUp
#define MachineState_FirstOnline MachineState::FirstOnline
#define MachineState_LastOnline MachineState::LastOnline
#define MachineState_FirstTransient MachineState::FirstTransient
#define MachineState_LastTransient MachineState::LastTransient

/* starting interface:    SessionState */
#define SESSIONSTATE_IID_STR "cf2700c0-ea4b-47ae-9725-7810114b94d8"

#define SESSIONSTATE_IID \
  {0xcf2700c0, 0xea4b, 0x47ae, \
    { 0x97, 0x25, 0x78, 0x10, 0x11, 0x4b, 0x94, 0xd8 }}

class NS_NO_VTABLE SessionState {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(SESSIONSTATE_IID)

  enum { Null = 0U };

  enum { Unlocked = 1U };

  enum { Locked = 2U };

  enum { Spawning = 3U };

  enum { Unlocking = 4U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_SESSIONSTATE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_SESSIONSTATE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_SESSIONSTATE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public SessionState
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_SESSIONSTATE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, SessionState)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define SessionState_T PRUint32
#define SessionState_Null SessionState::Null
#define SessionState_Unlocked SessionState::Unlocked
#define SessionState_Locked SessionState::Locked
#define SessionState_Spawning SessionState::Spawning
#define SessionState_Unlocking SessionState::Unlocking

/* starting interface:    CPUPropertyType */
#define CPUPROPERTYTYPE_IID_STR "52bc41f4-a279-45da-88ab-3a1d86fb73eb"

#define CPUPROPERTYTYPE_IID \
  {0x52bc41f4, 0xa279, 0x45da, \
    { 0x88, 0xab, 0x3a, 0x1d, 0x86, 0xfb, 0x73, 0xeb }}

class NS_NO_VTABLE CPUPropertyType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(CPUPROPERTYTYPE_IID)

  enum { Null = 0U };

  enum { PAE = 1U };

  enum { Synthetic = 2U };

  enum { LongMode = 3U };

  enum { TripleFaultReset = 4U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CPUPROPERTYTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CPUPROPERTYTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_CPUPROPERTYTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public CPUPropertyType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CPUPROPERTYTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, CPUPropertyType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define CPUPropertyType_T PRUint32
#define CPUPropertyType_Null CPUPropertyType::Null
#define CPUPropertyType_PAE CPUPropertyType::PAE
#define CPUPropertyType_Synthetic CPUPropertyType::Synthetic
#define CPUPropertyType_LongMode CPUPropertyType::LongMode
#define CPUPropertyType_TripleFaultReset CPUPropertyType::TripleFaultReset

/* starting interface:    HWVirtExPropertyType */
#define HWVIRTEXPROPERTYTYPE_IID_STR "411ad0ea-aeeb-44cb-9d03-1624d0d025ac"

#define HWVIRTEXPROPERTYTYPE_IID \
  {0x411ad0ea, 0xaeeb, 0x44cb, \
    { 0x9d, 0x03, 0x16, 0x24, 0xd0, 0xd0, 0x25, 0xac }}

class NS_NO_VTABLE HWVirtExPropertyType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(HWVIRTEXPROPERTYTYPE_IID)

  enum { Null = 0U };

  enum { Enabled = 1U };

  enum { VPID = 2U };

  enum { NestedPaging = 3U };

  enum { UnrestrictedExecution = 4U };

  enum { LargePages = 5U };

  enum { Force = 6U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_HWVIRTEXPROPERTYTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_HWVIRTEXPROPERTYTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_HWVIRTEXPROPERTYTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public HWVirtExPropertyType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_HWVIRTEXPROPERTYTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, HWVirtExPropertyType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define HWVirtExPropertyType_T PRUint32
#define HWVirtExPropertyType_Null HWVirtExPropertyType::Null
#define HWVirtExPropertyType_Enabled HWVirtExPropertyType::Enabled
#define HWVirtExPropertyType_VPID HWVirtExPropertyType::VPID
#define HWVirtExPropertyType_NestedPaging HWVirtExPropertyType::NestedPaging
#define HWVirtExPropertyType_UnrestrictedExecution HWVirtExPropertyType::UnrestrictedExecution
#define HWVirtExPropertyType_LargePages HWVirtExPropertyType::LargePages
#define HWVirtExPropertyType_Force HWVirtExPropertyType::Force

/* starting interface:    FaultToleranceState */
#define FAULTTOLERANCESTATE_IID_STR "5124f7ec-6b67-493c-9dee-ee45a44114e1"

#define FAULTTOLERANCESTATE_IID \
  {0x5124f7ec, 0x6b67, 0x493c, \
    { 0x9d, 0xee, 0xee, 0x45, 0xa4, 0x41, 0x14, 0xe1 }}

class NS_NO_VTABLE FaultToleranceState {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FAULTTOLERANCESTATE_IID)

  enum { Inactive = 1U };

  enum { Master = 2U };

  enum { Standby = 3U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FAULTTOLERANCESTATE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FAULTTOLERANCESTATE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_FAULTTOLERANCESTATE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public FaultToleranceState
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FAULTTOLERANCESTATE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, FaultToleranceState)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define FaultToleranceState_T PRUint32
#define FaultToleranceState_Inactive FaultToleranceState::Inactive
#define FaultToleranceState_Master FaultToleranceState::Master
#define FaultToleranceState_Standby FaultToleranceState::Standby

/* starting interface:    LockType */
#define LOCKTYPE_IID_STR "168a6a8e-12fd-4878-a1f9-38a750a56089"

#define LOCKTYPE_IID \
  {0x168a6a8e, 0x12fd, 0x4878, \
    { 0xa1, 0xf9, 0x38, 0xa7, 0x50, 0xa5, 0x60, 0x89 }}

class NS_NO_VTABLE LockType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(LOCKTYPE_IID)

  enum { Write = 2U };

  enum { Shared = 1U };

  enum { VM = 3U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_LOCKTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_LOCKTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_LOCKTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public LockType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_LOCKTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, LockType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define LockType_T PRUint32
#define LockType_Write LockType::Write
#define LockType_Shared LockType::Shared
#define LockType_VM LockType::VM

/* starting interface:    SessionType */
#define SESSIONTYPE_IID_STR "a13c02cb-0c2c-421e-8317-ac0e8aaa153a"

#define SESSIONTYPE_IID \
  {0xa13c02cb, 0x0c2c, 0x421e, \
    { 0x83, 0x17, 0xac, 0x0e, 0x8a, 0xaa, 0x15, 0x3a }}

class NS_NO_VTABLE SessionType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(SESSIONTYPE_IID)

  enum { Null = 0U };

  enum { WriteLock = 1U };

  enum { Remote = 2U };

  enum { Shared = 3U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_SESSIONTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_SESSIONTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_SESSIONTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public SessionType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_SESSIONTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, SessionType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define SessionType_T PRUint32
#define SessionType_Null SessionType::Null
#define SessionType_WriteLock SessionType::WriteLock
#define SessionType_Remote SessionType::Remote
#define SessionType_Shared SessionType::Shared

/* starting interface:    DeviceType */
#define DEVICETYPE_IID_STR "6d9420f7-0b56-4636-99f9-7346f1b01e57"

#define DEVICETYPE_IID \
  {0x6d9420f7, 0x0b56, 0x4636, \
    { 0x99, 0xf9, 0x73, 0x46, 0xf1, 0xb0, 0x1e, 0x57 }}

class NS_NO_VTABLE DeviceType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(DEVICETYPE_IID)

  enum { Null = 0U };

  enum { Floppy = 1U };

  enum { DVD = 2U };

  enum { HardDisk = 3U };

  enum { Network = 4U };

  enum { USB = 5U };

  enum { SharedFolder = 6U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_DEVICETYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_DEVICETYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_DEVICETYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public DeviceType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_DEVICETYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, DeviceType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define DeviceType_T PRUint32
#define DeviceType_Null DeviceType::Null
#define DeviceType_Floppy DeviceType::Floppy
#define DeviceType_DVD DeviceType::DVD
#define DeviceType_HardDisk DeviceType::HardDisk
#define DeviceType_Network DeviceType::Network
#define DeviceType_USB DeviceType::USB
#define DeviceType_SharedFolder DeviceType::SharedFolder

/* starting interface:    DeviceActivity */
#define DEVICEACTIVITY_IID_STR "6fc8aeaa-130a-4eb5-8954-3f921422d707"

#define DEVICEACTIVITY_IID \
  {0x6fc8aeaa, 0x130a, 0x4eb5, \
    { 0x89, 0x54, 0x3f, 0x92, 0x14, 0x22, 0xd7, 0x07 }}

class NS_NO_VTABLE DeviceActivity {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(DEVICEACTIVITY_IID)

  enum { Null = 0U };

  enum { Idle = 1U };

  enum { Reading = 2U };

  enum { Writing = 3U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_DEVICEACTIVITY \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_DEVICEACTIVITY(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_DEVICEACTIVITY(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public DeviceActivity
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_DEVICEACTIVITY

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, DeviceActivity)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define DeviceActivity_T PRUint32
#define DeviceActivity_Null DeviceActivity::Null
#define DeviceActivity_Idle DeviceActivity::Idle
#define DeviceActivity_Reading DeviceActivity::Reading
#define DeviceActivity_Writing DeviceActivity::Writing

/* starting interface:    ClipboardMode */
#define CLIPBOARDMODE_IID_STR "33364716-4008-4701-8f14-be0fa3d62950"

#define CLIPBOARDMODE_IID \
  {0x33364716, 0x4008, 0x4701, \
    { 0x8f, 0x14, 0xbe, 0x0f, 0xa3, 0xd6, 0x29, 0x50 }}

class NS_NO_VTABLE ClipboardMode {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(CLIPBOARDMODE_IID)

  enum { Disabled = 0U };

  enum { HostToGuest = 1U };

  enum { GuestToHost = 2U };

  enum { Bidirectional = 3U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CLIPBOARDMODE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CLIPBOARDMODE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_CLIPBOARDMODE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ClipboardMode
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CLIPBOARDMODE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ClipboardMode)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define ClipboardMode_T PRUint32
#define ClipboardMode_Disabled ClipboardMode::Disabled
#define ClipboardMode_HostToGuest ClipboardMode::HostToGuest
#define ClipboardMode_GuestToHost ClipboardMode::GuestToHost
#define ClipboardMode_Bidirectional ClipboardMode::Bidirectional

/* starting interface:    DragAndDropMode */
#define DRAGANDDROPMODE_IID_STR "b618ea0e-b6fb-4f8d-97f7-5e237e49b547"

#define DRAGANDDROPMODE_IID \
  {0xb618ea0e, 0xb6fb, 0x4f8d, \
    { 0x97, 0xf7, 0x5e, 0x23, 0x7e, 0x49, 0xb5, 0x47 }}

class NS_NO_VTABLE DragAndDropMode {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(DRAGANDDROPMODE_IID)

  enum { Disabled = 0U };

  enum { HostToGuest = 1U };

  enum { GuestToHost = 2U };

  enum { Bidirectional = 3U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_DRAGANDDROPMODE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_DRAGANDDROPMODE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_DRAGANDDROPMODE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public DragAndDropMode
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_DRAGANDDROPMODE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, DragAndDropMode)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define DragAndDropMode_T PRUint32
#define DragAndDropMode_Disabled DragAndDropMode::Disabled
#define DragAndDropMode_HostToGuest DragAndDropMode::HostToGuest
#define DragAndDropMode_GuestToHost DragAndDropMode::GuestToHost
#define DragAndDropMode_Bidirectional DragAndDropMode::Bidirectional

/* starting interface:    Scope */
#define SCOPE_IID_STR "7c91096e-499e-4eca-9f9b-9001438d7855"

#define SCOPE_IID \
  {0x7c91096e, 0x499e, 0x4eca, \
    { 0x9f, 0x9b, 0x90, 0x01, 0x43, 0x8d, 0x78, 0x55 }}

class NS_NO_VTABLE Scope {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(SCOPE_IID)

  enum { Global = 0U };

  enum { Machine = 1U };

  enum { Session = 2U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_SCOPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_SCOPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_SCOPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public Scope
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_SCOPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, Scope)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define Scope_T PRUint32
#define Scope_Global Scope::Global
#define Scope_Machine Scope::Machine
#define Scope_Session Scope::Session

/* starting interface:    BIOSBootMenuMode */
#define BIOSBOOTMENUMODE_IID_STR "ae4fb9f7-29d2-45b4-b2c7-d579603135d5"

#define BIOSBOOTMENUMODE_IID \
  {0xae4fb9f7, 0x29d2, 0x45b4, \
    { 0xb2, 0xc7, 0xd5, 0x79, 0x60, 0x31, 0x35, 0xd5 }}

class NS_NO_VTABLE BIOSBootMenuMode {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(BIOSBOOTMENUMODE_IID)

  enum { Disabled = 0U };

  enum { MenuOnly = 1U };

  enum { MessageAndMenu = 2U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_BIOSBOOTMENUMODE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_BIOSBOOTMENUMODE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_BIOSBOOTMENUMODE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public BIOSBootMenuMode
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_BIOSBOOTMENUMODE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, BIOSBootMenuMode)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define BIOSBootMenuMode_T PRUint32
#define BIOSBootMenuMode_Disabled BIOSBootMenuMode::Disabled
#define BIOSBootMenuMode_MenuOnly BIOSBootMenuMode::MenuOnly
#define BIOSBootMenuMode_MessageAndMenu BIOSBootMenuMode::MessageAndMenu

/* starting interface:    ProcessorFeature */
#define PROCESSORFEATURE_IID_STR "64c38e6b-8bcf-45ad-ac03-9b406287c5bf"

#define PROCESSORFEATURE_IID \
  {0x64c38e6b, 0x8bcf, 0x45ad, \
    { 0xac, 0x03, 0x9b, 0x40, 0x62, 0x87, 0xc5, 0xbf }}

class NS_NO_VTABLE ProcessorFeature {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(PROCESSORFEATURE_IID)

  enum { HWVirtEx = 0U };

  enum { PAE = 1U };

  enum { LongMode = 2U };

  enum { NestedPaging = 3U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_PROCESSORFEATURE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_PROCESSORFEATURE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_PROCESSORFEATURE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ProcessorFeature
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_PROCESSORFEATURE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ProcessorFeature)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define ProcessorFeature_T PRUint32
#define ProcessorFeature_HWVirtEx ProcessorFeature::HWVirtEx
#define ProcessorFeature_PAE ProcessorFeature::PAE
#define ProcessorFeature_LongMode ProcessorFeature::LongMode
#define ProcessorFeature_NestedPaging ProcessorFeature::NestedPaging

/* starting interface:    FirmwareType */
#define FIRMWARETYPE_IID_STR "b903f264-c230-483e-ac74-2b37ce60d371"

#define FIRMWARETYPE_IID \
  {0xb903f264, 0xc230, 0x483e, \
    { 0xac, 0x74, 0x2b, 0x37, 0xce, 0x60, 0xd3, 0x71 }}

class NS_NO_VTABLE FirmwareType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FIRMWARETYPE_IID)

  enum { BIOS = 1U };

  enum { EFI = 2U };

  enum { EFI32 = 3U };

  enum { EFI64 = 4U };

  enum { EFIDUAL = 5U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FIRMWARETYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FIRMWARETYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_FIRMWARETYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public FirmwareType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FIRMWARETYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, FirmwareType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define FirmwareType_T PRUint32
#define FirmwareType_BIOS FirmwareType::BIOS
#define FirmwareType_EFI FirmwareType::EFI
#define FirmwareType_EFI32 FirmwareType::EFI32
#define FirmwareType_EFI64 FirmwareType::EFI64
#define FirmwareType_EFIDUAL FirmwareType::EFIDUAL

/* starting interface:    PointingHIDType */
#define POINTINGHIDTYPE_IID_STR "19964e93-0050-45c4-9382-a7bccc53e666"

#define POINTINGHIDTYPE_IID \
  {0x19964e93, 0x0050, 0x45c4, \
    { 0x93, 0x82, 0xa7, 0xbc, 0xcc, 0x53, 0xe6, 0x66 }}

class NS_NO_VTABLE PointingHIDType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(POINTINGHIDTYPE_IID)

  enum { None = 1U };

  enum { PS2Mouse = 2U };

  enum { USBMouse = 3U };

  enum { USBTablet = 4U };

  enum { ComboMouse = 5U };

  enum { USBMultiTouch = 6U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_POINTINGHIDTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_POINTINGHIDTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_POINTINGHIDTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public PointingHIDType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_POINTINGHIDTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, PointingHIDType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define PointingHIDType_T PRUint32
#define PointingHIDType_None PointingHIDType::None
#define PointingHIDType_PS2Mouse PointingHIDType::PS2Mouse
#define PointingHIDType_USBMouse PointingHIDType::USBMouse
#define PointingHIDType_USBTablet PointingHIDType::USBTablet
#define PointingHIDType_ComboMouse PointingHIDType::ComboMouse
#define PointingHIDType_USBMultiTouch PointingHIDType::USBMultiTouch

/* starting interface:    KeyboardHIDType */
#define KEYBOARDHIDTYPE_IID_STR "383e43d7-5c7c-4ec8-9cb8-eda1bccd6699"

#define KEYBOARDHIDTYPE_IID \
  {0x383e43d7, 0x5c7c, 0x4ec8, \
    { 0x9c, 0xb8, 0xed, 0xa1, 0xbc, 0xcd, 0x66, 0x99 }}

class NS_NO_VTABLE KeyboardHIDType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(KEYBOARDHIDTYPE_IID)

  enum { None = 1U };

  enum { PS2Keyboard = 2U };

  enum { USBKeyboard = 3U };

  enum { ComboKeyboard = 4U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_KEYBOARDHIDTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_KEYBOARDHIDTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_KEYBOARDHIDTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public KeyboardHIDType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_KEYBOARDHIDTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, KeyboardHIDType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define KeyboardHIDType_T PRUint32
#define KeyboardHIDType_None KeyboardHIDType::None
#define KeyboardHIDType_PS2Keyboard KeyboardHIDType::PS2Keyboard
#define KeyboardHIDType_USBKeyboard KeyboardHIDType::USBKeyboard
#define KeyboardHIDType_ComboKeyboard KeyboardHIDType::ComboKeyboard

/* starting interface:    DhcpOpt */
#define DHCPOPT_IID_STR "40d99bd3-3ece-44d2-a07e-1085fe9c4f0b"

#define DHCPOPT_IID \
  {0x40d99bd3, 0x3ece, 0x44d2, \
    { 0xa0, 0x7e, 0x10, 0x85, 0xfe, 0x9c, 0x4f, 0x0b }}

class NS_NO_VTABLE DhcpOpt {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(DHCPOPT_IID)

  enum { SubnetMask = 1U };

  enum { TimeOffset = 2U };

  enum { Router = 3U };

  enum { TimeServer = 4U };

  enum { NameServer = 5U };

  enum { DomainNameServer = 6U };

  enum { LogServer = 7U };

  enum { Cookie = 8U };

  enum { LPRServer = 9U };

  enum { ImpressServer = 10U };

  enum { ResourseLocationServer = 11U };

  enum { HostName = 12U };

  enum { BootFileSize = 13U };

  enum { MeritDumpFile = 14U };

  enum { DomainName = 15U };

  enum { SwapServer = 16U };

  enum { RootPath = 17U };

  enum { ExtensionPath = 18U };

  enum { IPForwardingEnableDisable = 19U };

  enum { NonLocalSourceRoutingEnableDisable = 20U };

  enum { PolicyFilter = 21U };

  enum { MaximumDatagramReassemblySize = 22U };

  enum { DefaultIPTime2Live = 23U };

  enum { PathMTUAgingTimeout = 24U };

  enum { IPLayerParametersPerInterface = 25U };

  enum { InterfaceMTU = 26U };

  enum { AllSubnetsAreLocal = 27U };

  enum { BroadcastAddress = 28U };

  enum { PerformMaskDiscovery = 29U };

  enum { MaskSupplier = 30U };

  enum { PerformRouteDiscovery = 31U };

  enum { RouterSolicitationAddress = 32U };

  enum { StaticRoute = 33U };

  enum { TrailerEncapsulation = 34U };

  enum { ARPCacheTimeout = 35U };

  enum { EthernetEncapsulation = 36U };

  enum { TCPDefaultTTL = 37U };

  enum { TCPKeepAliveInterval = 38U };

  enum { TCPKeepAliveGarbage = 39U };

  enum { NetworkInformationServiceDomain = 40U };

  enum { NetworkInformationServiceServers = 41U };

  enum { NetworkTimeProtocolServers = 42U };

  enum { VendorSpecificInformation = 43U };

  enum { Option_44 = 44U };

  enum { Option_45 = 45U };

  enum { Option_46 = 46U };

  enum { Option_47 = 47U };

  enum { Option_48 = 48U };

  enum { Option_49 = 49U };

  enum { IPAddressLeaseTime = 51U };

  enum { Option_64 = 64U };

  enum { Option_65 = 65U };

  enum { TFTPServerName = 66U };

  enum { BootfileName = 67U };

  enum { Option_68 = 68U };

  enum { Option_69 = 69U };

  enum { Option_70 = 70U };

  enum { Option_71 = 71U };

  enum { Option_72 = 72U };

  enum { Option_73 = 73U };

  enum { Option_74 = 74U };

  enum { Option_75 = 75U };

  enum { Option_119 = 119U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_DHCPOPT \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_DHCPOPT(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_DHCPOPT(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public DhcpOpt
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_DHCPOPT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, DhcpOpt)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define DhcpOpt_T PRUint32
#define DhcpOpt_SubnetMask DhcpOpt::SubnetMask
#define DhcpOpt_TimeOffset DhcpOpt::TimeOffset
#define DhcpOpt_Router DhcpOpt::Router
#define DhcpOpt_TimeServer DhcpOpt::TimeServer
#define DhcpOpt_NameServer DhcpOpt::NameServer
#define DhcpOpt_DomainNameServer DhcpOpt::DomainNameServer
#define DhcpOpt_LogServer DhcpOpt::LogServer
#define DhcpOpt_Cookie DhcpOpt::Cookie
#define DhcpOpt_LPRServer DhcpOpt::LPRServer
#define DhcpOpt_ImpressServer DhcpOpt::ImpressServer
#define DhcpOpt_ResourseLocationServer DhcpOpt::ResourseLocationServer
#define DhcpOpt_HostName DhcpOpt::HostName
#define DhcpOpt_BootFileSize DhcpOpt::BootFileSize
#define DhcpOpt_MeritDumpFile DhcpOpt::MeritDumpFile
#define DhcpOpt_DomainName DhcpOpt::DomainName
#define DhcpOpt_SwapServer DhcpOpt::SwapServer
#define DhcpOpt_RootPath DhcpOpt::RootPath
#define DhcpOpt_ExtensionPath DhcpOpt::ExtensionPath
#define DhcpOpt_IPForwardingEnableDisable DhcpOpt::IPForwardingEnableDisable
#define DhcpOpt_NonLocalSourceRoutingEnableDisable DhcpOpt::NonLocalSourceRoutingEnableDisable
#define DhcpOpt_PolicyFilter DhcpOpt::PolicyFilter
#define DhcpOpt_MaximumDatagramReassemblySize DhcpOpt::MaximumDatagramReassemblySize
#define DhcpOpt_DefaultIPTime2Live DhcpOpt::DefaultIPTime2Live
#define DhcpOpt_PathMTUAgingTimeout DhcpOpt::PathMTUAgingTimeout
#define DhcpOpt_IPLayerParametersPerInterface DhcpOpt::IPLayerParametersPerInterface
#define DhcpOpt_InterfaceMTU DhcpOpt::InterfaceMTU
#define DhcpOpt_AllSubnetsAreLocal DhcpOpt::AllSubnetsAreLocal
#define DhcpOpt_BroadcastAddress DhcpOpt::BroadcastAddress
#define DhcpOpt_PerformMaskDiscovery DhcpOpt::PerformMaskDiscovery
#define DhcpOpt_MaskSupplier DhcpOpt::MaskSupplier
#define DhcpOpt_PerformRouteDiscovery DhcpOpt::PerformRouteDiscovery
#define DhcpOpt_RouterSolicitationAddress DhcpOpt::RouterSolicitationAddress
#define DhcpOpt_StaticRoute DhcpOpt::StaticRoute
#define DhcpOpt_TrailerEncapsulation DhcpOpt::TrailerEncapsulation
#define DhcpOpt_ARPCacheTimeout DhcpOpt::ARPCacheTimeout
#define DhcpOpt_EthernetEncapsulation DhcpOpt::EthernetEncapsulation
#define DhcpOpt_TCPDefaultTTL DhcpOpt::TCPDefaultTTL
#define DhcpOpt_TCPKeepAliveInterval DhcpOpt::TCPKeepAliveInterval
#define DhcpOpt_TCPKeepAliveGarbage DhcpOpt::TCPKeepAliveGarbage
#define DhcpOpt_NetworkInformationServiceDomain DhcpOpt::NetworkInformationServiceDomain
#define DhcpOpt_NetworkInformationServiceServers DhcpOpt::NetworkInformationServiceServers
#define DhcpOpt_NetworkTimeProtocolServers DhcpOpt::NetworkTimeProtocolServers
#define DhcpOpt_VendorSpecificInformation DhcpOpt::VendorSpecificInformation
#define DhcpOpt_Option_44 DhcpOpt::Option_44
#define DhcpOpt_Option_45 DhcpOpt::Option_45
#define DhcpOpt_Option_46 DhcpOpt::Option_46
#define DhcpOpt_Option_47 DhcpOpt::Option_47
#define DhcpOpt_Option_48 DhcpOpt::Option_48
#define DhcpOpt_Option_49 DhcpOpt::Option_49
#define DhcpOpt_IPAddressLeaseTime DhcpOpt::IPAddressLeaseTime
#define DhcpOpt_Option_64 DhcpOpt::Option_64
#define DhcpOpt_Option_65 DhcpOpt::Option_65
#define DhcpOpt_TFTPServerName DhcpOpt::TFTPServerName
#define DhcpOpt_BootfileName DhcpOpt::BootfileName
#define DhcpOpt_Option_68 DhcpOpt::Option_68
#define DhcpOpt_Option_69 DhcpOpt::Option_69
#define DhcpOpt_Option_70 DhcpOpt::Option_70
#define DhcpOpt_Option_71 DhcpOpt::Option_71
#define DhcpOpt_Option_72 DhcpOpt::Option_72
#define DhcpOpt_Option_73 DhcpOpt::Option_73
#define DhcpOpt_Option_74 DhcpOpt::Option_74
#define DhcpOpt_Option_75 DhcpOpt::Option_75
#define DhcpOpt_Option_119 DhcpOpt::Option_119

/* starting interface:    VFSType */
#define VFSTYPE_IID_STR "813999ba-b949-48a8-9230-aadc6285e2f2"

#define VFSTYPE_IID \
  {0x813999ba, 0xb949, 0x48a8, \
    { 0x92, 0x30, 0xaa, 0xdc, 0x62, 0x85, 0xe2, 0xf2 }}

class NS_NO_VTABLE VFSType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(VFSTYPE_IID)

  enum { File = 1U };

  enum { Cloud = 2U };

  enum { S3 = 3U };

  enum { WebDav = 4U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_VFSTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_VFSTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_VFSTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public VFSType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_VFSTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, VFSType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define VFSType_T PRUint32
#define VFSType_File VFSType::File
#define VFSType_Cloud VFSType::Cloud
#define VFSType_S3 VFSType::S3
#define VFSType_WebDav VFSType::WebDav

/* starting interface:    VFSFileType */
#define VFSFILETYPE_IID_STR "714333cd-44e2-415f-a245-d378fa9b1242"

#define VFSFILETYPE_IID \
  {0x714333cd, 0x44e2, 0x415f, \
    { 0xa2, 0x45, 0xd3, 0x78, 0xfa, 0x9b, 0x12, 0x42 }}

class NS_NO_VTABLE VFSFileType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(VFSFILETYPE_IID)

  enum { Unknown = 1U };

  enum { Fifo = 2U };

  enum { DevChar = 3U };

  enum { Directory = 4U };

  enum { DevBlock = 5U };

  enum { File = 6U };

  enum { SymLink = 7U };

  enum { Socket = 8U };

  enum { WhiteOut = 9U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_VFSFILETYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_VFSFILETYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_VFSFILETYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public VFSFileType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_VFSFILETYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, VFSFileType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define VFSFileType_T PRUint32
#define VFSFileType_Unknown VFSFileType::Unknown
#define VFSFileType_Fifo VFSFileType::Fifo
#define VFSFileType_DevChar VFSFileType::DevChar
#define VFSFileType_Directory VFSFileType::Directory
#define VFSFileType_DevBlock VFSFileType::DevBlock
#define VFSFileType_File VFSFileType::File
#define VFSFileType_SymLink VFSFileType::SymLink
#define VFSFileType_Socket VFSFileType::Socket
#define VFSFileType_WhiteOut VFSFileType::WhiteOut

/* starting interface:    ImportOptions */
#define IMPORTOPTIONS_IID_STR "0a981523-3b20-4004-8ee3-dfd322202ace"

#define IMPORTOPTIONS_IID \
  {0x0a981523, 0x3b20, 0x4004, \
    { 0x8e, 0xe3, 0xdf, 0xd3, 0x22, 0x20, 0x2a, 0xce }}

class NS_NO_VTABLE ImportOptions {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMPORTOPTIONS_IID)

  enum { KeepAllMACs = 1U };

  enum { KeepNATMACs = 2U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMPORTOPTIONS \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMPORTOPTIONS(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMPORTOPTIONS(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ImportOptions
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMPORTOPTIONS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ImportOptions)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define ImportOptions_T PRUint32
#define ImportOptions_KeepAllMACs ImportOptions::KeepAllMACs
#define ImportOptions_KeepNATMACs ImportOptions::KeepNATMACs

/* starting interface:    ExportOptions */
#define EXPORTOPTIONS_IID_STR "8f45eb08-fd34-41ee-af95-a880bdee5554"

#define EXPORTOPTIONS_IID \
  {0x8f45eb08, 0xfd34, 0x41ee, \
    { 0xaf, 0x95, 0xa8, 0x80, 0xbd, 0xee, 0x55, 0x54 }}

class NS_NO_VTABLE ExportOptions {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(EXPORTOPTIONS_IID)

  enum { CreateManifest = 1U };

  enum { ExportDVDImages = 2U };

  enum { StripAllMACs = 3U };

  enum { StripAllNonNATMACs = 4U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_EXPORTOPTIONS \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_EXPORTOPTIONS(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_EXPORTOPTIONS(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ExportOptions
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_EXPORTOPTIONS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ExportOptions)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define ExportOptions_T PRUint32
#define ExportOptions_CreateManifest ExportOptions::CreateManifest
#define ExportOptions_ExportDVDImages ExportOptions::ExportDVDImages
#define ExportOptions_StripAllMACs ExportOptions::StripAllMACs
#define ExportOptions_StripAllNonNATMACs ExportOptions::StripAllNonNATMACs

/* starting interface:    VirtualSystemDescriptionType */
#define VIRTUALSYSTEMDESCRIPTIONTYPE_IID_STR "303c0900-a746-4612-8c67-79003e91f459"

#define VIRTUALSYSTEMDESCRIPTIONTYPE_IID \
  {0x303c0900, 0xa746, 0x4612, \
    { 0x8c, 0x67, 0x79, 0x00, 0x3e, 0x91, 0xf4, 0x59 }}

class NS_NO_VTABLE VirtualSystemDescriptionType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(VIRTUALSYSTEMDESCRIPTIONTYPE_IID)

  enum { Ignore = 1U };

  enum { OS = 2U };

  enum { Name = 3U };

  enum { Product = 4U };

  enum { Vendor = 5U };

  enum { Version = 6U };

  enum { ProductUrl = 7U };

  enum { VendorUrl = 8U };

  enum { Description = 9U };

  enum { License = 10U };

  enum { Miscellaneous = 11U };

  enum { CPU = 12U };

  enum { Memory = 13U };

  enum { HardDiskControllerIDE = 14U };

  enum { HardDiskControllerSATA = 15U };

  enum { HardDiskControllerSCSI = 16U };

  enum { HardDiskControllerSAS = 17U };

  enum { HardDiskImage = 18U };

  enum { Floppy = 19U };

  enum { CDROM = 20U };

  enum { NetworkAdapter = 21U };

  enum { USBController = 22U };

  enum { SoundCard = 23U };

  enum { SettingsFile = 24U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_VIRTUALSYSTEMDESCRIPTIONTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_VIRTUALSYSTEMDESCRIPTIONTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_VIRTUALSYSTEMDESCRIPTIONTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public VirtualSystemDescriptionType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_VIRTUALSYSTEMDESCRIPTIONTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, VirtualSystemDescriptionType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define VirtualSystemDescriptionType_T PRUint32
#define VirtualSystemDescriptionType_Ignore VirtualSystemDescriptionType::Ignore
#define VirtualSystemDescriptionType_OS VirtualSystemDescriptionType::OS
#define VirtualSystemDescriptionType_Name VirtualSystemDescriptionType::Name
#define VirtualSystemDescriptionType_Product VirtualSystemDescriptionType::Product
#define VirtualSystemDescriptionType_Vendor VirtualSystemDescriptionType::Vendor
#define VirtualSystemDescriptionType_Version VirtualSystemDescriptionType::Version
#define VirtualSystemDescriptionType_ProductUrl VirtualSystemDescriptionType::ProductUrl
#define VirtualSystemDescriptionType_VendorUrl VirtualSystemDescriptionType::VendorUrl
#define VirtualSystemDescriptionType_Description VirtualSystemDescriptionType::Description
#define VirtualSystemDescriptionType_License VirtualSystemDescriptionType::License
#define VirtualSystemDescriptionType_Miscellaneous VirtualSystemDescriptionType::Miscellaneous
#define VirtualSystemDescriptionType_CPU VirtualSystemDescriptionType::CPU
#define VirtualSystemDescriptionType_Memory VirtualSystemDescriptionType::Memory
#define VirtualSystemDescriptionType_HardDiskControllerIDE VirtualSystemDescriptionType::HardDiskControllerIDE
#define VirtualSystemDescriptionType_HardDiskControllerSATA VirtualSystemDescriptionType::HardDiskControllerSATA
#define VirtualSystemDescriptionType_HardDiskControllerSCSI VirtualSystemDescriptionType::HardDiskControllerSCSI
#define VirtualSystemDescriptionType_HardDiskControllerSAS VirtualSystemDescriptionType::HardDiskControllerSAS
#define VirtualSystemDescriptionType_HardDiskImage VirtualSystemDescriptionType::HardDiskImage
#define VirtualSystemDescriptionType_Floppy VirtualSystemDescriptionType::Floppy
#define VirtualSystemDescriptionType_CDROM VirtualSystemDescriptionType::CDROM
#define VirtualSystemDescriptionType_NetworkAdapter VirtualSystemDescriptionType::NetworkAdapter
#define VirtualSystemDescriptionType_USBController VirtualSystemDescriptionType::USBController
#define VirtualSystemDescriptionType_SoundCard VirtualSystemDescriptionType::SoundCard
#define VirtualSystemDescriptionType_SettingsFile VirtualSystemDescriptionType::SettingsFile

/* starting interface:    VirtualSystemDescriptionValueType */
#define VIRTUALSYSTEMDESCRIPTIONVALUETYPE_IID_STR "56d9403f-3425-4118-9919-36f2a9b8c77c"

#define VIRTUALSYSTEMDESCRIPTIONVALUETYPE_IID \
  {0x56d9403f, 0x3425, 0x4118, \
    { 0x99, 0x19, 0x36, 0xf2, 0xa9, 0xb8, 0xc7, 0x7c }}

class NS_NO_VTABLE VirtualSystemDescriptionValueType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(VIRTUALSYSTEMDESCRIPTIONVALUETYPE_IID)

  enum { Reference = 1U };

  enum { Original = 2U };

  enum { Auto = 3U };

  enum { ExtraConfig = 4U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_VIRTUALSYSTEMDESCRIPTIONVALUETYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_VIRTUALSYSTEMDESCRIPTIONVALUETYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_VIRTUALSYSTEMDESCRIPTIONVALUETYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public VirtualSystemDescriptionValueType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_VIRTUALSYSTEMDESCRIPTIONVALUETYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, VirtualSystemDescriptionValueType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define VirtualSystemDescriptionValueType_T PRUint32
#define VirtualSystemDescriptionValueType_Reference VirtualSystemDescriptionValueType::Reference
#define VirtualSystemDescriptionValueType_Original VirtualSystemDescriptionValueType::Original
#define VirtualSystemDescriptionValueType_Auto VirtualSystemDescriptionValueType::Auto
#define VirtualSystemDescriptionValueType_ExtraConfig VirtualSystemDescriptionValueType::ExtraConfig

/* starting interface:    GraphicsControllerType */
#define GRAPHICSCONTROLLERTYPE_IID_STR "79c96ca0-9f39-4900-948e-68c41cbe127a"

#define GRAPHICSCONTROLLERTYPE_IID \
  {0x79c96ca0, 0x9f39, 0x4900, \
    { 0x94, 0x8e, 0x68, 0xc4, 0x1c, 0xbe, 0x12, 0x7a }}

class NS_NO_VTABLE GraphicsControllerType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(GRAPHICSCONTROLLERTYPE_IID)

  enum { Null = 0U };

  enum { VBoxVGA = 1U };

  enum { VMSVGA = 2U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_GRAPHICSCONTROLLERTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_GRAPHICSCONTROLLERTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_GRAPHICSCONTROLLERTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public GraphicsControllerType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_GRAPHICSCONTROLLERTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, GraphicsControllerType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define GraphicsControllerType_T PRUint32
#define GraphicsControllerType_Null GraphicsControllerType::Null
#define GraphicsControllerType_VBoxVGA GraphicsControllerType::VBoxVGA
#define GraphicsControllerType_VMSVGA GraphicsControllerType::VMSVGA

/* starting interface:    CleanupMode */
#define CLEANUPMODE_IID_STR "67897c50-7cca-47a9-83f6-ce8fd8eb5441"

#define CLEANUPMODE_IID \
  {0x67897c50, 0x7cca, 0x47a9, \
    { 0x83, 0xf6, 0xce, 0x8f, 0xd8, 0xeb, 0x54, 0x41 }}

class NS_NO_VTABLE CleanupMode {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(CLEANUPMODE_IID)

  enum { UnregisterOnly = 1U };

  enum { DetachAllReturnNone = 2U };

  enum { DetachAllReturnHardDisksOnly = 3U };

  enum { Full = 4U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CLEANUPMODE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CLEANUPMODE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_CLEANUPMODE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public CleanupMode
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CLEANUPMODE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, CleanupMode)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define CleanupMode_T PRUint32
#define CleanupMode_UnregisterOnly CleanupMode::UnregisterOnly
#define CleanupMode_DetachAllReturnNone CleanupMode::DetachAllReturnNone
#define CleanupMode_DetachAllReturnHardDisksOnly CleanupMode::DetachAllReturnHardDisksOnly
#define CleanupMode_Full CleanupMode::Full

/* starting interface:    CloneMode */
#define CLONEMODE_IID_STR "a7a159fe-5096-4b8d-8c3c-d033cb0b35a8"

#define CLONEMODE_IID \
  {0xa7a159fe, 0x5096, 0x4b8d, \
    { 0x8c, 0x3c, 0xd0, 0x33, 0xcb, 0x0b, 0x35, 0xa8 }}

class NS_NO_VTABLE CloneMode {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(CLONEMODE_IID)

  enum { MachineState = 1U };

  enum { MachineAndChildStates = 2U };

  enum { AllStates = 3U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CLONEMODE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CLONEMODE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_CLONEMODE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public CloneMode
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CLONEMODE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, CloneMode)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define CloneMode_T PRUint32
#define CloneMode_MachineState CloneMode::MachineState
#define CloneMode_MachineAndChildStates CloneMode::MachineAndChildStates
#define CloneMode_AllStates CloneMode::AllStates

/* starting interface:    CloneOptions */
#define CLONEOPTIONS_IID_STR "22243f8e-96ab-497c-8cf0-f40a566c630b"

#define CLONEOPTIONS_IID \
  {0x22243f8e, 0x96ab, 0x497c, \
    { 0x8c, 0xf0, 0xf4, 0x0a, 0x56, 0x6c, 0x63, 0x0b }}

class NS_NO_VTABLE CloneOptions {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(CLONEOPTIONS_IID)

  enum { Link = 1U };

  enum { KeepAllMACs = 2U };

  enum { KeepNATMACs = 3U };

  enum { KeepDiskNames = 4U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CLONEOPTIONS \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CLONEOPTIONS(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_CLONEOPTIONS(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public CloneOptions
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CLONEOPTIONS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, CloneOptions)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define CloneOptions_T PRUint32
#define CloneOptions_Link CloneOptions::Link
#define CloneOptions_KeepAllMACs CloneOptions::KeepAllMACs
#define CloneOptions_KeepNATMACs CloneOptions::KeepNATMACs
#define CloneOptions_KeepDiskNames CloneOptions::KeepDiskNames

/* starting interface:    AutostopType */
#define AUTOSTOPTYPE_IID_STR "6bb96740-cf34-470d-aab2-2cd48ea2e10e"

#define AUTOSTOPTYPE_IID \
  {0x6bb96740, 0xcf34, 0x470d, \
    { 0xaa, 0xb2, 0x2c, 0xd4, 0x8e, 0xa2, 0xe1, 0x0e }}

class NS_NO_VTABLE AutostopType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(AUTOSTOPTYPE_IID)

  enum { Disabled = 1U };

  enum { SaveState = 2U };

  enum { PowerOff = 3U };

  enum { AcpiShutdown = 4U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_AUTOSTOPTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_AUTOSTOPTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_AUTOSTOPTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public AutostopType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_AUTOSTOPTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, AutostopType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define AutostopType_T PRUint32
#define AutostopType_Disabled AutostopType::Disabled
#define AutostopType_SaveState AutostopType::SaveState
#define AutostopType_PowerOff AutostopType::PowerOff
#define AutostopType_AcpiShutdown AutostopType::AcpiShutdown

/* starting interface:    HostNetworkInterfaceMediumType */
#define HOSTNETWORKINTERFACEMEDIUMTYPE_IID_STR "1aa54aaf-2497-45a2-bfb1-8eb225e93d5b"

#define HOSTNETWORKINTERFACEMEDIUMTYPE_IID \
  {0x1aa54aaf, 0x2497, 0x45a2, \
    { 0xbf, 0xb1, 0x8e, 0xb2, 0x25, 0xe9, 0x3d, 0x5b }}

class NS_NO_VTABLE HostNetworkInterfaceMediumType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(HOSTNETWORKINTERFACEMEDIUMTYPE_IID)

  enum { Unknown = 0U };

  enum { Ethernet = 1U };

  enum { PPP = 2U };

  enum { SLIP = 3U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_HOSTNETWORKINTERFACEMEDIUMTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_HOSTNETWORKINTERFACEMEDIUMTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_HOSTNETWORKINTERFACEMEDIUMTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public HostNetworkInterfaceMediumType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_HOSTNETWORKINTERFACEMEDIUMTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, HostNetworkInterfaceMediumType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define HostNetworkInterfaceMediumType_T PRUint32
#define HostNetworkInterfaceMediumType_Unknown HostNetworkInterfaceMediumType::Unknown
#define HostNetworkInterfaceMediumType_Ethernet HostNetworkInterfaceMediumType::Ethernet
#define HostNetworkInterfaceMediumType_PPP HostNetworkInterfaceMediumType::PPP
#define HostNetworkInterfaceMediumType_SLIP HostNetworkInterfaceMediumType::SLIP

/* starting interface:    HostNetworkInterfaceStatus */
#define HOSTNETWORKINTERFACESTATUS_IID_STR "cc474a69-2710-434b-8d99-c38e5d5a6f41"

#define HOSTNETWORKINTERFACESTATUS_IID \
  {0xcc474a69, 0x2710, 0x434b, \
    { 0x8d, 0x99, 0xc3, 0x8e, 0x5d, 0x5a, 0x6f, 0x41 }}

class NS_NO_VTABLE HostNetworkInterfaceStatus {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(HOSTNETWORKINTERFACESTATUS_IID)

  enum { Unknown = 0U };

  enum { Up = 1U };

  enum { Down = 2U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_HOSTNETWORKINTERFACESTATUS \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_HOSTNETWORKINTERFACESTATUS(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_HOSTNETWORKINTERFACESTATUS(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public HostNetworkInterfaceStatus
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_HOSTNETWORKINTERFACESTATUS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, HostNetworkInterfaceStatus)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define HostNetworkInterfaceStatus_T PRUint32
#define HostNetworkInterfaceStatus_Unknown HostNetworkInterfaceStatus::Unknown
#define HostNetworkInterfaceStatus_Up HostNetworkInterfaceStatus::Up
#define HostNetworkInterfaceStatus_Down HostNetworkInterfaceStatus::Down

/* starting interface:    HostNetworkInterfaceType */
#define HOSTNETWORKINTERFACETYPE_IID_STR "67431b00-9946-48a2-bc02-b25c5919f4f3"

#define HOSTNETWORKINTERFACETYPE_IID \
  {0x67431b00, 0x9946, 0x48a2, \
    { 0xbc, 0x02, 0xb2, 0x5c, 0x59, 0x19, 0xf4, 0xf3 }}

class NS_NO_VTABLE HostNetworkInterfaceType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(HOSTNETWORKINTERFACETYPE_IID)

  enum { Bridged = 1U };

  enum { HostOnly = 2U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_HOSTNETWORKINTERFACETYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_HOSTNETWORKINTERFACETYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_HOSTNETWORKINTERFACETYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public HostNetworkInterfaceType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_HOSTNETWORKINTERFACETYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, HostNetworkInterfaceType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define HostNetworkInterfaceType_T PRUint32
#define HostNetworkInterfaceType_Bridged HostNetworkInterfaceType::Bridged
#define HostNetworkInterfaceType_HostOnly HostNetworkInterfaceType::HostOnly

/* starting interface:    AdditionsFacilityType */
#define ADDITIONSFACILITYTYPE_IID_STR "98f7f957-89fb-49b6-a3b1-31e3285eb1d8"

#define ADDITIONSFACILITYTYPE_IID \
  {0x98f7f957, 0x89fb, 0x49b6, \
    { 0xa3, 0xb1, 0x31, 0xe3, 0x28, 0x5e, 0xb1, 0xd8 }}

class NS_NO_VTABLE AdditionsFacilityType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ADDITIONSFACILITYTYPE_IID)

  enum { None = 0U };

  enum { VBoxGuestDriver = 20U };

  enum { AutoLogon = 90U };

  enum { VBoxService = 100U };

  enum { VBoxTrayClient = 101U };

  enum { Seamless = 1000U };

  enum { Graphics = 1100U };

  enum { All = 2147483646U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ADDITIONSFACILITYTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ADDITIONSFACILITYTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ADDITIONSFACILITYTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public AdditionsFacilityType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ADDITIONSFACILITYTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, AdditionsFacilityType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define AdditionsFacilityType_T PRUint32
#define AdditionsFacilityType_None AdditionsFacilityType::None
#define AdditionsFacilityType_VBoxGuestDriver AdditionsFacilityType::VBoxGuestDriver
#define AdditionsFacilityType_AutoLogon AdditionsFacilityType::AutoLogon
#define AdditionsFacilityType_VBoxService AdditionsFacilityType::VBoxService
#define AdditionsFacilityType_VBoxTrayClient AdditionsFacilityType::VBoxTrayClient
#define AdditionsFacilityType_Seamless AdditionsFacilityType::Seamless
#define AdditionsFacilityType_Graphics AdditionsFacilityType::Graphics
#define AdditionsFacilityType_All AdditionsFacilityType::All

/* starting interface:    AdditionsFacilityClass */
#define ADDITIONSFACILITYCLASS_IID_STR "446451b2-c88d-4e5d-84c9-91bc7f533f5f"

#define ADDITIONSFACILITYCLASS_IID \
  {0x446451b2, 0xc88d, 0x4e5d, \
    { 0x84, 0xc9, 0x91, 0xbc, 0x7f, 0x53, 0x3f, 0x5f }}

class NS_NO_VTABLE AdditionsFacilityClass {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ADDITIONSFACILITYCLASS_IID)

  enum { None = 0U };

  enum { Driver = 10U };

  enum { Service = 30U };

  enum { Program = 50U };

  enum { Feature = 100U };

  enum { ThirdParty = 999U };

  enum { All = 2147483646U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ADDITIONSFACILITYCLASS \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ADDITIONSFACILITYCLASS(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ADDITIONSFACILITYCLASS(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public AdditionsFacilityClass
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ADDITIONSFACILITYCLASS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, AdditionsFacilityClass)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define AdditionsFacilityClass_T PRUint32
#define AdditionsFacilityClass_None AdditionsFacilityClass::None
#define AdditionsFacilityClass_Driver AdditionsFacilityClass::Driver
#define AdditionsFacilityClass_Service AdditionsFacilityClass::Service
#define AdditionsFacilityClass_Program AdditionsFacilityClass::Program
#define AdditionsFacilityClass_Feature AdditionsFacilityClass::Feature
#define AdditionsFacilityClass_ThirdParty AdditionsFacilityClass::ThirdParty
#define AdditionsFacilityClass_All AdditionsFacilityClass::All

/* starting interface:    AdditionsFacilityStatus */
#define ADDITIONSFACILITYSTATUS_IID_STR "ce06f9e1-394e-4fe9-9368-5a88c567dbde"

#define ADDITIONSFACILITYSTATUS_IID \
  {0xce06f9e1, 0x394e, 0x4fe9, \
    { 0x93, 0x68, 0x5a, 0x88, 0xc5, 0x67, 0xdb, 0xde }}

class NS_NO_VTABLE AdditionsFacilityStatus {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ADDITIONSFACILITYSTATUS_IID)

  enum { Inactive = 0U };

  enum { Paused = 1U };

  enum { PreInit = 20U };

  enum { Init = 30U };

  enum { Active = 50U };

  enum { Terminating = 100U };

  enum { Terminated = 101U };

  enum { Failed = 800U };

  enum { Unknown = 999U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ADDITIONSFACILITYSTATUS \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ADDITIONSFACILITYSTATUS(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ADDITIONSFACILITYSTATUS(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public AdditionsFacilityStatus
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ADDITIONSFACILITYSTATUS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, AdditionsFacilityStatus)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define AdditionsFacilityStatus_T PRUint32
#define AdditionsFacilityStatus_Inactive AdditionsFacilityStatus::Inactive
#define AdditionsFacilityStatus_Paused AdditionsFacilityStatus::Paused
#define AdditionsFacilityStatus_PreInit AdditionsFacilityStatus::PreInit
#define AdditionsFacilityStatus_Init AdditionsFacilityStatus::Init
#define AdditionsFacilityStatus_Active AdditionsFacilityStatus::Active
#define AdditionsFacilityStatus_Terminating AdditionsFacilityStatus::Terminating
#define AdditionsFacilityStatus_Terminated AdditionsFacilityStatus::Terminated
#define AdditionsFacilityStatus_Failed AdditionsFacilityStatus::Failed
#define AdditionsFacilityStatus_Unknown AdditionsFacilityStatus::Unknown

/* starting interface:    AdditionsRunLevelType */
#define ADDITIONSRUNLEVELTYPE_IID_STR "a25417ee-a9dd-4f5b-b0dc-377860087754"

#define ADDITIONSRUNLEVELTYPE_IID \
  {0xa25417ee, 0xa9dd, 0x4f5b, \
    { 0xb0, 0xdc, 0x37, 0x78, 0x60, 0x08, 0x77, 0x54 }}

class NS_NO_VTABLE AdditionsRunLevelType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ADDITIONSRUNLEVELTYPE_IID)

  enum { None = 0U };

  enum { System = 1U };

  enum { Userland = 2U };

  enum { Desktop = 3U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ADDITIONSRUNLEVELTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ADDITIONSRUNLEVELTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ADDITIONSRUNLEVELTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public AdditionsRunLevelType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ADDITIONSRUNLEVELTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, AdditionsRunLevelType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define AdditionsRunLevelType_T PRUint32
#define AdditionsRunLevelType_None AdditionsRunLevelType::None
#define AdditionsRunLevelType_System AdditionsRunLevelType::System
#define AdditionsRunLevelType_Userland AdditionsRunLevelType::Userland
#define AdditionsRunLevelType_Desktop AdditionsRunLevelType::Desktop

/* starting interface:    AdditionsUpdateFlag */
#define ADDITIONSUPDATEFLAG_IID_STR "726a818d-18d6-4389-94e8-3e9e6826171a"

#define ADDITIONSUPDATEFLAG_IID \
  {0x726a818d, 0x18d6, 0x4389, \
    { 0x94, 0xe8, 0x3e, 0x9e, 0x68, 0x26, 0x17, 0x1a }}

class NS_NO_VTABLE AdditionsUpdateFlag {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ADDITIONSUPDATEFLAG_IID)

  enum { None = 0U };

  enum { WaitForUpdateStartOnly = 1U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ADDITIONSUPDATEFLAG \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ADDITIONSUPDATEFLAG(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ADDITIONSUPDATEFLAG(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public AdditionsUpdateFlag
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ADDITIONSUPDATEFLAG

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, AdditionsUpdateFlag)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define AdditionsUpdateFlag_T PRUint32
#define AdditionsUpdateFlag_None AdditionsUpdateFlag::None
#define AdditionsUpdateFlag_WaitForUpdateStartOnly AdditionsUpdateFlag::WaitForUpdateStartOnly

/* starting interface:    GuestSessionStatus */
#define GUESTSESSIONSTATUS_IID_STR "ac2669da-4624-44f2-85b5-0b0bfb8d8673"

#define GUESTSESSIONSTATUS_IID \
  {0xac2669da, 0x4624, 0x44f2, \
    { 0x85, 0xb5, 0x0b, 0x0b, 0xfb, 0x8d, 0x86, 0x73 }}

class NS_NO_VTABLE GuestSessionStatus {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(GUESTSESSIONSTATUS_IID)

  enum { Undefined = 0U };

  enum { Starting = 10U };

  enum { Started = 100U };

  enum { Terminating = 480U };

  enum { Terminated = 500U };

  enum { TimedOutKilled = 512U };

  enum { TimedOutAbnormally = 513U };

  enum { Down = 600U };

  enum { Error = 800U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_GUESTSESSIONSTATUS \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_GUESTSESSIONSTATUS(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_GUESTSESSIONSTATUS(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public GuestSessionStatus
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_GUESTSESSIONSTATUS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, GuestSessionStatus)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define GuestSessionStatus_T PRUint32
#define GuestSessionStatus_Undefined GuestSessionStatus::Undefined
#define GuestSessionStatus_Starting GuestSessionStatus::Starting
#define GuestSessionStatus_Started GuestSessionStatus::Started
#define GuestSessionStatus_Terminating GuestSessionStatus::Terminating
#define GuestSessionStatus_Terminated GuestSessionStatus::Terminated
#define GuestSessionStatus_TimedOutKilled GuestSessionStatus::TimedOutKilled
#define GuestSessionStatus_TimedOutAbnormally GuestSessionStatus::TimedOutAbnormally
#define GuestSessionStatus_Down GuestSessionStatus::Down
#define GuestSessionStatus_Error GuestSessionStatus::Error

/* starting interface:    GuestSessionWaitForFlag */
#define GUESTSESSIONWAITFORFLAG_IID_STR "bb7a372a-f635-4e11-a81a-e707f3a52ef5"

#define GUESTSESSIONWAITFORFLAG_IID \
  {0xbb7a372a, 0xf635, 0x4e11, \
    { 0xa8, 0x1a, 0xe7, 0x07, 0xf3, 0xa5, 0x2e, 0xf5 }}

class NS_NO_VTABLE GuestSessionWaitForFlag {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(GUESTSESSIONWAITFORFLAG_IID)

  enum { None = 0U };

  enum { Start = 1U };

  enum { Terminate = 2U };

  enum { Status = 4U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_GUESTSESSIONWAITFORFLAG \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_GUESTSESSIONWAITFORFLAG(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_GUESTSESSIONWAITFORFLAG(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public GuestSessionWaitForFlag
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_GUESTSESSIONWAITFORFLAG

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, GuestSessionWaitForFlag)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define GuestSessionWaitForFlag_T PRUint32
#define GuestSessionWaitForFlag_None GuestSessionWaitForFlag::None
#define GuestSessionWaitForFlag_Start GuestSessionWaitForFlag::Start
#define GuestSessionWaitForFlag_Terminate GuestSessionWaitForFlag::Terminate
#define GuestSessionWaitForFlag_Status GuestSessionWaitForFlag::Status

/* starting interface:    GuestSessionWaitResult */
#define GUESTSESSIONWAITRESULT_IID_STR "c0f6a8a5-fdb6-42bf-a582-56c6f82bcd2d"

#define GUESTSESSIONWAITRESULT_IID \
  {0xc0f6a8a5, 0xfdb6, 0x42bf, \
    { 0xa5, 0x82, 0x56, 0xc6, 0xf8, 0x2b, 0xcd, 0x2d }}

class NS_NO_VTABLE GuestSessionWaitResult {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(GUESTSESSIONWAITRESULT_IID)

  enum { None = 0U };

  enum { Start = 1U };

  enum { Terminate = 2U };

  enum { Status = 3U };

  enum { Error = 4U };

  enum { Timeout = 5U };

  enum { WaitFlagNotSupported = 6U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_GUESTSESSIONWAITRESULT \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_GUESTSESSIONWAITRESULT(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_GUESTSESSIONWAITRESULT(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public GuestSessionWaitResult
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_GUESTSESSIONWAITRESULT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, GuestSessionWaitResult)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define GuestSessionWaitResult_T PRUint32
#define GuestSessionWaitResult_None GuestSessionWaitResult::None
#define GuestSessionWaitResult_Start GuestSessionWaitResult::Start
#define GuestSessionWaitResult_Terminate GuestSessionWaitResult::Terminate
#define GuestSessionWaitResult_Status GuestSessionWaitResult::Status
#define GuestSessionWaitResult_Error GuestSessionWaitResult::Error
#define GuestSessionWaitResult_Timeout GuestSessionWaitResult::Timeout
#define GuestSessionWaitResult_WaitFlagNotSupported GuestSessionWaitResult::WaitFlagNotSupported

/* starting interface:    GuestUserState */
#define GUESTUSERSTATE_IID_STR "b2a82b02-fd3d-4fc2-ba84-6ba5ac8be198"

#define GUESTUSERSTATE_IID \
  {0xb2a82b02, 0xfd3d, 0x4fc2, \
    { 0xba, 0x84, 0x6b, 0xa5, 0xac, 0x8b, 0xe1, 0x98 }}

class NS_NO_VTABLE GuestUserState {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(GUESTUSERSTATE_IID)

  enum { Unknown = 0U };

  enum { LoggedIn = 1U };

  enum { LoggedOut = 2U };

  enum { Locked = 3U };

  enum { Unlocked = 4U };

  enum { Disabled = 5U };

  enum { Idle = 6U };

  enum { InUse = 7U };

  enum { Created = 8U };

  enum { Deleted = 9U };

  enum { SessionChanged = 10U };

  enum { CredentialsChanged = 11U };

  enum { RoleChanged = 12U };

  enum { GroupAdded = 13U };

  enum { GroupRemoved = 14U };

  enum { Elevated = 15U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_GUESTUSERSTATE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_GUESTUSERSTATE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_GUESTUSERSTATE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public GuestUserState
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_GUESTUSERSTATE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, GuestUserState)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define GuestUserState_T PRUint32
#define GuestUserState_Unknown GuestUserState::Unknown
#define GuestUserState_LoggedIn GuestUserState::LoggedIn
#define GuestUserState_LoggedOut GuestUserState::LoggedOut
#define GuestUserState_Locked GuestUserState::Locked
#define GuestUserState_Unlocked GuestUserState::Unlocked
#define GuestUserState_Disabled GuestUserState::Disabled
#define GuestUserState_Idle GuestUserState::Idle
#define GuestUserState_InUse GuestUserState::InUse
#define GuestUserState_Created GuestUserState::Created
#define GuestUserState_Deleted GuestUserState::Deleted
#define GuestUserState_SessionChanged GuestUserState::SessionChanged
#define GuestUserState_CredentialsChanged GuestUserState::CredentialsChanged
#define GuestUserState_RoleChanged GuestUserState::RoleChanged
#define GuestUserState_GroupAdded GuestUserState::GroupAdded
#define GuestUserState_GroupRemoved GuestUserState::GroupRemoved
#define GuestUserState_Elevated GuestUserState::Elevated

/* starting interface:    FileSeekType */
#define FILESEEKTYPE_IID_STR "1b73f4f3-3515-4073-a506-76878d9e2541"

#define FILESEEKTYPE_IID \
  {0x1b73f4f3, 0x3515, 0x4073, \
    { 0xa5, 0x06, 0x76, 0x87, 0x8d, 0x9e, 0x25, 0x41 }}

class NS_NO_VTABLE FileSeekType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FILESEEKTYPE_IID)

  enum { Set = 0U };

  enum { Current = 1U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FILESEEKTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FILESEEKTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_FILESEEKTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public FileSeekType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FILESEEKTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, FileSeekType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define FileSeekType_T PRUint32
#define FileSeekType_Set FileSeekType::Set
#define FileSeekType_Current FileSeekType::Current

/* starting interface:    ProcessInputFlag */
#define PROCESSINPUTFLAG_IID_STR "5d38c1dd-2604-4ddf-92e5-0c0cdd3bdbd5"

#define PROCESSINPUTFLAG_IID \
  {0x5d38c1dd, 0x2604, 0x4ddf, \
    { 0x92, 0xe5, 0x0c, 0x0c, 0xdd, 0x3b, 0xdb, 0xd5 }}

class NS_NO_VTABLE ProcessInputFlag {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(PROCESSINPUTFLAG_IID)

  enum { None = 0U };

  enum { EndOfFile = 1U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_PROCESSINPUTFLAG \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_PROCESSINPUTFLAG(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_PROCESSINPUTFLAG(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ProcessInputFlag
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_PROCESSINPUTFLAG

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ProcessInputFlag)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define ProcessInputFlag_T PRUint32
#define ProcessInputFlag_None ProcessInputFlag::None
#define ProcessInputFlag_EndOfFile ProcessInputFlag::EndOfFile

/* starting interface:    ProcessOutputFlag */
#define PROCESSOUTPUTFLAG_IID_STR "9979e85a-52bb-40b7-870c-57115e27e0f1"

#define PROCESSOUTPUTFLAG_IID \
  {0x9979e85a, 0x52bb, 0x40b7, \
    { 0x87, 0x0c, 0x57, 0x11, 0x5e, 0x27, 0xe0, 0xf1 }}

class NS_NO_VTABLE ProcessOutputFlag {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(PROCESSOUTPUTFLAG_IID)

  enum { None = 0U };

  enum { StdErr = 1U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_PROCESSOUTPUTFLAG \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_PROCESSOUTPUTFLAG(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_PROCESSOUTPUTFLAG(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ProcessOutputFlag
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_PROCESSOUTPUTFLAG

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ProcessOutputFlag)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define ProcessOutputFlag_T PRUint32
#define ProcessOutputFlag_None ProcessOutputFlag::None
#define ProcessOutputFlag_StdErr ProcessOutputFlag::StdErr

/* starting interface:    ProcessWaitForFlag */
#define PROCESSWAITFORFLAG_IID_STR "23b550c7-78e1-437e-98f0-65fd9757bcd2"

#define PROCESSWAITFORFLAG_IID \
  {0x23b550c7, 0x78e1, 0x437e, \
    { 0x98, 0xf0, 0x65, 0xfd, 0x97, 0x57, 0xbc, 0xd2 }}

class NS_NO_VTABLE ProcessWaitForFlag {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(PROCESSWAITFORFLAG_IID)

  enum { None = 0U };

  enum { Start = 1U };

  enum { Terminate = 2U };

  enum { StdIn = 4U };

  enum { StdOut = 8U };

  enum { StdErr = 16U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_PROCESSWAITFORFLAG \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_PROCESSWAITFORFLAG(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_PROCESSWAITFORFLAG(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ProcessWaitForFlag
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_PROCESSWAITFORFLAG

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ProcessWaitForFlag)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define ProcessWaitForFlag_T PRUint32
#define ProcessWaitForFlag_None ProcessWaitForFlag::None
#define ProcessWaitForFlag_Start ProcessWaitForFlag::Start
#define ProcessWaitForFlag_Terminate ProcessWaitForFlag::Terminate
#define ProcessWaitForFlag_StdIn ProcessWaitForFlag::StdIn
#define ProcessWaitForFlag_StdOut ProcessWaitForFlag::StdOut
#define ProcessWaitForFlag_StdErr ProcessWaitForFlag::StdErr

/* starting interface:    ProcessWaitResult */
#define PROCESSWAITRESULT_IID_STR "40719cbe-f192-4fe9-a231-6697b3c8e2b4"

#define PROCESSWAITRESULT_IID \
  {0x40719cbe, 0xf192, 0x4fe9, \
    { 0xa2, 0x31, 0x66, 0x97, 0xb3, 0xc8, 0xe2, 0xb4 }}

class NS_NO_VTABLE ProcessWaitResult {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(PROCESSWAITRESULT_IID)

  enum { None = 0U };

  enum { Start = 1U };

  enum { Terminate = 2U };

  enum { Status = 3U };

  enum { Error = 4U };

  enum { Timeout = 5U };

  enum { StdIn = 6U };

  enum { StdOut = 7U };

  enum { StdErr = 8U };

  enum { WaitFlagNotSupported = 9U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_PROCESSWAITRESULT \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_PROCESSWAITRESULT(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_PROCESSWAITRESULT(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ProcessWaitResult
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_PROCESSWAITRESULT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ProcessWaitResult)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define ProcessWaitResult_T PRUint32
#define ProcessWaitResult_None ProcessWaitResult::None
#define ProcessWaitResult_Start ProcessWaitResult::Start
#define ProcessWaitResult_Terminate ProcessWaitResult::Terminate
#define ProcessWaitResult_Status ProcessWaitResult::Status
#define ProcessWaitResult_Error ProcessWaitResult::Error
#define ProcessWaitResult_Timeout ProcessWaitResult::Timeout
#define ProcessWaitResult_StdIn ProcessWaitResult::StdIn
#define ProcessWaitResult_StdOut ProcessWaitResult::StdOut
#define ProcessWaitResult_StdErr ProcessWaitResult::StdErr
#define ProcessWaitResult_WaitFlagNotSupported ProcessWaitResult::WaitFlagNotSupported

/* starting interface:    CopyFileFlag */
#define COPYFILEFLAG_IID_STR "23f79fdf-738a-493d-b80b-42d607c9b916"

#define COPYFILEFLAG_IID \
  {0x23f79fdf, 0x738a, 0x493d, \
    { 0xb8, 0x0b, 0x42, 0xd6, 0x07, 0xc9, 0xb9, 0x16 }}

class NS_NO_VTABLE CopyFileFlag {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(COPYFILEFLAG_IID)

  enum { None = 0U };

  enum { Recursive = 1U };

  enum { Update = 2U };

  enum { FollowLinks = 4U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_COPYFILEFLAG \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_COPYFILEFLAG(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_COPYFILEFLAG(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public CopyFileFlag
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_COPYFILEFLAG

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, CopyFileFlag)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define CopyFileFlag_T PRUint32
#define CopyFileFlag_None CopyFileFlag::None
#define CopyFileFlag_Recursive CopyFileFlag::Recursive
#define CopyFileFlag_Update CopyFileFlag::Update
#define CopyFileFlag_FollowLinks CopyFileFlag::FollowLinks

/* starting interface:    DirectoryCreateFlag */
#define DIRECTORYCREATEFLAG_IID_STR "bd721b0e-ced5-4f79-b368-249897c32a36"

#define DIRECTORYCREATEFLAG_IID \
  {0xbd721b0e, 0xced5, 0x4f79, \
    { 0xb3, 0x68, 0x24, 0x98, 0x97, 0xc3, 0x2a, 0x36 }}

class NS_NO_VTABLE DirectoryCreateFlag {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(DIRECTORYCREATEFLAG_IID)

  enum { None = 0U };

  enum { Parents = 1U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_DIRECTORYCREATEFLAG \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_DIRECTORYCREATEFLAG(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_DIRECTORYCREATEFLAG(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public DirectoryCreateFlag
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_DIRECTORYCREATEFLAG

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, DirectoryCreateFlag)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define DirectoryCreateFlag_T PRUint32
#define DirectoryCreateFlag_None DirectoryCreateFlag::None
#define DirectoryCreateFlag_Parents DirectoryCreateFlag::Parents

/* starting interface:    DirectoryRemoveRecFlag */
#define DIRECTORYREMOVERECFLAG_IID_STR "455aabf0-7692-48f6-9061-f21579b65769"

#define DIRECTORYREMOVERECFLAG_IID \
  {0x455aabf0, 0x7692, 0x48f6, \
    { 0x90, 0x61, 0xf2, 0x15, 0x79, 0xb6, 0x57, 0x69 }}

class NS_NO_VTABLE DirectoryRemoveRecFlag {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(DIRECTORYREMOVERECFLAG_IID)

  enum { None = 0U };

  enum { ContentAndDir = 1U };

  enum { ContentOnly = 2U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_DIRECTORYREMOVERECFLAG \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_DIRECTORYREMOVERECFLAG(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_DIRECTORYREMOVERECFLAG(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public DirectoryRemoveRecFlag
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_DIRECTORYREMOVERECFLAG

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, DirectoryRemoveRecFlag)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define DirectoryRemoveRecFlag_T PRUint32
#define DirectoryRemoveRecFlag_None DirectoryRemoveRecFlag::None
#define DirectoryRemoveRecFlag_ContentAndDir DirectoryRemoveRecFlag::ContentAndDir
#define DirectoryRemoveRecFlag_ContentOnly DirectoryRemoveRecFlag::ContentOnly

/* starting interface:    PathRenameFlag */
#define PATHRENAMEFLAG_IID_STR "f3baa09f-c758-453d-b91c-c7787d76351d"

#define PATHRENAMEFLAG_IID \
  {0xf3baa09f, 0xc758, 0x453d, \
    { 0xb9, 0x1c, 0xc7, 0x78, 0x7d, 0x76, 0x35, 0x1d }}

class NS_NO_VTABLE PathRenameFlag {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(PATHRENAMEFLAG_IID)

  enum { None = 0U };

  enum { NoReplace = 1U };

  enum { Replace = 2U };

  enum { NoSymlinks = 4U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_PATHRENAMEFLAG \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_PATHRENAMEFLAG(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_PATHRENAMEFLAG(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public PathRenameFlag
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_PATHRENAMEFLAG

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, PathRenameFlag)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define PathRenameFlag_T PRUint32
#define PathRenameFlag_None PathRenameFlag::None
#define PathRenameFlag_NoReplace PathRenameFlag::NoReplace
#define PathRenameFlag_Replace PathRenameFlag::Replace
#define PathRenameFlag_NoSymlinks PathRenameFlag::NoSymlinks

/* starting interface:    ProcessCreateFlag */
#define PROCESSCREATEFLAG_IID_STR "35192799-bfde-405d-9bea-c735ab9998e4"

#define PROCESSCREATEFLAG_IID \
  {0x35192799, 0xbfde, 0x405d, \
    { 0x9b, 0xea, 0xc7, 0x35, 0xab, 0x99, 0x98, 0xe4 }}

class NS_NO_VTABLE ProcessCreateFlag {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(PROCESSCREATEFLAG_IID)

  enum { None = 0U };

  enum { WaitForProcessStartOnly = 1U };

  enum { IgnoreOrphanedProcesses = 2U };

  enum { Hidden = 4U };

  enum { NoProfile = 8U };

  enum { WaitForStdOut = 16U };

  enum { WaitForStdErr = 32U };

  enum { ExpandArguments = 64U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_PROCESSCREATEFLAG \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_PROCESSCREATEFLAG(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_PROCESSCREATEFLAG(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ProcessCreateFlag
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_PROCESSCREATEFLAG

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ProcessCreateFlag)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define ProcessCreateFlag_T PRUint32
#define ProcessCreateFlag_None ProcessCreateFlag::None
#define ProcessCreateFlag_WaitForProcessStartOnly ProcessCreateFlag::WaitForProcessStartOnly
#define ProcessCreateFlag_IgnoreOrphanedProcesses ProcessCreateFlag::IgnoreOrphanedProcesses
#define ProcessCreateFlag_Hidden ProcessCreateFlag::Hidden
#define ProcessCreateFlag_NoProfile ProcessCreateFlag::NoProfile
#define ProcessCreateFlag_WaitForStdOut ProcessCreateFlag::WaitForStdOut
#define ProcessCreateFlag_WaitForStdErr ProcessCreateFlag::WaitForStdErr
#define ProcessCreateFlag_ExpandArguments ProcessCreateFlag::ExpandArguments

/* starting interface:    ProcessPriority */
#define PROCESSPRIORITY_IID_STR "ee8cac50-e232-49fe-806b-d1214d9c2e49"

#define PROCESSPRIORITY_IID \
  {0xee8cac50, 0xe232, 0x49fe, \
    { 0x80, 0x6b, 0xd1, 0x21, 0x4d, 0x9c, 0x2e, 0x49 }}

class NS_NO_VTABLE ProcessPriority {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(PROCESSPRIORITY_IID)

  enum { Invalid = 0U };

  enum { Default = 1U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_PROCESSPRIORITY \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_PROCESSPRIORITY(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_PROCESSPRIORITY(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ProcessPriority
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_PROCESSPRIORITY

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ProcessPriority)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define ProcessPriority_T PRUint32
#define ProcessPriority_Invalid ProcessPriority::Invalid
#define ProcessPriority_Default ProcessPriority::Default

/* starting interface:    SymlinkType */
#define SYMLINKTYPE_IID_STR "37794668-f8f1-4714-98a5-6f8fa2ed0118"

#define SYMLINKTYPE_IID \
  {0x37794668, 0xf8f1, 0x4714, \
    { 0x98, 0xa5, 0x6f, 0x8f, 0xa2, 0xed, 0x01, 0x18 }}

class NS_NO_VTABLE SymlinkType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(SYMLINKTYPE_IID)

  enum { Unknown = 0U };

  enum { Directory = 1U };

  enum { File = 2U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_SYMLINKTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_SYMLINKTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_SYMLINKTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public SymlinkType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_SYMLINKTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, SymlinkType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define SymlinkType_T PRUint32
#define SymlinkType_Unknown SymlinkType::Unknown
#define SymlinkType_Directory SymlinkType::Directory
#define SymlinkType_File SymlinkType::File

/* starting interface:    SymlinkReadFlag */
#define SYMLINKREADFLAG_IID_STR "b7fe2b9d-790e-4b25-8adf-1ca33026931f"

#define SYMLINKREADFLAG_IID \
  {0xb7fe2b9d, 0x790e, 0x4b25, \
    { 0x8a, 0xdf, 0x1c, 0xa3, 0x30, 0x26, 0x93, 0x1f }}

class NS_NO_VTABLE SymlinkReadFlag {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(SYMLINKREADFLAG_IID)

  enum { None = 0U };

  enum { NoSymlinks = 1U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_SYMLINKREADFLAG \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_SYMLINKREADFLAG(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_SYMLINKREADFLAG(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public SymlinkReadFlag
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_SYMLINKREADFLAG

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, SymlinkReadFlag)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define SymlinkReadFlag_T PRUint32
#define SymlinkReadFlag_None SymlinkReadFlag::None
#define SymlinkReadFlag_NoSymlinks SymlinkReadFlag::NoSymlinks

/* starting interface:    ProcessStatus */
#define PROCESSSTATUS_IID_STR "4d52368f-5b48-4bfe-b486-acf89139b52f"

#define PROCESSSTATUS_IID \
  {0x4d52368f, 0x5b48, 0x4bfe, \
    { 0xb4, 0x86, 0xac, 0xf8, 0x91, 0x39, 0xb5, 0x2f }}

class NS_NO_VTABLE ProcessStatus {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(PROCESSSTATUS_IID)

  enum { Undefined = 0U };

  enum { Starting = 10U };

  enum { Started = 100U };

  enum { Paused = 110U };

  enum { Terminating = 480U };

  enum { TerminatedNormally = 500U };

  enum { TerminatedSignal = 510U };

  enum { TerminatedAbnormally = 511U };

  enum { TimedOutKilled = 512U };

  enum { TimedOutAbnormally = 513U };

  enum { Down = 600U };

  enum { Error = 800U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_PROCESSSTATUS \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_PROCESSSTATUS(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_PROCESSSTATUS(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ProcessStatus
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_PROCESSSTATUS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ProcessStatus)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define ProcessStatus_T PRUint32
#define ProcessStatus_Undefined ProcessStatus::Undefined
#define ProcessStatus_Starting ProcessStatus::Starting
#define ProcessStatus_Started ProcessStatus::Started
#define ProcessStatus_Paused ProcessStatus::Paused
#define ProcessStatus_Terminating ProcessStatus::Terminating
#define ProcessStatus_TerminatedNormally ProcessStatus::TerminatedNormally
#define ProcessStatus_TerminatedSignal ProcessStatus::TerminatedSignal
#define ProcessStatus_TerminatedAbnormally ProcessStatus::TerminatedAbnormally
#define ProcessStatus_TimedOutKilled ProcessStatus::TimedOutKilled
#define ProcessStatus_TimedOutAbnormally ProcessStatus::TimedOutAbnormally
#define ProcessStatus_Down ProcessStatus::Down
#define ProcessStatus_Error ProcessStatus::Error

/* starting interface:    ProcessInputStatus */
#define PROCESSINPUTSTATUS_IID_STR "a4a0ef9c-29cc-4805-9803-c8215ae9da6c"

#define PROCESSINPUTSTATUS_IID \
  {0xa4a0ef9c, 0x29cc, 0x4805, \
    { 0x98, 0x03, 0xc8, 0x21, 0x5a, 0xe9, 0xda, 0x6c }}

class NS_NO_VTABLE ProcessInputStatus {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(PROCESSINPUTSTATUS_IID)

  enum { Undefined = 0U };

  enum { Broken = 1U };

  enum { Available = 10U };

  enum { Written = 50U };

  enum { Overflow = 100U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_PROCESSINPUTSTATUS \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_PROCESSINPUTSTATUS(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_PROCESSINPUTSTATUS(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ProcessInputStatus
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_PROCESSINPUTSTATUS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ProcessInputStatus)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define ProcessInputStatus_T PRUint32
#define ProcessInputStatus_Undefined ProcessInputStatus::Undefined
#define ProcessInputStatus_Broken ProcessInputStatus::Broken
#define ProcessInputStatus_Available ProcessInputStatus::Available
#define ProcessInputStatus_Written ProcessInputStatus::Written
#define ProcessInputStatus_Overflow ProcessInputStatus::Overflow

/* starting interface:    FileStatus */
#define FILESTATUS_IID_STR "8c86468b-b97b-4080-8914-e29f5b0abd2c"

#define FILESTATUS_IID \
  {0x8c86468b, 0xb97b, 0x4080, \
    { 0x89, 0x14, 0xe2, 0x9f, 0x5b, 0x0a, 0xbd, 0x2c }}

class NS_NO_VTABLE FileStatus {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FILESTATUS_IID)

  enum { Undefined = 0U };

  enum { Opening = 10U };

  enum { Open = 100U };

  enum { Closing = 150U };

  enum { Closed = 200U };

  enum { Down = 600U };

  enum { Error = 800U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FILESTATUS \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FILESTATUS(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_FILESTATUS(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public FileStatus
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FILESTATUS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, FileStatus)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define FileStatus_T PRUint32
#define FileStatus_Undefined FileStatus::Undefined
#define FileStatus_Opening FileStatus::Opening
#define FileStatus_Open FileStatus::Open
#define FileStatus_Closing FileStatus::Closing
#define FileStatus_Closed FileStatus::Closed
#define FileStatus_Down FileStatus::Down
#define FileStatus_Error FileStatus::Error

/* starting interface:    FsObjType */
#define FSOBJTYPE_IID_STR "a1ed437c-b3c3-4ca2-b19c-4239d658d5e8"

#define FSOBJTYPE_IID \
  {0xa1ed437c, 0xb3c3, 0x4ca2, \
    { 0xb1, 0x9c, 0x42, 0x39, 0xd6, 0x58, 0xd5, 0xe8 }}

class NS_NO_VTABLE FsObjType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FSOBJTYPE_IID)

  enum { Undefined = 0U };

  enum { FIFO = 1U };

  enum { DevChar = 10U };

  enum { DevBlock = 11U };

  enum { Directory = 50U };

  enum { File = 80U };

  enum { Symlink = 100U };

  enum { Socket = 200U };

  enum { Whiteout = 400U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FSOBJTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FSOBJTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_FSOBJTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public FsObjType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FSOBJTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, FsObjType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define FsObjType_T PRUint32
#define FsObjType_Undefined FsObjType::Undefined
#define FsObjType_FIFO FsObjType::FIFO
#define FsObjType_DevChar FsObjType::DevChar
#define FsObjType_DevBlock FsObjType::DevBlock
#define FsObjType_Directory FsObjType::Directory
#define FsObjType_File FsObjType::File
#define FsObjType_Symlink FsObjType::Symlink
#define FsObjType_Socket FsObjType::Socket
#define FsObjType_Whiteout FsObjType::Whiteout

/* starting interface:    DragAndDropAction */
#define DRAGANDDROPACTION_IID_STR "47f3b162-c107-4fcd-bfa7-54b8135c441e"

#define DRAGANDDROPACTION_IID \
  {0x47f3b162, 0xc107, 0x4fcd, \
    { 0xbf, 0xa7, 0x54, 0xb8, 0x13, 0x5c, 0x44, 0x1e }}

class NS_NO_VTABLE DragAndDropAction {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(DRAGANDDROPACTION_IID)

  enum { Ignore = 0U };

  enum { Copy = 1U };

  enum { Move = 2U };

  enum { Link = 3U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_DRAGANDDROPACTION \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_DRAGANDDROPACTION(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_DRAGANDDROPACTION(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public DragAndDropAction
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_DRAGANDDROPACTION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, DragAndDropAction)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define DragAndDropAction_T PRUint32
#define DragAndDropAction_Ignore DragAndDropAction::Ignore
#define DragAndDropAction_Copy DragAndDropAction::Copy
#define DragAndDropAction_Move DragAndDropAction::Move
#define DragAndDropAction_Link DragAndDropAction::Link

/* starting interface:    DirectoryOpenFlag */
#define DIRECTORYOPENFLAG_IID_STR "5138837a-8fd2-4194-a1b0-08f7bc3949d0"

#define DIRECTORYOPENFLAG_IID \
  {0x5138837a, 0x8fd2, 0x4194, \
    { 0xa1, 0xb0, 0x08, 0xf7, 0xbc, 0x39, 0x49, 0xd0 }}

class NS_NO_VTABLE DirectoryOpenFlag {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(DIRECTORYOPENFLAG_IID)

  enum { None = 0U };

  enum { NoSymlinks = 1U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_DIRECTORYOPENFLAG \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_DIRECTORYOPENFLAG(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_DIRECTORYOPENFLAG(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public DirectoryOpenFlag
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_DIRECTORYOPENFLAG

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, DirectoryOpenFlag)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define DirectoryOpenFlag_T PRUint32
#define DirectoryOpenFlag_None DirectoryOpenFlag::None
#define DirectoryOpenFlag_NoSymlinks DirectoryOpenFlag::NoSymlinks

/* starting interface:    MediumState */
#define MEDIUMSTATE_IID_STR "ef41e980-e012-43cd-9dea-479d4ef14d13"

#define MEDIUMSTATE_IID \
  {0xef41e980, 0xe012, 0x43cd, \
    { 0x9d, 0xea, 0x47, 0x9d, 0x4e, 0xf1, 0x4d, 0x13 }}

class NS_NO_VTABLE MediumState {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(MEDIUMSTATE_IID)

  enum { NotCreated = 0U };

  enum { Created = 1U };

  enum { LockedRead = 2U };

  enum { LockedWrite = 3U };

  enum { Inaccessible = 4U };

  enum { Creating = 5U };

  enum { Deleting = 6U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_MEDIUMSTATE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_MEDIUMSTATE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_MEDIUMSTATE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public MediumState
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_MEDIUMSTATE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, MediumState)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define MediumState_T PRUint32
#define MediumState_NotCreated MediumState::NotCreated
#define MediumState_Created MediumState::Created
#define MediumState_LockedRead MediumState::LockedRead
#define MediumState_LockedWrite MediumState::LockedWrite
#define MediumState_Inaccessible MediumState::Inaccessible
#define MediumState_Creating MediumState::Creating
#define MediumState_Deleting MediumState::Deleting

/* starting interface:    MediumType */
#define MEDIUMTYPE_IID_STR "fe663fb5-c244-4e1b-9d81-c628b417dd04"

#define MEDIUMTYPE_IID \
  {0xfe663fb5, 0xc244, 0x4e1b, \
    { 0x9d, 0x81, 0xc6, 0x28, 0xb4, 0x17, 0xdd, 0x04 }}

class NS_NO_VTABLE MediumType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(MEDIUMTYPE_IID)

  enum { Normal = 0U };

  enum { Immutable = 1U };

  enum { Writethrough = 2U };

  enum { Shareable = 3U };

  enum { Readonly = 4U };

  enum { MultiAttach = 5U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_MEDIUMTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_MEDIUMTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_MEDIUMTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public MediumType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_MEDIUMTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, MediumType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define MediumType_T PRUint32
#define MediumType_Normal MediumType::Normal
#define MediumType_Immutable MediumType::Immutable
#define MediumType_Writethrough MediumType::Writethrough
#define MediumType_Shareable MediumType::Shareable
#define MediumType_Readonly MediumType::Readonly
#define MediumType_MultiAttach MediumType::MultiAttach

/* starting interface:    MediumVariant */
#define MEDIUMVARIANT_IID_STR "80685b6b-e42f-497d-8271-e77bf3c61ada"

#define MEDIUMVARIANT_IID \
  {0x80685b6b, 0xe42f, 0x497d, \
    { 0x82, 0x71, 0xe7, 0x7b, 0xf3, 0xc6, 0x1a, 0xda }}

class NS_NO_VTABLE MediumVariant {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(MEDIUMVARIANT_IID)

  enum { Standard = 0U };

  enum { VmdkSplit2G = 1U };

  enum { VmdkRawDisk = 2U };

  enum { VmdkStreamOptimized = 4U };

  enum { VmdkESX = 8U };

  enum { Fixed = 65536U };

  enum { Diff = 131072U };

  enum { NoCreateDir = 1073741824U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_MEDIUMVARIANT \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_MEDIUMVARIANT(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_MEDIUMVARIANT(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public MediumVariant
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_MEDIUMVARIANT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, MediumVariant)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define MediumVariant_T PRUint32
#define MediumVariant_Standard MediumVariant::Standard
#define MediumVariant_VmdkSplit2G MediumVariant::VmdkSplit2G
#define MediumVariant_VmdkRawDisk MediumVariant::VmdkRawDisk
#define MediumVariant_VmdkStreamOptimized MediumVariant::VmdkStreamOptimized
#define MediumVariant_VmdkESX MediumVariant::VmdkESX
#define MediumVariant_Fixed MediumVariant::Fixed
#define MediumVariant_Diff MediumVariant::Diff
#define MediumVariant_NoCreateDir MediumVariant::NoCreateDir

/* starting interface:    DataType */
#define DATATYPE_IID_STR "d90ea51e-a3f1-4a01-beb1-c1723c0d3ba7"

#define DATATYPE_IID \
  {0xd90ea51e, 0xa3f1, 0x4a01, \
    { 0xbe, 0xb1, 0xc1, 0x72, 0x3c, 0x0d, 0x3b, 0xa7 }}

class NS_NO_VTABLE DataType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(DATATYPE_IID)

  enum { Int32 = 0U };

  enum { Int8 = 1U };

  enum { String = 2U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_DATATYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_DATATYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_DATATYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public DataType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_DATATYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, DataType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define DataType_T PRUint32
#define DataType_Int32 DataType::Int32
#define DataType_Int8 DataType::Int8
#define DataType_String DataType::String

/* starting interface:    DataFlags */
#define DATAFLAGS_IID_STR "86884dcf-1d6b-4f1b-b4bf-f5aa44959d60"

#define DATAFLAGS_IID \
  {0x86884dcf, 0x1d6b, 0x4f1b, \
    { 0xb4, 0xbf, 0xf5, 0xaa, 0x44, 0x95, 0x9d, 0x60 }}

class NS_NO_VTABLE DataFlags {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(DATAFLAGS_IID)

  enum { None = 0U };

  enum { Mandatory = 1U };

  enum { Expert = 2U };

  enum { Array = 4U };

  enum { FlagMask = 7U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_DATAFLAGS \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_DATAFLAGS(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_DATAFLAGS(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public DataFlags
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_DATAFLAGS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, DataFlags)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define DataFlags_T PRUint32
#define DataFlags_None DataFlags::None
#define DataFlags_Mandatory DataFlags::Mandatory
#define DataFlags_Expert DataFlags::Expert
#define DataFlags_Array DataFlags::Array
#define DataFlags_FlagMask DataFlags::FlagMask

/* starting interface:    MediumFormatCapabilities */
#define MEDIUMFORMATCAPABILITIES_IID_STR "7342ba79-7ce0-4d94-8f86-5ed5a185d9bd"

#define MEDIUMFORMATCAPABILITIES_IID \
  {0x7342ba79, 0x7ce0, 0x4d94, \
    { 0x8f, 0x86, 0x5e, 0xd5, 0xa1, 0x85, 0xd9, 0xbd }}

class NS_NO_VTABLE MediumFormatCapabilities {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(MEDIUMFORMATCAPABILITIES_IID)

  enum { Uuid = 1U };

  enum { CreateFixed = 2U };

  enum { CreateDynamic = 4U };

  enum { CreateSplit2G = 8U };

  enum { Differencing = 16U };

  enum { Asynchronous = 32U };

  enum { File = 64U };

  enum { Properties = 128U };

  enum { TcpNetworking = 256U };

  enum { VFS = 512U };

  enum { CapabilityMask = 1023U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_MEDIUMFORMATCAPABILITIES \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_MEDIUMFORMATCAPABILITIES(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_MEDIUMFORMATCAPABILITIES(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public MediumFormatCapabilities
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_MEDIUMFORMATCAPABILITIES

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, MediumFormatCapabilities)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define MediumFormatCapabilities_T PRUint32
#define MediumFormatCapabilities_Uuid MediumFormatCapabilities::Uuid
#define MediumFormatCapabilities_CreateFixed MediumFormatCapabilities::CreateFixed
#define MediumFormatCapabilities_CreateDynamic MediumFormatCapabilities::CreateDynamic
#define MediumFormatCapabilities_CreateSplit2G MediumFormatCapabilities::CreateSplit2G
#define MediumFormatCapabilities_Differencing MediumFormatCapabilities::Differencing
#define MediumFormatCapabilities_Asynchronous MediumFormatCapabilities::Asynchronous
#define MediumFormatCapabilities_File MediumFormatCapabilities::File
#define MediumFormatCapabilities_Properties MediumFormatCapabilities::Properties
#define MediumFormatCapabilities_TcpNetworking MediumFormatCapabilities::TcpNetworking
#define MediumFormatCapabilities_VFS MediumFormatCapabilities::VFS
#define MediumFormatCapabilities_CapabilityMask MediumFormatCapabilities::CapabilityMask

/* starting interface:    MouseButtonState */
#define MOUSEBUTTONSTATE_IID_STR "9ee094b8-b28a-4d56-a166-973cb588d7f8"

#define MOUSEBUTTONSTATE_IID \
  {0x9ee094b8, 0xb28a, 0x4d56, \
    { 0xa1, 0x66, 0x97, 0x3c, 0xb5, 0x88, 0xd7, 0xf8 }}

class NS_NO_VTABLE MouseButtonState {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(MOUSEBUTTONSTATE_IID)

  enum { LeftButton = 1U };

  enum { RightButton = 2U };

  enum { MiddleButton = 4U };

  enum { WheelUp = 8U };

  enum { WheelDown = 16U };

  enum { XButton1 = 32U };

  enum { XButton2 = 64U };

  enum { MouseStateMask = 127U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_MOUSEBUTTONSTATE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_MOUSEBUTTONSTATE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_MOUSEBUTTONSTATE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public MouseButtonState
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_MOUSEBUTTONSTATE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, MouseButtonState)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define MouseButtonState_T PRUint32
#define MouseButtonState_LeftButton MouseButtonState::LeftButton
#define MouseButtonState_RightButton MouseButtonState::RightButton
#define MouseButtonState_MiddleButton MouseButtonState::MiddleButton
#define MouseButtonState_WheelUp MouseButtonState::WheelUp
#define MouseButtonState_WheelDown MouseButtonState::WheelDown
#define MouseButtonState_XButton1 MouseButtonState::XButton1
#define MouseButtonState_XButton2 MouseButtonState::XButton2
#define MouseButtonState_MouseStateMask MouseButtonState::MouseStateMask

/* starting interface:    TouchContactState */
#define TOUCHCONTACTSTATE_IID_STR "3f942686-2506-421c-927c-90d4b45f4a38"

#define TOUCHCONTACTSTATE_IID \
  {0x3f942686, 0x2506, 0x421c, \
    { 0x92, 0x7c, 0x90, 0xd4, 0xb4, 0x5f, 0x4a, 0x38 }}

class NS_NO_VTABLE TouchContactState {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(TOUCHCONTACTSTATE_IID)

  enum { None = 0U };

  enum { InContact = 1U };

  enum { InRange = 2U };

  enum { ContactStateMask = 3U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_TOUCHCONTACTSTATE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_TOUCHCONTACTSTATE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_TOUCHCONTACTSTATE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public TouchContactState
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_TOUCHCONTACTSTATE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, TouchContactState)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define TouchContactState_T PRUint32
#define TouchContactState_None TouchContactState::None
#define TouchContactState_InContact TouchContactState::InContact
#define TouchContactState_InRange TouchContactState::InRange
#define TouchContactState_ContactStateMask TouchContactState::ContactStateMask

/* starting interface:    FramebufferPixelFormat */
#define FRAMEBUFFERPIXELFORMAT_IID_STR "7acfd5ed-29e3-45e3-8136-73c9224f3d2d"

#define FRAMEBUFFERPIXELFORMAT_IID \
  {0x7acfd5ed, 0x29e3, 0x45e3, \
    { 0x81, 0x36, 0x73, 0xc9, 0x22, 0x4f, 0x3d, 0x2d }}

class NS_NO_VTABLE FramebufferPixelFormat {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FRAMEBUFFERPIXELFORMAT_IID)

  enum { Opaque = 0U };

  enum { FOURCC_RGB = 843204434U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FRAMEBUFFERPIXELFORMAT \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FRAMEBUFFERPIXELFORMAT(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_FRAMEBUFFERPIXELFORMAT(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public FramebufferPixelFormat
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FRAMEBUFFERPIXELFORMAT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, FramebufferPixelFormat)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define FramebufferPixelFormat_T PRUint32
#define FramebufferPixelFormat_Opaque FramebufferPixelFormat::Opaque
#define FramebufferPixelFormat_FOURCC_RGB FramebufferPixelFormat::FOURCC_RGB

/* starting interface:    NetworkAttachmentType */
#define NETWORKATTACHMENTTYPE_IID_STR "524a8f9d-4b86-4b51-877d-1aa27c4ebeac"

#define NETWORKATTACHMENTTYPE_IID \
  {0x524a8f9d, 0x4b86, 0x4b51, \
    { 0x87, 0x7d, 0x1a, 0xa2, 0x7c, 0x4e, 0xbe, 0xac }}

class NS_NO_VTABLE NetworkAttachmentType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NETWORKATTACHMENTTYPE_IID)

  enum { Null = 0U };

  enum { NAT = 1U };

  enum { Bridged = 2U };

  enum { Internal = 3U };

  enum { HostOnly = 4U };

  enum { Generic = 5U };

  enum { NATNetwork = 6U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NETWORKATTACHMENTTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NETWORKATTACHMENTTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NETWORKATTACHMENTTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public NetworkAttachmentType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NETWORKATTACHMENTTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, NetworkAttachmentType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define NetworkAttachmentType_T PRUint32
#define NetworkAttachmentType_Null NetworkAttachmentType::Null
#define NetworkAttachmentType_NAT NetworkAttachmentType::NAT
#define NetworkAttachmentType_Bridged NetworkAttachmentType::Bridged
#define NetworkAttachmentType_Internal NetworkAttachmentType::Internal
#define NetworkAttachmentType_HostOnly NetworkAttachmentType::HostOnly
#define NetworkAttachmentType_Generic NetworkAttachmentType::Generic
#define NetworkAttachmentType_NATNetwork NetworkAttachmentType::NATNetwork

/* starting interface:    NetworkAdapterType */
#define NETWORKADAPTERTYPE_IID_STR "3c2281e4-d952-4e87-8c7d-24379cb6a81c"

#define NETWORKADAPTERTYPE_IID \
  {0x3c2281e4, 0xd952, 0x4e87, \
    { 0x8c, 0x7d, 0x24, 0x37, 0x9c, 0xb6, 0xa8, 0x1c }}

class NS_NO_VTABLE NetworkAdapterType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NETWORKADAPTERTYPE_IID)

  enum { Null = 0U };

  enum { Am79C970A = 1U };

  enum { Am79C973 = 2U };

  enum { I82540EM = 3U };

  enum { I82543GC = 4U };

  enum { I82545EM = 5U };

  enum { Virtio = 6U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NETWORKADAPTERTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NETWORKADAPTERTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NETWORKADAPTERTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public NetworkAdapterType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NETWORKADAPTERTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, NetworkAdapterType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define NetworkAdapterType_T PRUint32
#define NetworkAdapterType_Null NetworkAdapterType::Null
#define NetworkAdapterType_Am79C970A NetworkAdapterType::Am79C970A
#define NetworkAdapterType_Am79C973 NetworkAdapterType::Am79C973
#define NetworkAdapterType_I82540EM NetworkAdapterType::I82540EM
#define NetworkAdapterType_I82543GC NetworkAdapterType::I82543GC
#define NetworkAdapterType_I82545EM NetworkAdapterType::I82545EM
#define NetworkAdapterType_Virtio NetworkAdapterType::Virtio

/* starting interface:    NetworkAdapterPromiscModePolicy */
#define NETWORKADAPTERPROMISCMODEPOLICY_IID_STR "c963768a-376f-4c85-8d84-d8ced4b7269e"

#define NETWORKADAPTERPROMISCMODEPOLICY_IID \
  {0xc963768a, 0x376f, 0x4c85, \
    { 0x8d, 0x84, 0xd8, 0xce, 0xd4, 0xb7, 0x26, 0x9e }}

class NS_NO_VTABLE NetworkAdapterPromiscModePolicy {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NETWORKADAPTERPROMISCMODEPOLICY_IID)

  enum { Deny = 1U };

  enum { AllowNetwork = 2U };

  enum { AllowAll = 3U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NETWORKADAPTERPROMISCMODEPOLICY \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NETWORKADAPTERPROMISCMODEPOLICY(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NETWORKADAPTERPROMISCMODEPOLICY(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public NetworkAdapterPromiscModePolicy
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NETWORKADAPTERPROMISCMODEPOLICY

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, NetworkAdapterPromiscModePolicy)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define NetworkAdapterPromiscModePolicy_T PRUint32
#define NetworkAdapterPromiscModePolicy_Deny NetworkAdapterPromiscModePolicy::Deny
#define NetworkAdapterPromiscModePolicy_AllowNetwork NetworkAdapterPromiscModePolicy::AllowNetwork
#define NetworkAdapterPromiscModePolicy_AllowAll NetworkAdapterPromiscModePolicy::AllowAll

/* starting interface:    PortMode */
#define PORTMODE_IID_STR "533b5fe3-0185-4197-86a7-17e37dd39d76"

#define PORTMODE_IID \
  {0x533b5fe3, 0x0185, 0x4197, \
    { 0x86, 0xa7, 0x17, 0xe3, 0x7d, 0xd3, 0x9d, 0x76 }}

class NS_NO_VTABLE PortMode {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(PORTMODE_IID)

  enum { Disconnected = 0U };

  enum { HostPipe = 1U };

  enum { HostDevice = 2U };

  enum { RawFile = 3U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_PORTMODE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_PORTMODE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_PORTMODE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public PortMode
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_PORTMODE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, PortMode)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define PortMode_T PRUint32
#define PortMode_Disconnected PortMode::Disconnected
#define PortMode_HostPipe PortMode::HostPipe
#define PortMode_HostDevice PortMode::HostDevice
#define PortMode_RawFile PortMode::RawFile

/* starting interface:    USBControllerType */
#define USBCONTROLLERTYPE_IID_STR "8fdd1c6a-5412-41da-ab07-7baed7d6e18e"

#define USBCONTROLLERTYPE_IID \
  {0x8fdd1c6a, 0x5412, 0x41da, \
    { 0xab, 0x07, 0x7b, 0xae, 0xd7, 0xd6, 0xe1, 0x8e }}

class NS_NO_VTABLE USBControllerType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(USBCONTROLLERTYPE_IID)

  enum { Null = 0U };

  enum { OHCI = 1U };

  enum { EHCI = 2U };

  enum { Last = 3U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_USBCONTROLLERTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_USBCONTROLLERTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_USBCONTROLLERTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public USBControllerType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_USBCONTROLLERTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, USBControllerType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define USBControllerType_T PRUint32
#define USBControllerType_Null USBControllerType::Null
#define USBControllerType_OHCI USBControllerType::OHCI
#define USBControllerType_EHCI USBControllerType::EHCI
#define USBControllerType_Last USBControllerType::Last

/* starting interface:    USBDeviceState */
#define USBDEVICESTATE_IID_STR "b99a2e65-67fb-4882-82fd-f3e5e8193ab4"

#define USBDEVICESTATE_IID \
  {0xb99a2e65, 0x67fb, 0x4882, \
    { 0x82, 0xfd, 0xf3, 0xe5, 0xe8, 0x19, 0x3a, 0xb4 }}

class NS_NO_VTABLE USBDeviceState {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(USBDEVICESTATE_IID)

  enum { NotSupported = 0U };

  enum { Unavailable = 1U };

  enum { Busy = 2U };

  enum { Available = 3U };

  enum { Held = 4U };

  enum { Captured = 5U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_USBDEVICESTATE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_USBDEVICESTATE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_USBDEVICESTATE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public USBDeviceState
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_USBDEVICESTATE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, USBDeviceState)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define USBDeviceState_T PRUint32
#define USBDeviceState_NotSupported USBDeviceState::NotSupported
#define USBDeviceState_Unavailable USBDeviceState::Unavailable
#define USBDeviceState_Busy USBDeviceState::Busy
#define USBDeviceState_Available USBDeviceState::Available
#define USBDeviceState_Held USBDeviceState::Held
#define USBDeviceState_Captured USBDeviceState::Captured

/* starting interface:    USBDeviceFilterAction */
#define USBDEVICEFILTERACTION_IID_STR "cbc30a49-2f4e-43b5-9da6-121320475933"

#define USBDEVICEFILTERACTION_IID \
  {0xcbc30a49, 0x2f4e, 0x43b5, \
    { 0x9d, 0xa6, 0x12, 0x13, 0x20, 0x47, 0x59, 0x33 }}

class NS_NO_VTABLE USBDeviceFilterAction {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(USBDEVICEFILTERACTION_IID)

  enum { Null = 0U };

  enum { Ignore = 1U };

  enum { Hold = 2U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_USBDEVICEFILTERACTION \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_USBDEVICEFILTERACTION(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_USBDEVICEFILTERACTION(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public USBDeviceFilterAction
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_USBDEVICEFILTERACTION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, USBDeviceFilterAction)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define USBDeviceFilterAction_T PRUint32
#define USBDeviceFilterAction_Null USBDeviceFilterAction::Null
#define USBDeviceFilterAction_Ignore USBDeviceFilterAction::Ignore
#define USBDeviceFilterAction_Hold USBDeviceFilterAction::Hold

/* starting interface:    AudioDriverType */
#define AUDIODRIVERTYPE_IID_STR "4bcc3d73-c2fe-40db-b72f-0c2ca9d68496"

#define AUDIODRIVERTYPE_IID \
  {0x4bcc3d73, 0xc2fe, 0x40db, \
    { 0xb7, 0x2f, 0x0c, 0x2c, 0xa9, 0xd6, 0x84, 0x96 }}

class NS_NO_VTABLE AudioDriverType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(AUDIODRIVERTYPE_IID)

  enum { Null = 0U };

  enum { WinMM = 1U };

  enum { OSS = 2U };

  enum { ALSA = 3U };

  enum { DirectSound = 4U };

  enum { CoreAudio = 5U };

  enum { MMPM = 6U };

  enum { Pulse = 7U };

  enum { SolAudio = 8U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_AUDIODRIVERTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_AUDIODRIVERTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_AUDIODRIVERTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public AudioDriverType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_AUDIODRIVERTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, AudioDriverType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define AudioDriverType_T PRUint32
#define AudioDriverType_Null AudioDriverType::Null
#define AudioDriverType_WinMM AudioDriverType::WinMM
#define AudioDriverType_OSS AudioDriverType::OSS
#define AudioDriverType_ALSA AudioDriverType::ALSA
#define AudioDriverType_DirectSound AudioDriverType::DirectSound
#define AudioDriverType_CoreAudio AudioDriverType::CoreAudio
#define AudioDriverType_MMPM AudioDriverType::MMPM
#define AudioDriverType_Pulse AudioDriverType::Pulse
#define AudioDriverType_SolAudio AudioDriverType::SolAudio

/* starting interface:    AudioControllerType */
#define AUDIOCONTROLLERTYPE_IID_STR "7afd395c-42c3-444e-8788-3ce80292f36c"

#define AUDIOCONTROLLERTYPE_IID \
  {0x7afd395c, 0x42c3, 0x444e, \
    { 0x87, 0x88, 0x3c, 0xe8, 0x02, 0x92, 0xf3, 0x6c }}

class NS_NO_VTABLE AudioControllerType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(AUDIOCONTROLLERTYPE_IID)

  enum { AC97 = 0U };

  enum { SB16 = 1U };

  enum { HDA = 2U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_AUDIOCONTROLLERTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_AUDIOCONTROLLERTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_AUDIOCONTROLLERTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public AudioControllerType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_AUDIOCONTROLLERTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, AudioControllerType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define AudioControllerType_T PRUint32
#define AudioControllerType_AC97 AudioControllerType::AC97
#define AudioControllerType_SB16 AudioControllerType::SB16
#define AudioControllerType_HDA AudioControllerType::HDA

/* starting interface:    AuthType */
#define AUTHTYPE_IID_STR "7eef6ef6-98c2-4dc2-ab35-10d2b292028d"

#define AUTHTYPE_IID \
  {0x7eef6ef6, 0x98c2, 0x4dc2, \
    { 0xab, 0x35, 0x10, 0xd2, 0xb2, 0x92, 0x02, 0x8d }}

class NS_NO_VTABLE AuthType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(AUTHTYPE_IID)

  enum { Null = 0U };

  enum { External = 1U };

  enum { Guest = 2U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_AUTHTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_AUTHTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_AUTHTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public AuthType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_AUTHTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, AuthType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define AuthType_T PRUint32
#define AuthType_Null AuthType::Null
#define AuthType_External AuthType::External
#define AuthType_Guest AuthType::Guest

/* starting interface:    Reason */
#define REASON_IID_STR "e7e8e097-299d-4e98-8bbc-c31c2d47d0cc"

#define REASON_IID \
  {0xe7e8e097, 0x299d, 0x4e98, \
    { 0x8b, 0xbc, 0xc3, 0x1c, 0x2d, 0x47, 0xd0, 0xcc }}

class NS_NO_VTABLE Reason {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(REASON_IID)

  enum { Unspecified = 0U };

  enum { HostSuspend = 1U };

  enum { HostResume = 2U };

  enum { HostBatteryLow = 3U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_REASON \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_REASON(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_REASON(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public Reason
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_REASON

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, Reason)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define Reason_T PRUint32
#define Reason_Unspecified Reason::Unspecified
#define Reason_HostSuspend Reason::HostSuspend
#define Reason_HostResume Reason::HostResume
#define Reason_HostBatteryLow Reason::HostBatteryLow

/* starting interface:    StorageBus */
#define STORAGEBUS_IID_STR "eee67ab3-668d-4ef5-91e0-7025fe4a0d7a"

#define STORAGEBUS_IID \
  {0xeee67ab3, 0x668d, 0x4ef5, \
    { 0x91, 0xe0, 0x70, 0x25, 0xfe, 0x4a, 0x0d, 0x7a }}

class NS_NO_VTABLE StorageBus {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(STORAGEBUS_IID)

  enum { Null = 0U };

  enum { IDE = 1U };

  enum { SATA = 2U };

  enum { SCSI = 3U };

  enum { Floppy = 4U };

  enum { SAS = 5U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_STORAGEBUS \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_STORAGEBUS(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_STORAGEBUS(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public StorageBus
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_STORAGEBUS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, StorageBus)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define StorageBus_T PRUint32
#define StorageBus_Null StorageBus::Null
#define StorageBus_IDE StorageBus::IDE
#define StorageBus_SATA StorageBus::SATA
#define StorageBus_SCSI StorageBus::SCSI
#define StorageBus_Floppy StorageBus::Floppy
#define StorageBus_SAS StorageBus::SAS

/* starting interface:    StorageControllerType */
#define STORAGECONTROLLERTYPE_IID_STR "8a412b8a-f43e-4456-bd37-b474f0879a58"

#define STORAGECONTROLLERTYPE_IID \
  {0x8a412b8a, 0xf43e, 0x4456, \
    { 0xbd, 0x37, 0xb4, 0x74, 0xf0, 0x87, 0x9a, 0x58 }}

class NS_NO_VTABLE StorageControllerType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(STORAGECONTROLLERTYPE_IID)

  enum { Null = 0U };

  enum { LsiLogic = 1U };

  enum { BusLogic = 2U };

  enum { IntelAhci = 3U };

  enum { PIIX3 = 4U };

  enum { PIIX4 = 5U };

  enum { ICH6 = 6U };

  enum { I82078 = 7U };

  enum { LsiLogicSas = 8U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_STORAGECONTROLLERTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_STORAGECONTROLLERTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_STORAGECONTROLLERTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public StorageControllerType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_STORAGECONTROLLERTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, StorageControllerType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define StorageControllerType_T PRUint32
#define StorageControllerType_Null StorageControllerType::Null
#define StorageControllerType_LsiLogic StorageControllerType::LsiLogic
#define StorageControllerType_BusLogic StorageControllerType::BusLogic
#define StorageControllerType_IntelAhci StorageControllerType::IntelAhci
#define StorageControllerType_PIIX3 StorageControllerType::PIIX3
#define StorageControllerType_PIIX4 StorageControllerType::PIIX4
#define StorageControllerType_ICH6 StorageControllerType::ICH6
#define StorageControllerType_I82078 StorageControllerType::I82078
#define StorageControllerType_LsiLogicSas StorageControllerType::LsiLogicSas

/* starting interface:    ChipsetType */
#define CHIPSETTYPE_IID_STR "8b4096a8-a7c3-4d3b-bbb1-05a0a51ec394"

#define CHIPSETTYPE_IID \
  {0x8b4096a8, 0xa7c3, 0x4d3b, \
    { 0xbb, 0xb1, 0x05, 0xa0, 0xa5, 0x1e, 0xc3, 0x94 }}

class NS_NO_VTABLE ChipsetType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(CHIPSETTYPE_IID)

  enum { Null = 0U };

  enum { PIIX3 = 1U };

  enum { ICH9 = 2U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CHIPSETTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CHIPSETTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_CHIPSETTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ChipsetType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CHIPSETTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ChipsetType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define ChipsetType_T PRUint32
#define ChipsetType_Null ChipsetType::Null
#define ChipsetType_PIIX3 ChipsetType::PIIX3
#define ChipsetType_ICH9 ChipsetType::ICH9

/* starting interface:    NATAliasMode */
#define NATALIASMODE_IID_STR "67772168-50d9-11df-9669-7fb714ee4fa1"

#define NATALIASMODE_IID \
  {0x67772168, 0x50d9, 0x11df, \
    { 0x96, 0x69, 0x7f, 0xb7, 0x14, 0xee, 0x4f, 0xa1 }}

class NS_NO_VTABLE NATAliasMode {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NATALIASMODE_IID)

  enum { AliasLog = 1U };

  enum { AliasProxyOnly = 2U };

  enum { AliasUseSamePorts = 4U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NATALIASMODE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NATALIASMODE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NATALIASMODE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public NATAliasMode
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NATALIASMODE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, NATAliasMode)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define NATAliasMode_T PRUint32
#define NATAliasMode_AliasLog NATAliasMode::AliasLog
#define NATAliasMode_AliasProxyOnly NATAliasMode::AliasProxyOnly
#define NATAliasMode_AliasUseSamePorts NATAliasMode::AliasUseSamePorts

/* starting interface:    NATProtocol */
#define NATPROTOCOL_IID_STR "e90164be-eb03-11de-94af-fff9b1c1b19f"

#define NATPROTOCOL_IID \
  {0xe90164be, 0xeb03, 0x11de, \
    { 0x94, 0xaf, 0xff, 0xf9, 0xb1, 0xc1, 0xb1, 0x9f }}

class NS_NO_VTABLE NATProtocol {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NATPROTOCOL_IID)

  enum { UDP = 0U };

  enum { TCP = 1U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NATPROTOCOL \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NATPROTOCOL(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NATPROTOCOL(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public NATProtocol
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NATPROTOCOL

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, NATProtocol)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define NATProtocol_T PRUint32
#define NATProtocol_UDP NATProtocol::UDP
#define NATProtocol_TCP NATProtocol::TCP

/* starting interface:    BandwidthGroupType */
#define BANDWIDTHGROUPTYPE_IID_STR "1d92b67d-dc69-4be9-ad4c-93a01e1e0c8e"

#define BANDWIDTHGROUPTYPE_IID \
  {0x1d92b67d, 0xdc69, 0x4be9, \
    { 0xad, 0x4c, 0x93, 0xa0, 0x1e, 0x1e, 0x0c, 0x8e }}

class NS_NO_VTABLE BandwidthGroupType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(BANDWIDTHGROUPTYPE_IID)

  enum { Null = 0U };

  enum { Disk = 1U };

  enum { Network = 2U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_BANDWIDTHGROUPTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_BANDWIDTHGROUPTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_BANDWIDTHGROUPTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public BandwidthGroupType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_BANDWIDTHGROUPTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, BandwidthGroupType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define BandwidthGroupType_T PRUint32
#define BandwidthGroupType_Null BandwidthGroupType::Null
#define BandwidthGroupType_Disk BandwidthGroupType::Disk
#define BandwidthGroupType_Network BandwidthGroupType::Network

/* starting interface:    VBoxEventType */
#define VBOXEVENTTYPE_IID_STR "5248e377-e578-47d7-b07b-84b1db6db8a8"

#define VBOXEVENTTYPE_IID \
  {0x5248e377, 0xe578, 0x47d7, \
    { 0xb0, 0x7b, 0x84, 0xb1, 0xdb, 0x6d, 0xb8, 0xa8 }}

class NS_NO_VTABLE VBoxEventType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(VBOXEVENTTYPE_IID)

  enum { Invalid = 0U };

  enum { Any = 1U };

  enum { Vetoable = 2U };

  enum { MachineEvent = 3U };

  enum { SnapshotEvent = 4U };

  enum { InputEvent = 5U };

  enum { LastWildcard = 31U };

  enum { OnMachineStateChanged = 32U };

  enum { OnMachineDataChanged = 33U };

  enum { OnExtraDataChanged = 34U };

  enum { OnExtraDataCanChange = 35U };

  enum { OnMediumRegistered = 36U };

  enum { OnMachineRegistered = 37U };

  enum { OnSessionStateChanged = 38U };

  enum { OnSnapshotTaken = 39U };

  enum { OnSnapshotDeleted = 40U };

  enum { OnSnapshotChanged = 41U };

  enum { OnGuestPropertyChanged = 42U };

  enum { OnMousePointerShapeChanged = 43U };

  enum { OnMouseCapabilityChanged = 44U };

  enum { OnKeyboardLedsChanged = 45U };

  enum { OnStateChanged = 46U };

  enum { OnAdditionsStateChanged = 47U };

  enum { OnNetworkAdapterChanged = 48U };

  enum { OnSerialPortChanged = 49U };

  enum { OnParallelPortChanged = 50U };

  enum { OnStorageControllerChanged = 51U };

  enum { OnMediumChanged = 52U };

  enum { OnVRDEServerChanged = 53U };

  enum { OnUSBControllerChanged = 54U };

  enum { OnUSBDeviceStateChanged = 55U };

  enum { OnSharedFolderChanged = 56U };

  enum { OnRuntimeError = 57U };

  enum { OnCanShowWindow = 58U };

  enum { OnShowWindow = 59U };

  enum { OnCPUChanged = 60U };

  enum { OnVRDEServerInfoChanged = 61U };

  enum { OnEventSourceChanged = 62U };

  enum { OnCPUExecutionCapChanged = 63U };

  enum { OnGuestKeyboard = 64U };

  enum { OnGuestMouse = 65U };

  enum { OnNATRedirect = 66U };

  enum { OnHostPCIDevicePlug = 67U };

  enum { OnVBoxSVCAvailabilityChanged = 68U };

  enum { OnBandwidthGroupChanged = 69U };

  enum { OnGuestMonitorChanged = 70U };

  enum { OnStorageDeviceChanged = 71U };

  enum { OnClipboardModeChanged = 72U };

  enum { OnDragAndDropModeChanged = 73U };

  enum { OnNATNetworkChanged = 74U };

  enum { OnNATNetworkStartStop = 75U };

  enum { OnNATNetworkAlter = 76U };

  enum { OnNATNetworkCreationDeletion = 77U };

  enum { OnNATNetworkSetting = 78U };

  enum { OnNATNetworkPortForward = 79U };

  enum { OnGuestSessionStateChanged = 80U };

  enum { OnGuestSessionRegistered = 81U };

  enum { OnGuestProcessRegistered = 82U };

  enum { OnGuestProcessStateChanged = 83U };

  enum { OnGuestProcessInputNotify = 84U };

  enum { OnGuestProcessOutput = 85U };

  enum { OnGuestFileRegistered = 86U };

  enum { OnGuestFileStateChanged = 87U };

  enum { OnGuestFileOffsetChanged = 88U };

  enum { OnGuestFileRead = 89U };

  enum { OnGuestFileWrite = 90U };

  enum { OnVideoCaptureChanged = 91U };

  enum { OnGuestUserStateChanged = 92U };

  enum { OnGuestMultiTouch = 93U };

  enum { OnHostNameResolutionConfigurationChange = 94U };

  enum { Last = 95U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_VBOXEVENTTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_VBOXEVENTTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_VBOXEVENTTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public VBoxEventType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_VBOXEVENTTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, VBoxEventType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define VBoxEventType_T PRUint32
#define VBoxEventType_Invalid VBoxEventType::Invalid
#define VBoxEventType_Any VBoxEventType::Any
#define VBoxEventType_Vetoable VBoxEventType::Vetoable
#define VBoxEventType_MachineEvent VBoxEventType::MachineEvent
#define VBoxEventType_SnapshotEvent VBoxEventType::SnapshotEvent
#define VBoxEventType_InputEvent VBoxEventType::InputEvent
#define VBoxEventType_LastWildcard VBoxEventType::LastWildcard
#define VBoxEventType_OnMachineStateChanged VBoxEventType::OnMachineStateChanged
#define VBoxEventType_OnMachineDataChanged VBoxEventType::OnMachineDataChanged
#define VBoxEventType_OnExtraDataChanged VBoxEventType::OnExtraDataChanged
#define VBoxEventType_OnExtraDataCanChange VBoxEventType::OnExtraDataCanChange
#define VBoxEventType_OnMediumRegistered VBoxEventType::OnMediumRegistered
#define VBoxEventType_OnMachineRegistered VBoxEventType::OnMachineRegistered
#define VBoxEventType_OnSessionStateChanged VBoxEventType::OnSessionStateChanged
#define VBoxEventType_OnSnapshotTaken VBoxEventType::OnSnapshotTaken
#define VBoxEventType_OnSnapshotDeleted VBoxEventType::OnSnapshotDeleted
#define VBoxEventType_OnSnapshotChanged VBoxEventType::OnSnapshotChanged
#define VBoxEventType_OnGuestPropertyChanged VBoxEventType::OnGuestPropertyChanged
#define VBoxEventType_OnMousePointerShapeChanged VBoxEventType::OnMousePointerShapeChanged
#define VBoxEventType_OnMouseCapabilityChanged VBoxEventType::OnMouseCapabilityChanged
#define VBoxEventType_OnKeyboardLedsChanged VBoxEventType::OnKeyboardLedsChanged
#define VBoxEventType_OnStateChanged VBoxEventType::OnStateChanged
#define VBoxEventType_OnAdditionsStateChanged VBoxEventType::OnAdditionsStateChanged
#define VBoxEventType_OnNetworkAdapterChanged VBoxEventType::OnNetworkAdapterChanged
#define VBoxEventType_OnSerialPortChanged VBoxEventType::OnSerialPortChanged
#define VBoxEventType_OnParallelPortChanged VBoxEventType::OnParallelPortChanged
#define VBoxEventType_OnStorageControllerChanged VBoxEventType::OnStorageControllerChanged
#define VBoxEventType_OnMediumChanged VBoxEventType::OnMediumChanged
#define VBoxEventType_OnVRDEServerChanged VBoxEventType::OnVRDEServerChanged
#define VBoxEventType_OnUSBControllerChanged VBoxEventType::OnUSBControllerChanged
#define VBoxEventType_OnUSBDeviceStateChanged VBoxEventType::OnUSBDeviceStateChanged
#define VBoxEventType_OnSharedFolderChanged VBoxEventType::OnSharedFolderChanged
#define VBoxEventType_OnRuntimeError VBoxEventType::OnRuntimeError
#define VBoxEventType_OnCanShowWindow VBoxEventType::OnCanShowWindow
#define VBoxEventType_OnShowWindow VBoxEventType::OnShowWindow
#define VBoxEventType_OnCPUChanged VBoxEventType::OnCPUChanged
#define VBoxEventType_OnVRDEServerInfoChanged VBoxEventType::OnVRDEServerInfoChanged
#define VBoxEventType_OnEventSourceChanged VBoxEventType::OnEventSourceChanged
#define VBoxEventType_OnCPUExecutionCapChanged VBoxEventType::OnCPUExecutionCapChanged
#define VBoxEventType_OnGuestKeyboard VBoxEventType::OnGuestKeyboard
#define VBoxEventType_OnGuestMouse VBoxEventType::OnGuestMouse
#define VBoxEventType_OnNATRedirect VBoxEventType::OnNATRedirect
#define VBoxEventType_OnHostPCIDevicePlug VBoxEventType::OnHostPCIDevicePlug
#define VBoxEventType_OnVBoxSVCAvailabilityChanged VBoxEventType::OnVBoxSVCAvailabilityChanged
#define VBoxEventType_OnBandwidthGroupChanged VBoxEventType::OnBandwidthGroupChanged
#define VBoxEventType_OnGuestMonitorChanged VBoxEventType::OnGuestMonitorChanged
#define VBoxEventType_OnStorageDeviceChanged VBoxEventType::OnStorageDeviceChanged
#define VBoxEventType_OnClipboardModeChanged VBoxEventType::OnClipboardModeChanged
#define VBoxEventType_OnDragAndDropModeChanged VBoxEventType::OnDragAndDropModeChanged
#define VBoxEventType_OnNATNetworkChanged VBoxEventType::OnNATNetworkChanged
#define VBoxEventType_OnNATNetworkStartStop VBoxEventType::OnNATNetworkStartStop
#define VBoxEventType_OnNATNetworkAlter VBoxEventType::OnNATNetworkAlter
#define VBoxEventType_OnNATNetworkCreationDeletion VBoxEventType::OnNATNetworkCreationDeletion
#define VBoxEventType_OnNATNetworkSetting VBoxEventType::OnNATNetworkSetting
#define VBoxEventType_OnNATNetworkPortForward VBoxEventType::OnNATNetworkPortForward
#define VBoxEventType_OnGuestSessionStateChanged VBoxEventType::OnGuestSessionStateChanged
#define VBoxEventType_OnGuestSessionRegistered VBoxEventType::OnGuestSessionRegistered
#define VBoxEventType_OnGuestProcessRegistered VBoxEventType::OnGuestProcessRegistered
#define VBoxEventType_OnGuestProcessStateChanged VBoxEventType::OnGuestProcessStateChanged
#define VBoxEventType_OnGuestProcessInputNotify VBoxEventType::OnGuestProcessInputNotify
#define VBoxEventType_OnGuestProcessOutput VBoxEventType::OnGuestProcessOutput
#define VBoxEventType_OnGuestFileRegistered VBoxEventType::OnGuestFileRegistered
#define VBoxEventType_OnGuestFileStateChanged VBoxEventType::OnGuestFileStateChanged
#define VBoxEventType_OnGuestFileOffsetChanged VBoxEventType::OnGuestFileOffsetChanged
#define VBoxEventType_OnGuestFileRead VBoxEventType::OnGuestFileRead
#define VBoxEventType_OnGuestFileWrite VBoxEventType::OnGuestFileWrite
#define VBoxEventType_OnVideoCaptureChanged VBoxEventType::OnVideoCaptureChanged
#define VBoxEventType_OnGuestUserStateChanged VBoxEventType::OnGuestUserStateChanged
#define VBoxEventType_OnGuestMultiTouch VBoxEventType::OnGuestMultiTouch
#define VBoxEventType_OnHostNameResolutionConfigurationChange VBoxEventType::OnHostNameResolutionConfigurationChange
#define VBoxEventType_Last VBoxEventType::Last

/* starting interface:    GuestMouseEventMode */
#define GUESTMOUSEEVENTMODE_IID_STR "4b500146-ebba-4b7c-bc29-69c2d57a5caf"

#define GUESTMOUSEEVENTMODE_IID \
  {0x4b500146, 0xebba, 0x4b7c, \
    { 0xbc, 0x29, 0x69, 0xc2, 0xd5, 0x7a, 0x5c, 0xaf }}

class NS_NO_VTABLE GuestMouseEventMode {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(GUESTMOUSEEVENTMODE_IID)

  enum { Relative = 0U };

  enum { Absolute = 1U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_GUESTMOUSEEVENTMODE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_GUESTMOUSEEVENTMODE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_GUESTMOUSEEVENTMODE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public GuestMouseEventMode
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_GUESTMOUSEEVENTMODE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, GuestMouseEventMode)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define GuestMouseEventMode_T PRUint32
#define GuestMouseEventMode_Relative GuestMouseEventMode::Relative
#define GuestMouseEventMode_Absolute GuestMouseEventMode::Absolute

/* starting interface:    GuestMonitorChangedEventType */
#define GUESTMONITORCHANGEDEVENTTYPE_IID_STR "ef172985-7e36-4297-95be-e46396968d66"

#define GUESTMONITORCHANGEDEVENTTYPE_IID \
  {0xef172985, 0x7e36, 0x4297, \
    { 0x95, 0xbe, 0xe4, 0x63, 0x96, 0x96, 0x8d, 0x66 }}

class NS_NO_VTABLE GuestMonitorChangedEventType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(GUESTMONITORCHANGEDEVENTTYPE_IID)

  enum { Enabled = 0U };

  enum { Disabled = 1U };

  enum { NewOrigin = 2U };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_GUESTMONITORCHANGEDEVENTTYPE \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_GUESTMONITORCHANGEDEVENTTYPE(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_GUESTMONITORCHANGEDEVENTTYPE(_to) \

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public GuestMonitorChangedEventType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_GUESTMONITORCHANGEDEVENTTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, GuestMonitorChangedEventType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define GuestMonitorChangedEventType_T PRUint32
#define GuestMonitorChangedEventType_Enabled GuestMonitorChangedEventType::Enabled
#define GuestMonitorChangedEventType_Disabled GuestMonitorChangedEventType::Disabled
#define GuestMonitorChangedEventType_NewOrigin GuestMonitorChangedEventType::NewOrigin

/* starting interface:    IVirtualBoxErrorInfo */
#define IVIRTUALBOXERRORINFO_IID_STR "c1bcc6d5-7966-481d-ab0b-d0ed73e28135"

#define IVIRTUALBOXERRORINFO_IID \
  {0xc1bcc6d5, 0x7966, 0x481d, \
    { 0xab, 0x0b, 0xd0, 0xed, 0x73, 0xe2, 0x81, 0x35 }}

class NS_NO_VTABLE IVirtualBoxErrorInfo : public nsIException {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVIRTUALBOXERRORINFO_IID)

  /* readonly attribute long resultCode; */
  NS_IMETHOD GetResultCode(PRInt32 *aResultCode) = 0;

  /* readonly attribute long resultDetail; */
  NS_IMETHOD GetResultDetail(PRInt32 *aResultDetail) = 0;

  /* readonly attribute wstring interfaceID; */
  NS_IMETHOD GetInterfaceID(PRUnichar * *aInterfaceID) = 0;

  /* readonly attribute wstring component; */
  NS_IMETHOD GetComponent(PRUnichar * *aComponent) = 0;

  /* readonly attribute wstring text; */
  NS_IMETHOD GetText(PRUnichar * *aText) = 0;

  /* readonly attribute IVirtualBoxErrorInfo next; */
  NS_IMETHOD GetNext(IVirtualBoxErrorInfo * *aNext) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVIRTUALBOXERRORINFO \
  NS_IMETHOD GetResultCode(PRInt32 *aResultCode); \
  NS_IMETHOD GetResultDetail(PRInt32 *aResultDetail); \
  NS_IMETHOD GetInterfaceID(PRUnichar * *aInterfaceID); \
  NS_IMETHOD GetComponent(PRUnichar * *aComponent); \
  NS_IMETHOD GetText(PRUnichar * *aText); \
  NS_IMETHOD GetNext(IVirtualBoxErrorInfo * *aNext); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IVIRTUALBOXERRORINFO(_to) \
  NS_IMETHOD GetResultCode(PRInt32 *aResultCode) { return _to GetResultCode(aResultCode); } \
  NS_IMETHOD GetResultDetail(PRInt32 *aResultDetail) { return _to GetResultDetail(aResultDetail); } \
  NS_IMETHOD GetInterfaceID(PRUnichar * *aInterfaceID) { return _to GetInterfaceID(aInterfaceID); } \
  NS_IMETHOD GetComponent(PRUnichar * *aComponent) { return _to GetComponent(aComponent); } \
  NS_IMETHOD GetText(PRUnichar * *aText) { return _to GetText(aText); } \
  NS_IMETHOD GetNext(IVirtualBoxErrorInfo * *aNext) { return _to GetNext(aNext); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IVIRTUALBOXERRORINFO(_to) \
  NS_IMETHOD GetResultCode(PRInt32 *aResultCode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetResultCode(aResultCode); } \
  NS_IMETHOD GetResultDetail(PRInt32 *aResultDetail) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetResultDetail(aResultDetail); } \
  NS_IMETHOD GetInterfaceID(PRUnichar * *aInterfaceID) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInterfaceID(aInterfaceID); } \
  NS_IMETHOD GetComponent(PRUnichar * *aComponent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetComponent(aComponent); } \
  NS_IMETHOD GetText(PRUnichar * *aText) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetText(aText); } \
  NS_IMETHOD GetNext(IVirtualBoxErrorInfo * *aNext) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNext(aNext); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IVirtualBoxErrorInfo
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IVIRTUALBOXERRORINFO

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IVirtualBoxErrorInfo)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute long resultCode; */
NS_IMETHODIMP _MYCLASS_::GetResultCode(PRInt32 *aResultCode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long resultDetail; */
NS_IMETHODIMP _MYCLASS_::GetResultDetail(PRInt32 *aResultDetail)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring interfaceID; */
NS_IMETHODIMP _MYCLASS_::GetInterfaceID(PRUnichar * *aInterfaceID)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring component; */
NS_IMETHODIMP _MYCLASS_::GetComponent(PRUnichar * *aComponent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring text; */
NS_IMETHODIMP _MYCLASS_::GetText(PRUnichar * *aText)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IVirtualBoxErrorInfo next; */
NS_IMETHODIMP _MYCLASS_::GetNext(IVirtualBoxErrorInfo * *aNext)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_ResultCode_TO(smth) NS_IMETHOD GetResultCode (PRInt32 * aResultCode) { return smth GetResultCode (aResultCode); }
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_ResultCode_TO_OBJ(obj) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_ResultCode_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_ResultCode_TO_BASE(base) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_ResultCode_TO (base::)
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_ResultDetail_TO(smth) NS_IMETHOD GetResultDetail (PRInt32 * aResultDetail) { return smth GetResultDetail (aResultDetail); }
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_ResultDetail_TO_OBJ(obj) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_ResultDetail_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_ResultDetail_TO_BASE(base) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_ResultDetail_TO (base::)
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_InterfaceID_TO(smth) NS_IMETHOD GetInterfaceID (PRUnichar * * aInterfaceID) { return smth GetInterfaceID (aInterfaceID); }
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_InterfaceID_TO_OBJ(obj) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_InterfaceID_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_InterfaceID_TO_BASE(base) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_InterfaceID_TO (base::)
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Component_TO(smth) NS_IMETHOD GetComponent (PRUnichar * * aComponent) { return smth GetComponent (aComponent); }
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Component_TO_OBJ(obj) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Component_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Component_TO_BASE(base) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Component_TO (base::)
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Text_TO(smth) NS_IMETHOD GetText (PRUnichar * * aText) { return smth GetText (aText); }
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Text_TO_OBJ(obj) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Text_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Text_TO_BASE(base) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Text_TO (base::)
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Next_TO(smth) NS_IMETHOD GetNext (IVirtualBoxErrorInfo * * aNext) { return smth GetNext (aNext); }
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Next_TO_OBJ(obj) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Next_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Next_TO_BASE(base) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Next_TO (base::)
#define COM_FORWARD_IVirtualBoxErrorInfo_TO(smth) NS_FORWARD_IVIRTUALBOXERRORINFO (smth)
#define COM_FORWARD_IVirtualBoxErrorInfo_TO_OBJ(obj) COM_FORWARD_IVirtualBoxErrorInfo_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxErrorInfo_TO_BASE(base) COM_FORWARD_IVirtualBoxErrorInfo_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IVirtualBoxErrorInfo;

/* starting interface:    INATNetwork */
#define INATNETWORK_IID_STR "a63c75da-4c99-4e9d-8351-eb73651c18cc"

#define INATNETWORK_IID \
  {0xa63c75da, 0x4c99, 0x4e9d, \
    { 0x83, 0x51, 0xeb, 0x73, 0x65, 0x1c, 0x18, 0xcc }}

class NS_NO_VTABLE INATNetwork : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(INATNETWORK_IID)

  /* attribute wstring networkName; */
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName) = 0;
  NS_IMETHOD SetNetworkName(const PRUnichar * aNetworkName) = 0;

  /* attribute boolean enabled; */
  NS_IMETHOD GetEnabled(PRBool *aEnabled) = 0;
  NS_IMETHOD SetEnabled(PRBool aEnabled) = 0;

  /* attribute wstring network; */
  NS_IMETHOD GetNetwork(PRUnichar * *aNetwork) = 0;
  NS_IMETHOD SetNetwork(const PRUnichar * aNetwork) = 0;

  /* readonly attribute wstring gateway; */
  NS_IMETHOD GetGateway(PRUnichar * *aGateway) = 0;

  /* attribute boolean IPv6Enabled; */
  NS_IMETHOD GetIPv6Enabled(PRBool *aIPv6Enabled) = 0;
  NS_IMETHOD SetIPv6Enabled(PRBool aIPv6Enabled) = 0;

  /* attribute wstring IPv6Prefix; */
  NS_IMETHOD GetIPv6Prefix(PRUnichar * *aIPv6Prefix) = 0;
  NS_IMETHOD SetIPv6Prefix(const PRUnichar * aIPv6Prefix) = 0;

  /* attribute boolean advertiseDefaultIPv6RouteEnabled; */
  NS_IMETHOD GetAdvertiseDefaultIPv6RouteEnabled(PRBool *aAdvertiseDefaultIPv6RouteEnabled) = 0;
  NS_IMETHOD SetAdvertiseDefaultIPv6RouteEnabled(PRBool aAdvertiseDefaultIPv6RouteEnabled) = 0;

  /* attribute boolean needDhcpServer; */
  NS_IMETHOD GetNeedDhcpServer(PRBool *aNeedDhcpServer) = 0;
  NS_IMETHOD SetNeedDhcpServer(PRBool aNeedDhcpServer) = 0;

  /* readonly attribute IEventSource eventSource; */
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) = 0;

  /* void getPortForwardRules4 (out unsigned long portForwardRules4Size, [array, size_is (portForwardRules4Size), retval] out wstring portForwardRules4); */
  NS_IMETHOD GetPortForwardRules4(PRUint32 *portForwardRules4Size, PRUnichar ***portForwardRules4) = 0;

  /* void getLocalMappings (out unsigned long localMappingsSize, [array, size_is (localMappingsSize), retval] out wstring localMappings); */
  NS_IMETHOD GetLocalMappings(PRUint32 *localMappingsSize, PRUnichar ***localMappings) = 0;

  /* attribute long loopbackIp6; */
  NS_IMETHOD GetLoopbackIp6(PRInt32 *aLoopbackIp6) = 0;
  NS_IMETHOD SetLoopbackIp6(PRInt32 aLoopbackIp6) = 0;

  /* void getPortForwardRules6 (out unsigned long portForwardRules6Size, [array, size_is (portForwardRules6Size), retval] out wstring portForwardRules6); */
  NS_IMETHOD GetPortForwardRules6(PRUint32 *portForwardRules6Size, PRUnichar ***portForwardRules6) = 0;

  /* void addLocalMapping (in wstring hostid, in long offset); */
  NS_IMETHOD AddLocalMapping(const PRUnichar *hostid, PRInt32 offset) = 0;

  /* void addPortForwardRule (in boolean isIpv6, in wstring ruleName, in PRUint32 proto, in wstring hostIP, in unsigned short hostPort, in wstring guestIP, in unsigned short guestPort); */
  NS_IMETHOD AddPortForwardRule(PRBool isIpv6, const PRUnichar *ruleName, PRUint32 proto, const PRUnichar *hostIP, PRUint16 hostPort, const PRUnichar *guestIP, PRUint16 guestPort) = 0;

  /* void removePortForwardRule (in boolean iSipv6, in wstring ruleName); */
  NS_IMETHOD RemovePortForwardRule(PRBool iSipv6, const PRUnichar *ruleName) = 0;

  /* void start (in wstring trunkType); */
  NS_IMETHOD Start(const PRUnichar *trunkType) = 0;

  /* void stop (); */
  NS_IMETHOD Stop(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_INATNETWORK \
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName); \
  NS_IMETHOD SetNetworkName(const PRUnichar * aNetworkName); \
  NS_IMETHOD GetEnabled(PRBool *aEnabled); \
  NS_IMETHOD SetEnabled(PRBool aEnabled); \
  NS_IMETHOD GetNetwork(PRUnichar * *aNetwork); \
  NS_IMETHOD SetNetwork(const PRUnichar * aNetwork); \
  NS_IMETHOD GetGateway(PRUnichar * *aGateway); \
  NS_IMETHOD GetIPv6Enabled(PRBool *aIPv6Enabled); \
  NS_IMETHOD SetIPv6Enabled(PRBool aIPv6Enabled); \
  NS_IMETHOD GetIPv6Prefix(PRUnichar * *aIPv6Prefix); \
  NS_IMETHOD SetIPv6Prefix(const PRUnichar * aIPv6Prefix); \
  NS_IMETHOD GetAdvertiseDefaultIPv6RouteEnabled(PRBool *aAdvertiseDefaultIPv6RouteEnabled); \
  NS_IMETHOD SetAdvertiseDefaultIPv6RouteEnabled(PRBool aAdvertiseDefaultIPv6RouteEnabled); \
  NS_IMETHOD GetNeedDhcpServer(PRBool *aNeedDhcpServer); \
  NS_IMETHOD SetNeedDhcpServer(PRBool aNeedDhcpServer); \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource); \
  NS_IMETHOD GetPortForwardRules4(PRUint32 *portForwardRules4Size, PRUnichar ***portForwardRules4); \
  NS_IMETHOD GetLocalMappings(PRUint32 *localMappingsSize, PRUnichar ***localMappings); \
  NS_IMETHOD GetLoopbackIp6(PRInt32 *aLoopbackIp6); \
  NS_IMETHOD SetLoopbackIp6(PRInt32 aLoopbackIp6); \
  NS_IMETHOD GetPortForwardRules6(PRUint32 *portForwardRules6Size, PRUnichar ***portForwardRules6); \
  NS_IMETHOD AddLocalMapping(const PRUnichar *hostid, PRInt32 offset); \
  NS_IMETHOD AddPortForwardRule(PRBool isIpv6, const PRUnichar *ruleName, PRUint32 proto, const PRUnichar *hostIP, PRUint16 hostPort, const PRUnichar *guestIP, PRUint16 guestPort); \
  NS_IMETHOD RemovePortForwardRule(PRBool iSipv6, const PRUnichar *ruleName); \
  NS_IMETHOD Start(const PRUnichar *trunkType); \
  NS_IMETHOD Stop(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_INATNETWORK(_to) \
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName) { return _to GetNetworkName(aNetworkName); } \
  NS_IMETHOD SetNetworkName(const PRUnichar * aNetworkName) { return _to SetNetworkName(aNetworkName); } \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return _to GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return _to SetEnabled(aEnabled); } \
  NS_IMETHOD GetNetwork(PRUnichar * *aNetwork) { return _to GetNetwork(aNetwork); } \
  NS_IMETHOD SetNetwork(const PRUnichar * aNetwork) { return _to SetNetwork(aNetwork); } \
  NS_IMETHOD GetGateway(PRUnichar * *aGateway) { return _to GetGateway(aGateway); } \
  NS_IMETHOD GetIPv6Enabled(PRBool *aIPv6Enabled) { return _to GetIPv6Enabled(aIPv6Enabled); } \
  NS_IMETHOD SetIPv6Enabled(PRBool aIPv6Enabled) { return _to SetIPv6Enabled(aIPv6Enabled); } \
  NS_IMETHOD GetIPv6Prefix(PRUnichar * *aIPv6Prefix) { return _to GetIPv6Prefix(aIPv6Prefix); } \
  NS_IMETHOD SetIPv6Prefix(const PRUnichar * aIPv6Prefix) { return _to SetIPv6Prefix(aIPv6Prefix); } \
  NS_IMETHOD GetAdvertiseDefaultIPv6RouteEnabled(PRBool *aAdvertiseDefaultIPv6RouteEnabled) { return _to GetAdvertiseDefaultIPv6RouteEnabled(aAdvertiseDefaultIPv6RouteEnabled); } \
  NS_IMETHOD SetAdvertiseDefaultIPv6RouteEnabled(PRBool aAdvertiseDefaultIPv6RouteEnabled) { return _to SetAdvertiseDefaultIPv6RouteEnabled(aAdvertiseDefaultIPv6RouteEnabled); } \
  NS_IMETHOD GetNeedDhcpServer(PRBool *aNeedDhcpServer) { return _to GetNeedDhcpServer(aNeedDhcpServer); } \
  NS_IMETHOD SetNeedDhcpServer(PRBool aNeedDhcpServer) { return _to SetNeedDhcpServer(aNeedDhcpServer); } \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return _to GetEventSource(aEventSource); } \
  NS_IMETHOD GetPortForwardRules4(PRUint32 *portForwardRules4Size, PRUnichar ***portForwardRules4) { return _to GetPortForwardRules4(portForwardRules4Size, portForwardRules4); } \
  NS_IMETHOD GetLocalMappings(PRUint32 *localMappingsSize, PRUnichar ***localMappings) { return _to GetLocalMappings(localMappingsSize, localMappings); } \
  NS_IMETHOD GetLoopbackIp6(PRInt32 *aLoopbackIp6) { return _to GetLoopbackIp6(aLoopbackIp6); } \
  NS_IMETHOD SetLoopbackIp6(PRInt32 aLoopbackIp6) { return _to SetLoopbackIp6(aLoopbackIp6); } \
  NS_IMETHOD GetPortForwardRules6(PRUint32 *portForwardRules6Size, PRUnichar ***portForwardRules6) { return _to GetPortForwardRules6(portForwardRules6Size, portForwardRules6); } \
  NS_IMETHOD AddLocalMapping(const PRUnichar *hostid, PRInt32 offset) { return _to AddLocalMapping(hostid, offset); } \
  NS_IMETHOD AddPortForwardRule(PRBool isIpv6, const PRUnichar *ruleName, PRUint32 proto, const PRUnichar *hostIP, PRUint16 hostPort, const PRUnichar *guestIP, PRUint16 guestPort) { return _to AddPortForwardRule(isIpv6, ruleName, proto, hostIP, hostPort, guestIP, guestPort); } \
  NS_IMETHOD RemovePortForwardRule(PRBool iSipv6, const PRUnichar *ruleName) { return _to RemovePortForwardRule(iSipv6, ruleName); } \
  NS_IMETHOD Start(const PRUnichar *trunkType) { return _to Start(trunkType); } \
  NS_IMETHOD Stop(void) { return _to Stop(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_INATNETWORK(_to) \
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworkName(aNetworkName); } \
  NS_IMETHOD SetNetworkName(const PRUnichar * aNetworkName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNetworkName(aNetworkName); } \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEnabled(aEnabled); } \
  NS_IMETHOD GetNetwork(PRUnichar * *aNetwork) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetwork(aNetwork); } \
  NS_IMETHOD SetNetwork(const PRUnichar * aNetwork) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNetwork(aNetwork); } \
  NS_IMETHOD GetGateway(PRUnichar * *aGateway) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGateway(aGateway); } \
  NS_IMETHOD GetIPv6Enabled(PRBool *aIPv6Enabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIPv6Enabled(aIPv6Enabled); } \
  NS_IMETHOD SetIPv6Enabled(PRBool aIPv6Enabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIPv6Enabled(aIPv6Enabled); } \
  NS_IMETHOD GetIPv6Prefix(PRUnichar * *aIPv6Prefix) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIPv6Prefix(aIPv6Prefix); } \
  NS_IMETHOD SetIPv6Prefix(const PRUnichar * aIPv6Prefix) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIPv6Prefix(aIPv6Prefix); } \
  NS_IMETHOD GetAdvertiseDefaultIPv6RouteEnabled(PRBool *aAdvertiseDefaultIPv6RouteEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAdvertiseDefaultIPv6RouteEnabled(aAdvertiseDefaultIPv6RouteEnabled); } \
  NS_IMETHOD SetAdvertiseDefaultIPv6RouteEnabled(PRBool aAdvertiseDefaultIPv6RouteEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAdvertiseDefaultIPv6RouteEnabled(aAdvertiseDefaultIPv6RouteEnabled); } \
  NS_IMETHOD GetNeedDhcpServer(PRBool *aNeedDhcpServer) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNeedDhcpServer(aNeedDhcpServer); } \
  NS_IMETHOD SetNeedDhcpServer(PRBool aNeedDhcpServer) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNeedDhcpServer(aNeedDhcpServer); } \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEventSource(aEventSource); } \
  NS_IMETHOD GetPortForwardRules4(PRUint32 *portForwardRules4Size, PRUnichar ***portForwardRules4) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPortForwardRules4(portForwardRules4Size, portForwardRules4); } \
  NS_IMETHOD GetLocalMappings(PRUint32 *localMappingsSize, PRUnichar ***localMappings) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLocalMappings(localMappingsSize, localMappings); } \
  NS_IMETHOD GetLoopbackIp6(PRInt32 *aLoopbackIp6) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLoopbackIp6(aLoopbackIp6); } \
  NS_IMETHOD SetLoopbackIp6(PRInt32 aLoopbackIp6) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLoopbackIp6(aLoopbackIp6); } \
  NS_IMETHOD GetPortForwardRules6(PRUint32 *portForwardRules6Size, PRUnichar ***portForwardRules6) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPortForwardRules6(portForwardRules6Size, portForwardRules6); } \
  NS_IMETHOD AddLocalMapping(const PRUnichar *hostid, PRInt32 offset) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddLocalMapping(hostid, offset); } \
  NS_IMETHOD AddPortForwardRule(PRBool isIpv6, const PRUnichar *ruleName, PRUint32 proto, const PRUnichar *hostIP, PRUint16 hostPort, const PRUnichar *guestIP, PRUint16 guestPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddPortForwardRule(isIpv6, ruleName, proto, hostIP, hostPort, guestIP, guestPort); } \
  NS_IMETHOD RemovePortForwardRule(PRBool iSipv6, const PRUnichar *ruleName) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemovePortForwardRule(iSipv6, ruleName); } \
  NS_IMETHOD Start(const PRUnichar *trunkType) { return !_to ? NS_ERROR_NULL_POINTER : _to->Start(trunkType); } \
  NS_IMETHOD Stop(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Stop(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public INATNetwork
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_INATNETWORK

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, INATNetwork)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* attribute wstring networkName; */
NS_IMETHODIMP _MYCLASS_::GetNetworkName(PRUnichar * *aNetworkName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetNetworkName(const PRUnichar * aNetworkName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean enabled; */
NS_IMETHODIMP _MYCLASS_::GetEnabled(PRBool *aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetEnabled(PRBool aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring network; */
NS_IMETHODIMP _MYCLASS_::GetNetwork(PRUnichar * *aNetwork)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetNetwork(const PRUnichar * aNetwork)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring gateway; */
NS_IMETHODIMP _MYCLASS_::GetGateway(PRUnichar * *aGateway)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean IPv6Enabled; */
NS_IMETHODIMP _MYCLASS_::GetIPv6Enabled(PRBool *aIPv6Enabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIPv6Enabled(PRBool aIPv6Enabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring IPv6Prefix; */
NS_IMETHODIMP _MYCLASS_::GetIPv6Prefix(PRUnichar * *aIPv6Prefix)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIPv6Prefix(const PRUnichar * aIPv6Prefix)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean advertiseDefaultIPv6RouteEnabled; */
NS_IMETHODIMP _MYCLASS_::GetAdvertiseDefaultIPv6RouteEnabled(PRBool *aAdvertiseDefaultIPv6RouteEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAdvertiseDefaultIPv6RouteEnabled(PRBool aAdvertiseDefaultIPv6RouteEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean needDhcpServer; */
NS_IMETHODIMP _MYCLASS_::GetNeedDhcpServer(PRBool *aNeedDhcpServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetNeedDhcpServer(PRBool aNeedDhcpServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IEventSource eventSource; */
NS_IMETHODIMP _MYCLASS_::GetEventSource(IEventSource * *aEventSource)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getPortForwardRules4 (out unsigned long portForwardRules4Size, [array, size_is (portForwardRules4Size), retval] out wstring portForwardRules4); */
NS_IMETHODIMP _MYCLASS_::GetPortForwardRules4(PRUint32 *portForwardRules4Size, PRUnichar ***portForwardRules4)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getLocalMappings (out unsigned long localMappingsSize, [array, size_is (localMappingsSize), retval] out wstring localMappings); */
NS_IMETHODIMP _MYCLASS_::GetLocalMappings(PRUint32 *localMappingsSize, PRUnichar ***localMappings)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute long loopbackIp6; */
NS_IMETHODIMP _MYCLASS_::GetLoopbackIp6(PRInt32 *aLoopbackIp6)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetLoopbackIp6(PRInt32 aLoopbackIp6)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getPortForwardRules6 (out unsigned long portForwardRules6Size, [array, size_is (portForwardRules6Size), retval] out wstring portForwardRules6); */
NS_IMETHODIMP _MYCLASS_::GetPortForwardRules6(PRUint32 *portForwardRules6Size, PRUnichar ***portForwardRules6)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addLocalMapping (in wstring hostid, in long offset); */
NS_IMETHODIMP _MYCLASS_::AddLocalMapping(const PRUnichar *hostid, PRInt32 offset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addPortForwardRule (in boolean isIpv6, in wstring ruleName, in PRUint32 proto, in wstring hostIP, in unsigned short hostPort, in wstring guestIP, in unsigned short guestPort); */
NS_IMETHODIMP _MYCLASS_::AddPortForwardRule(PRBool isIpv6, const PRUnichar *ruleName, PRUint32 proto, const PRUnichar *hostIP, PRUint16 hostPort, const PRUnichar *guestIP, PRUint16 guestPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removePortForwardRule (in boolean iSipv6, in wstring ruleName); */
NS_IMETHODIMP _MYCLASS_::RemovePortForwardRule(PRBool iSipv6, const PRUnichar *ruleName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void start (in wstring trunkType); */
NS_IMETHODIMP _MYCLASS_::Start(const PRUnichar *trunkType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void stop (); */
NS_IMETHODIMP _MYCLASS_::Stop()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_INATNetwork_GETTER_NetworkName_TO(smth) NS_IMETHOD GetNetworkName (PRUnichar * * aNetworkName) { return smth GetNetworkName (aNetworkName); }
#define COM_FORWARD_INATNetwork_GETTER_NetworkName_TO_OBJ(obj) COM_FORWARD_INATNetwork_GETTER_NetworkName_TO ((obj)->)
#define COM_FORWARD_INATNetwork_GETTER_NetworkName_TO_BASE(base) COM_FORWARD_INATNetwork_GETTER_NetworkName_TO (base::)
#define COM_FORWARD_INATNetwork_SETTER_NetworkName_TO(smth) NS_IMETHOD SetNetworkName (const PRUnichar * aNetworkName) { return smth SetNetworkName (aNetworkName); }
#define COM_FORWARD_INATNetwork_SETTER_NetworkName_TO_OBJ(obj) COM_FORWARD_INATNetwork_SETTER_NetworkName_TO ((obj)->)
#define COM_FORWARD_INATNetwork_SETTER_NetworkName_TO_BASE(base) COM_FORWARD_INATNetwork_SETTER_NetworkName_TO (base::)
#define COM_FORWARD_INATNetwork_GETTER_Enabled_TO(smth) NS_IMETHOD GetEnabled (PRBool * aEnabled) { return smth GetEnabled (aEnabled); }
#define COM_FORWARD_INATNetwork_GETTER_Enabled_TO_OBJ(obj) COM_FORWARD_INATNetwork_GETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_INATNetwork_GETTER_Enabled_TO_BASE(base) COM_FORWARD_INATNetwork_GETTER_Enabled_TO (base::)
#define COM_FORWARD_INATNetwork_SETTER_Enabled_TO(smth) NS_IMETHOD SetEnabled (PRBool aEnabled) { return smth SetEnabled (aEnabled); }
#define COM_FORWARD_INATNetwork_SETTER_Enabled_TO_OBJ(obj) COM_FORWARD_INATNetwork_SETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_INATNetwork_SETTER_Enabled_TO_BASE(base) COM_FORWARD_INATNetwork_SETTER_Enabled_TO (base::)
#define COM_FORWARD_INATNetwork_GETTER_Network_TO(smth) NS_IMETHOD GetNetwork (PRUnichar * * aNetwork) { return smth GetNetwork (aNetwork); }
#define COM_FORWARD_INATNetwork_GETTER_Network_TO_OBJ(obj) COM_FORWARD_INATNetwork_GETTER_Network_TO ((obj)->)
#define COM_FORWARD_INATNetwork_GETTER_Network_TO_BASE(base) COM_FORWARD_INATNetwork_GETTER_Network_TO (base::)
#define COM_FORWARD_INATNetwork_SETTER_Network_TO(smth) NS_IMETHOD SetNetwork (const PRUnichar * aNetwork) { return smth SetNetwork (aNetwork); }
#define COM_FORWARD_INATNetwork_SETTER_Network_TO_OBJ(obj) COM_FORWARD_INATNetwork_SETTER_Network_TO ((obj)->)
#define COM_FORWARD_INATNetwork_SETTER_Network_TO_BASE(base) COM_FORWARD_INATNetwork_SETTER_Network_TO (base::)
#define COM_FORWARD_INATNetwork_GETTER_Gateway_TO(smth) NS_IMETHOD GetGateway (PRUnichar * * aGateway) { return smth GetGateway (aGateway); }
#define COM_FORWARD_INATNetwork_GETTER_Gateway_TO_OBJ(obj) COM_FORWARD_INATNetwork_GETTER_Gateway_TO ((obj)->)
#define COM_FORWARD_INATNetwork_GETTER_Gateway_TO_BASE(base) COM_FORWARD_INATNetwork_GETTER_Gateway_TO (base::)
#define COM_FORWARD_INATNetwork_GETTER_IPv6Enabled_TO(smth) NS_IMETHOD GetIPv6Enabled (PRBool * aIPv6Enabled) { return smth GetIPv6Enabled (aIPv6Enabled); }
#define COM_FORWARD_INATNetwork_GETTER_IPv6Enabled_TO_OBJ(obj) COM_FORWARD_INATNetwork_GETTER_IPv6Enabled_TO ((obj)->)
#define COM_FORWARD_INATNetwork_GETTER_IPv6Enabled_TO_BASE(base) COM_FORWARD_INATNetwork_GETTER_IPv6Enabled_TO (base::)
#define COM_FORWARD_INATNetwork_SETTER_IPv6Enabled_TO(smth) NS_IMETHOD SetIPv6Enabled (PRBool aIPv6Enabled) { return smth SetIPv6Enabled (aIPv6Enabled); }
#define COM_FORWARD_INATNetwork_SETTER_IPv6Enabled_TO_OBJ(obj) COM_FORWARD_INATNetwork_SETTER_IPv6Enabled_TO ((obj)->)
#define COM_FORWARD_INATNetwork_SETTER_IPv6Enabled_TO_BASE(base) COM_FORWARD_INATNetwork_SETTER_IPv6Enabled_TO (base::)
#define COM_FORWARD_INATNetwork_GETTER_IPv6Prefix_TO(smth) NS_IMETHOD GetIPv6Prefix (PRUnichar * * aIPv6Prefix) { return smth GetIPv6Prefix (aIPv6Prefix); }
#define COM_FORWARD_INATNetwork_GETTER_IPv6Prefix_TO_OBJ(obj) COM_FORWARD_INATNetwork_GETTER_IPv6Prefix_TO ((obj)->)
#define COM_FORWARD_INATNetwork_GETTER_IPv6Prefix_TO_BASE(base) COM_FORWARD_INATNetwork_GETTER_IPv6Prefix_TO (base::)
#define COM_FORWARD_INATNetwork_SETTER_IPv6Prefix_TO(smth) NS_IMETHOD SetIPv6Prefix (const PRUnichar * aIPv6Prefix) { return smth SetIPv6Prefix (aIPv6Prefix); }
#define COM_FORWARD_INATNetwork_SETTER_IPv6Prefix_TO_OBJ(obj) COM_FORWARD_INATNetwork_SETTER_IPv6Prefix_TO ((obj)->)
#define COM_FORWARD_INATNetwork_SETTER_IPv6Prefix_TO_BASE(base) COM_FORWARD_INATNetwork_SETTER_IPv6Prefix_TO (base::)
#define COM_FORWARD_INATNetwork_GETTER_AdvertiseDefaultIPv6RouteEnabled_TO(smth) NS_IMETHOD GetAdvertiseDefaultIPv6RouteEnabled (PRBool * aAdvertiseDefaultIPv6RouteEnabled) { return smth GetAdvertiseDefaultIPv6RouteEnabled (aAdvertiseDefaultIPv6RouteEnabled); }
#define COM_FORWARD_INATNetwork_GETTER_AdvertiseDefaultIPv6RouteEnabled_TO_OBJ(obj) COM_FORWARD_INATNetwork_GETTER_AdvertiseDefaultIPv6RouteEnabled_TO ((obj)->)
#define COM_FORWARD_INATNetwork_GETTER_AdvertiseDefaultIPv6RouteEnabled_TO_BASE(base) COM_FORWARD_INATNetwork_GETTER_AdvertiseDefaultIPv6RouteEnabled_TO (base::)
#define COM_FORWARD_INATNetwork_SETTER_AdvertiseDefaultIPv6RouteEnabled_TO(smth) NS_IMETHOD SetAdvertiseDefaultIPv6RouteEnabled (PRBool aAdvertiseDefaultIPv6RouteEnabled) { return smth SetAdvertiseDefaultIPv6RouteEnabled (aAdvertiseDefaultIPv6RouteEnabled); }
#define COM_FORWARD_INATNetwork_SETTER_AdvertiseDefaultIPv6RouteEnabled_TO_OBJ(obj) COM_FORWARD_INATNetwork_SETTER_AdvertiseDefaultIPv6RouteEnabled_TO ((obj)->)
#define COM_FORWARD_INATNetwork_SETTER_AdvertiseDefaultIPv6RouteEnabled_TO_BASE(base) COM_FORWARD_INATNetwork_SETTER_AdvertiseDefaultIPv6RouteEnabled_TO (base::)
#define COM_FORWARD_INATNetwork_GETTER_NeedDhcpServer_TO(smth) NS_IMETHOD GetNeedDhcpServer (PRBool * aNeedDhcpServer) { return smth GetNeedDhcpServer (aNeedDhcpServer); }
#define COM_FORWARD_INATNetwork_GETTER_NeedDhcpServer_TO_OBJ(obj) COM_FORWARD_INATNetwork_GETTER_NeedDhcpServer_TO ((obj)->)
#define COM_FORWARD_INATNetwork_GETTER_NeedDhcpServer_TO_BASE(base) COM_FORWARD_INATNetwork_GETTER_NeedDhcpServer_TO (base::)
#define COM_FORWARD_INATNetwork_SETTER_NeedDhcpServer_TO(smth) NS_IMETHOD SetNeedDhcpServer (PRBool aNeedDhcpServer) { return smth SetNeedDhcpServer (aNeedDhcpServer); }
#define COM_FORWARD_INATNetwork_SETTER_NeedDhcpServer_TO_OBJ(obj) COM_FORWARD_INATNetwork_SETTER_NeedDhcpServer_TO ((obj)->)
#define COM_FORWARD_INATNetwork_SETTER_NeedDhcpServer_TO_BASE(base) COM_FORWARD_INATNetwork_SETTER_NeedDhcpServer_TO (base::)
#define COM_FORWARD_INATNetwork_GETTER_EventSource_TO(smth) NS_IMETHOD GetEventSource (IEventSource * * aEventSource) { return smth GetEventSource (aEventSource); }
#define COM_FORWARD_INATNetwork_GETTER_EventSource_TO_OBJ(obj) COM_FORWARD_INATNetwork_GETTER_EventSource_TO ((obj)->)
#define COM_FORWARD_INATNetwork_GETTER_EventSource_TO_BASE(base) COM_FORWARD_INATNetwork_GETTER_EventSource_TO (base::)
#define COM_FORWARD_INATNetwork_GETTER_PortForwardRules4_TO(smth) NS_IMETHOD GetPortForwardRules4 (PRUint32 * aPortForwardRules4Size, PRUnichar * * * aPortForwardRules4) { return smth GetPortForwardRules4 (aPortForwardRules4Size, aPortForwardRules4); }
#define COM_FORWARD_INATNetwork_GETTER_PortForwardRules4_TO_OBJ(obj) COM_FORWARD_INATNetwork_GETTER_PortForwardRules4_TO ((obj)->)
#define COM_FORWARD_INATNetwork_GETTER_PortForwardRules4_TO_BASE(base) COM_FORWARD_INATNetwork_GETTER_PortForwardRules4_TO (base::)
#define COM_FORWARD_INATNetwork_GETTER_LocalMappings_TO(smth) NS_IMETHOD GetLocalMappings (PRUint32 * aLocalMappingsSize, PRUnichar * * * aLocalMappings) { return smth GetLocalMappings (aLocalMappingsSize, aLocalMappings); }
#define COM_FORWARD_INATNetwork_GETTER_LocalMappings_TO_OBJ(obj) COM_FORWARD_INATNetwork_GETTER_LocalMappings_TO ((obj)->)
#define COM_FORWARD_INATNetwork_GETTER_LocalMappings_TO_BASE(base) COM_FORWARD_INATNetwork_GETTER_LocalMappings_TO (base::)
#define COM_FORWARD_INATNetwork_GETTER_LoopbackIp6_TO(smth) NS_IMETHOD GetLoopbackIp6 (PRInt32 * aLoopbackIp6) { return smth GetLoopbackIp6 (aLoopbackIp6); }
#define COM_FORWARD_INATNetwork_GETTER_LoopbackIp6_TO_OBJ(obj) COM_FORWARD_INATNetwork_GETTER_LoopbackIp6_TO ((obj)->)
#define COM_FORWARD_INATNetwork_GETTER_LoopbackIp6_TO_BASE(base) COM_FORWARD_INATNetwork_GETTER_LoopbackIp6_TO (base::)
#define COM_FORWARD_INATNetwork_SETTER_LoopbackIp6_TO(smth) NS_IMETHOD SetLoopbackIp6 (PRInt32 aLoopbackIp6) { return smth SetLoopbackIp6 (aLoopbackIp6); }
#define COM_FORWARD_INATNetwork_SETTER_LoopbackIp6_TO_OBJ(obj) COM_FORWARD_INATNetwork_SETTER_LoopbackIp6_TO ((obj)->)
#define COM_FORWARD_INATNetwork_SETTER_LoopbackIp6_TO_BASE(base) COM_FORWARD_INATNetwork_SETTER_LoopbackIp6_TO (base::)
#define COM_FORWARD_INATNetwork_GETTER_PortForwardRules6_TO(smth) NS_IMETHOD GetPortForwardRules6 (PRUint32 * aPortForwardRules6Size, PRUnichar * * * aPortForwardRules6) { return smth GetPortForwardRules6 (aPortForwardRules6Size, aPortForwardRules6); }
#define COM_FORWARD_INATNetwork_GETTER_PortForwardRules6_TO_OBJ(obj) COM_FORWARD_INATNetwork_GETTER_PortForwardRules6_TO ((obj)->)
#define COM_FORWARD_INATNetwork_GETTER_PortForwardRules6_TO_BASE(base) COM_FORWARD_INATNetwork_GETTER_PortForwardRules6_TO (base::)
#define COM_FORWARD_INATNetwork_AddLocalMapping_TO(smth) NS_IMETHOD AddLocalMapping (PRUnichar * aHostid, PRInt32 aOffset) { return smth AddLocalMapping (aHostid, aOffset); }
#define COM_FORWARD_INATNetwork_AddLocalMapping_TO_OBJ(obj) COM_FORWARD_INATNetwork_AddLocalMapping_TO ((obj)->)
#define COM_FORWARD_INATNetwork_AddLocalMapping_TO_BASE(base) COM_FORWARD_INATNetwork_AddLocalMapping_TO (base::)
#define COM_FORWARD_INATNetwork_AddPortForwardRule_TO(smth) NS_IMETHOD AddPortForwardRule (PRBool aIsIpv6, PRUnichar * aRuleName, PRUint32 aProto, PRUnichar * aHostIP, PRUint16 aHostPort, PRUnichar * aGuestIP, PRUint16 aGuestPort) { return smth AddPortForwardRule (aIsIpv6, aRuleName, aProto, aHostIP, aHostPort, aGuestIP, aGuestPort); }
#define COM_FORWARD_INATNetwork_AddPortForwardRule_TO_OBJ(obj) COM_FORWARD_INATNetwork_AddPortForwardRule_TO ((obj)->)
#define COM_FORWARD_INATNetwork_AddPortForwardRule_TO_BASE(base) COM_FORWARD_INATNetwork_AddPortForwardRule_TO (base::)
#define COM_FORWARD_INATNetwork_RemovePortForwardRule_TO(smth) NS_IMETHOD RemovePortForwardRule (PRBool aISipv6, PRUnichar * aRuleName) { return smth RemovePortForwardRule (aISipv6, aRuleName); }
#define COM_FORWARD_INATNetwork_RemovePortForwardRule_TO_OBJ(obj) COM_FORWARD_INATNetwork_RemovePortForwardRule_TO ((obj)->)
#define COM_FORWARD_INATNetwork_RemovePortForwardRule_TO_BASE(base) COM_FORWARD_INATNetwork_RemovePortForwardRule_TO (base::)
#define COM_FORWARD_INATNetwork_Start_TO(smth) NS_IMETHOD Start (PRUnichar * aTrunkType) { return smth Start (aTrunkType); }
#define COM_FORWARD_INATNetwork_Start_TO_OBJ(obj) COM_FORWARD_INATNetwork_Start_TO ((obj)->)
#define COM_FORWARD_INATNetwork_Start_TO_BASE(base) COM_FORWARD_INATNetwork_Start_TO (base::)
#define COM_FORWARD_INATNetwork_Stop_TO(smth) NS_IMETHOD Stop() { return smth Stop(); }
#define COM_FORWARD_INATNetwork_Stop_TO_OBJ(obj) COM_FORWARD_INATNetwork_Stop_TO ((obj)->)
#define COM_FORWARD_INATNetwork_Stop_TO_BASE(base) COM_FORWARD_INATNetwork_Stop_TO (base::)
#define COM_FORWARD_INATNetwork_TO(smth) NS_FORWARD_INATNETWORK (smth)
#define COM_FORWARD_INATNetwork_TO_OBJ(obj) COM_FORWARD_INATNetwork_TO ((obj)->)
#define COM_FORWARD_INATNetwork_TO_BASE(base) COM_FORWARD_INATNetwork_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_INATNetwork;

/* starting interface:    IDHCPServer */
#define IDHCPSERVER_IID_STR "ff0774c5-1f62-4bc3-919c-7fc942bf1d25"

#define IDHCPSERVER_IID \
  {0xff0774c5, 0x1f62, 0x4bc3, \
    { 0x91, 0x9c, 0x7f, 0xc9, 0x42, 0xbf, 0x1d, 0x25 }}

class NS_NO_VTABLE IDHCPServer : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IDHCPSERVER_IID)

  /* readonly attribute IEventSource eventSource; */
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) = 0;

  /* attribute boolean enabled; */
  NS_IMETHOD GetEnabled(PRBool *aEnabled) = 0;
  NS_IMETHOD SetEnabled(PRBool aEnabled) = 0;

  /* readonly attribute wstring IPAddress; */
  NS_IMETHOD GetIPAddress(PRUnichar * *aIPAddress) = 0;

  /* readonly attribute wstring networkMask; */
  NS_IMETHOD GetNetworkMask(PRUnichar * *aNetworkMask) = 0;

  /* readonly attribute wstring networkName; */
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName) = 0;

  /* readonly attribute wstring lowerIP; */
  NS_IMETHOD GetLowerIP(PRUnichar * *aLowerIP) = 0;

  /* readonly attribute wstring upperIP; */
  NS_IMETHOD GetUpperIP(PRUnichar * *aUpperIP) = 0;

  /* void getGlobalOptions (out unsigned long globalOptionsSize, [array, size_is (globalOptionsSize), retval] out wstring globalOptions); */
  NS_IMETHOD GetGlobalOptions(PRUint32 *globalOptionsSize, PRUnichar ***globalOptions) = 0;

  /* void getVmConfigs (out unsigned long vmConfigsSize, [array, size_is (vmConfigsSize), retval] out wstring vmConfigs); */
  NS_IMETHOD GetVmConfigs(PRUint32 *vmConfigsSize, PRUnichar ***vmConfigs) = 0;

  /* void addGlobalOption (in PRUint32 option, in wstring value); */
  NS_IMETHOD AddGlobalOption(PRUint32 option, const PRUnichar *value) = 0;

  /* void addVmSlotOption (in wstring vmname, in long slot, in PRUint32 option, in wstring value); */
  NS_IMETHOD AddVmSlotOption(const PRUnichar *vmname, PRInt32 slot, PRUint32 option, const PRUnichar *value) = 0;

  /* void removeVmSlotOptions (in wstring vmname, in long slot); */
  NS_IMETHOD RemoveVmSlotOptions(const PRUnichar *vmname, PRInt32 slot) = 0;

  /* void getVmSlotOptions (in wstring vmname, in long slot, out unsigned long optionSize, [array, size_is (optionSize), retval] out wstring option); */
  NS_IMETHOD GetVmSlotOptions(const PRUnichar *vmname, PRInt32 slot, PRUint32 *optionSize, PRUnichar ***option) = 0;

  /* void getMacOptions (in wstring mac, out unsigned long optionSize, [array, size_is (optionSize), retval] out wstring option); */
  NS_IMETHOD GetMacOptions(const PRUnichar *mac, PRUint32 *optionSize, PRUnichar ***option) = 0;

  /* void setConfiguration (in wstring IPAddress, in wstring networkMask, in wstring FromIPAddress, in wstring ToIPAddress); */
  NS_IMETHOD SetConfiguration(const PRUnichar *IPAddress, const PRUnichar *networkMask, const PRUnichar *FromIPAddress, const PRUnichar *ToIPAddress) = 0;

  /* void start (in wstring networkName, in wstring trunkName, in wstring trunkType); */
  NS_IMETHOD Start(const PRUnichar *networkName, const PRUnichar *trunkName, const PRUnichar *trunkType) = 0;

  /* void stop (); */
  NS_IMETHOD Stop(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IDHCPSERVER \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource); \
  NS_IMETHOD GetEnabled(PRBool *aEnabled); \
  NS_IMETHOD SetEnabled(PRBool aEnabled); \
  NS_IMETHOD GetIPAddress(PRUnichar * *aIPAddress); \
  NS_IMETHOD GetNetworkMask(PRUnichar * *aNetworkMask); \
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName); \
  NS_IMETHOD GetLowerIP(PRUnichar * *aLowerIP); \
  NS_IMETHOD GetUpperIP(PRUnichar * *aUpperIP); \
  NS_IMETHOD GetGlobalOptions(PRUint32 *globalOptionsSize, PRUnichar ***globalOptions); \
  NS_IMETHOD GetVmConfigs(PRUint32 *vmConfigsSize, PRUnichar ***vmConfigs); \
  NS_IMETHOD AddGlobalOption(PRUint32 option, const PRUnichar *value); \
  NS_IMETHOD AddVmSlotOption(const PRUnichar *vmname, PRInt32 slot, PRUint32 option, const PRUnichar *value); \
  NS_IMETHOD RemoveVmSlotOptions(const PRUnichar *vmname, PRInt32 slot); \
  NS_IMETHOD GetVmSlotOptions(const PRUnichar *vmname, PRInt32 slot, PRUint32 *optionSize, PRUnichar ***option); \
  NS_IMETHOD GetMacOptions(const PRUnichar *mac, PRUint32 *optionSize, PRUnichar ***option); \
  NS_IMETHOD SetConfiguration(const PRUnichar *IPAddress, const PRUnichar *networkMask, const PRUnichar *FromIPAddress, const PRUnichar *ToIPAddress); \
  NS_IMETHOD Start(const PRUnichar *networkName, const PRUnichar *trunkName, const PRUnichar *trunkType); \
  NS_IMETHOD Stop(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IDHCPSERVER(_to) \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return _to GetEventSource(aEventSource); } \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return _to GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return _to SetEnabled(aEnabled); } \
  NS_IMETHOD GetIPAddress(PRUnichar * *aIPAddress) { return _to GetIPAddress(aIPAddress); } \
  NS_IMETHOD GetNetworkMask(PRUnichar * *aNetworkMask) { return _to GetNetworkMask(aNetworkMask); } \
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName) { return _to GetNetworkName(aNetworkName); } \
  NS_IMETHOD GetLowerIP(PRUnichar * *aLowerIP) { return _to GetLowerIP(aLowerIP); } \
  NS_IMETHOD GetUpperIP(PRUnichar * *aUpperIP) { return _to GetUpperIP(aUpperIP); } \
  NS_IMETHOD GetGlobalOptions(PRUint32 *globalOptionsSize, PRUnichar ***globalOptions) { return _to GetGlobalOptions(globalOptionsSize, globalOptions); } \
  NS_IMETHOD GetVmConfigs(PRUint32 *vmConfigsSize, PRUnichar ***vmConfigs) { return _to GetVmConfigs(vmConfigsSize, vmConfigs); } \
  NS_IMETHOD AddGlobalOption(PRUint32 option, const PRUnichar *value) { return _to AddGlobalOption(option, value); } \
  NS_IMETHOD AddVmSlotOption(const PRUnichar *vmname, PRInt32 slot, PRUint32 option, const PRUnichar *value) { return _to AddVmSlotOption(vmname, slot, option, value); } \
  NS_IMETHOD RemoveVmSlotOptions(const PRUnichar *vmname, PRInt32 slot) { return _to RemoveVmSlotOptions(vmname, slot); } \
  NS_IMETHOD GetVmSlotOptions(const PRUnichar *vmname, PRInt32 slot, PRUint32 *optionSize, PRUnichar ***option) { return _to GetVmSlotOptions(vmname, slot, optionSize, option); } \
  NS_IMETHOD GetMacOptions(const PRUnichar *mac, PRUint32 *optionSize, PRUnichar ***option) { return _to GetMacOptions(mac, optionSize, option); } \
  NS_IMETHOD SetConfiguration(const PRUnichar *IPAddress, const PRUnichar *networkMask, const PRUnichar *FromIPAddress, const PRUnichar *ToIPAddress) { return _to SetConfiguration(IPAddress, networkMask, FromIPAddress, ToIPAddress); } \
  NS_IMETHOD Start(const PRUnichar *networkName, const PRUnichar *trunkName, const PRUnichar *trunkType) { return _to Start(networkName, trunkName, trunkType); } \
  NS_IMETHOD Stop(void) { return _to Stop(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IDHCPSERVER(_to) \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEventSource(aEventSource); } \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEnabled(aEnabled); } \
  NS_IMETHOD GetIPAddress(PRUnichar * *aIPAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIPAddress(aIPAddress); } \
  NS_IMETHOD GetNetworkMask(PRUnichar * *aNetworkMask) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworkMask(aNetworkMask); } \
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworkName(aNetworkName); } \
  NS_IMETHOD GetLowerIP(PRUnichar * *aLowerIP) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLowerIP(aLowerIP); } \
  NS_IMETHOD GetUpperIP(PRUnichar * *aUpperIP) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUpperIP(aUpperIP); } \
  NS_IMETHOD GetGlobalOptions(PRUint32 *globalOptionsSize, PRUnichar ***globalOptions) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGlobalOptions(globalOptionsSize, globalOptions); } \
  NS_IMETHOD GetVmConfigs(PRUint32 *vmConfigsSize, PRUnichar ***vmConfigs) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVmConfigs(vmConfigsSize, vmConfigs); } \
  NS_IMETHOD AddGlobalOption(PRUint32 option, const PRUnichar *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddGlobalOption(option, value); } \
  NS_IMETHOD AddVmSlotOption(const PRUnichar *vmname, PRInt32 slot, PRUint32 option, const PRUnichar *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddVmSlotOption(vmname, slot, option, value); } \
  NS_IMETHOD RemoveVmSlotOptions(const PRUnichar *vmname, PRInt32 slot) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveVmSlotOptions(vmname, slot); } \
  NS_IMETHOD GetVmSlotOptions(const PRUnichar *vmname, PRInt32 slot, PRUint32 *optionSize, PRUnichar ***option) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVmSlotOptions(vmname, slot, optionSize, option); } \
  NS_IMETHOD GetMacOptions(const PRUnichar *mac, PRUint32 *optionSize, PRUnichar ***option) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMacOptions(mac, optionSize, option); } \
  NS_IMETHOD SetConfiguration(const PRUnichar *IPAddress, const PRUnichar *networkMask, const PRUnichar *FromIPAddress, const PRUnichar *ToIPAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetConfiguration(IPAddress, networkMask, FromIPAddress, ToIPAddress); } \
  NS_IMETHOD Start(const PRUnichar *networkName, const PRUnichar *trunkName, const PRUnichar *trunkType) { return !_to ? NS_ERROR_NULL_POINTER : _to->Start(networkName, trunkName, trunkType); } \
  NS_IMETHOD Stop(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Stop(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IDHCPServer
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IDHCPSERVER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IDHCPServer)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute IEventSource eventSource; */
NS_IMETHODIMP _MYCLASS_::GetEventSource(IEventSource * *aEventSource)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean enabled; */
NS_IMETHODIMP _MYCLASS_::GetEnabled(PRBool *aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetEnabled(PRBool aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring IPAddress; */
NS_IMETHODIMP _MYCLASS_::GetIPAddress(PRUnichar * *aIPAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring networkMask; */
NS_IMETHODIMP _MYCLASS_::GetNetworkMask(PRUnichar * *aNetworkMask)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring networkName; */
NS_IMETHODIMP _MYCLASS_::GetNetworkName(PRUnichar * *aNetworkName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring lowerIP; */
NS_IMETHODIMP _MYCLASS_::GetLowerIP(PRUnichar * *aLowerIP)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring upperIP; */
NS_IMETHODIMP _MYCLASS_::GetUpperIP(PRUnichar * *aUpperIP)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getGlobalOptions (out unsigned long globalOptionsSize, [array, size_is (globalOptionsSize), retval] out wstring globalOptions); */
NS_IMETHODIMP _MYCLASS_::GetGlobalOptions(PRUint32 *globalOptionsSize, PRUnichar ***globalOptions)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getVmConfigs (out unsigned long vmConfigsSize, [array, size_is (vmConfigsSize), retval] out wstring vmConfigs); */
NS_IMETHODIMP _MYCLASS_::GetVmConfigs(PRUint32 *vmConfigsSize, PRUnichar ***vmConfigs)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addGlobalOption (in PRUint32 option, in wstring value); */
NS_IMETHODIMP _MYCLASS_::AddGlobalOption(PRUint32 option, const PRUnichar *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addVmSlotOption (in wstring vmname, in long slot, in PRUint32 option, in wstring value); */
NS_IMETHODIMP _MYCLASS_::AddVmSlotOption(const PRUnichar *vmname, PRInt32 slot, PRUint32 option, const PRUnichar *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeVmSlotOptions (in wstring vmname, in long slot); */
NS_IMETHODIMP _MYCLASS_::RemoveVmSlotOptions(const PRUnichar *vmname, PRInt32 slot)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getVmSlotOptions (in wstring vmname, in long slot, out unsigned long optionSize, [array, size_is (optionSize), retval] out wstring option); */
NS_IMETHODIMP _MYCLASS_::GetVmSlotOptions(const PRUnichar *vmname, PRInt32 slot, PRUint32 *optionSize, PRUnichar ***option)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMacOptions (in wstring mac, out unsigned long optionSize, [array, size_is (optionSize), retval] out wstring option); */
NS_IMETHODIMP _MYCLASS_::GetMacOptions(const PRUnichar *mac, PRUint32 *optionSize, PRUnichar ***option)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setConfiguration (in wstring IPAddress, in wstring networkMask, in wstring FromIPAddress, in wstring ToIPAddress); */
NS_IMETHODIMP _MYCLASS_::SetConfiguration(const PRUnichar *IPAddress, const PRUnichar *networkMask, const PRUnichar *FromIPAddress, const PRUnichar *ToIPAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void start (in wstring networkName, in wstring trunkName, in wstring trunkType); */
NS_IMETHODIMP _MYCLASS_::Start(const PRUnichar *networkName, const PRUnichar *trunkName, const PRUnichar *trunkType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void stop (); */
NS_IMETHODIMP _MYCLASS_::Stop()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IDHCPServer_GETTER_EventSource_TO(smth) NS_IMETHOD GetEventSource (IEventSource * * aEventSource) { return smth GetEventSource (aEventSource); }
#define COM_FORWARD_IDHCPServer_GETTER_EventSource_TO_OBJ(obj) COM_FORWARD_IDHCPServer_GETTER_EventSource_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_GETTER_EventSource_TO_BASE(base) COM_FORWARD_IDHCPServer_GETTER_EventSource_TO (base::)
#define COM_FORWARD_IDHCPServer_GETTER_Enabled_TO(smth) NS_IMETHOD GetEnabled (PRBool * aEnabled) { return smth GetEnabled (aEnabled); }
#define COM_FORWARD_IDHCPServer_GETTER_Enabled_TO_OBJ(obj) COM_FORWARD_IDHCPServer_GETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_GETTER_Enabled_TO_BASE(base) COM_FORWARD_IDHCPServer_GETTER_Enabled_TO (base::)
#define COM_FORWARD_IDHCPServer_SETTER_Enabled_TO(smth) NS_IMETHOD SetEnabled (PRBool aEnabled) { return smth SetEnabled (aEnabled); }
#define COM_FORWARD_IDHCPServer_SETTER_Enabled_TO_OBJ(obj) COM_FORWARD_IDHCPServer_SETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_SETTER_Enabled_TO_BASE(base) COM_FORWARD_IDHCPServer_SETTER_Enabled_TO (base::)
#define COM_FORWARD_IDHCPServer_GETTER_IPAddress_TO(smth) NS_IMETHOD GetIPAddress (PRUnichar * * aIPAddress) { return smth GetIPAddress (aIPAddress); }
#define COM_FORWARD_IDHCPServer_GETTER_IPAddress_TO_OBJ(obj) COM_FORWARD_IDHCPServer_GETTER_IPAddress_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_GETTER_IPAddress_TO_BASE(base) COM_FORWARD_IDHCPServer_GETTER_IPAddress_TO (base::)
#define COM_FORWARD_IDHCPServer_GETTER_NetworkMask_TO(smth) NS_IMETHOD GetNetworkMask (PRUnichar * * aNetworkMask) { return smth GetNetworkMask (aNetworkMask); }
#define COM_FORWARD_IDHCPServer_GETTER_NetworkMask_TO_OBJ(obj) COM_FORWARD_IDHCPServer_GETTER_NetworkMask_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_GETTER_NetworkMask_TO_BASE(base) COM_FORWARD_IDHCPServer_GETTER_NetworkMask_TO (base::)
#define COM_FORWARD_IDHCPServer_GETTER_NetworkName_TO(smth) NS_IMETHOD GetNetworkName (PRUnichar * * aNetworkName) { return smth GetNetworkName (aNetworkName); }
#define COM_FORWARD_IDHCPServer_GETTER_NetworkName_TO_OBJ(obj) COM_FORWARD_IDHCPServer_GETTER_NetworkName_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_GETTER_NetworkName_TO_BASE(base) COM_FORWARD_IDHCPServer_GETTER_NetworkName_TO (base::)
#define COM_FORWARD_IDHCPServer_GETTER_LowerIP_TO(smth) NS_IMETHOD GetLowerIP (PRUnichar * * aLowerIP) { return smth GetLowerIP (aLowerIP); }
#define COM_FORWARD_IDHCPServer_GETTER_LowerIP_TO_OBJ(obj) COM_FORWARD_IDHCPServer_GETTER_LowerIP_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_GETTER_LowerIP_TO_BASE(base) COM_FORWARD_IDHCPServer_GETTER_LowerIP_TO (base::)
#define COM_FORWARD_IDHCPServer_GETTER_UpperIP_TO(smth) NS_IMETHOD GetUpperIP (PRUnichar * * aUpperIP) { return smth GetUpperIP (aUpperIP); }
#define COM_FORWARD_IDHCPServer_GETTER_UpperIP_TO_OBJ(obj) COM_FORWARD_IDHCPServer_GETTER_UpperIP_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_GETTER_UpperIP_TO_BASE(base) COM_FORWARD_IDHCPServer_GETTER_UpperIP_TO (base::)
#define COM_FORWARD_IDHCPServer_GETTER_GlobalOptions_TO(smth) NS_IMETHOD GetGlobalOptions (PRUint32 * aGlobalOptionsSize, PRUnichar * * * aGlobalOptions) { return smth GetGlobalOptions (aGlobalOptionsSize, aGlobalOptions); }
#define COM_FORWARD_IDHCPServer_GETTER_GlobalOptions_TO_OBJ(obj) COM_FORWARD_IDHCPServer_GETTER_GlobalOptions_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_GETTER_GlobalOptions_TO_BASE(base) COM_FORWARD_IDHCPServer_GETTER_GlobalOptions_TO (base::)
#define COM_FORWARD_IDHCPServer_GETTER_VmConfigs_TO(smth) NS_IMETHOD GetVmConfigs (PRUint32 * aVmConfigsSize, PRUnichar * * * aVmConfigs) { return smth GetVmConfigs (aVmConfigsSize, aVmConfigs); }
#define COM_FORWARD_IDHCPServer_GETTER_VmConfigs_TO_OBJ(obj) COM_FORWARD_IDHCPServer_GETTER_VmConfigs_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_GETTER_VmConfigs_TO_BASE(base) COM_FORWARD_IDHCPServer_GETTER_VmConfigs_TO (base::)
#define COM_FORWARD_IDHCPServer_AddGlobalOption_TO(smth) NS_IMETHOD AddGlobalOption (PRUint32 aOption, PRUnichar * aValue) { return smth AddGlobalOption (aOption, aValue); }
#define COM_FORWARD_IDHCPServer_AddGlobalOption_TO_OBJ(obj) COM_FORWARD_IDHCPServer_AddGlobalOption_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_AddGlobalOption_TO_BASE(base) COM_FORWARD_IDHCPServer_AddGlobalOption_TO (base::)
#define COM_FORWARD_IDHCPServer_AddVmSlotOption_TO(smth) NS_IMETHOD AddVmSlotOption (PRUnichar * aVmname, PRInt32 aSlot, PRUint32 aOption, PRUnichar * aValue) { return smth AddVmSlotOption (aVmname, aSlot, aOption, aValue); }
#define COM_FORWARD_IDHCPServer_AddVmSlotOption_TO_OBJ(obj) COM_FORWARD_IDHCPServer_AddVmSlotOption_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_AddVmSlotOption_TO_BASE(base) COM_FORWARD_IDHCPServer_AddVmSlotOption_TO (base::)
#define COM_FORWARD_IDHCPServer_RemoveVmSlotOptions_TO(smth) NS_IMETHOD RemoveVmSlotOptions (PRUnichar * aVmname, PRInt32 aSlot) { return smth RemoveVmSlotOptions (aVmname, aSlot); }
#define COM_FORWARD_IDHCPServer_RemoveVmSlotOptions_TO_OBJ(obj) COM_FORWARD_IDHCPServer_RemoveVmSlotOptions_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_RemoveVmSlotOptions_TO_BASE(base) COM_FORWARD_IDHCPServer_RemoveVmSlotOptions_TO (base::)
#define COM_FORWARD_IDHCPServer_GetVmSlotOptions_TO(smth) NS_IMETHOD GetVmSlotOptions (PRUnichar * aVmname, PRInt32 aSlot, PRUint32 * aOptionSize, PRUnichar * * * aOption) { return smth GetVmSlotOptions (aVmname, aSlot, aOptionSize, aOption); }
#define COM_FORWARD_IDHCPServer_GetVmSlotOptions_TO_OBJ(obj) COM_FORWARD_IDHCPServer_GetVmSlotOptions_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_GetVmSlotOptions_TO_BASE(base) COM_FORWARD_IDHCPServer_GetVmSlotOptions_TO (base::)
#define COM_FORWARD_IDHCPServer_GetMacOptions_TO(smth) NS_IMETHOD GetMacOptions (PRUnichar * aMac, PRUint32 * aOptionSize, PRUnichar * * * aOption) { return smth GetMacOptions (aMac, aOptionSize, aOption); }
#define COM_FORWARD_IDHCPServer_GetMacOptions_TO_OBJ(obj) COM_FORWARD_IDHCPServer_GetMacOptions_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_GetMacOptions_TO_BASE(base) COM_FORWARD_IDHCPServer_GetMacOptions_TO (base::)
#define COM_FORWARD_IDHCPServer_SetConfiguration_TO(smth) NS_IMETHOD SetConfiguration (PRUnichar * aIPAddress, PRUnichar * aNetworkMask, PRUnichar * aFromIPAddress, PRUnichar * aToIPAddress) { return smth SetConfiguration (aIPAddress, aNetworkMask, aFromIPAddress, aToIPAddress); }
#define COM_FORWARD_IDHCPServer_SetConfiguration_TO_OBJ(obj) COM_FORWARD_IDHCPServer_SetConfiguration_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_SetConfiguration_TO_BASE(base) COM_FORWARD_IDHCPServer_SetConfiguration_TO (base::)
#define COM_FORWARD_IDHCPServer_Start_TO(smth) NS_IMETHOD Start (PRUnichar * aNetworkName, PRUnichar * aTrunkName, PRUnichar * aTrunkType) { return smth Start (aNetworkName, aTrunkName, aTrunkType); }
#define COM_FORWARD_IDHCPServer_Start_TO_OBJ(obj) COM_FORWARD_IDHCPServer_Start_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_Start_TO_BASE(base) COM_FORWARD_IDHCPServer_Start_TO (base::)
#define COM_FORWARD_IDHCPServer_Stop_TO(smth) NS_IMETHOD Stop() { return smth Stop(); }
#define COM_FORWARD_IDHCPServer_Stop_TO_OBJ(obj) COM_FORWARD_IDHCPServer_Stop_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_Stop_TO_BASE(base) COM_FORWARD_IDHCPServer_Stop_TO (base::)
#define COM_FORWARD_IDHCPServer_TO(smth) NS_FORWARD_IDHCPSERVER (smth)
#define COM_FORWARD_IDHCPServer_TO_OBJ(obj) COM_FORWARD_IDHCPServer_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_TO_BASE(base) COM_FORWARD_IDHCPServer_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IDHCPServer;

/* starting interface:    IVirtualBox */
#define IVIRTUALBOX_IID_STR "fafa4e17-1ee2-4905-a10e-fe7c18bf5554"

#define IVIRTUALBOX_IID \
  {0xfafa4e17, 0x1ee2, 0x4905, \
    { 0xa1, 0x0e, 0xfe, 0x7c, 0x18, 0xbf, 0x55, 0x54 }}

class NS_NO_VTABLE IVirtualBox : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVIRTUALBOX_IID)

  /* readonly attribute wstring version; */
  NS_IMETHOD GetVersion(PRUnichar * *aVersion) = 0;

  /* readonly attribute wstring versionNormalized; */
  NS_IMETHOD GetVersionNormalized(PRUnichar * *aVersionNormalized) = 0;

  /* readonly attribute unsigned long revision; */
  NS_IMETHOD GetRevision(PRUint32 *aRevision) = 0;

  /* readonly attribute wstring packageType; */
  NS_IMETHOD GetPackageType(PRUnichar * *aPackageType) = 0;

  /* readonly attribute wstring APIVersion; */
  NS_IMETHOD GetAPIVersion(PRUnichar * *aAPIVersion) = 0;

  /* readonly attribute wstring homeFolder; */
  NS_IMETHOD GetHomeFolder(PRUnichar * *aHomeFolder) = 0;

  /* readonly attribute wstring settingsFilePath; */
  NS_IMETHOD GetSettingsFilePath(PRUnichar * *aSettingsFilePath) = 0;

  /* readonly attribute IHost host; */
  NS_IMETHOD GetHost(IHost * *aHost) = 0;

  /* readonly attribute ISystemProperties systemProperties; */
  NS_IMETHOD GetSystemProperties(ISystemProperties * *aSystemProperties) = 0;

  /* void getMachines (out unsigned long machinesSize, [array, size_is (machinesSize), retval] out IMachine machines); */
  NS_IMETHOD GetMachines(PRUint32 *machinesSize, IMachine ***machines) = 0;

  /* void getMachineGroups (out unsigned long machineGroupsSize, [array, size_is (machineGroupsSize), retval] out wstring machineGroups); */
  NS_IMETHOD GetMachineGroups(PRUint32 *machineGroupsSize, PRUnichar ***machineGroups) = 0;

  /* void getHardDisks (out unsigned long hardDisksSize, [array, size_is (hardDisksSize), retval] out IMedium hardDisks); */
  NS_IMETHOD GetHardDisks(PRUint32 *hardDisksSize, IMedium ***hardDisks) = 0;

  /* void getDVDImages (out unsigned long DVDImagesSize, [array, size_is (DVDImagesSize), retval] out IMedium DVDImages); */
  NS_IMETHOD GetDVDImages(PRUint32 *DVDImagesSize, IMedium ***DVDImages) = 0;

  /* void getFloppyImages (out unsigned long floppyImagesSize, [array, size_is (floppyImagesSize), retval] out IMedium floppyImages); */
  NS_IMETHOD GetFloppyImages(PRUint32 *floppyImagesSize, IMedium ***floppyImages) = 0;

  /* void getProgressOperations (out unsigned long progressOperationsSize, [array, size_is (progressOperationsSize), retval] out IProgress progressOperations); */
  NS_IMETHOD GetProgressOperations(PRUint32 *progressOperationsSize, IProgress ***progressOperations) = 0;

  /* void getGuestOSTypes (out unsigned long guestOSTypesSize, [array, size_is (guestOSTypesSize), retval] out IGuestOSType guestOSTypes); */
  NS_IMETHOD GetGuestOSTypes(PRUint32 *guestOSTypesSize, IGuestOSType ***guestOSTypes) = 0;

  /* void getSharedFolders (out unsigned long sharedFoldersSize, [array, size_is (sharedFoldersSize), retval] out ISharedFolder sharedFolders); */
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders) = 0;

  /* readonly attribute IPerformanceCollector performanceCollector; */
  NS_IMETHOD GetPerformanceCollector(IPerformanceCollector * *aPerformanceCollector) = 0;

  /* void getDHCPServers (out unsigned long DHCPServersSize, [array, size_is (DHCPServersSize), retval] out IDHCPServer DHCPServers); */
  NS_IMETHOD GetDHCPServers(PRUint32 *DHCPServersSize, IDHCPServer ***DHCPServers) = 0;

  /* void getNATNetworks (out unsigned long NATNetworksSize, [array, size_is (NATNetworksSize), retval] out INATNetwork NATNetworks); */
  NS_IMETHOD GetNATNetworks(PRUint32 *NATNetworksSize, INATNetwork ***NATNetworks) = 0;

  /* readonly attribute IEventSource eventSource; */
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) = 0;

  /* readonly attribute IExtPackManager extensionPackManager; */
  NS_IMETHOD GetExtensionPackManager(IExtPackManager * *aExtensionPackManager) = 0;

  /* void getInternalNetworks (out unsigned long internalNetworksSize, [array, size_is (internalNetworksSize), retval] out wstring internalNetworks); */
  NS_IMETHOD GetInternalNetworks(PRUint32 *internalNetworksSize, PRUnichar ***internalNetworks) = 0;

  /* void getGenericNetworkDrivers (out unsigned long genericNetworkDriversSize, [array, size_is (genericNetworkDriversSize), retval] out wstring genericNetworkDrivers); */
  NS_IMETHOD GetGenericNetworkDrivers(PRUint32 *genericNetworkDriversSize, PRUnichar ***genericNetworkDrivers) = 0;

  /* void composeMachineFilename (in wstring name, in wstring group, in wstring createFlags, in wstring baseFolder, [retval] out wstring file); */
  NS_IMETHOD ComposeMachineFilename(const PRUnichar *name, const PRUnichar *group, const PRUnichar *createFlags, const PRUnichar *baseFolder, PRUnichar **file) = 0;

  /* void createMachine (in wstring settingsFile, in wstring name, in unsigned long groupsSize, [array, size_is (groupsSize)] in wstring groups, in wstring osTypeId, in wstring flags, [retval] out IMachine machine); */
  NS_IMETHOD CreateMachine(const PRUnichar *settingsFile, const PRUnichar *name, PRUint32 groupsSize, const PRUnichar **groups, const PRUnichar *osTypeId, const PRUnichar *flags, IMachine **machine) = 0;

  /* void openMachine (in wstring settingsFile, [retval] out IMachine machine); */
  NS_IMETHOD OpenMachine(const PRUnichar *settingsFile, IMachine **machine) = 0;

  /* void registerMachine (in IMachine machine); */
  NS_IMETHOD RegisterMachine(IMachine *machine) = 0;

  /* void findMachine (in wstring nameOrId, [retval] out IMachine machine); */
  NS_IMETHOD FindMachine(const PRUnichar *nameOrId, IMachine **machine) = 0;

  /* void getMachinesByGroups (in unsigned long groupsSize, [array, size_is (groupsSize)] in wstring groups, out unsigned long machinesSize, [array, size_is (machinesSize), retval] out IMachine machines); */
  NS_IMETHOD GetMachinesByGroups(PRUint32 groupsSize, const PRUnichar **groups, PRUint32 *machinesSize, IMachine ***machines) = 0;

  /* void getMachineStates (in unsigned long machinesSize, [array, size_is (machinesSize)] in IMachine machines, out unsigned long statesSize, [array, size_is (statesSize), retval] out PRUint32 states); */
  NS_IMETHOD GetMachineStates(PRUint32 machinesSize, IMachine **machines, PRUint32 *statesSize, PRUint32 **states) = 0;

  /* void createAppliance ([retval] out IAppliance appliance); */
  NS_IMETHOD CreateAppliance(IAppliance **appliance) = 0;

  /* void createHardDisk (in wstring format, in wstring location, [retval] out IMedium medium); */
  NS_IMETHOD CreateHardDisk(const PRUnichar *format, const PRUnichar *location, IMedium **medium) = 0;

  /* void openMedium (in wstring location, in PRUint32 deviceType, in PRUint32 accessMode, in boolean forceNewUuid, [retval] out IMedium medium); */
  NS_IMETHOD OpenMedium(const PRUnichar *location, PRUint32 deviceType, PRUint32 accessMode, PRBool forceNewUuid, IMedium **medium) = 0;

  /* void getGuestOSType (in wstring id, [retval] out IGuestOSType type); */
  NS_IMETHOD GetGuestOSType(const PRUnichar *id, IGuestOSType **type) = 0;

  /* void createSharedFolder (in wstring name, in wstring hostPath, in boolean writable, in boolean automount); */
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable, PRBool automount) = 0;

  /* void removeSharedFolder (in wstring name); */
  NS_IMETHOD RemoveSharedFolder(const PRUnichar *name) = 0;

  /* void getExtraDataKeys (out unsigned long keysSize, [array, size_is (keysSize), retval] out wstring keys); */
  NS_IMETHOD GetExtraDataKeys(PRUint32 *keysSize, PRUnichar ***keys) = 0;

  /* void getExtraData (in wstring key, [retval] out wstring value); */
  NS_IMETHOD GetExtraData(const PRUnichar *key, PRUnichar **value) = 0;

  /* void setExtraData (in wstring key, in wstring value); */
  NS_IMETHOD SetExtraData(const PRUnichar *key, const PRUnichar *value) = 0;

  /* void setSettingsSecret (in wstring password); */
  NS_IMETHOD SetSettingsSecret(const PRUnichar *password) = 0;

  /* void createDHCPServer (in wstring name, [retval] out IDHCPServer server); */
  NS_IMETHOD CreateDHCPServer(const PRUnichar *name, IDHCPServer **server) = 0;

  /* void findDHCPServerByNetworkName (in wstring name, [retval] out IDHCPServer server); */
  NS_IMETHOD FindDHCPServerByNetworkName(const PRUnichar *name, IDHCPServer **server) = 0;

  /* void removeDHCPServer (in IDHCPServer server); */
  NS_IMETHOD RemoveDHCPServer(IDHCPServer *server) = 0;

  /* void createNATNetwork (in wstring networkName, [retval] out INATNetwork network); */
  NS_IMETHOD CreateNATNetwork(const PRUnichar *networkName, INATNetwork **network) = 0;

  /* void findNATNetworkByName (in wstring networkName, [retval] out INATNetwork network); */
  NS_IMETHOD FindNATNetworkByName(const PRUnichar *networkName, INATNetwork **network) = 0;

  /* void removeNATNetwork (in INATNetwork network); */
  NS_IMETHOD RemoveNATNetwork(INATNetwork *network) = 0;

  /* void checkFirmwarePresent (in PRUint32 firmwareType, in wstring version, out wstring url, out wstring file, [retval] out boolean result); */
  NS_IMETHOD CheckFirmwarePresent(PRUint32 firmwareType, const PRUnichar *version, PRUnichar **url, PRUnichar **file, PRBool *result) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVIRTUALBOX \
  NS_IMETHOD GetVersion(PRUnichar * *aVersion); \
  NS_IMETHOD GetVersionNormalized(PRUnichar * *aVersionNormalized); \
  NS_IMETHOD GetRevision(PRUint32 *aRevision); \
  NS_IMETHOD GetPackageType(PRUnichar * *aPackageType); \
  NS_IMETHOD GetAPIVersion(PRUnichar * *aAPIVersion); \
  NS_IMETHOD GetHomeFolder(PRUnichar * *aHomeFolder); \
  NS_IMETHOD GetSettingsFilePath(PRUnichar * *aSettingsFilePath); \
  NS_IMETHOD GetHost(IHost * *aHost); \
  NS_IMETHOD GetSystemProperties(ISystemProperties * *aSystemProperties); \
  NS_IMETHOD GetMachines(PRUint32 *machinesSize, IMachine ***machines); \
  NS_IMETHOD GetMachineGroups(PRUint32 *machineGroupsSize, PRUnichar ***machineGroups); \
  NS_IMETHOD GetHardDisks(PRUint32 *hardDisksSize, IMedium ***hardDisks); \
  NS_IMETHOD GetDVDImages(PRUint32 *DVDImagesSize, IMedium ***DVDImages); \
  NS_IMETHOD GetFloppyImages(PRUint32 *floppyImagesSize, IMedium ***floppyImages); \
  NS_IMETHOD GetProgressOperations(PRUint32 *progressOperationsSize, IProgress ***progressOperations); \
  NS_IMETHOD GetGuestOSTypes(PRUint32 *guestOSTypesSize, IGuestOSType ***guestOSTypes); \
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders); \
  NS_IMETHOD GetPerformanceCollector(IPerformanceCollector * *aPerformanceCollector); \
  NS_IMETHOD GetDHCPServers(PRUint32 *DHCPServersSize, IDHCPServer ***DHCPServers); \
  NS_IMETHOD GetNATNetworks(PRUint32 *NATNetworksSize, INATNetwork ***NATNetworks); \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource); \
  NS_IMETHOD GetExtensionPackManager(IExtPackManager * *aExtensionPackManager); \
  NS_IMETHOD GetInternalNetworks(PRUint32 *internalNetworksSize, PRUnichar ***internalNetworks); \
  NS_IMETHOD GetGenericNetworkDrivers(PRUint32 *genericNetworkDriversSize, PRUnichar ***genericNetworkDrivers); \
  NS_IMETHOD ComposeMachineFilename(const PRUnichar *name, const PRUnichar *group, const PRUnichar *createFlags, const PRUnichar *baseFolder, PRUnichar **file); \
  NS_IMETHOD CreateMachine(const PRUnichar *settingsFile, const PRUnichar *name, PRUint32 groupsSize, const PRUnichar **groups, const PRUnichar *osTypeId, const PRUnichar *flags, IMachine **machine); \
  NS_IMETHOD OpenMachine(const PRUnichar *settingsFile, IMachine **machine); \
  NS_IMETHOD RegisterMachine(IMachine *machine); \
  NS_IMETHOD FindMachine(const PRUnichar *nameOrId, IMachine **machine); \
  NS_IMETHOD GetMachinesByGroups(PRUint32 groupsSize, const PRUnichar **groups, PRUint32 *machinesSize, IMachine ***machines); \
  NS_IMETHOD GetMachineStates(PRUint32 machinesSize, IMachine **machines, PRUint32 *statesSize, PRUint32 **states); \
  NS_IMETHOD CreateAppliance(IAppliance **appliance); \
  NS_IMETHOD CreateHardDisk(const PRUnichar *format, const PRUnichar *location, IMedium **medium); \
  NS_IMETHOD OpenMedium(const PRUnichar *location, PRUint32 deviceType, PRUint32 accessMode, PRBool forceNewUuid, IMedium **medium); \
  NS_IMETHOD GetGuestOSType(const PRUnichar *id, IGuestOSType **type); \
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable, PRBool automount); \
  NS_IMETHOD RemoveSharedFolder(const PRUnichar *name); \
  NS_IMETHOD GetExtraDataKeys(PRUint32 *keysSize, PRUnichar ***keys); \
  NS_IMETHOD GetExtraData(const PRUnichar *key, PRUnichar **value); \
  NS_IMETHOD SetExtraData(const PRUnichar *key, const PRUnichar *value); \
  NS_IMETHOD SetSettingsSecret(const PRUnichar *password); \
  NS_IMETHOD CreateDHCPServer(const PRUnichar *name, IDHCPServer **server); \
  NS_IMETHOD FindDHCPServerByNetworkName(const PRUnichar *name, IDHCPServer **server); \
  NS_IMETHOD RemoveDHCPServer(IDHCPServer *server); \
  NS_IMETHOD CreateNATNetwork(const PRUnichar *networkName, INATNetwork **network); \
  NS_IMETHOD FindNATNetworkByName(const PRUnichar *networkName, INATNetwork **network); \
  NS_IMETHOD RemoveNATNetwork(INATNetwork *network); \
  NS_IMETHOD CheckFirmwarePresent(PRUint32 firmwareType, const PRUnichar *version, PRUnichar **url, PRUnichar **file, PRBool *result); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IVIRTUALBOX(_to) \
  NS_IMETHOD GetVersion(PRUnichar * *aVersion) { return _to GetVersion(aVersion); } \
  NS_IMETHOD GetVersionNormalized(PRUnichar * *aVersionNormalized) { return _to GetVersionNormalized(aVersionNormalized); } \
  NS_IMETHOD GetRevision(PRUint32 *aRevision) { return _to GetRevision(aRevision); } \
  NS_IMETHOD GetPackageType(PRUnichar * *aPackageType) { return _to GetPackageType(aPackageType); } \
  NS_IMETHOD GetAPIVersion(PRUnichar * *aAPIVersion) { return _to GetAPIVersion(aAPIVersion); } \
  NS_IMETHOD GetHomeFolder(PRUnichar * *aHomeFolder) { return _to GetHomeFolder(aHomeFolder); } \
  NS_IMETHOD GetSettingsFilePath(PRUnichar * *aSettingsFilePath) { return _to GetSettingsFilePath(aSettingsFilePath); } \
  NS_IMETHOD GetHost(IHost * *aHost) { return _to GetHost(aHost); } \
  NS_IMETHOD GetSystemProperties(ISystemProperties * *aSystemProperties) { return _to GetSystemProperties(aSystemProperties); } \
  NS_IMETHOD GetMachines(PRUint32 *machinesSize, IMachine ***machines) { return _to GetMachines(machinesSize, machines); } \
  NS_IMETHOD GetMachineGroups(PRUint32 *machineGroupsSize, PRUnichar ***machineGroups) { return _to GetMachineGroups(machineGroupsSize, machineGroups); } \
  NS_IMETHOD GetHardDisks(PRUint32 *hardDisksSize, IMedium ***hardDisks) { return _to GetHardDisks(hardDisksSize, hardDisks); } \
  NS_IMETHOD GetDVDImages(PRUint32 *DVDImagesSize, IMedium ***DVDImages) { return _to GetDVDImages(DVDImagesSize, DVDImages); } \
  NS_IMETHOD GetFloppyImages(PRUint32 *floppyImagesSize, IMedium ***floppyImages) { return _to GetFloppyImages(floppyImagesSize, floppyImages); } \
  NS_IMETHOD GetProgressOperations(PRUint32 *progressOperationsSize, IProgress ***progressOperations) { return _to GetProgressOperations(progressOperationsSize, progressOperations); } \
  NS_IMETHOD GetGuestOSTypes(PRUint32 *guestOSTypesSize, IGuestOSType ***guestOSTypes) { return _to GetGuestOSTypes(guestOSTypesSize, guestOSTypes); } \
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders) { return _to GetSharedFolders(sharedFoldersSize, sharedFolders); } \
  NS_IMETHOD GetPerformanceCollector(IPerformanceCollector * *aPerformanceCollector) { return _to GetPerformanceCollector(aPerformanceCollector); } \
  NS_IMETHOD GetDHCPServers(PRUint32 *DHCPServersSize, IDHCPServer ***DHCPServers) { return _to GetDHCPServers(DHCPServersSize, DHCPServers); } \
  NS_IMETHOD GetNATNetworks(PRUint32 *NATNetworksSize, INATNetwork ***NATNetworks) { return _to GetNATNetworks(NATNetworksSize, NATNetworks); } \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return _to GetEventSource(aEventSource); } \
  NS_IMETHOD GetExtensionPackManager(IExtPackManager * *aExtensionPackManager) { return _to GetExtensionPackManager(aExtensionPackManager); } \
  NS_IMETHOD GetInternalNetworks(PRUint32 *internalNetworksSize, PRUnichar ***internalNetworks) { return _to GetInternalNetworks(internalNetworksSize, internalNetworks); } \
  NS_IMETHOD GetGenericNetworkDrivers(PRUint32 *genericNetworkDriversSize, PRUnichar ***genericNetworkDrivers) { return _to GetGenericNetworkDrivers(genericNetworkDriversSize, genericNetworkDrivers); } \
  NS_IMETHOD ComposeMachineFilename(const PRUnichar *name, const PRUnichar *group, const PRUnichar *createFlags, const PRUnichar *baseFolder, PRUnichar **file) { return _to ComposeMachineFilename(name, group, createFlags, baseFolder, file); } \
  NS_IMETHOD CreateMachine(const PRUnichar *settingsFile, const PRUnichar *name, PRUint32 groupsSize, const PRUnichar **groups, const PRUnichar *osTypeId, const PRUnichar *flags, IMachine **machine) { return _to CreateMachine(settingsFile, name, groupsSize, groups, osTypeId, flags, machine); } \
  NS_IMETHOD OpenMachine(const PRUnichar *settingsFile, IMachine **machine) { return _to OpenMachine(settingsFile, machine); } \
  NS_IMETHOD RegisterMachine(IMachine *machine) { return _to RegisterMachine(machine); } \
  NS_IMETHOD FindMachine(const PRUnichar *nameOrId, IMachine **machine) { return _to FindMachine(nameOrId, machine); } \
  NS_IMETHOD GetMachinesByGroups(PRUint32 groupsSize, const PRUnichar **groups, PRUint32 *machinesSize, IMachine ***machines) { return _to GetMachinesByGroups(groupsSize, groups, machinesSize, machines); } \
  NS_IMETHOD GetMachineStates(PRUint32 machinesSize, IMachine **machines, PRUint32 *statesSize, PRUint32 **states) { return _to GetMachineStates(machinesSize, machines, statesSize, states); } \
  NS_IMETHOD CreateAppliance(IAppliance **appliance) { return _to CreateAppliance(appliance); } \
  NS_IMETHOD CreateHardDisk(const PRUnichar *format, const PRUnichar *location, IMedium **medium) { return _to CreateHardDisk(format, location, medium); } \
  NS_IMETHOD OpenMedium(const PRUnichar *location, PRUint32 deviceType, PRUint32 accessMode, PRBool forceNewUuid, IMedium **medium) { return _to OpenMedium(location, deviceType, accessMode, forceNewUuid, medium); } \
  NS_IMETHOD GetGuestOSType(const PRUnichar *id, IGuestOSType **type) { return _to GetGuestOSType(id, type); } \
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable, PRBool automount) { return _to CreateSharedFolder(name, hostPath, writable, automount); } \
  NS_IMETHOD RemoveSharedFolder(const PRUnichar *name) { return _to RemoveSharedFolder(name); } \
  NS_IMETHOD GetExtraDataKeys(PRUint32 *keysSize, PRUnichar ***keys) { return _to GetExtraDataKeys(keysSize, keys); } \
  NS_IMETHOD GetExtraData(const PRUnichar *key, PRUnichar **value) { return _to GetExtraData(key, value); } \
  NS_IMETHOD SetExtraData(const PRUnichar *key, const PRUnichar *value) { return _to SetExtraData(key, value); } \
  NS_IMETHOD SetSettingsSecret(const PRUnichar *password) { return _to SetSettingsSecret(password); } \
  NS_IMETHOD CreateDHCPServer(const PRUnichar *name, IDHCPServer **server) { return _to CreateDHCPServer(name, server); } \
  NS_IMETHOD FindDHCPServerByNetworkName(const PRUnichar *name, IDHCPServer **server) { return _to FindDHCPServerByNetworkName(name, server); } \
  NS_IMETHOD RemoveDHCPServer(IDHCPServer *server) { return _to RemoveDHCPServer(server); } \
  NS_IMETHOD CreateNATNetwork(const PRUnichar *networkName, INATNetwork **network) { return _to CreateNATNetwork(networkName, network); } \
  NS_IMETHOD FindNATNetworkByName(const PRUnichar *networkName, INATNetwork **network) { return _to FindNATNetworkByName(networkName, network); } \
  NS_IMETHOD RemoveNATNetwork(INATNetwork *network) { return _to RemoveNATNetwork(network); } \
  NS_IMETHOD CheckFirmwarePresent(PRUint32 firmwareType, const PRUnichar *version, PRUnichar **url, PRUnichar **file, PRBool *result) { return _to CheckFirmwarePresent(firmwareType, version, url, file, result); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IVIRTUALBOX(_to) \
  NS_IMETHOD GetVersion(PRUnichar * *aVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVersion(aVersion); } \
  NS_IMETHOD GetVersionNormalized(PRUnichar * *aVersionNormalized) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVersionNormalized(aVersionNormalized); } \
  NS_IMETHOD GetRevision(PRUint32 *aRevision) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRevision(aRevision); } \
  NS_IMETHOD GetPackageType(PRUnichar * *aPackageType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPackageType(aPackageType); } \
  NS_IMETHOD GetAPIVersion(PRUnichar * *aAPIVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAPIVersion(aAPIVersion); } \
  NS_IMETHOD GetHomeFolder(PRUnichar * *aHomeFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHomeFolder(aHomeFolder); } \
  NS_IMETHOD GetSettingsFilePath(PRUnichar * *aSettingsFilePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSettingsFilePath(aSettingsFilePath); } \
  NS_IMETHOD GetHost(IHost * *aHost) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHost(aHost); } \
  NS_IMETHOD GetSystemProperties(ISystemProperties * *aSystemProperties) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSystemProperties(aSystemProperties); } \
  NS_IMETHOD GetMachines(PRUint32 *machinesSize, IMachine ***machines) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMachines(machinesSize, machines); } \
  NS_IMETHOD GetMachineGroups(PRUint32 *machineGroupsSize, PRUnichar ***machineGroups) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMachineGroups(machineGroupsSize, machineGroups); } \
  NS_IMETHOD GetHardDisks(PRUint32 *hardDisksSize, IMedium ***hardDisks) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHardDisks(hardDisksSize, hardDisks); } \
  NS_IMETHOD GetDVDImages(PRUint32 *DVDImagesSize, IMedium ***DVDImages) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDVDImages(DVDImagesSize, DVDImages); } \
  NS_IMETHOD GetFloppyImages(PRUint32 *floppyImagesSize, IMedium ***floppyImages) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFloppyImages(floppyImagesSize, floppyImages); } \
  NS_IMETHOD GetProgressOperations(PRUint32 *progressOperationsSize, IProgress ***progressOperations) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProgressOperations(progressOperationsSize, progressOperations); } \
  NS_IMETHOD GetGuestOSTypes(PRUint32 *guestOSTypesSize, IGuestOSType ***guestOSTypes) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGuestOSTypes(guestOSTypesSize, guestOSTypes); } \
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSharedFolders(sharedFoldersSize, sharedFolders); } \
  NS_IMETHOD GetPerformanceCollector(IPerformanceCollector * *aPerformanceCollector) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPerformanceCollector(aPerformanceCollector); } \
  NS_IMETHOD GetDHCPServers(PRUint32 *DHCPServersSize, IDHCPServer ***DHCPServers) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDHCPServers(DHCPServersSize, DHCPServers); } \
  NS_IMETHOD GetNATNetworks(PRUint32 *NATNetworksSize, INATNetwork ***NATNetworks) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNATNetworks(NATNetworksSize, NATNetworks); } \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEventSource(aEventSource); } \
  NS_IMETHOD GetExtensionPackManager(IExtPackManager * *aExtensionPackManager) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExtensionPackManager(aExtensionPackManager); } \
  NS_IMETHOD GetInternalNetworks(PRUint32 *internalNetworksSize, PRUnichar ***internalNetworks) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInternalNetworks(internalNetworksSize, internalNetworks); } \
  NS_IMETHOD GetGenericNetworkDrivers(PRUint32 *genericNetworkDriversSize, PRUnichar ***genericNetworkDrivers) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGenericNetworkDrivers(genericNetworkDriversSize, genericNetworkDrivers); } \
  NS_IMETHOD ComposeMachineFilename(const PRUnichar *name, const PRUnichar *group, const PRUnichar *createFlags, const PRUnichar *baseFolder, PRUnichar **file) { return !_to ? NS_ERROR_NULL_POINTER : _to->ComposeMachineFilename(name, group, createFlags, baseFolder, file); } \
  NS_IMETHOD CreateMachine(const PRUnichar *settingsFile, const PRUnichar *name, PRUint32 groupsSize, const PRUnichar **groups, const PRUnichar *osTypeId, const PRUnichar *flags, IMachine **machine) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateMachine(settingsFile, name, groupsSize, groups, osTypeId, flags, machine); } \
  NS_IMETHOD OpenMachine(const PRUnichar *settingsFile, IMachine **machine) { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenMachine(settingsFile, machine); } \
  NS_IMETHOD RegisterMachine(IMachine *machine) { return !_to ? NS_ERROR_NULL_POINTER : _to->RegisterMachine(machine); } \
  NS_IMETHOD FindMachine(const PRUnichar *nameOrId, IMachine **machine) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindMachine(nameOrId, machine); } \
  NS_IMETHOD GetMachinesByGroups(PRUint32 groupsSize, const PRUnichar **groups, PRUint32 *machinesSize, IMachine ***machines) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMachinesByGroups(groupsSize, groups, machinesSize, machines); } \
  NS_IMETHOD GetMachineStates(PRUint32 machinesSize, IMachine **machines, PRUint32 *statesSize, PRUint32 **states) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMachineStates(machinesSize, machines, statesSize, states); } \
  NS_IMETHOD CreateAppliance(IAppliance **appliance) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateAppliance(appliance); } \
  NS_IMETHOD CreateHardDisk(const PRUnichar *format, const PRUnichar *location, IMedium **medium) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateHardDisk(format, location, medium); } \
  NS_IMETHOD OpenMedium(const PRUnichar *location, PRUint32 deviceType, PRUint32 accessMode, PRBool forceNewUuid, IMedium **medium) { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenMedium(location, deviceType, accessMode, forceNewUuid, medium); } \
  NS_IMETHOD GetGuestOSType(const PRUnichar *id, IGuestOSType **type) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGuestOSType(id, type); } \
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable, PRBool automount) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateSharedFolder(name, hostPath, writable, automount); } \
  NS_IMETHOD RemoveSharedFolder(const PRUnichar *name) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveSharedFolder(name); } \
  NS_IMETHOD GetExtraDataKeys(PRUint32 *keysSize, PRUnichar ***keys) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExtraDataKeys(keysSize, keys); } \
  NS_IMETHOD GetExtraData(const PRUnichar *key, PRUnichar **value) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExtraData(key, value); } \
  NS_IMETHOD SetExtraData(const PRUnichar *key, const PRUnichar *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetExtraData(key, value); } \
  NS_IMETHOD SetSettingsSecret(const PRUnichar *password) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSettingsSecret(password); } \
  NS_IMETHOD CreateDHCPServer(const PRUnichar *name, IDHCPServer **server) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateDHCPServer(name, server); } \
  NS_IMETHOD FindDHCPServerByNetworkName(const PRUnichar *name, IDHCPServer **server) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindDHCPServerByNetworkName(name, server); } \
  NS_IMETHOD RemoveDHCPServer(IDHCPServer *server) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveDHCPServer(server); } \
  NS_IMETHOD CreateNATNetwork(const PRUnichar *networkName, INATNetwork **network) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateNATNetwork(networkName, network); } \
  NS_IMETHOD FindNATNetworkByName(const PRUnichar *networkName, INATNetwork **network) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindNATNetworkByName(networkName, network); } \
  NS_IMETHOD RemoveNATNetwork(INATNetwork *network) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveNATNetwork(network); } \
  NS_IMETHOD CheckFirmwarePresent(PRUint32 firmwareType, const PRUnichar *version, PRUnichar **url, PRUnichar **file, PRBool *result) { return !_to ? NS_ERROR_NULL_POINTER : _to->CheckFirmwarePresent(firmwareType, version, url, file, result); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IVirtualBox
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IVIRTUALBOX

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IVirtualBox)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring version; */
NS_IMETHODIMP _MYCLASS_::GetVersion(PRUnichar * *aVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring versionNormalized; */
NS_IMETHODIMP _MYCLASS_::GetVersionNormalized(PRUnichar * *aVersionNormalized)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long revision; */
NS_IMETHODIMP _MYCLASS_::GetRevision(PRUint32 *aRevision)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring packageType; */
NS_IMETHODIMP _MYCLASS_::GetPackageType(PRUnichar * *aPackageType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring APIVersion; */
NS_IMETHODIMP _MYCLASS_::GetAPIVersion(PRUnichar * *aAPIVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring homeFolder; */
NS_IMETHODIMP _MYCLASS_::GetHomeFolder(PRUnichar * *aHomeFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring settingsFilePath; */
NS_IMETHODIMP _MYCLASS_::GetSettingsFilePath(PRUnichar * *aSettingsFilePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IHost host; */
NS_IMETHODIMP _MYCLASS_::GetHost(IHost * *aHost)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute ISystemProperties systemProperties; */
NS_IMETHODIMP _MYCLASS_::GetSystemProperties(ISystemProperties * *aSystemProperties)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMachines (out unsigned long machinesSize, [array, size_is (machinesSize), retval] out IMachine machines); */
NS_IMETHODIMP _MYCLASS_::GetMachines(PRUint32 *machinesSize, IMachine ***machines)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMachineGroups (out unsigned long machineGroupsSize, [array, size_is (machineGroupsSize), retval] out wstring machineGroups); */
NS_IMETHODIMP _MYCLASS_::GetMachineGroups(PRUint32 *machineGroupsSize, PRUnichar ***machineGroups)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getHardDisks (out unsigned long hardDisksSize, [array, size_is (hardDisksSize), retval] out IMedium hardDisks); */
NS_IMETHODIMP _MYCLASS_::GetHardDisks(PRUint32 *hardDisksSize, IMedium ***hardDisks)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getDVDImages (out unsigned long DVDImagesSize, [array, size_is (DVDImagesSize), retval] out IMedium DVDImages); */
NS_IMETHODIMP _MYCLASS_::GetDVDImages(PRUint32 *DVDImagesSize, IMedium ***DVDImages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getFloppyImages (out unsigned long floppyImagesSize, [array, size_is (floppyImagesSize), retval] out IMedium floppyImages); */
NS_IMETHODIMP _MYCLASS_::GetFloppyImages(PRUint32 *floppyImagesSize, IMedium ***floppyImages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getProgressOperations (out unsigned long progressOperationsSize, [array, size_is (progressOperationsSize), retval] out IProgress progressOperations); */
NS_IMETHODIMP _MYCLASS_::GetProgressOperations(PRUint32 *progressOperationsSize, IProgress ***progressOperations)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getGuestOSTypes (out unsigned long guestOSTypesSize, [array, size_is (guestOSTypesSize), retval] out IGuestOSType guestOSTypes); */
NS_IMETHODIMP _MYCLASS_::GetGuestOSTypes(PRUint32 *guestOSTypesSize, IGuestOSType ***guestOSTypes)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getSharedFolders (out unsigned long sharedFoldersSize, [array, size_is (sharedFoldersSize), retval] out ISharedFolder sharedFolders); */
NS_IMETHODIMP _MYCLASS_::GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IPerformanceCollector performanceCollector; */
NS_IMETHODIMP _MYCLASS_::GetPerformanceCollector(IPerformanceCollector * *aPerformanceCollector)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getDHCPServers (out unsigned long DHCPServersSize, [array, size_is (DHCPServersSize), retval] out IDHCPServer DHCPServers); */
NS_IMETHODIMP _MYCLASS_::GetDHCPServers(PRUint32 *DHCPServersSize, IDHCPServer ***DHCPServers)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNATNetworks (out unsigned long NATNetworksSize, [array, size_is (NATNetworksSize), retval] out INATNetwork NATNetworks); */
NS_IMETHODIMP _MYCLASS_::GetNATNetworks(PRUint32 *NATNetworksSize, INATNetwork ***NATNetworks)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IEventSource eventSource; */
NS_IMETHODIMP _MYCLASS_::GetEventSource(IEventSource * *aEventSource)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IExtPackManager extensionPackManager; */
NS_IMETHODIMP _MYCLASS_::GetExtensionPackManager(IExtPackManager * *aExtensionPackManager)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getInternalNetworks (out unsigned long internalNetworksSize, [array, size_is (internalNetworksSize), retval] out wstring internalNetworks); */
NS_IMETHODIMP _MYCLASS_::GetInternalNetworks(PRUint32 *internalNetworksSize, PRUnichar ***internalNetworks)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getGenericNetworkDrivers (out unsigned long genericNetworkDriversSize, [array, size_is (genericNetworkDriversSize), retval] out wstring genericNetworkDrivers); */
NS_IMETHODIMP _MYCLASS_::GetGenericNetworkDrivers(PRUint32 *genericNetworkDriversSize, PRUnichar ***genericNetworkDrivers)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void composeMachineFilename (in wstring name, in wstring group, in wstring createFlags, in wstring baseFolder, [retval] out wstring file); */
NS_IMETHODIMP _MYCLASS_::ComposeMachineFilename(const PRUnichar *name, const PRUnichar *group, const PRUnichar *createFlags, const PRUnichar *baseFolder, PRUnichar **file)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createMachine (in wstring settingsFile, in wstring name, in unsigned long groupsSize, [array, size_is (groupsSize)] in wstring groups, in wstring osTypeId, in wstring flags, [retval] out IMachine machine); */
NS_IMETHODIMP _MYCLASS_::CreateMachine(const PRUnichar *settingsFile, const PRUnichar *name, PRUint32 groupsSize, const PRUnichar **groups, const PRUnichar *osTypeId, const PRUnichar *flags, IMachine **machine)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void openMachine (in wstring settingsFile, [retval] out IMachine machine); */
NS_IMETHODIMP _MYCLASS_::OpenMachine(const PRUnichar *settingsFile, IMachine **machine)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void registerMachine (in IMachine machine); */
NS_IMETHODIMP _MYCLASS_::RegisterMachine(IMachine *machine)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findMachine (in wstring nameOrId, [retval] out IMachine machine); */
NS_IMETHODIMP _MYCLASS_::FindMachine(const PRUnichar *nameOrId, IMachine **machine)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMachinesByGroups (in unsigned long groupsSize, [array, size_is (groupsSize)] in wstring groups, out unsigned long machinesSize, [array, size_is (machinesSize), retval] out IMachine machines); */
NS_IMETHODIMP _MYCLASS_::GetMachinesByGroups(PRUint32 groupsSize, const PRUnichar **groups, PRUint32 *machinesSize, IMachine ***machines)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMachineStates (in unsigned long machinesSize, [array, size_is (machinesSize)] in IMachine machines, out unsigned long statesSize, [array, size_is (statesSize), retval] out PRUint32 states); */
NS_IMETHODIMP _MYCLASS_::GetMachineStates(PRUint32 machinesSize, IMachine **machines, PRUint32 *statesSize, PRUint32 **states)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createAppliance ([retval] out IAppliance appliance); */
NS_IMETHODIMP _MYCLASS_::CreateAppliance(IAppliance **appliance)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createHardDisk (in wstring format, in wstring location, [retval] out IMedium medium); */
NS_IMETHODIMP _MYCLASS_::CreateHardDisk(const PRUnichar *format, const PRUnichar *location, IMedium **medium)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void openMedium (in wstring location, in PRUint32 deviceType, in PRUint32 accessMode, in boolean forceNewUuid, [retval] out IMedium medium); */
NS_IMETHODIMP _MYCLASS_::OpenMedium(const PRUnichar *location, PRUint32 deviceType, PRUint32 accessMode, PRBool forceNewUuid, IMedium **medium)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getGuestOSType (in wstring id, [retval] out IGuestOSType type); */
NS_IMETHODIMP _MYCLASS_::GetGuestOSType(const PRUnichar *id, IGuestOSType **type)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createSharedFolder (in wstring name, in wstring hostPath, in boolean writable, in boolean automount); */
NS_IMETHODIMP _MYCLASS_::CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable, PRBool automount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeSharedFolder (in wstring name); */
NS_IMETHODIMP _MYCLASS_::RemoveSharedFolder(const PRUnichar *name)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getExtraDataKeys (out unsigned long keysSize, [array, size_is (keysSize), retval] out wstring keys); */
NS_IMETHODIMP _MYCLASS_::GetExtraDataKeys(PRUint32 *keysSize, PRUnichar ***keys)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getExtraData (in wstring key, [retval] out wstring value); */
NS_IMETHODIMP _MYCLASS_::GetExtraData(const PRUnichar *key, PRUnichar **value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setExtraData (in wstring key, in wstring value); */
NS_IMETHODIMP _MYCLASS_::SetExtraData(const PRUnichar *key, const PRUnichar *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setSettingsSecret (in wstring password); */
NS_IMETHODIMP _MYCLASS_::SetSettingsSecret(const PRUnichar *password)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createDHCPServer (in wstring name, [retval] out IDHCPServer server); */
NS_IMETHODIMP _MYCLASS_::CreateDHCPServer(const PRUnichar *name, IDHCPServer **server)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findDHCPServerByNetworkName (in wstring name, [retval] out IDHCPServer server); */
NS_IMETHODIMP _MYCLASS_::FindDHCPServerByNetworkName(const PRUnichar *name, IDHCPServer **server)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeDHCPServer (in IDHCPServer server); */
NS_IMETHODIMP _MYCLASS_::RemoveDHCPServer(IDHCPServer *server)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createNATNetwork (in wstring networkName, [retval] out INATNetwork network); */
NS_IMETHODIMP _MYCLASS_::CreateNATNetwork(const PRUnichar *networkName, INATNetwork **network)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findNATNetworkByName (in wstring networkName, [retval] out INATNetwork network); */
NS_IMETHODIMP _MYCLASS_::FindNATNetworkByName(const PRUnichar *networkName, INATNetwork **network)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeNATNetwork (in INATNetwork network); */
NS_IMETHODIMP _MYCLASS_::RemoveNATNetwork(INATNetwork *network)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void checkFirmwarePresent (in PRUint32 firmwareType, in wstring version, out wstring url, out wstring file, [retval] out boolean result); */
NS_IMETHODIMP _MYCLASS_::CheckFirmwarePresent(PRUint32 firmwareType, const PRUnichar *version, PRUnichar **url, PRUnichar **file, PRBool *result)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IVirtualBox_GETTER_Version_TO(smth) NS_IMETHOD GetVersion (PRUnichar * * aVersion) { return smth GetVersion (aVersion); }
#define COM_FORWARD_IVirtualBox_GETTER_Version_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_Version_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_Version_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_Version_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_VersionNormalized_TO(smth) NS_IMETHOD GetVersionNormalized (PRUnichar * * aVersionNormalized) { return smth GetVersionNormalized (aVersionNormalized); }
#define COM_FORWARD_IVirtualBox_GETTER_VersionNormalized_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_VersionNormalized_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_VersionNormalized_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_VersionNormalized_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_Revision_TO(smth) NS_IMETHOD GetRevision (PRUint32 * aRevision) { return smth GetRevision (aRevision); }
#define COM_FORWARD_IVirtualBox_GETTER_Revision_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_Revision_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_Revision_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_Revision_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_PackageType_TO(smth) NS_IMETHOD GetPackageType (PRUnichar * * aPackageType) { return smth GetPackageType (aPackageType); }
#define COM_FORWARD_IVirtualBox_GETTER_PackageType_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_PackageType_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_PackageType_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_PackageType_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_APIVersion_TO(smth) NS_IMETHOD GetAPIVersion (PRUnichar * * aAPIVersion) { return smth GetAPIVersion (aAPIVersion); }
#define COM_FORWARD_IVirtualBox_GETTER_APIVersion_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_APIVersion_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_APIVersion_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_APIVersion_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_HomeFolder_TO(smth) NS_IMETHOD GetHomeFolder (PRUnichar * * aHomeFolder) { return smth GetHomeFolder (aHomeFolder); }
#define COM_FORWARD_IVirtualBox_GETTER_HomeFolder_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_HomeFolder_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_HomeFolder_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_HomeFolder_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_SettingsFilePath_TO(smth) NS_IMETHOD GetSettingsFilePath (PRUnichar * * aSettingsFilePath) { return smth GetSettingsFilePath (aSettingsFilePath); }
#define COM_FORWARD_IVirtualBox_GETTER_SettingsFilePath_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_SettingsFilePath_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_SettingsFilePath_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_SettingsFilePath_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_Host_TO(smth) NS_IMETHOD GetHost (IHost * * aHost) { return smth GetHost (aHost); }
#define COM_FORWARD_IVirtualBox_GETTER_Host_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_Host_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_Host_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_Host_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_SystemProperties_TO(smth) NS_IMETHOD GetSystemProperties (ISystemProperties * * aSystemProperties) { return smth GetSystemProperties (aSystemProperties); }
#define COM_FORWARD_IVirtualBox_GETTER_SystemProperties_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_SystemProperties_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_SystemProperties_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_SystemProperties_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_Machines_TO(smth) NS_IMETHOD GetMachines (PRUint32 * aMachinesSize, IMachine * * * aMachines) { return smth GetMachines (aMachinesSize, aMachines); }
#define COM_FORWARD_IVirtualBox_GETTER_Machines_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_Machines_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_Machines_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_Machines_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_MachineGroups_TO(smth) NS_IMETHOD GetMachineGroups (PRUint32 * aMachineGroupsSize, PRUnichar * * * aMachineGroups) { return smth GetMachineGroups (aMachineGroupsSize, aMachineGroups); }
#define COM_FORWARD_IVirtualBox_GETTER_MachineGroups_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_MachineGroups_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_MachineGroups_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_MachineGroups_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_HardDisks_TO(smth) NS_IMETHOD GetHardDisks (PRUint32 * aHardDisksSize, IMedium * * * aHardDisks) { return smth GetHardDisks (aHardDisksSize, aHardDisks); }
#define COM_FORWARD_IVirtualBox_GETTER_HardDisks_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_HardDisks_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_HardDisks_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_HardDisks_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_DVDImages_TO(smth) NS_IMETHOD GetDVDImages (PRUint32 * aDVDImagesSize, IMedium * * * aDVDImages) { return smth GetDVDImages (aDVDImagesSize, aDVDImages); }
#define COM_FORWARD_IVirtualBox_GETTER_DVDImages_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_DVDImages_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_DVDImages_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_DVDImages_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_FloppyImages_TO(smth) NS_IMETHOD GetFloppyImages (PRUint32 * aFloppyImagesSize, IMedium * * * aFloppyImages) { return smth GetFloppyImages (aFloppyImagesSize, aFloppyImages); }
#define COM_FORWARD_IVirtualBox_GETTER_FloppyImages_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_FloppyImages_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_FloppyImages_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_FloppyImages_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_ProgressOperations_TO(smth) NS_IMETHOD GetProgressOperations (PRUint32 * aProgressOperationsSize, IProgress * * * aProgressOperations) { return smth GetProgressOperations (aProgressOperationsSize, aProgressOperations); }
#define COM_FORWARD_IVirtualBox_GETTER_ProgressOperations_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_ProgressOperations_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_ProgressOperations_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_ProgressOperations_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_GuestOSTypes_TO(smth) NS_IMETHOD GetGuestOSTypes (PRUint32 * aGuestOSTypesSize, IGuestOSType * * * aGuestOSTypes) { return smth GetGuestOSTypes (aGuestOSTypesSize, aGuestOSTypes); }
#define COM_FORWARD_IVirtualBox_GETTER_GuestOSTypes_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_GuestOSTypes_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_GuestOSTypes_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_GuestOSTypes_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_SharedFolders_TO(smth) NS_IMETHOD GetSharedFolders (PRUint32 * aSharedFoldersSize, ISharedFolder * * * aSharedFolders) { return smth GetSharedFolders (aSharedFoldersSize, aSharedFolders); }
#define COM_FORWARD_IVirtualBox_GETTER_SharedFolders_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_SharedFolders_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_SharedFolders_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_SharedFolders_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_PerformanceCollector_TO(smth) NS_IMETHOD GetPerformanceCollector (IPerformanceCollector * * aPerformanceCollector) { return smth GetPerformanceCollector (aPerformanceCollector); }
#define COM_FORWARD_IVirtualBox_GETTER_PerformanceCollector_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_PerformanceCollector_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_PerformanceCollector_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_PerformanceCollector_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_DHCPServers_TO(smth) NS_IMETHOD GetDHCPServers (PRUint32 * aDHCPServersSize, IDHCPServer * * * aDHCPServers) { return smth GetDHCPServers (aDHCPServersSize, aDHCPServers); }
#define COM_FORWARD_IVirtualBox_GETTER_DHCPServers_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_DHCPServers_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_DHCPServers_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_DHCPServers_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_NATNetworks_TO(smth) NS_IMETHOD GetNATNetworks (PRUint32 * aNATNetworksSize, INATNetwork * * * aNATNetworks) { return smth GetNATNetworks (aNATNetworksSize, aNATNetworks); }
#define COM_FORWARD_IVirtualBox_GETTER_NATNetworks_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_NATNetworks_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_NATNetworks_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_NATNetworks_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_EventSource_TO(smth) NS_IMETHOD GetEventSource (IEventSource * * aEventSource) { return smth GetEventSource (aEventSource); }
#define COM_FORWARD_IVirtualBox_GETTER_EventSource_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_EventSource_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_EventSource_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_EventSource_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_ExtensionPackManager_TO(smth) NS_IMETHOD GetExtensionPackManager (IExtPackManager * * aExtensionPackManager) { return smth GetExtensionPackManager (aExtensionPackManager); }
#define COM_FORWARD_IVirtualBox_GETTER_ExtensionPackManager_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_ExtensionPackManager_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_ExtensionPackManager_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_ExtensionPackManager_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_InternalNetworks_TO(smth) NS_IMETHOD GetInternalNetworks (PRUint32 * aInternalNetworksSize, PRUnichar * * * aInternalNetworks) { return smth GetInternalNetworks (aInternalNetworksSize, aInternalNetworks); }
#define COM_FORWARD_IVirtualBox_GETTER_InternalNetworks_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_InternalNetworks_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_InternalNetworks_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_InternalNetworks_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_GenericNetworkDrivers_TO(smth) NS_IMETHOD GetGenericNetworkDrivers (PRUint32 * aGenericNetworkDriversSize, PRUnichar * * * aGenericNetworkDrivers) { return smth GetGenericNetworkDrivers (aGenericNetworkDriversSize, aGenericNetworkDrivers); }
#define COM_FORWARD_IVirtualBox_GETTER_GenericNetworkDrivers_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_GenericNetworkDrivers_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_GenericNetworkDrivers_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_GenericNetworkDrivers_TO (base::)
#define COM_FORWARD_IVirtualBox_ComposeMachineFilename_TO(smth) NS_IMETHOD ComposeMachineFilename (PRUnichar * aName, PRUnichar * aGroup, PRUnichar * aCreateFlags, PRUnichar * aBaseFolder, PRUnichar * * aFile) { return smth ComposeMachineFilename (aName, aGroup, aCreateFlags, aBaseFolder, aFile); }
#define COM_FORWARD_IVirtualBox_ComposeMachineFilename_TO_OBJ(obj) COM_FORWARD_IVirtualBox_ComposeMachineFilename_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_ComposeMachineFilename_TO_BASE(base) COM_FORWARD_IVirtualBox_ComposeMachineFilename_TO (base::)
#define COM_FORWARD_IVirtualBox_CreateMachine_TO(smth) NS_IMETHOD CreateMachine (PRUnichar * aSettingsFile, PRUnichar * aName, PRUint32 aGroupsSize, PRUnichar * * aGroups, PRUnichar * aOsTypeId, PRUnichar * aFlags, IMachine * * aMachine) { return smth CreateMachine (aSettingsFile, aName, aGroupsSize+++, aGroups, aOsTypeId, aFlags, aMachine); }
#define COM_FORWARD_IVirtualBox_CreateMachine_TO_OBJ(obj) COM_FORWARD_IVirtualBox_CreateMachine_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_CreateMachine_TO_BASE(base) COM_FORWARD_IVirtualBox_CreateMachine_TO (base::)
#define COM_FORWARD_IVirtualBox_OpenMachine_TO(smth) NS_IMETHOD OpenMachine (PRUnichar * aSettingsFile, IMachine * * aMachine) { return smth OpenMachine (aSettingsFile, aMachine); }
#define COM_FORWARD_IVirtualBox_OpenMachine_TO_OBJ(obj) COM_FORWARD_IVirtualBox_OpenMachine_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_OpenMachine_TO_BASE(base) COM_FORWARD_IVirtualBox_OpenMachine_TO (base::)
#define COM_FORWARD_IVirtualBox_RegisterMachine_TO(smth) NS_IMETHOD RegisterMachine (IMachine * aMachine) { return smth RegisterMachine (aMachine); }
#define COM_FORWARD_IVirtualBox_RegisterMachine_TO_OBJ(obj) COM_FORWARD_IVirtualBox_RegisterMachine_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_RegisterMachine_TO_BASE(base) COM_FORWARD_IVirtualBox_RegisterMachine_TO (base::)
#define COM_FORWARD_IVirtualBox_FindMachine_TO(smth) NS_IMETHOD FindMachine (PRUnichar * aNameOrId, IMachine * * aMachine) { return smth FindMachine (aNameOrId, aMachine); }
#define COM_FORWARD_IVirtualBox_FindMachine_TO_OBJ(obj) COM_FORWARD_IVirtualBox_FindMachine_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_FindMachine_TO_BASE(base) COM_FORWARD_IVirtualBox_FindMachine_TO (base::)
#define COM_FORWARD_IVirtualBox_GetMachinesByGroups_TO(smth) NS_IMETHOD GetMachinesByGroups (PRUint32 aGroupsSize, PRUnichar * * aGroups, PRUint32 * aMachinesSize, IMachine * * * aMachines) { return smth GetMachinesByGroups (aGroupsSize+++, aGroups, aMachinesSize, aMachines); }
#define COM_FORWARD_IVirtualBox_GetMachinesByGroups_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GetMachinesByGroups_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GetMachinesByGroups_TO_BASE(base) COM_FORWARD_IVirtualBox_GetMachinesByGroups_TO (base::)
#define COM_FORWARD_IVirtualBox_GetMachineStates_TO(smth) NS_IMETHOD GetMachineStates (PRUint32 aMachinesSize, IMachine * * aMachines, PRUint32 * aStatesSize, PRUint32 * * aStates) { return smth GetMachineStates (aMachinesSize+++, aMachines, aStatesSize, aStates); }
#define COM_FORWARD_IVirtualBox_GetMachineStates_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GetMachineStates_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GetMachineStates_TO_BASE(base) COM_FORWARD_IVirtualBox_GetMachineStates_TO (base::)
#define COM_FORWARD_IVirtualBox_CreateAppliance_TO(smth) NS_IMETHOD CreateAppliance (IAppliance * * aAppliance) { return smth CreateAppliance (aAppliance); }
#define COM_FORWARD_IVirtualBox_CreateAppliance_TO_OBJ(obj) COM_FORWARD_IVirtualBox_CreateAppliance_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_CreateAppliance_TO_BASE(base) COM_FORWARD_IVirtualBox_CreateAppliance_TO (base::)
#define COM_FORWARD_IVirtualBox_CreateHardDisk_TO(smth) NS_IMETHOD CreateHardDisk (PRUnichar * aFormat, PRUnichar * aLocation, IMedium * * aMedium) { return smth CreateHardDisk (aFormat, aLocation, aMedium); }
#define COM_FORWARD_IVirtualBox_CreateHardDisk_TO_OBJ(obj) COM_FORWARD_IVirtualBox_CreateHardDisk_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_CreateHardDisk_TO_BASE(base) COM_FORWARD_IVirtualBox_CreateHardDisk_TO (base::)
#define COM_FORWARD_IVirtualBox_OpenMedium_TO(smth) NS_IMETHOD OpenMedium (PRUnichar * aLocation, PRUint32 aDeviceType, PRUint32 aAccessMode, PRBool aForceNewUuid, IMedium * * aMedium) { return smth OpenMedium (aLocation, aDeviceType, aAccessMode, aForceNewUuid, aMedium); }
#define COM_FORWARD_IVirtualBox_OpenMedium_TO_OBJ(obj) COM_FORWARD_IVirtualBox_OpenMedium_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_OpenMedium_TO_BASE(base) COM_FORWARD_IVirtualBox_OpenMedium_TO (base::)
#define COM_FORWARD_IVirtualBox_GetGuestOSType_TO(smth) NS_IMETHOD GetGuestOSType (PRUnichar * aId, IGuestOSType * * aType) { return smth GetGuestOSType (aId, aType); }
#define COM_FORWARD_IVirtualBox_GetGuestOSType_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GetGuestOSType_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GetGuestOSType_TO_BASE(base) COM_FORWARD_IVirtualBox_GetGuestOSType_TO (base::)
#define COM_FORWARD_IVirtualBox_CreateSharedFolder_TO(smth) NS_IMETHOD CreateSharedFolder (PRUnichar * aName, PRUnichar * aHostPath, PRBool aWritable, PRBool aAutomount) { return smth CreateSharedFolder (aName, aHostPath, aWritable, aAutomount); }
#define COM_FORWARD_IVirtualBox_CreateSharedFolder_TO_OBJ(obj) COM_FORWARD_IVirtualBox_CreateSharedFolder_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_CreateSharedFolder_TO_BASE(base) COM_FORWARD_IVirtualBox_CreateSharedFolder_TO (base::)
#define COM_FORWARD_IVirtualBox_RemoveSharedFolder_TO(smth) NS_IMETHOD RemoveSharedFolder (PRUnichar * aName) { return smth RemoveSharedFolder (aName); }
#define COM_FORWARD_IVirtualBox_RemoveSharedFolder_TO_OBJ(obj) COM_FORWARD_IVirtualBox_RemoveSharedFolder_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_RemoveSharedFolder_TO_BASE(base) COM_FORWARD_IVirtualBox_RemoveSharedFolder_TO (base::)
#define COM_FORWARD_IVirtualBox_GetExtraDataKeys_TO(smth) NS_IMETHOD GetExtraDataKeys (PRUint32 * aKeysSize, PRUnichar * * * aKeys) { return smth GetExtraDataKeys (aKeysSize, aKeys); }
#define COM_FORWARD_IVirtualBox_GetExtraDataKeys_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GetExtraDataKeys_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GetExtraDataKeys_TO_BASE(base) COM_FORWARD_IVirtualBox_GetExtraDataKeys_TO (base::)
#define COM_FORWARD_IVirtualBox_GetExtraData_TO(smth) NS_IMETHOD GetExtraData (PRUnichar * aKey, PRUnichar * * aValue) { return smth GetExtraData (aKey, aValue); }
#define COM_FORWARD_IVirtualBox_GetExtraData_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GetExtraData_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GetExtraData_TO_BASE(base) COM_FORWARD_IVirtualBox_GetExtraData_TO (base::)
#define COM_FORWARD_IVirtualBox_SetExtraData_TO(smth) NS_IMETHOD SetExtraData (PRUnichar * aKey, PRUnichar * aValue) { return smth SetExtraData (aKey, aValue); }
#define COM_FORWARD_IVirtualBox_SetExtraData_TO_OBJ(obj) COM_FORWARD_IVirtualBox_SetExtraData_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_SetExtraData_TO_BASE(base) COM_FORWARD_IVirtualBox_SetExtraData_TO (base::)
#define COM_FORWARD_IVirtualBox_SetSettingsSecret_TO(smth) NS_IMETHOD SetSettingsSecret (PRUnichar * aPassword) { return smth SetSettingsSecret (aPassword); }
#define COM_FORWARD_IVirtualBox_SetSettingsSecret_TO_OBJ(obj) COM_FORWARD_IVirtualBox_SetSettingsSecret_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_SetSettingsSecret_TO_BASE(base) COM_FORWARD_IVirtualBox_SetSettingsSecret_TO (base::)
#define COM_FORWARD_IVirtualBox_CreateDHCPServer_TO(smth) NS_IMETHOD CreateDHCPServer (PRUnichar * aName, IDHCPServer * * aServer) { return smth CreateDHCPServer (aName, aServer); }
#define COM_FORWARD_IVirtualBox_CreateDHCPServer_TO_OBJ(obj) COM_FORWARD_IVirtualBox_CreateDHCPServer_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_CreateDHCPServer_TO_BASE(base) COM_FORWARD_IVirtualBox_CreateDHCPServer_TO (base::)
#define COM_FORWARD_IVirtualBox_FindDHCPServerByNetworkName_TO(smth) NS_IMETHOD FindDHCPServerByNetworkName (PRUnichar * aName, IDHCPServer * * aServer) { return smth FindDHCPServerByNetworkName (aName, aServer); }
#define COM_FORWARD_IVirtualBox_FindDHCPServerByNetworkName_TO_OBJ(obj) COM_FORWARD_IVirtualBox_FindDHCPServerByNetworkName_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_FindDHCPServerByNetworkName_TO_BASE(base) COM_FORWARD_IVirtualBox_FindDHCPServerByNetworkName_TO (base::)
#define COM_FORWARD_IVirtualBox_RemoveDHCPServer_TO(smth) NS_IMETHOD RemoveDHCPServer (IDHCPServer * aServer) { return smth RemoveDHCPServer (aServer); }
#define COM_FORWARD_IVirtualBox_RemoveDHCPServer_TO_OBJ(obj) COM_FORWARD_IVirtualBox_RemoveDHCPServer_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_RemoveDHCPServer_TO_BASE(base) COM_FORWARD_IVirtualBox_RemoveDHCPServer_TO (base::)
#define COM_FORWARD_IVirtualBox_CreateNATNetwork_TO(smth) NS_IMETHOD CreateNATNetwork (PRUnichar * aNetworkName, INATNetwork * * aNetwork) { return smth CreateNATNetwork (aNetworkName, aNetwork); }
#define COM_FORWARD_IVirtualBox_CreateNATNetwork_TO_OBJ(obj) COM_FORWARD_IVirtualBox_CreateNATNetwork_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_CreateNATNetwork_TO_BASE(base) COM_FORWARD_IVirtualBox_CreateNATNetwork_TO (base::)
#define COM_FORWARD_IVirtualBox_FindNATNetworkByName_TO(smth) NS_IMETHOD FindNATNetworkByName (PRUnichar * aNetworkName, INATNetwork * * aNetwork) { return smth FindNATNetworkByName (aNetworkName, aNetwork); }
#define COM_FORWARD_IVirtualBox_FindNATNetworkByName_TO_OBJ(obj) COM_FORWARD_IVirtualBox_FindNATNetworkByName_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_FindNATNetworkByName_TO_BASE(base) COM_FORWARD_IVirtualBox_FindNATNetworkByName_TO (base::)
#define COM_FORWARD_IVirtualBox_RemoveNATNetwork_TO(smth) NS_IMETHOD RemoveNATNetwork (INATNetwork * aNetwork) { return smth RemoveNATNetwork (aNetwork); }
#define COM_FORWARD_IVirtualBox_RemoveNATNetwork_TO_OBJ(obj) COM_FORWARD_IVirtualBox_RemoveNATNetwork_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_RemoveNATNetwork_TO_BASE(base) COM_FORWARD_IVirtualBox_RemoveNATNetwork_TO (base::)
#define COM_FORWARD_IVirtualBox_CheckFirmwarePresent_TO(smth) NS_IMETHOD CheckFirmwarePresent (PRUint32 aFirmwareType, PRUnichar * aVersion, PRUnichar * * aUrl, PRUnichar * * aFile, PRBool * aResult) { return smth CheckFirmwarePresent (aFirmwareType, aVersion, aUrl, aFile, aResult); }
#define COM_FORWARD_IVirtualBox_CheckFirmwarePresent_TO_OBJ(obj) COM_FORWARD_IVirtualBox_CheckFirmwarePresent_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_CheckFirmwarePresent_TO_BASE(base) COM_FORWARD_IVirtualBox_CheckFirmwarePresent_TO (base::)
#define COM_FORWARD_IVirtualBox_TO(smth) NS_FORWARD_IVIRTUALBOX (smth)
#define COM_FORWARD_IVirtualBox_TO_OBJ(obj) COM_FORWARD_IVirtualBox_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_TO_BASE(base) COM_FORWARD_IVirtualBox_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IVirtualBox;

/* starting interface:    IVFSExplorer */
#define IVFSEXPLORER_IID_STR "fb220201-2fd3-47e2-a5dc-2c2431d833cc"

#define IVFSEXPLORER_IID \
  {0xfb220201, 0x2fd3, 0x47e2, \
    { 0xa5, 0xdc, 0x2c, 0x24, 0x31, 0xd8, 0x33, 0xcc }}

class NS_NO_VTABLE IVFSExplorer : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVFSEXPLORER_IID)

  /* readonly attribute wstring path; */
  NS_IMETHOD GetPath(PRUnichar * *aPath) = 0;

  /* readonly attribute PRUint32 type; */
  NS_IMETHOD GetType(PRUint32 *aType) = 0;

  /* void update ([retval] out IProgress progress); */
  NS_IMETHOD Update(IProgress **progress) = 0;

  /* void cd (in wstring dir, [retval] out IProgress progress); */
  NS_IMETHOD Cd(const PRUnichar *dir, IProgress **progress) = 0;

  /* void cdUp ([retval] out IProgress progress); */
  NS_IMETHOD CdUp(IProgress **progress) = 0;

  /* void entryList (out unsigned long namesSize, [array, size_is (namesSize)] out wstring names, out unsigned long typesSize, [array, size_is (typesSize)] out unsigned long types, out unsigned long sizesSize, [array, size_is (sizesSize)] out long long sizes, out unsigned long modesSize, [array, size_is (modesSize)] out unsigned long modes); */
  NS_IMETHOD EntryList(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *typesSize, PRUint32 **types, PRUint32 *sizesSize, PRInt64 **sizes, PRUint32 *modesSize, PRUint32 **modes) = 0;

  /* void exists (in unsigned long namesSize, [array, size_is (namesSize)] in wstring names, out unsigned long existsSize, [array, size_is (existsSize), retval] out wstring exists); */
  NS_IMETHOD Exists(PRUint32 namesSize, const PRUnichar **names, PRUint32 *existsSize, PRUnichar ***exists) = 0;

  /* void remove (in unsigned long namesSize, [array, size_is (namesSize)] in wstring names, [retval] out IProgress progress); */
  NS_IMETHOD Remove(PRUint32 namesSize, const PRUnichar **names, IProgress **progress) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVFSEXPLORER \
  NS_IMETHOD GetPath(PRUnichar * *aPath); \
  NS_IMETHOD GetType(PRUint32 *aType); \
  NS_IMETHOD Update(IProgress **progress); \
  NS_IMETHOD Cd(const PRUnichar *dir, IProgress **progress); \
  NS_IMETHOD CdUp(IProgress **progress); \
  NS_IMETHOD EntryList(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *typesSize, PRUint32 **types, PRUint32 *sizesSize, PRInt64 **sizes, PRUint32 *modesSize, PRUint32 **modes); \
  NS_IMETHOD Exists(PRUint32 namesSize, const PRUnichar **names, PRUint32 *existsSize, PRUnichar ***exists); \
  NS_IMETHOD Remove(PRUint32 namesSize, const PRUnichar **names, IProgress **progress); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IVFSEXPLORER(_to) \
  NS_IMETHOD GetPath(PRUnichar * *aPath) { return _to GetPath(aPath); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return _to GetType(aType); } \
  NS_IMETHOD Update(IProgress **progress) { return _to Update(progress); } \
  NS_IMETHOD Cd(const PRUnichar *dir, IProgress **progress) { return _to Cd(dir, progress); } \
  NS_IMETHOD CdUp(IProgress **progress) { return _to CdUp(progress); } \
  NS_IMETHOD EntryList(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *typesSize, PRUint32 **types, PRUint32 *sizesSize, PRInt64 **sizes, PRUint32 *modesSize, PRUint32 **modes) { return _to EntryList(namesSize, names, typesSize, types, sizesSize, sizes, modesSize, modes); } \
  NS_IMETHOD Exists(PRUint32 namesSize, const PRUnichar **names, PRUint32 *existsSize, PRUnichar ***exists) { return _to Exists(namesSize, names, existsSize, exists); } \
  NS_IMETHOD Remove(PRUint32 namesSize, const PRUnichar **names, IProgress **progress) { return _to Remove(namesSize, names, progress); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IVFSEXPLORER(_to) \
  NS_IMETHOD GetPath(PRUnichar * *aPath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPath(aPath); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetType(aType); } \
  NS_IMETHOD Update(IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Update(progress); } \
  NS_IMETHOD Cd(const PRUnichar *dir, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Cd(dir, progress); } \
  NS_IMETHOD CdUp(IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CdUp(progress); } \
  NS_IMETHOD EntryList(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *typesSize, PRUint32 **types, PRUint32 *sizesSize, PRInt64 **sizes, PRUint32 *modesSize, PRUint32 **modes) { return !_to ? NS_ERROR_NULL_POINTER : _to->EntryList(namesSize, names, typesSize, types, sizesSize, sizes, modesSize, modes); } \
  NS_IMETHOD Exists(PRUint32 namesSize, const PRUnichar **names, PRUint32 *existsSize, PRUnichar ***exists) { return !_to ? NS_ERROR_NULL_POINTER : _to->Exists(namesSize, names, existsSize, exists); } \
  NS_IMETHOD Remove(PRUint32 namesSize, const PRUnichar **names, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Remove(namesSize, names, progress); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IVFSExplorer
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IVFSEXPLORER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IVFSExplorer)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring path; */
NS_IMETHODIMP _MYCLASS_::GetPath(PRUnichar * *aPath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 type; */
NS_IMETHODIMP _MYCLASS_::GetType(PRUint32 *aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void update ([retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::Update(IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void cd (in wstring dir, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::Cd(const PRUnichar *dir, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void cdUp ([retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CdUp(IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void entryList (out unsigned long namesSize, [array, size_is (namesSize)] out wstring names, out unsigned long typesSize, [array, size_is (typesSize)] out unsigned long types, out unsigned long sizesSize, [array, size_is (sizesSize)] out long long sizes, out unsigned long modesSize, [array, size_is (modesSize)] out unsigned long modes); */
NS_IMETHODIMP _MYCLASS_::EntryList(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *typesSize, PRUint32 **types, PRUint32 *sizesSize, PRInt64 **sizes, PRUint32 *modesSize, PRUint32 **modes)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void exists (in unsigned long namesSize, [array, size_is (namesSize)] in wstring names, out unsigned long existsSize, [array, size_is (existsSize), retval] out wstring exists); */
NS_IMETHODIMP _MYCLASS_::Exists(PRUint32 namesSize, const PRUnichar **names, PRUint32 *existsSize, PRUnichar ***exists)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void remove (in unsigned long namesSize, [array, size_is (namesSize)] in wstring names, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::Remove(PRUint32 namesSize, const PRUnichar **names, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IVFSExplorer_GETTER_Path_TO(smth) NS_IMETHOD GetPath (PRUnichar * * aPath) { return smth GetPath (aPath); }
#define COM_FORWARD_IVFSExplorer_GETTER_Path_TO_OBJ(obj) COM_FORWARD_IVFSExplorer_GETTER_Path_TO ((obj)->)
#define COM_FORWARD_IVFSExplorer_GETTER_Path_TO_BASE(base) COM_FORWARD_IVFSExplorer_GETTER_Path_TO (base::)
#define COM_FORWARD_IVFSExplorer_GETTER_Type_TO(smth) NS_IMETHOD GetType (PRUint32 * aType) { return smth GetType (aType); }
#define COM_FORWARD_IVFSExplorer_GETTER_Type_TO_OBJ(obj) COM_FORWARD_IVFSExplorer_GETTER_Type_TO ((obj)->)
#define COM_FORWARD_IVFSExplorer_GETTER_Type_TO_BASE(base) COM_FORWARD_IVFSExplorer_GETTER_Type_TO (base::)
#define COM_FORWARD_IVFSExplorer_Update_TO(smth) NS_IMETHOD Update (IProgress * * aProgress) { return smth Update (aProgress); }
#define COM_FORWARD_IVFSExplorer_Update_TO_OBJ(obj) COM_FORWARD_IVFSExplorer_Update_TO ((obj)->)
#define COM_FORWARD_IVFSExplorer_Update_TO_BASE(base) COM_FORWARD_IVFSExplorer_Update_TO (base::)
#define COM_FORWARD_IVFSExplorer_Cd_TO(smth) NS_IMETHOD Cd (PRUnichar * aDir, IProgress * * aProgress) { return smth Cd (aDir, aProgress); }
#define COM_FORWARD_IVFSExplorer_Cd_TO_OBJ(obj) COM_FORWARD_IVFSExplorer_Cd_TO ((obj)->)
#define COM_FORWARD_IVFSExplorer_Cd_TO_BASE(base) COM_FORWARD_IVFSExplorer_Cd_TO (base::)
#define COM_FORWARD_IVFSExplorer_CdUp_TO(smth) NS_IMETHOD CdUp (IProgress * * aProgress) { return smth CdUp (aProgress); }
#define COM_FORWARD_IVFSExplorer_CdUp_TO_OBJ(obj) COM_FORWARD_IVFSExplorer_CdUp_TO ((obj)->)
#define COM_FORWARD_IVFSExplorer_CdUp_TO_BASE(base) COM_FORWARD_IVFSExplorer_CdUp_TO (base::)
#define COM_FORWARD_IVFSExplorer_EntryList_TO(smth) NS_IMETHOD EntryList (PRUint32 * aNamesSize, PRUnichar * * * aNames, PRUint32 * aTypesSize, PRUint32 * * aTypes, PRUint32 * aSizesSize, PRInt64 * * aSizes, PRUint32 * aModesSize, PRUint32 * * aModes) { return smth EntryList (aNamesSize+++, aNames, aTypesSize+++, aTypes, aSizesSize+++, aSizes, aModesSize, aModes); }
#define COM_FORWARD_IVFSExplorer_EntryList_TO_OBJ(obj) COM_FORWARD_IVFSExplorer_EntryList_TO ((obj)->)
#define COM_FORWARD_IVFSExplorer_EntryList_TO_BASE(base) COM_FORWARD_IVFSExplorer_EntryList_TO (base::)
#define COM_FORWARD_IVFSExplorer_Exists_TO(smth) NS_IMETHOD Exists (PRUint32 aNamesSize, PRUnichar * * aNames, PRUint32 * aExistsSize, PRUnichar * * * aExists) { return smth Exists (aNamesSize+++, aNames, aExistsSize, aExists); }
#define COM_FORWARD_IVFSExplorer_Exists_TO_OBJ(obj) COM_FORWARD_IVFSExplorer_Exists_TO ((obj)->)
#define COM_FORWARD_IVFSExplorer_Exists_TO_BASE(base) COM_FORWARD_IVFSExplorer_Exists_TO (base::)
#define COM_FORWARD_IVFSExplorer_Remove_TO(smth) NS_IMETHOD Remove (PRUint32 aNamesSize, PRUnichar * * aNames, IProgress * * aProgress) { return smth Remove (aNamesSize+++, aNames, aProgress); }
#define COM_FORWARD_IVFSExplorer_Remove_TO_OBJ(obj) COM_FORWARD_IVFSExplorer_Remove_TO ((obj)->)
#define COM_FORWARD_IVFSExplorer_Remove_TO_BASE(base) COM_FORWARD_IVFSExplorer_Remove_TO (base::)
#define COM_FORWARD_IVFSExplorer_TO(smth) NS_FORWARD_IVFSEXPLORER (smth)
#define COM_FORWARD_IVFSExplorer_TO_OBJ(obj) COM_FORWARD_IVFSExplorer_TO ((obj)->)
#define COM_FORWARD_IVFSExplorer_TO_BASE(base) COM_FORWARD_IVFSExplorer_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IVFSExplorer;

/* starting interface:    IAppliance */
#define IAPPLIANCE_IID_STR "3059cf9e-25c7-4f0b-9fa5-3c42e441670b"

#define IAPPLIANCE_IID \
  {0x3059cf9e, 0x25c7, 0x4f0b, \
    { 0x9f, 0xa5, 0x3c, 0x42, 0xe4, 0x41, 0x67, 0x0b }}

class NS_NO_VTABLE IAppliance : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IAPPLIANCE_IID)

  /* readonly attribute wstring path; */
  NS_IMETHOD GetPath(PRUnichar * *aPath) = 0;

  /* void getDisks (out unsigned long disksSize, [array, size_is (disksSize), retval] out wstring disks); */
  NS_IMETHOD GetDisks(PRUint32 *disksSize, PRUnichar ***disks) = 0;

  /* void getVirtualSystemDescriptions (out unsigned long virtualSystemDescriptionsSize, [array, size_is (virtualSystemDescriptionsSize), retval] out IVirtualSystemDescription virtualSystemDescriptions); */
  NS_IMETHOD GetVirtualSystemDescriptions(PRUint32 *virtualSystemDescriptionsSize, IVirtualSystemDescription ***virtualSystemDescriptions) = 0;

  /* void getMachines (out unsigned long machinesSize, [array, size_is (machinesSize), retval] out wstring machines); */
  NS_IMETHOD GetMachines(PRUint32 *machinesSize, PRUnichar ***machines) = 0;

  /* void read (in wstring file, [retval] out IProgress progress); */
  NS_IMETHOD Read(const PRUnichar *file, IProgress **progress) = 0;

  /* void interpret (); */
  NS_IMETHOD Interpret(void) = 0;

  /* void importMachines (in unsigned long optionsSize, [array, size_is (optionsSize)] in PRUint32 options, [retval] out IProgress progress); */
  NS_IMETHOD ImportMachines(PRUint32 optionsSize, PRUint32 *options, IProgress **progress) = 0;

  /* void createVFSExplorer (in wstring URI, [retval] out IVFSExplorer explorer); */
  NS_IMETHOD CreateVFSExplorer(const PRUnichar *URI, IVFSExplorer **explorer) = 0;

  /* void write (in wstring format, in unsigned long optionsSize, [array, size_is (optionsSize)] in PRUint32 options, in wstring path, [retval] out IProgress progress); */
  NS_IMETHOD Write(const PRUnichar *format, PRUint32 optionsSize, PRUint32 *options, const PRUnichar *path, IProgress **progress) = 0;

  /* void getWarnings (out unsigned long warningsSize, [array, size_is (warningsSize), retval] out wstring warnings); */
  NS_IMETHOD GetWarnings(PRUint32 *warningsSize, PRUnichar ***warnings) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IAPPLIANCE \
  NS_IMETHOD GetPath(PRUnichar * *aPath); \
  NS_IMETHOD GetDisks(PRUint32 *disksSize, PRUnichar ***disks); \
  NS_IMETHOD GetVirtualSystemDescriptions(PRUint32 *virtualSystemDescriptionsSize, IVirtualSystemDescription ***virtualSystemDescriptions); \
  NS_IMETHOD GetMachines(PRUint32 *machinesSize, PRUnichar ***machines); \
  NS_IMETHOD Read(const PRUnichar *file, IProgress **progress); \
  NS_IMETHOD Interpret(void); \
  NS_IMETHOD ImportMachines(PRUint32 optionsSize, PRUint32 *options, IProgress **progress); \
  NS_IMETHOD CreateVFSExplorer(const PRUnichar *URI, IVFSExplorer **explorer); \
  NS_IMETHOD Write(const PRUnichar *format, PRUint32 optionsSize, PRUint32 *options, const PRUnichar *path, IProgress **progress); \
  NS_IMETHOD GetWarnings(PRUint32 *warningsSize, PRUnichar ***warnings); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IAPPLIANCE(_to) \
  NS_IMETHOD GetPath(PRUnichar * *aPath) { return _to GetPath(aPath); } \
  NS_IMETHOD GetDisks(PRUint32 *disksSize, PRUnichar ***disks) { return _to GetDisks(disksSize, disks); } \
  NS_IMETHOD GetVirtualSystemDescriptions(PRUint32 *virtualSystemDescriptionsSize, IVirtualSystemDescription ***virtualSystemDescriptions) { return _to GetVirtualSystemDescriptions(virtualSystemDescriptionsSize, virtualSystemDescriptions); } \
  NS_IMETHOD GetMachines(PRUint32 *machinesSize, PRUnichar ***machines) { return _to GetMachines(machinesSize, machines); } \
  NS_IMETHOD Read(const PRUnichar *file, IProgress **progress) { return _to Read(file, progress); } \
  NS_IMETHOD Interpret(void) { return _to Interpret(); } \
  NS_IMETHOD ImportMachines(PRUint32 optionsSize, PRUint32 *options, IProgress **progress) { return _to ImportMachines(optionsSize, options, progress); } \
  NS_IMETHOD CreateVFSExplorer(const PRUnichar *URI, IVFSExplorer **explorer) { return _to CreateVFSExplorer(URI, explorer); } \
  NS_IMETHOD Write(const PRUnichar *format, PRUint32 optionsSize, PRUint32 *options, const PRUnichar *path, IProgress **progress) { return _to Write(format, optionsSize, options, path, progress); } \
  NS_IMETHOD GetWarnings(PRUint32 *warningsSize, PRUnichar ***warnings) { return _to GetWarnings(warningsSize, warnings); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IAPPLIANCE(_to) \
  NS_IMETHOD GetPath(PRUnichar * *aPath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPath(aPath); } \
  NS_IMETHOD GetDisks(PRUint32 *disksSize, PRUnichar ***disks) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDisks(disksSize, disks); } \
  NS_IMETHOD GetVirtualSystemDescriptions(PRUint32 *virtualSystemDescriptionsSize, IVirtualSystemDescription ***virtualSystemDescriptions) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVirtualSystemDescriptions(virtualSystemDescriptionsSize, virtualSystemDescriptions); } \
  NS_IMETHOD GetMachines(PRUint32 *machinesSize, PRUnichar ***machines) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMachines(machinesSize, machines); } \
  NS_IMETHOD Read(const PRUnichar *file, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Read(file, progress); } \
  NS_IMETHOD Interpret(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Interpret(); } \
  NS_IMETHOD ImportMachines(PRUint32 optionsSize, PRUint32 *options, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->ImportMachines(optionsSize, options, progress); } \
  NS_IMETHOD CreateVFSExplorer(const PRUnichar *URI, IVFSExplorer **explorer) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateVFSExplorer(URI, explorer); } \
  NS_IMETHOD Write(const PRUnichar *format, PRUint32 optionsSize, PRUint32 *options, const PRUnichar *path, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Write(format, optionsSize, options, path, progress); } \
  NS_IMETHOD GetWarnings(PRUint32 *warningsSize, PRUnichar ***warnings) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWarnings(warningsSize, warnings); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IAppliance
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IAPPLIANCE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IAppliance)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring path; */
NS_IMETHODIMP _MYCLASS_::GetPath(PRUnichar * *aPath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getDisks (out unsigned long disksSize, [array, size_is (disksSize), retval] out wstring disks); */
NS_IMETHODIMP _MYCLASS_::GetDisks(PRUint32 *disksSize, PRUnichar ***disks)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getVirtualSystemDescriptions (out unsigned long virtualSystemDescriptionsSize, [array, size_is (virtualSystemDescriptionsSize), retval] out IVirtualSystemDescription virtualSystemDescriptions); */
NS_IMETHODIMP _MYCLASS_::GetVirtualSystemDescriptions(PRUint32 *virtualSystemDescriptionsSize, IVirtualSystemDescription ***virtualSystemDescriptions)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMachines (out unsigned long machinesSize, [array, size_is (machinesSize), retval] out wstring machines); */
NS_IMETHODIMP _MYCLASS_::GetMachines(PRUint32 *machinesSize, PRUnichar ***machines)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void read (in wstring file, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::Read(const PRUnichar *file, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void interpret (); */
NS_IMETHODIMP _MYCLASS_::Interpret()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void importMachines (in unsigned long optionsSize, [array, size_is (optionsSize)] in PRUint32 options, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::ImportMachines(PRUint32 optionsSize, PRUint32 *options, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createVFSExplorer (in wstring URI, [retval] out IVFSExplorer explorer); */
NS_IMETHODIMP _MYCLASS_::CreateVFSExplorer(const PRUnichar *URI, IVFSExplorer **explorer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void write (in wstring format, in unsigned long optionsSize, [array, size_is (optionsSize)] in PRUint32 options, in wstring path, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::Write(const PRUnichar *format, PRUint32 optionsSize, PRUint32 *options, const PRUnichar *path, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getWarnings (out unsigned long warningsSize, [array, size_is (warningsSize), retval] out wstring warnings); */
NS_IMETHODIMP _MYCLASS_::GetWarnings(PRUint32 *warningsSize, PRUnichar ***warnings)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IAppliance_GETTER_Path_TO(smth) NS_IMETHOD GetPath (PRUnichar * * aPath) { return smth GetPath (aPath); }
#define COM_FORWARD_IAppliance_GETTER_Path_TO_OBJ(obj) COM_FORWARD_IAppliance_GETTER_Path_TO ((obj)->)
#define COM_FORWARD_IAppliance_GETTER_Path_TO_BASE(base) COM_FORWARD_IAppliance_GETTER_Path_TO (base::)
#define COM_FORWARD_IAppliance_GETTER_Disks_TO(smth) NS_IMETHOD GetDisks (PRUint32 * aDisksSize, PRUnichar * * * aDisks) { return smth GetDisks (aDisksSize, aDisks); }
#define COM_FORWARD_IAppliance_GETTER_Disks_TO_OBJ(obj) COM_FORWARD_IAppliance_GETTER_Disks_TO ((obj)->)
#define COM_FORWARD_IAppliance_GETTER_Disks_TO_BASE(base) COM_FORWARD_IAppliance_GETTER_Disks_TO (base::)
#define COM_FORWARD_IAppliance_GETTER_VirtualSystemDescriptions_TO(smth) NS_IMETHOD GetVirtualSystemDescriptions (PRUint32 * aVirtualSystemDescriptionsSize, IVirtualSystemDescription * * * aVirtualSystemDescriptions) { return smth GetVirtualSystemDescriptions (aVirtualSystemDescriptionsSize, aVirtualSystemDescriptions); }
#define COM_FORWARD_IAppliance_GETTER_VirtualSystemDescriptions_TO_OBJ(obj) COM_FORWARD_IAppliance_GETTER_VirtualSystemDescriptions_TO ((obj)->)
#define COM_FORWARD_IAppliance_GETTER_VirtualSystemDescriptions_TO_BASE(base) COM_FORWARD_IAppliance_GETTER_VirtualSystemDescriptions_TO (base::)
#define COM_FORWARD_IAppliance_GETTER_Machines_TO(smth) NS_IMETHOD GetMachines (PRUint32 * aMachinesSize, PRUnichar * * * aMachines) { return smth GetMachines (aMachinesSize, aMachines); }
#define COM_FORWARD_IAppliance_GETTER_Machines_TO_OBJ(obj) COM_FORWARD_IAppliance_GETTER_Machines_TO ((obj)->)
#define COM_FORWARD_IAppliance_GETTER_Machines_TO_BASE(base) COM_FORWARD_IAppliance_GETTER_Machines_TO (base::)
#define COM_FORWARD_IAppliance_Read_TO(smth) NS_IMETHOD Read (PRUnichar * aFile, IProgress * * aProgress) { return smth Read (aFile, aProgress); }
#define COM_FORWARD_IAppliance_Read_TO_OBJ(obj) COM_FORWARD_IAppliance_Read_TO ((obj)->)
#define COM_FORWARD_IAppliance_Read_TO_BASE(base) COM_FORWARD_IAppliance_Read_TO (base::)
#define COM_FORWARD_IAppliance_Interpret_TO(smth) NS_IMETHOD Interpret() { return smth Interpret(); }
#define COM_FORWARD_IAppliance_Interpret_TO_OBJ(obj) COM_FORWARD_IAppliance_Interpret_TO ((obj)->)
#define COM_FORWARD_IAppliance_Interpret_TO_BASE(base) COM_FORWARD_IAppliance_Interpret_TO (base::)
#define COM_FORWARD_IAppliance_ImportMachines_TO(smth) NS_IMETHOD ImportMachines (PRUint32 aOptionsSize, PRUint32 * aOptions, IProgress * * aProgress) { return smth ImportMachines (aOptionsSize+++, aOptions, aProgress); }
#define COM_FORWARD_IAppliance_ImportMachines_TO_OBJ(obj) COM_FORWARD_IAppliance_ImportMachines_TO ((obj)->)
#define COM_FORWARD_IAppliance_ImportMachines_TO_BASE(base) COM_FORWARD_IAppliance_ImportMachines_TO (base::)
#define COM_FORWARD_IAppliance_CreateVFSExplorer_TO(smth) NS_IMETHOD CreateVFSExplorer (PRUnichar * aURI, IVFSExplorer * * aExplorer) { return smth CreateVFSExplorer (aURI, aExplorer); }
#define COM_FORWARD_IAppliance_CreateVFSExplorer_TO_OBJ(obj) COM_FORWARD_IAppliance_CreateVFSExplorer_TO ((obj)->)
#define COM_FORWARD_IAppliance_CreateVFSExplorer_TO_BASE(base) COM_FORWARD_IAppliance_CreateVFSExplorer_TO (base::)
#define COM_FORWARD_IAppliance_Write_TO(smth) NS_IMETHOD Write (PRUnichar * aFormat, PRUint32 aOptionsSize, PRUint32 * aOptions, PRUnichar * aPath, IProgress * * aProgress) { return smth Write (aFormat, aOptionsSize+++, aOptions, aPath, aProgress); }
#define COM_FORWARD_IAppliance_Write_TO_OBJ(obj) COM_FORWARD_IAppliance_Write_TO ((obj)->)
#define COM_FORWARD_IAppliance_Write_TO_BASE(base) COM_FORWARD_IAppliance_Write_TO (base::)
#define COM_FORWARD_IAppliance_GetWarnings_TO(smth) NS_IMETHOD GetWarnings (PRUint32 * aWarningsSize, PRUnichar * * * aWarnings) { return smth GetWarnings (aWarningsSize, aWarnings); }
#define COM_FORWARD_IAppliance_GetWarnings_TO_OBJ(obj) COM_FORWARD_IAppliance_GetWarnings_TO ((obj)->)
#define COM_FORWARD_IAppliance_GetWarnings_TO_BASE(base) COM_FORWARD_IAppliance_GetWarnings_TO (base::)
#define COM_FORWARD_IAppliance_TO(smth) NS_FORWARD_IAPPLIANCE (smth)
#define COM_FORWARD_IAppliance_TO_OBJ(obj) COM_FORWARD_IAppliance_TO ((obj)->)
#define COM_FORWARD_IAppliance_TO_BASE(base) COM_FORWARD_IAppliance_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IAppliance;

/* starting interface:    IVirtualSystemDescription */
#define IVIRTUALSYSTEMDESCRIPTION_IID_STR "d7525e6c-531a-4c51-8e04-41235083a3d8"

#define IVIRTUALSYSTEMDESCRIPTION_IID \
  {0xd7525e6c, 0x531a, 0x4c51, \
    { 0x8e, 0x04, 0x41, 0x23, 0x50, 0x83, 0xa3, 0xd8 }}

class NS_NO_VTABLE IVirtualSystemDescription : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVIRTUALSYSTEMDESCRIPTION_IID)

  /* readonly attribute unsigned long count; */
  NS_IMETHOD GetCount(PRUint32 *aCount) = 0;

  /* void getDescription (out unsigned long typesSize, [array, size_is (typesSize)] out PRUint32 types, out unsigned long refsSize, [array, size_is (refsSize)] out wstring refs, out unsigned long OVFValuesSize, [array, size_is (OVFValuesSize)] out wstring OVFValues, out unsigned long VBoxValuesSize, [array, size_is (VBoxValuesSize)] out wstring VBoxValues, out unsigned long extraConfigValuesSize, [array, size_is (extraConfigValuesSize)] out wstring extraConfigValues); */
  NS_IMETHOD GetDescription(PRUint32 *typesSize, PRUint32 **types, PRUint32 *refsSize, PRUnichar ***refs, PRUint32 *OVFValuesSize, PRUnichar ***OVFValues, PRUint32 *VBoxValuesSize, PRUnichar ***VBoxValues, PRUint32 *extraConfigValuesSize, PRUnichar ***extraConfigValues) = 0;

  /* void getDescriptionByType (in PRUint32 type, out unsigned long typesSize, [array, size_is (typesSize)] out PRUint32 types, out unsigned long refsSize, [array, size_is (refsSize)] out wstring refs, out unsigned long OVFValuesSize, [array, size_is (OVFValuesSize)] out wstring OVFValues, out unsigned long VBoxValuesSize, [array, size_is (VBoxValuesSize)] out wstring VBoxValues, out unsigned long extraConfigValuesSize, [array, size_is (extraConfigValuesSize)] out wstring extraConfigValues); */
  NS_IMETHOD GetDescriptionByType(PRUint32 type, PRUint32 *typesSize, PRUint32 **types, PRUint32 *refsSize, PRUnichar ***refs, PRUint32 *OVFValuesSize, PRUnichar ***OVFValues, PRUint32 *VBoxValuesSize, PRUnichar ***VBoxValues, PRUint32 *extraConfigValuesSize, PRUnichar ***extraConfigValues) = 0;

  /* void getValuesByType (in PRUint32 type, in PRUint32 which, out unsigned long valuesSize, [array, size_is (valuesSize), retval] out wstring values); */
  NS_IMETHOD GetValuesByType(PRUint32 type, PRUint32 which, PRUint32 *valuesSize, PRUnichar ***values) = 0;

  /* void setFinalValues (in unsigned long enabledSize, [array, size_is (enabledSize)] in boolean enabled, in unsigned long VBoxValuesSize, [array, size_is (VBoxValuesSize)] in wstring VBoxValues, in unsigned long extraConfigValuesSize, [array, size_is (extraConfigValuesSize)] in wstring extraConfigValues); */
  NS_IMETHOD SetFinalValues(PRUint32 enabledSize, PRBool *enabled, PRUint32 VBoxValuesSize, const PRUnichar **VBoxValues, PRUint32 extraConfigValuesSize, const PRUnichar **extraConfigValues) = 0;

  /* void addDescription (in PRUint32 type, in wstring VBoxValue, in wstring extraConfigValue); */
  NS_IMETHOD AddDescription(PRUint32 type, const PRUnichar *VBoxValue, const PRUnichar *extraConfigValue) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVIRTUALSYSTEMDESCRIPTION \
  NS_IMETHOD GetCount(PRUint32 *aCount); \
  NS_IMETHOD GetDescription(PRUint32 *typesSize, PRUint32 **types, PRUint32 *refsSize, PRUnichar ***refs, PRUint32 *OVFValuesSize, PRUnichar ***OVFValues, PRUint32 *VBoxValuesSize, PRUnichar ***VBoxValues, PRUint32 *extraConfigValuesSize, PRUnichar ***extraConfigValues); \
  NS_IMETHOD GetDescriptionByType(PRUint32 type, PRUint32 *typesSize, PRUint32 **types, PRUint32 *refsSize, PRUnichar ***refs, PRUint32 *OVFValuesSize, PRUnichar ***OVFValues, PRUint32 *VBoxValuesSize, PRUnichar ***VBoxValues, PRUint32 *extraConfigValuesSize, PRUnichar ***extraConfigValues); \
  NS_IMETHOD GetValuesByType(PRUint32 type, PRUint32 which, PRUint32 *valuesSize, PRUnichar ***values); \
  NS_IMETHOD SetFinalValues(PRUint32 enabledSize, PRBool *enabled, PRUint32 VBoxValuesSize, const PRUnichar **VBoxValues, PRUint32 extraConfigValuesSize, const PRUnichar **extraConfigValues); \
  NS_IMETHOD AddDescription(PRUint32 type, const PRUnichar *VBoxValue, const PRUnichar *extraConfigValue); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IVIRTUALSYSTEMDESCRIPTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return _to GetCount(aCount); } \
  NS_IMETHOD GetDescription(PRUint32 *typesSize, PRUint32 **types, PRUint32 *refsSize, PRUnichar ***refs, PRUint32 *OVFValuesSize, PRUnichar ***OVFValues, PRUint32 *VBoxValuesSize, PRUnichar ***VBoxValues, PRUint32 *extraConfigValuesSize, PRUnichar ***extraConfigValues) { return _to GetDescription(typesSize, types, refsSize, refs, OVFValuesSize, OVFValues, VBoxValuesSize, VBoxValues, extraConfigValuesSize, extraConfigValues); } \
  NS_IMETHOD GetDescriptionByType(PRUint32 type, PRUint32 *typesSize, PRUint32 **types, PRUint32 *refsSize, PRUnichar ***refs, PRUint32 *OVFValuesSize, PRUnichar ***OVFValues, PRUint32 *VBoxValuesSize, PRUnichar ***VBoxValues, PRUint32 *extraConfigValuesSize, PRUnichar ***extraConfigValues) { return _to GetDescriptionByType(type, typesSize, types, refsSize, refs, OVFValuesSize, OVFValues, VBoxValuesSize, VBoxValues, extraConfigValuesSize, extraConfigValues); } \
  NS_IMETHOD GetValuesByType(PRUint32 type, PRUint32 which, PRUint32 *valuesSize, PRUnichar ***values) { return _to GetValuesByType(type, which, valuesSize, values); } \
  NS_IMETHOD SetFinalValues(PRUint32 enabledSize, PRBool *enabled, PRUint32 VBoxValuesSize, const PRUnichar **VBoxValues, PRUint32 extraConfigValuesSize, const PRUnichar **extraConfigValues) { return _to SetFinalValues(enabledSize, enabled, VBoxValuesSize, VBoxValues, extraConfigValuesSize, extraConfigValues); } \
  NS_IMETHOD AddDescription(PRUint32 type, const PRUnichar *VBoxValue, const PRUnichar *extraConfigValue) { return _to AddDescription(type, VBoxValue, extraConfigValue); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IVIRTUALSYSTEMDESCRIPTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCount(aCount); } \
  NS_IMETHOD GetDescription(PRUint32 *typesSize, PRUint32 **types, PRUint32 *refsSize, PRUnichar ***refs, PRUint32 *OVFValuesSize, PRUnichar ***OVFValues, PRUint32 *VBoxValuesSize, PRUnichar ***VBoxValues, PRUint32 *extraConfigValuesSize, PRUnichar ***extraConfigValues) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(typesSize, types, refsSize, refs, OVFValuesSize, OVFValues, VBoxValuesSize, VBoxValues, extraConfigValuesSize, extraConfigValues); } \
  NS_IMETHOD GetDescriptionByType(PRUint32 type, PRUint32 *typesSize, PRUint32 **types, PRUint32 *refsSize, PRUnichar ***refs, PRUint32 *OVFValuesSize, PRUnichar ***OVFValues, PRUint32 *VBoxValuesSize, PRUnichar ***VBoxValues, PRUint32 *extraConfigValuesSize, PRUnichar ***extraConfigValues) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescriptionByType(type, typesSize, types, refsSize, refs, OVFValuesSize, OVFValues, VBoxValuesSize, VBoxValues, extraConfigValuesSize, extraConfigValues); } \
  NS_IMETHOD GetValuesByType(PRUint32 type, PRUint32 which, PRUint32 *valuesSize, PRUnichar ***values) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetValuesByType(type, which, valuesSize, values); } \
  NS_IMETHOD SetFinalValues(PRUint32 enabledSize, PRBool *enabled, PRUint32 VBoxValuesSize, const PRUnichar **VBoxValues, PRUint32 extraConfigValuesSize, const PRUnichar **extraConfigValues) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFinalValues(enabledSize, enabled, VBoxValuesSize, VBoxValues, extraConfigValuesSize, extraConfigValues); } \
  NS_IMETHOD AddDescription(PRUint32 type, const PRUnichar *VBoxValue, const PRUnichar *extraConfigValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddDescription(type, VBoxValue, extraConfigValue); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IVirtualSystemDescription
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IVIRTUALSYSTEMDESCRIPTION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IVirtualSystemDescription)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute unsigned long count; */
NS_IMETHODIMP _MYCLASS_::GetCount(PRUint32 *aCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getDescription (out unsigned long typesSize, [array, size_is (typesSize)] out PRUint32 types, out unsigned long refsSize, [array, size_is (refsSize)] out wstring refs, out unsigned long OVFValuesSize, [array, size_is (OVFValuesSize)] out wstring OVFValues, out unsigned long VBoxValuesSize, [array, size_is (VBoxValuesSize)] out wstring VBoxValues, out unsigned long extraConfigValuesSize, [array, size_is (extraConfigValuesSize)] out wstring extraConfigValues); */
NS_IMETHODIMP _MYCLASS_::GetDescription(PRUint32 *typesSize, PRUint32 **types, PRUint32 *refsSize, PRUnichar ***refs, PRUint32 *OVFValuesSize, PRUnichar ***OVFValues, PRUint32 *VBoxValuesSize, PRUnichar ***VBoxValues, PRUint32 *extraConfigValuesSize, PRUnichar ***extraConfigValues)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getDescriptionByType (in PRUint32 type, out unsigned long typesSize, [array, size_is (typesSize)] out PRUint32 types, out unsigned long refsSize, [array, size_is (refsSize)] out wstring refs, out unsigned long OVFValuesSize, [array, size_is (OVFValuesSize)] out wstring OVFValues, out unsigned long VBoxValuesSize, [array, size_is (VBoxValuesSize)] out wstring VBoxValues, out unsigned long extraConfigValuesSize, [array, size_is (extraConfigValuesSize)] out wstring extraConfigValues); */
NS_IMETHODIMP _MYCLASS_::GetDescriptionByType(PRUint32 type, PRUint32 *typesSize, PRUint32 **types, PRUint32 *refsSize, PRUnichar ***refs, PRUint32 *OVFValuesSize, PRUnichar ***OVFValues, PRUint32 *VBoxValuesSize, PRUnichar ***VBoxValues, PRUint32 *extraConfigValuesSize, PRUnichar ***extraConfigValues)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getValuesByType (in PRUint32 type, in PRUint32 which, out unsigned long valuesSize, [array, size_is (valuesSize), retval] out wstring values); */
NS_IMETHODIMP _MYCLASS_::GetValuesByType(PRUint32 type, PRUint32 which, PRUint32 *valuesSize, PRUnichar ***values)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setFinalValues (in unsigned long enabledSize, [array, size_is (enabledSize)] in boolean enabled, in unsigned long VBoxValuesSize, [array, size_is (VBoxValuesSize)] in wstring VBoxValues, in unsigned long extraConfigValuesSize, [array, size_is (extraConfigValuesSize)] in wstring extraConfigValues); */
NS_IMETHODIMP _MYCLASS_::SetFinalValues(PRUint32 enabledSize, PRBool *enabled, PRUint32 VBoxValuesSize, const PRUnichar **VBoxValues, PRUint32 extraConfigValuesSize, const PRUnichar **extraConfigValues)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addDescription (in PRUint32 type, in wstring VBoxValue, in wstring extraConfigValue); */
NS_IMETHODIMP _MYCLASS_::AddDescription(PRUint32 type, const PRUnichar *VBoxValue, const PRUnichar *extraConfigValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IVirtualSystemDescription_GETTER_Count_TO(smth) NS_IMETHOD GetCount (PRUint32 * aCount) { return smth GetCount (aCount); }
#define COM_FORWARD_IVirtualSystemDescription_GETTER_Count_TO_OBJ(obj) COM_FORWARD_IVirtualSystemDescription_GETTER_Count_TO ((obj)->)
#define COM_FORWARD_IVirtualSystemDescription_GETTER_Count_TO_BASE(base) COM_FORWARD_IVirtualSystemDescription_GETTER_Count_TO (base::)
#define COM_FORWARD_IVirtualSystemDescription_GetDescription_TO(smth) NS_IMETHOD GetDescription (PRUint32 * aTypesSize, PRUint32 * * aTypes, PRUint32 * aRefsSize, PRUnichar * * * aRefs, PRUint32 * aOVFValuesSize, PRUnichar * * * aOVFValues, PRUint32 * aVBoxValuesSize, PRUnichar * * * aVBoxValues, PRUint32 * aExtraConfigValuesSize, PRUnichar * * * aExtraConfigValues) { return smth GetDescription (aTypesSize+++, aTypes, aRefsSize+++, aRefs, aOVFValuesSize+++, aOVFValues, aVBoxValuesSize+++, aVBoxValues, aExtraConfigValuesSize, aExtraConfigValues); }
#define COM_FORWARD_IVirtualSystemDescription_GetDescription_TO_OBJ(obj) COM_FORWARD_IVirtualSystemDescription_GetDescription_TO ((obj)->)
#define COM_FORWARD_IVirtualSystemDescription_GetDescription_TO_BASE(base) COM_FORWARD_IVirtualSystemDescription_GetDescription_TO (base::)
#define COM_FORWARD_IVirtualSystemDescription_GetDescriptionByType_TO(smth) NS_IMETHOD GetDescriptionByType (PRUint32 aType, PRUint32 * aTypesSize, PRUint32 * * aTypes, PRUint32 * aRefsSize, PRUnichar * * * aRefs, PRUint32 * aOVFValuesSize, PRUnichar * * * aOVFValues, PRUint32 * aVBoxValuesSize, PRUnichar * * * aVBoxValues, PRUint32 * aExtraConfigValuesSize, PRUnichar * * * aExtraConfigValues) { return smth GetDescriptionByType (aType, aTypesSize+++, aTypes, aRefsSize+++, aRefs, aOVFValuesSize+++, aOVFValues, aVBoxValuesSize+++, aVBoxValues, aExtraConfigValuesSize, aExtraConfigValues); }
#define COM_FORWARD_IVirtualSystemDescription_GetDescriptionByType_TO_OBJ(obj) COM_FORWARD_IVirtualSystemDescription_GetDescriptionByType_TO ((obj)->)
#define COM_FORWARD_IVirtualSystemDescription_GetDescriptionByType_TO_BASE(base) COM_FORWARD_IVirtualSystemDescription_GetDescriptionByType_TO (base::)
#define COM_FORWARD_IVirtualSystemDescription_GetValuesByType_TO(smth) NS_IMETHOD GetValuesByType (PRUint32 aType, PRUint32 aWhich, PRUint32 * aValuesSize, PRUnichar * * * aValues) { return smth GetValuesByType (aType, aWhich, aValuesSize, aValues); }
#define COM_FORWARD_IVirtualSystemDescription_GetValuesByType_TO_OBJ(obj) COM_FORWARD_IVirtualSystemDescription_GetValuesByType_TO ((obj)->)
#define COM_FORWARD_IVirtualSystemDescription_GetValuesByType_TO_BASE(base) COM_FORWARD_IVirtualSystemDescription_GetValuesByType_TO (base::)
#define COM_FORWARD_IVirtualSystemDescription_SetFinalValues_TO(smth) NS_IMETHOD SetFinalValues (PRUint32 aEnabledSize, PRBool * aEnabled, PRUint32 aVBoxValuesSize, PRUnichar * * aVBoxValues, PRUint32 aExtraConfigValuesSize, PRUnichar * * aExtraConfigValues) { return smth SetFinalValues (aEnabledSize+++, aEnabled, aVBoxValuesSize+++, aVBoxValues, aExtraConfigValuesSize, aExtraConfigValues); }
#define COM_FORWARD_IVirtualSystemDescription_SetFinalValues_TO_OBJ(obj) COM_FORWARD_IVirtualSystemDescription_SetFinalValues_TO ((obj)->)
#define COM_FORWARD_IVirtualSystemDescription_SetFinalValues_TO_BASE(base) COM_FORWARD_IVirtualSystemDescription_SetFinalValues_TO (base::)
#define COM_FORWARD_IVirtualSystemDescription_AddDescription_TO(smth) NS_IMETHOD AddDescription (PRUint32 aType, PRUnichar * aVBoxValue, PRUnichar * aExtraConfigValue) { return smth AddDescription (aType, aVBoxValue, aExtraConfigValue); }
#define COM_FORWARD_IVirtualSystemDescription_AddDescription_TO_OBJ(obj) COM_FORWARD_IVirtualSystemDescription_AddDescription_TO ((obj)->)
#define COM_FORWARD_IVirtualSystemDescription_AddDescription_TO_BASE(base) COM_FORWARD_IVirtualSystemDescription_AddDescription_TO (base::)
#define COM_FORWARD_IVirtualSystemDescription_TO(smth) NS_FORWARD_IVIRTUALSYSTEMDESCRIPTION (smth)
#define COM_FORWARD_IVirtualSystemDescription_TO_OBJ(obj) COM_FORWARD_IVirtualSystemDescription_TO ((obj)->)
#define COM_FORWARD_IVirtualSystemDescription_TO_BASE(base) COM_FORWARD_IVirtualSystemDescription_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IVirtualSystemDescription;

/* starting interface:    IInternalMachineControl */
#define IINTERNALMACHINECONTROL_IID_STR "2d9ce4b7-0ab2-4931-ac4a-e45aa66465ef"

#define IINTERNALMACHINECONTROL_IID \
  {0x2d9ce4b7, 0x0ab2, 0x4931, \
    { 0xac, 0x4a, 0xe4, 0x5a, 0xa6, 0x64, 0x65, 0xef }}

class NS_NO_VTABLE IInternalMachineControl : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IINTERNALMACHINECONTROL_IID)

  /* void setRemoveSavedStateFile (in boolean remove); */
  NS_IMETHOD SetRemoveSavedStateFile(PRBool remove) = 0;

  /* void updateState (in PRUint32 state); */
  NS_IMETHOD UpdateState(PRUint32 state) = 0;

  /* void beginPowerUp (in IProgress progress); */
  NS_IMETHOD BeginPowerUp(IProgress *progress) = 0;

  /* void endPowerUp (in long result); */
  NS_IMETHOD EndPowerUp(PRInt32 result) = 0;

  /* void beginPoweringDown (out IProgress progress); */
  NS_IMETHOD BeginPoweringDown(IProgress **progress) = 0;

  /* void endPoweringDown (in long result, in wstring errMsg); */
  NS_IMETHOD EndPoweringDown(PRInt32 result, const PRUnichar *errMsg) = 0;

  /* void runUSBDeviceFilters (in IUSBDevice device, out boolean matched, out unsigned long maskedInterfaces); */
  NS_IMETHOD RunUSBDeviceFilters(IUSBDevice *device, PRBool *matched, PRUint32 *maskedInterfaces) = 0;

  /* void captureUSBDevice (in wstring id); */
  NS_IMETHOD CaptureUSBDevice(const PRUnichar *id) = 0;

  /* void detachUSBDevice (in wstring id, in boolean done); */
  NS_IMETHOD DetachUSBDevice(const PRUnichar *id, PRBool done) = 0;

  /* void autoCaptureUSBDevices (); */
  NS_IMETHOD AutoCaptureUSBDevices(void) = 0;

  /* void detachAllUSBDevices (in boolean done); */
  NS_IMETHOD DetachAllUSBDevices(PRBool done) = 0;

  /* void onSessionEnd (in ISession session, [retval] out IProgress progress); */
  NS_IMETHOD OnSessionEnd(ISession *session, IProgress **progress) = 0;

  /* void beginSavingState (out IProgress progress, out wstring stateFilePath); */
  NS_IMETHOD BeginSavingState(IProgress **progress, PRUnichar **stateFilePath) = 0;

  /* void endSavingState (in long result, in wstring errMsg); */
  NS_IMETHOD EndSavingState(PRInt32 result, const PRUnichar *errMsg) = 0;

  /* void adoptSavedState (in wstring savedStateFile); */
  NS_IMETHOD AdoptSavedState(const PRUnichar *savedStateFile) = 0;

  /* void beginTakingSnapshot (in IConsole initiator, in wstring name, in wstring description, in IProgress consoleProgress, in boolean fTakingSnapshotOnline, out wstring stateFilePath); */
  NS_IMETHOD BeginTakingSnapshot(IConsole *initiator, const PRUnichar *name, const PRUnichar *description, IProgress *consoleProgress, PRBool fTakingSnapshotOnline, PRUnichar **stateFilePath) = 0;

  /* void endTakingSnapshot (in boolean success); */
  NS_IMETHOD EndTakingSnapshot(PRBool success) = 0;

  /* void deleteSnapshot (in IConsole initiator, in wstring startId, in wstring endId, in boolean deleteAllChildren, out PRUint32 machineState, [retval] out IProgress progress); */
  NS_IMETHOD DeleteSnapshot(IConsole *initiator, const PRUnichar *startId, const PRUnichar *endId, PRBool deleteAllChildren, PRUint32 *machineState, IProgress **progress) = 0;

  /* void finishOnlineMergeMedium (); */
  NS_IMETHOD FinishOnlineMergeMedium(void) = 0;

  /* void restoreSnapshot (in IConsole initiator, in ISnapshot snapshot, out PRUint32 machineState, [retval] out IProgress progress); */
  NS_IMETHOD RestoreSnapshot(IConsole *initiator, ISnapshot *snapshot, PRUint32 *machineState, IProgress **progress) = 0;

  /* void pullGuestProperties (out unsigned long namesSize, [array, size_is (namesSize)] out wstring names, out unsigned long valuesSize, [array, size_is (valuesSize)] out wstring values, out unsigned long timestampsSize, [array, size_is (timestampsSize)] out long long timestamps, out unsigned long flagsSize, [array, size_is (flagsSize)] out wstring flags); */
  NS_IMETHOD PullGuestProperties(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *valuesSize, PRUnichar ***values, PRUint32 *timestampsSize, PRInt64 **timestamps, PRUint32 *flagsSize, PRUnichar ***flags) = 0;

  /* void pushGuestProperty (in wstring name, in wstring value, in long long timestamp, in wstring flags); */
  NS_IMETHOD PushGuestProperty(const PRUnichar *name, const PRUnichar *value, PRInt64 timestamp, const PRUnichar *flags) = 0;

  /* void lockMedia (); */
  NS_IMETHOD LockMedia(void) = 0;

  /* void unlockMedia (); */
  NS_IMETHOD UnlockMedia(void) = 0;

  /* void ejectMedium (in IMediumAttachment attachment, [retval] out IMediumAttachment newAttachment); */
  NS_IMETHOD EjectMedium(IMediumAttachment *attachment, IMediumAttachment **newAttachment) = 0;

  /* void reportVmStatistics (in unsigned long validStats, in unsigned long cpuUser, in unsigned long cpuKernel, in unsigned long cpuIdle, in unsigned long memTotal, in unsigned long memFree, in unsigned long memBalloon, in unsigned long memShared, in unsigned long memCache, in unsigned long pagedTotal, in unsigned long memAllocTotal, in unsigned long memFreeTotal, in unsigned long memBalloonTotal, in unsigned long memSharedTotal, in unsigned long vmNetRx, in unsigned long vmNetTx); */
  NS_IMETHOD ReportVmStatistics(PRUint32 validStats, PRUint32 cpuUser, PRUint32 cpuKernel, PRUint32 cpuIdle, PRUint32 memTotal, PRUint32 memFree, PRUint32 memBalloon, PRUint32 memShared, PRUint32 memCache, PRUint32 pagedTotal, PRUint32 memAllocTotal, PRUint32 memFreeTotal, PRUint32 memBalloonTotal, PRUint32 memSharedTotal, PRUint32 vmNetRx, PRUint32 vmNetTx) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IINTERNALMACHINECONTROL \
  NS_IMETHOD SetRemoveSavedStateFile(PRBool remove); \
  NS_IMETHOD UpdateState(PRUint32 state); \
  NS_IMETHOD BeginPowerUp(IProgress *progress); \
  NS_IMETHOD EndPowerUp(PRInt32 result); \
  NS_IMETHOD BeginPoweringDown(IProgress **progress); \
  NS_IMETHOD EndPoweringDown(PRInt32 result, const PRUnichar *errMsg); \
  NS_IMETHOD RunUSBDeviceFilters(IUSBDevice *device, PRBool *matched, PRUint32 *maskedInterfaces); \
  NS_IMETHOD CaptureUSBDevice(const PRUnichar *id); \
  NS_IMETHOD DetachUSBDevice(const PRUnichar *id, PRBool done); \
  NS_IMETHOD AutoCaptureUSBDevices(void); \
  NS_IMETHOD DetachAllUSBDevices(PRBool done); \
  NS_IMETHOD OnSessionEnd(ISession *session, IProgress **progress); \
  NS_IMETHOD BeginSavingState(IProgress **progress, PRUnichar **stateFilePath); \
  NS_IMETHOD EndSavingState(PRInt32 result, const PRUnichar *errMsg); \
  NS_IMETHOD AdoptSavedState(const PRUnichar *savedStateFile); \
  NS_IMETHOD BeginTakingSnapshot(IConsole *initiator, const PRUnichar *name, const PRUnichar *description, IProgress *consoleProgress, PRBool fTakingSnapshotOnline, PRUnichar **stateFilePath); \
  NS_IMETHOD EndTakingSnapshot(PRBool success); \
  NS_IMETHOD DeleteSnapshot(IConsole *initiator, const PRUnichar *startId, const PRUnichar *endId, PRBool deleteAllChildren, PRUint32 *machineState, IProgress **progress); \
  NS_IMETHOD FinishOnlineMergeMedium(void); \
  NS_IMETHOD RestoreSnapshot(IConsole *initiator, ISnapshot *snapshot, PRUint32 *machineState, IProgress **progress); \
  NS_IMETHOD PullGuestProperties(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *valuesSize, PRUnichar ***values, PRUint32 *timestampsSize, PRInt64 **timestamps, PRUint32 *flagsSize, PRUnichar ***flags); \
  NS_IMETHOD PushGuestProperty(const PRUnichar *name, const PRUnichar *value, PRInt64 timestamp, const PRUnichar *flags); \
  NS_IMETHOD LockMedia(void); \
  NS_IMETHOD UnlockMedia(void); \
  NS_IMETHOD EjectMedium(IMediumAttachment *attachment, IMediumAttachment **newAttachment); \
  NS_IMETHOD ReportVmStatistics(PRUint32 validStats, PRUint32 cpuUser, PRUint32 cpuKernel, PRUint32 cpuIdle, PRUint32 memTotal, PRUint32 memFree, PRUint32 memBalloon, PRUint32 memShared, PRUint32 memCache, PRUint32 pagedTotal, PRUint32 memAllocTotal, PRUint32 memFreeTotal, PRUint32 memBalloonTotal, PRUint32 memSharedTotal, PRUint32 vmNetRx, PRUint32 vmNetTx); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IINTERNALMACHINECONTROL(_to) \
  NS_IMETHOD SetRemoveSavedStateFile(PRBool remove) { return _to SetRemoveSavedStateFile(remove); } \
  NS_IMETHOD UpdateState(PRUint32 state) { return _to UpdateState(state); } \
  NS_IMETHOD BeginPowerUp(IProgress *progress) { return _to BeginPowerUp(progress); } \
  NS_IMETHOD EndPowerUp(PRInt32 result) { return _to EndPowerUp(result); } \
  NS_IMETHOD BeginPoweringDown(IProgress **progress) { return _to BeginPoweringDown(progress); } \
  NS_IMETHOD EndPoweringDown(PRInt32 result, const PRUnichar *errMsg) { return _to EndPoweringDown(result, errMsg); } \
  NS_IMETHOD RunUSBDeviceFilters(IUSBDevice *device, PRBool *matched, PRUint32 *maskedInterfaces) { return _to RunUSBDeviceFilters(device, matched, maskedInterfaces); } \
  NS_IMETHOD CaptureUSBDevice(const PRUnichar *id) { return _to CaptureUSBDevice(id); } \
  NS_IMETHOD DetachUSBDevice(const PRUnichar *id, PRBool done) { return _to DetachUSBDevice(id, done); } \
  NS_IMETHOD AutoCaptureUSBDevices(void) { return _to AutoCaptureUSBDevices(); } \
  NS_IMETHOD DetachAllUSBDevices(PRBool done) { return _to DetachAllUSBDevices(done); } \
  NS_IMETHOD OnSessionEnd(ISession *session, IProgress **progress) { return _to OnSessionEnd(session, progress); } \
  NS_IMETHOD BeginSavingState(IProgress **progress, PRUnichar **stateFilePath) { return _to BeginSavingState(progress, stateFilePath); } \
  NS_IMETHOD EndSavingState(PRInt32 result, const PRUnichar *errMsg) { return _to EndSavingState(result, errMsg); } \
  NS_IMETHOD AdoptSavedState(const PRUnichar *savedStateFile) { return _to AdoptSavedState(savedStateFile); } \
  NS_IMETHOD BeginTakingSnapshot(IConsole *initiator, const PRUnichar *name, const PRUnichar *description, IProgress *consoleProgress, PRBool fTakingSnapshotOnline, PRUnichar **stateFilePath) { return _to BeginTakingSnapshot(initiator, name, description, consoleProgress, fTakingSnapshotOnline, stateFilePath); } \
  NS_IMETHOD EndTakingSnapshot(PRBool success) { return _to EndTakingSnapshot(success); } \
  NS_IMETHOD DeleteSnapshot(IConsole *initiator, const PRUnichar *startId, const PRUnichar *endId, PRBool deleteAllChildren, PRUint32 *machineState, IProgress **progress) { return _to DeleteSnapshot(initiator, startId, endId, deleteAllChildren, machineState, progress); } \
  NS_IMETHOD FinishOnlineMergeMedium(void) { return _to FinishOnlineMergeMedium(); } \
  NS_IMETHOD RestoreSnapshot(IConsole *initiator, ISnapshot *snapshot, PRUint32 *machineState, IProgress **progress) { return _to RestoreSnapshot(initiator, snapshot, machineState, progress); } \
  NS_IMETHOD PullGuestProperties(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *valuesSize, PRUnichar ***values, PRUint32 *timestampsSize, PRInt64 **timestamps, PRUint32 *flagsSize, PRUnichar ***flags) { return _to PullGuestProperties(namesSize, names, valuesSize, values, timestampsSize, timestamps, flagsSize, flags); } \
  NS_IMETHOD PushGuestProperty(const PRUnichar *name, const PRUnichar *value, PRInt64 timestamp, const PRUnichar *flags) { return _to PushGuestProperty(name, value, timestamp, flags); } \
  NS_IMETHOD LockMedia(void) { return _to LockMedia(); } \
  NS_IMETHOD UnlockMedia(void) { return _to UnlockMedia(); } \
  NS_IMETHOD EjectMedium(IMediumAttachment *attachment, IMediumAttachment **newAttachment) { return _to EjectMedium(attachment, newAttachment); } \
  NS_IMETHOD ReportVmStatistics(PRUint32 validStats, PRUint32 cpuUser, PRUint32 cpuKernel, PRUint32 cpuIdle, PRUint32 memTotal, PRUint32 memFree, PRUint32 memBalloon, PRUint32 memShared, PRUint32 memCache, PRUint32 pagedTotal, PRUint32 memAllocTotal, PRUint32 memFreeTotal, PRUint32 memBalloonTotal, PRUint32 memSharedTotal, PRUint32 vmNetRx, PRUint32 vmNetTx) { return _to ReportVmStatistics(validStats, cpuUser, cpuKernel, cpuIdle, memTotal, memFree, memBalloon, memShared, memCache, pagedTotal, memAllocTotal, memFreeTotal, memBalloonTotal, memSharedTotal, vmNetRx, vmNetTx); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IINTERNALMACHINECONTROL(_to) \
  NS_IMETHOD SetRemoveSavedStateFile(PRBool remove) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRemoveSavedStateFile(remove); } \
  NS_IMETHOD UpdateState(PRUint32 state) { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateState(state); } \
  NS_IMETHOD BeginPowerUp(IProgress *progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->BeginPowerUp(progress); } \
  NS_IMETHOD EndPowerUp(PRInt32 result) { return !_to ? NS_ERROR_NULL_POINTER : _to->EndPowerUp(result); } \
  NS_IMETHOD BeginPoweringDown(IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->BeginPoweringDown(progress); } \
  NS_IMETHOD EndPoweringDown(PRInt32 result, const PRUnichar *errMsg) { return !_to ? NS_ERROR_NULL_POINTER : _to->EndPoweringDown(result, errMsg); } \
  NS_IMETHOD RunUSBDeviceFilters(IUSBDevice *device, PRBool *matched, PRUint32 *maskedInterfaces) { return !_to ? NS_ERROR_NULL_POINTER : _to->RunUSBDeviceFilters(device, matched, maskedInterfaces); } \
  NS_IMETHOD CaptureUSBDevice(const PRUnichar *id) { return !_to ? NS_ERROR_NULL_POINTER : _to->CaptureUSBDevice(id); } \
  NS_IMETHOD DetachUSBDevice(const PRUnichar *id, PRBool done) { return !_to ? NS_ERROR_NULL_POINTER : _to->DetachUSBDevice(id, done); } \
  NS_IMETHOD AutoCaptureUSBDevices(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->AutoCaptureUSBDevices(); } \
  NS_IMETHOD DetachAllUSBDevices(PRBool done) { return !_to ? NS_ERROR_NULL_POINTER : _to->DetachAllUSBDevices(done); } \
  NS_IMETHOD OnSessionEnd(ISession *session, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnSessionEnd(session, progress); } \
  NS_IMETHOD BeginSavingState(IProgress **progress, PRUnichar **stateFilePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->BeginSavingState(progress, stateFilePath); } \
  NS_IMETHOD EndSavingState(PRInt32 result, const PRUnichar *errMsg) { return !_to ? NS_ERROR_NULL_POINTER : _to->EndSavingState(result, errMsg); } \
  NS_IMETHOD AdoptSavedState(const PRUnichar *savedStateFile) { return !_to ? NS_ERROR_NULL_POINTER : _to->AdoptSavedState(savedStateFile); } \
  NS_IMETHOD BeginTakingSnapshot(IConsole *initiator, const PRUnichar *name, const PRUnichar *description, IProgress *consoleProgress, PRBool fTakingSnapshotOnline, PRUnichar **stateFilePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->BeginTakingSnapshot(initiator, name, description, consoleProgress, fTakingSnapshotOnline, stateFilePath); } \
  NS_IMETHOD EndTakingSnapshot(PRBool success) { return !_to ? NS_ERROR_NULL_POINTER : _to->EndTakingSnapshot(success); } \
  NS_IMETHOD DeleteSnapshot(IConsole *initiator, const PRUnichar *startId, const PRUnichar *endId, PRBool deleteAllChildren, PRUint32 *machineState, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteSnapshot(initiator, startId, endId, deleteAllChildren, machineState, progress); } \
  NS_IMETHOD FinishOnlineMergeMedium(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->FinishOnlineMergeMedium(); } \
  NS_IMETHOD RestoreSnapshot(IConsole *initiator, ISnapshot *snapshot, PRUint32 *machineState, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->RestoreSnapshot(initiator, snapshot, machineState, progress); } \
  NS_IMETHOD PullGuestProperties(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *valuesSize, PRUnichar ***values, PRUint32 *timestampsSize, PRInt64 **timestamps, PRUint32 *flagsSize, PRUnichar ***flags) { return !_to ? NS_ERROR_NULL_POINTER : _to->PullGuestProperties(namesSize, names, valuesSize, values, timestampsSize, timestamps, flagsSize, flags); } \
  NS_IMETHOD PushGuestProperty(const PRUnichar *name, const PRUnichar *value, PRInt64 timestamp, const PRUnichar *flags) { return !_to ? NS_ERROR_NULL_POINTER : _to->PushGuestProperty(name, value, timestamp, flags); } \
  NS_IMETHOD LockMedia(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->LockMedia(); } \
  NS_IMETHOD UnlockMedia(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnlockMedia(); } \
  NS_IMETHOD EjectMedium(IMediumAttachment *attachment, IMediumAttachment **newAttachment) { return !_to ? NS_ERROR_NULL_POINTER : _to->EjectMedium(attachment, newAttachment); } \
  NS_IMETHOD ReportVmStatistics(PRUint32 validStats, PRUint32 cpuUser, PRUint32 cpuKernel, PRUint32 cpuIdle, PRUint32 memTotal, PRUint32 memFree, PRUint32 memBalloon, PRUint32 memShared, PRUint32 memCache, PRUint32 pagedTotal, PRUint32 memAllocTotal, PRUint32 memFreeTotal, PRUint32 memBalloonTotal, PRUint32 memSharedTotal, PRUint32 vmNetRx, PRUint32 vmNetTx) { return !_to ? NS_ERROR_NULL_POINTER : _to->ReportVmStatistics(validStats, cpuUser, cpuKernel, cpuIdle, memTotal, memFree, memBalloon, memShared, memCache, pagedTotal, memAllocTotal, memFreeTotal, memBalloonTotal, memSharedTotal, vmNetRx, vmNetTx); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IInternalMachineControl
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IINTERNALMACHINECONTROL

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IInternalMachineControl)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* void setRemoveSavedStateFile (in boolean remove); */
NS_IMETHODIMP _MYCLASS_::SetRemoveSavedStateFile(PRBool remove)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void updateState (in PRUint32 state); */
NS_IMETHODIMP _MYCLASS_::UpdateState(PRUint32 state)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void beginPowerUp (in IProgress progress); */
NS_IMETHODIMP _MYCLASS_::BeginPowerUp(IProgress *progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void endPowerUp (in long result); */
NS_IMETHODIMP _MYCLASS_::EndPowerUp(PRInt32 result)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void beginPoweringDown (out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::BeginPoweringDown(IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void endPoweringDown (in long result, in wstring errMsg); */
NS_IMETHODIMP _MYCLASS_::EndPoweringDown(PRInt32 result, const PRUnichar *errMsg)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void runUSBDeviceFilters (in IUSBDevice device, out boolean matched, out unsigned long maskedInterfaces); */
NS_IMETHODIMP _MYCLASS_::RunUSBDeviceFilters(IUSBDevice *device, PRBool *matched, PRUint32 *maskedInterfaces)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void captureUSBDevice (in wstring id); */
NS_IMETHODIMP _MYCLASS_::CaptureUSBDevice(const PRUnichar *id)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void detachUSBDevice (in wstring id, in boolean done); */
NS_IMETHODIMP _MYCLASS_::DetachUSBDevice(const PRUnichar *id, PRBool done)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void autoCaptureUSBDevices (); */
NS_IMETHODIMP _MYCLASS_::AutoCaptureUSBDevices()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void detachAllUSBDevices (in boolean done); */
NS_IMETHODIMP _MYCLASS_::DetachAllUSBDevices(PRBool done)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onSessionEnd (in ISession session, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::OnSessionEnd(ISession *session, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void beginSavingState (out IProgress progress, out wstring stateFilePath); */
NS_IMETHODIMP _MYCLASS_::BeginSavingState(IProgress **progress, PRUnichar **stateFilePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void endSavingState (in long result, in wstring errMsg); */
NS_IMETHODIMP _MYCLASS_::EndSavingState(PRInt32 result, const PRUnichar *errMsg)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void adoptSavedState (in wstring savedStateFile); */
NS_IMETHODIMP _MYCLASS_::AdoptSavedState(const PRUnichar *savedStateFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void beginTakingSnapshot (in IConsole initiator, in wstring name, in wstring description, in IProgress consoleProgress, in boolean fTakingSnapshotOnline, out wstring stateFilePath); */
NS_IMETHODIMP _MYCLASS_::BeginTakingSnapshot(IConsole *initiator, const PRUnichar *name, const PRUnichar *description, IProgress *consoleProgress, PRBool fTakingSnapshotOnline, PRUnichar **stateFilePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void endTakingSnapshot (in boolean success); */
NS_IMETHODIMP _MYCLASS_::EndTakingSnapshot(PRBool success)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteSnapshot (in IConsole initiator, in wstring startId, in wstring endId, in boolean deleteAllChildren, out PRUint32 machineState, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::DeleteSnapshot(IConsole *initiator, const PRUnichar *startId, const PRUnichar *endId, PRBool deleteAllChildren, PRUint32 *machineState, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void finishOnlineMergeMedium (); */
NS_IMETHODIMP _MYCLASS_::FinishOnlineMergeMedium()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void restoreSnapshot (in IConsole initiator, in ISnapshot snapshot, out PRUint32 machineState, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::RestoreSnapshot(IConsole *initiator, ISnapshot *snapshot, PRUint32 *machineState, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void pullGuestProperties (out unsigned long namesSize, [array, size_is (namesSize)] out wstring names, out unsigned long valuesSize, [array, size_is (valuesSize)] out wstring values, out unsigned long timestampsSize, [array, size_is (timestampsSize)] out long long timestamps, out unsigned long flagsSize, [array, size_is (flagsSize)] out wstring flags); */
NS_IMETHODIMP _MYCLASS_::PullGuestProperties(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *valuesSize, PRUnichar ***values, PRUint32 *timestampsSize, PRInt64 **timestamps, PRUint32 *flagsSize, PRUnichar ***flags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void pushGuestProperty (in wstring name, in wstring value, in long long timestamp, in wstring flags); */
NS_IMETHODIMP _MYCLASS_::PushGuestProperty(const PRUnichar *name, const PRUnichar *value, PRInt64 timestamp, const PRUnichar *flags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void lockMedia (); */
NS_IMETHODIMP _MYCLASS_::LockMedia()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unlockMedia (); */
NS_IMETHODIMP _MYCLASS_::UnlockMedia()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void ejectMedium (in IMediumAttachment attachment, [retval] out IMediumAttachment newAttachment); */
NS_IMETHODIMP _MYCLASS_::EjectMedium(IMediumAttachment *attachment, IMediumAttachment **newAttachment)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void reportVmStatistics (in unsigned long validStats, in unsigned long cpuUser, in unsigned long cpuKernel, in unsigned long cpuIdle, in unsigned long memTotal, in unsigned long memFree, in unsigned long memBalloon, in unsigned long memShared, in unsigned long memCache, in unsigned long pagedTotal, in unsigned long memAllocTotal, in unsigned long memFreeTotal, in unsigned long memBalloonTotal, in unsigned long memSharedTotal, in unsigned long vmNetRx, in unsigned long vmNetTx); */
NS_IMETHODIMP _MYCLASS_::ReportVmStatistics(PRUint32 validStats, PRUint32 cpuUser, PRUint32 cpuKernel, PRUint32 cpuIdle, PRUint32 memTotal, PRUint32 memFree, PRUint32 memBalloon, PRUint32 memShared, PRUint32 memCache, PRUint32 pagedTotal, PRUint32 memAllocTotal, PRUint32 memFreeTotal, PRUint32 memBalloonTotal, PRUint32 memSharedTotal, PRUint32 vmNetRx, PRUint32 vmNetTx)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IInternalMachineControl_SetRemoveSavedStateFile_TO(smth) NS_IMETHOD SetRemoveSavedStateFile (PRBool aRemove) { return smth SetRemoveSavedStateFile (aRemove); }
#define COM_FORWARD_IInternalMachineControl_SetRemoveSavedStateFile_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_SetRemoveSavedStateFile_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_SetRemoveSavedStateFile_TO_BASE(base) COM_FORWARD_IInternalMachineControl_SetRemoveSavedStateFile_TO (base::)
#define COM_FORWARD_IInternalMachineControl_UpdateState_TO(smth) NS_IMETHOD UpdateState (PRUint32 aState) { return smth UpdateState (aState); }
#define COM_FORWARD_IInternalMachineControl_UpdateState_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_UpdateState_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_UpdateState_TO_BASE(base) COM_FORWARD_IInternalMachineControl_UpdateState_TO (base::)
#define COM_FORWARD_IInternalMachineControl_BeginPowerUp_TO(smth) NS_IMETHOD BeginPowerUp (IProgress * aProgress) { return smth BeginPowerUp (aProgress); }
#define COM_FORWARD_IInternalMachineControl_BeginPowerUp_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_BeginPowerUp_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_BeginPowerUp_TO_BASE(base) COM_FORWARD_IInternalMachineControl_BeginPowerUp_TO (base::)
#define COM_FORWARD_IInternalMachineControl_EndPowerUp_TO(smth) NS_IMETHOD EndPowerUp (PRInt32 aResult) { return smth EndPowerUp (aResult); }
#define COM_FORWARD_IInternalMachineControl_EndPowerUp_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_EndPowerUp_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_EndPowerUp_TO_BASE(base) COM_FORWARD_IInternalMachineControl_EndPowerUp_TO (base::)
#define COM_FORWARD_IInternalMachineControl_BeginPoweringDown_TO(smth) NS_IMETHOD BeginPoweringDown (IProgress * * aProgress) { return smth BeginPoweringDown (aProgress); }
#define COM_FORWARD_IInternalMachineControl_BeginPoweringDown_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_BeginPoweringDown_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_BeginPoweringDown_TO_BASE(base) COM_FORWARD_IInternalMachineControl_BeginPoweringDown_TO (base::)
#define COM_FORWARD_IInternalMachineControl_EndPoweringDown_TO(smth) NS_IMETHOD EndPoweringDown (PRInt32 aResult, PRUnichar * aErrMsg) { return smth EndPoweringDown (aResult, aErrMsg); }
#define COM_FORWARD_IInternalMachineControl_EndPoweringDown_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_EndPoweringDown_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_EndPoweringDown_TO_BASE(base) COM_FORWARD_IInternalMachineControl_EndPoweringDown_TO (base::)
#define COM_FORWARD_IInternalMachineControl_RunUSBDeviceFilters_TO(smth) NS_IMETHOD RunUSBDeviceFilters (IUSBDevice * aDevice, PRBool * aMatched, PRUint32 * aMaskedInterfaces) { return smth RunUSBDeviceFilters (aDevice, aMatched, aMaskedInterfaces); }
#define COM_FORWARD_IInternalMachineControl_RunUSBDeviceFilters_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_RunUSBDeviceFilters_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_RunUSBDeviceFilters_TO_BASE(base) COM_FORWARD_IInternalMachineControl_RunUSBDeviceFilters_TO (base::)
#define COM_FORWARD_IInternalMachineControl_CaptureUSBDevice_TO(smth) NS_IMETHOD CaptureUSBDevice (PRUnichar * aId) { return smth CaptureUSBDevice (aId); }
#define COM_FORWARD_IInternalMachineControl_CaptureUSBDevice_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_CaptureUSBDevice_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_CaptureUSBDevice_TO_BASE(base) COM_FORWARD_IInternalMachineControl_CaptureUSBDevice_TO (base::)
#define COM_FORWARD_IInternalMachineControl_DetachUSBDevice_TO(smth) NS_IMETHOD DetachUSBDevice (PRUnichar * aId, PRBool aDone) { return smth DetachUSBDevice (aId, aDone); }
#define COM_FORWARD_IInternalMachineControl_DetachUSBDevice_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_DetachUSBDevice_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_DetachUSBDevice_TO_BASE(base) COM_FORWARD_IInternalMachineControl_DetachUSBDevice_TO (base::)
#define COM_FORWARD_IInternalMachineControl_AutoCaptureUSBDevices_TO(smth) NS_IMETHOD AutoCaptureUSBDevices() { return smth AutoCaptureUSBDevices(); }
#define COM_FORWARD_IInternalMachineControl_AutoCaptureUSBDevices_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_AutoCaptureUSBDevices_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_AutoCaptureUSBDevices_TO_BASE(base) COM_FORWARD_IInternalMachineControl_AutoCaptureUSBDevices_TO (base::)
#define COM_FORWARD_IInternalMachineControl_DetachAllUSBDevices_TO(smth) NS_IMETHOD DetachAllUSBDevices (PRBool aDone) { return smth DetachAllUSBDevices (aDone); }
#define COM_FORWARD_IInternalMachineControl_DetachAllUSBDevices_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_DetachAllUSBDevices_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_DetachAllUSBDevices_TO_BASE(base) COM_FORWARD_IInternalMachineControl_DetachAllUSBDevices_TO (base::)
#define COM_FORWARD_IInternalMachineControl_OnSessionEnd_TO(smth) NS_IMETHOD OnSessionEnd (ISession * aSession, IProgress * * aProgress) { return smth OnSessionEnd (aSession, aProgress); }
#define COM_FORWARD_IInternalMachineControl_OnSessionEnd_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_OnSessionEnd_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_OnSessionEnd_TO_BASE(base) COM_FORWARD_IInternalMachineControl_OnSessionEnd_TO (base::)
#define COM_FORWARD_IInternalMachineControl_BeginSavingState_TO(smth) NS_IMETHOD BeginSavingState (IProgress * * aProgress, PRUnichar * * aStateFilePath) { return smth BeginSavingState (aProgress, aStateFilePath); }
#define COM_FORWARD_IInternalMachineControl_BeginSavingState_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_BeginSavingState_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_BeginSavingState_TO_BASE(base) COM_FORWARD_IInternalMachineControl_BeginSavingState_TO (base::)
#define COM_FORWARD_IInternalMachineControl_EndSavingState_TO(smth) NS_IMETHOD EndSavingState (PRInt32 aResult, PRUnichar * aErrMsg) { return smth EndSavingState (aResult, aErrMsg); }
#define COM_FORWARD_IInternalMachineControl_EndSavingState_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_EndSavingState_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_EndSavingState_TO_BASE(base) COM_FORWARD_IInternalMachineControl_EndSavingState_TO (base::)
#define COM_FORWARD_IInternalMachineControl_AdoptSavedState_TO(smth) NS_IMETHOD AdoptSavedState (PRUnichar * aSavedStateFile) { return smth AdoptSavedState (aSavedStateFile); }
#define COM_FORWARD_IInternalMachineControl_AdoptSavedState_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_AdoptSavedState_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_AdoptSavedState_TO_BASE(base) COM_FORWARD_IInternalMachineControl_AdoptSavedState_TO (base::)
#define COM_FORWARD_IInternalMachineControl_BeginTakingSnapshot_TO(smth) NS_IMETHOD BeginTakingSnapshot (IConsole * aInitiator, PRUnichar * aName, PRUnichar * aDescription, IProgress * aConsoleProgress, PRBool aFTakingSnapshotOnline, PRUnichar * * aStateFilePath) { return smth BeginTakingSnapshot (aInitiator, aName, aDescription, aConsoleProgress, aFTakingSnapshotOnline, aStateFilePath); }
#define COM_FORWARD_IInternalMachineControl_BeginTakingSnapshot_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_BeginTakingSnapshot_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_BeginTakingSnapshot_TO_BASE(base) COM_FORWARD_IInternalMachineControl_BeginTakingSnapshot_TO (base::)
#define COM_FORWARD_IInternalMachineControl_EndTakingSnapshot_TO(smth) NS_IMETHOD EndTakingSnapshot (PRBool aSuccess) { return smth EndTakingSnapshot (aSuccess); }
#define COM_FORWARD_IInternalMachineControl_EndTakingSnapshot_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_EndTakingSnapshot_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_EndTakingSnapshot_TO_BASE(base) COM_FORWARD_IInternalMachineControl_EndTakingSnapshot_TO (base::)
#define COM_FORWARD_IInternalMachineControl_DeleteSnapshot_TO(smth) NS_IMETHOD DeleteSnapshot (IConsole * aInitiator, PRUnichar * aStartId, PRUnichar * aEndId, PRBool aDeleteAllChildren, PRUint32 * aMachineState, IProgress * * aProgress) { return smth DeleteSnapshot (aInitiator, aStartId, aEndId, aDeleteAllChildren, aMachineState, aProgress); }
#define COM_FORWARD_IInternalMachineControl_DeleteSnapshot_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_DeleteSnapshot_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_DeleteSnapshot_TO_BASE(base) COM_FORWARD_IInternalMachineControl_DeleteSnapshot_TO (base::)
#define COM_FORWARD_IInternalMachineControl_FinishOnlineMergeMedium_TO(smth) NS_IMETHOD FinishOnlineMergeMedium() { return smth FinishOnlineMergeMedium(); }
#define COM_FORWARD_IInternalMachineControl_FinishOnlineMergeMedium_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_FinishOnlineMergeMedium_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_FinishOnlineMergeMedium_TO_BASE(base) COM_FORWARD_IInternalMachineControl_FinishOnlineMergeMedium_TO (base::)
#define COM_FORWARD_IInternalMachineControl_RestoreSnapshot_TO(smth) NS_IMETHOD RestoreSnapshot (IConsole * aInitiator, ISnapshot * aSnapshot, PRUint32 * aMachineState, IProgress * * aProgress) { return smth RestoreSnapshot (aInitiator, aSnapshot, aMachineState, aProgress); }
#define COM_FORWARD_IInternalMachineControl_RestoreSnapshot_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_RestoreSnapshot_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_RestoreSnapshot_TO_BASE(base) COM_FORWARD_IInternalMachineControl_RestoreSnapshot_TO (base::)
#define COM_FORWARD_IInternalMachineControl_PullGuestProperties_TO(smth) NS_IMETHOD PullGuestProperties (PRUint32 * aNamesSize, PRUnichar * * * aNames, PRUint32 * aValuesSize, PRUnichar * * * aValues, PRUint32 * aTimestampsSize, PRInt64 * * aTimestamps, PRUint32 * aFlagsSize, PRUnichar * * * aFlags) { return smth PullGuestProperties (aNamesSize+++, aNames, aValuesSize+++, aValues, aTimestampsSize+++, aTimestamps, aFlagsSize, aFlags); }
#define COM_FORWARD_IInternalMachineControl_PullGuestProperties_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_PullGuestProperties_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_PullGuestProperties_TO_BASE(base) COM_FORWARD_IInternalMachineControl_PullGuestProperties_TO (base::)
#define COM_FORWARD_IInternalMachineControl_PushGuestProperty_TO(smth) NS_IMETHOD PushGuestProperty (PRUnichar * aName, PRUnichar * aValue, PRInt64 aTimestamp, PRUnichar * aFlags) { return smth PushGuestProperty (aName, aValue, aTimestamp, aFlags); }
#define COM_FORWARD_IInternalMachineControl_PushGuestProperty_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_PushGuestProperty_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_PushGuestProperty_TO_BASE(base) COM_FORWARD_IInternalMachineControl_PushGuestProperty_TO (base::)
#define COM_FORWARD_IInternalMachineControl_LockMedia_TO(smth) NS_IMETHOD LockMedia() { return smth LockMedia(); }
#define COM_FORWARD_IInternalMachineControl_LockMedia_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_LockMedia_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_LockMedia_TO_BASE(base) COM_FORWARD_IInternalMachineControl_LockMedia_TO (base::)
#define COM_FORWARD_IInternalMachineControl_UnlockMedia_TO(smth) NS_IMETHOD UnlockMedia() { return smth UnlockMedia(); }
#define COM_FORWARD_IInternalMachineControl_UnlockMedia_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_UnlockMedia_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_UnlockMedia_TO_BASE(base) COM_FORWARD_IInternalMachineControl_UnlockMedia_TO (base::)
#define COM_FORWARD_IInternalMachineControl_EjectMedium_TO(smth) NS_IMETHOD EjectMedium (IMediumAttachment * aAttachment, IMediumAttachment * * aNewAttachment) { return smth EjectMedium (aAttachment, aNewAttachment); }
#define COM_FORWARD_IInternalMachineControl_EjectMedium_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_EjectMedium_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_EjectMedium_TO_BASE(base) COM_FORWARD_IInternalMachineControl_EjectMedium_TO (base::)
#define COM_FORWARD_IInternalMachineControl_ReportVmStatistics_TO(smth) NS_IMETHOD ReportVmStatistics (PRUint32 aValidStats, PRUint32 aCpuUser, PRUint32 aCpuKernel, PRUint32 aCpuIdle, PRUint32 aMemTotal, PRUint32 aMemFree, PRUint32 aMemBalloon, PRUint32 aMemShared, PRUint32 aMemCache, PRUint32 aPagedTotal, PRUint32 aMemAllocTotal, PRUint32 aMemFreeTotal, PRUint32 aMemBalloonTotal, PRUint32 aMemSharedTotal, PRUint32 aVmNetRx, PRUint32 aVmNetTx) { return smth ReportVmStatistics (aValidStats, aCpuUser, aCpuKernel, aCpuIdle, aMemTotal, aMemFree, aMemBalloon, aMemShared, aMemCache, aPagedTotal, aMemAllocTotal, aMemFreeTotal, aMemBalloonTotal, aMemSharedTotal, aVmNetRx, aVmNetTx); }
#define COM_FORWARD_IInternalMachineControl_ReportVmStatistics_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_ReportVmStatistics_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_ReportVmStatistics_TO_BASE(base) COM_FORWARD_IInternalMachineControl_ReportVmStatistics_TO (base::)
#define COM_FORWARD_IInternalMachineControl_TO(smth) NS_FORWARD_IINTERNALMACHINECONTROL (smth)
#define COM_FORWARD_IInternalMachineControl_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_TO_BASE(base) COM_FORWARD_IInternalMachineControl_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IInternalMachineControl;

/* starting interface:    IBIOSSettings */
#define IBIOSSETTINGS_IID_STR "38b54279-dc35-4f5e-a431-835b867c6b5e"

#define IBIOSSETTINGS_IID \
  {0x38b54279, 0xdc35, 0x4f5e, \
    { 0xa4, 0x31, 0x83, 0x5b, 0x86, 0x7c, 0x6b, 0x5e }}

class NS_NO_VTABLE IBIOSSettings : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IBIOSSETTINGS_IID)

  /* attribute boolean logoFadeIn; */
  NS_IMETHOD GetLogoFadeIn(PRBool *aLogoFadeIn) = 0;
  NS_IMETHOD SetLogoFadeIn(PRBool aLogoFadeIn) = 0;

  /* attribute boolean logoFadeOut; */
  NS_IMETHOD GetLogoFadeOut(PRBool *aLogoFadeOut) = 0;
  NS_IMETHOD SetLogoFadeOut(PRBool aLogoFadeOut) = 0;

  /* attribute unsigned long logoDisplayTime; */
  NS_IMETHOD GetLogoDisplayTime(PRUint32 *aLogoDisplayTime) = 0;
  NS_IMETHOD SetLogoDisplayTime(PRUint32 aLogoDisplayTime) = 0;

  /* attribute wstring logoImagePath; */
  NS_IMETHOD GetLogoImagePath(PRUnichar * *aLogoImagePath) = 0;
  NS_IMETHOD SetLogoImagePath(const PRUnichar * aLogoImagePath) = 0;

  /* attribute PRUint32 bootMenuMode; */
  NS_IMETHOD GetBootMenuMode(PRUint32 *aBootMenuMode) = 0;
  NS_IMETHOD SetBootMenuMode(PRUint32 aBootMenuMode) = 0;

  /* attribute boolean ACPIEnabled; */
  NS_IMETHOD GetACPIEnabled(PRBool *aACPIEnabled) = 0;
  NS_IMETHOD SetACPIEnabled(PRBool aACPIEnabled) = 0;

  /* attribute boolean IOAPICEnabled; */
  NS_IMETHOD GetIOAPICEnabled(PRBool *aIOAPICEnabled) = 0;
  NS_IMETHOD SetIOAPICEnabled(PRBool aIOAPICEnabled) = 0;

  /* attribute long long timeOffset; */
  NS_IMETHOD GetTimeOffset(PRInt64 *aTimeOffset) = 0;
  NS_IMETHOD SetTimeOffset(PRInt64 aTimeOffset) = 0;

  /* attribute boolean PXEDebugEnabled; */
  NS_IMETHOD GetPXEDebugEnabled(PRBool *aPXEDebugEnabled) = 0;
  NS_IMETHOD SetPXEDebugEnabled(PRBool aPXEDebugEnabled) = 0;

  /* readonly attribute wstring nonVolatileStorageFile; */
  NS_IMETHOD GetNonVolatileStorageFile(PRUnichar * *aNonVolatileStorageFile) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IBIOSSETTINGS \
  NS_IMETHOD GetLogoFadeIn(PRBool *aLogoFadeIn); \
  NS_IMETHOD SetLogoFadeIn(PRBool aLogoFadeIn); \
  NS_IMETHOD GetLogoFadeOut(PRBool *aLogoFadeOut); \
  NS_IMETHOD SetLogoFadeOut(PRBool aLogoFadeOut); \
  NS_IMETHOD GetLogoDisplayTime(PRUint32 *aLogoDisplayTime); \
  NS_IMETHOD SetLogoDisplayTime(PRUint32 aLogoDisplayTime); \
  NS_IMETHOD GetLogoImagePath(PRUnichar * *aLogoImagePath); \
  NS_IMETHOD SetLogoImagePath(const PRUnichar * aLogoImagePath); \
  NS_IMETHOD GetBootMenuMode(PRUint32 *aBootMenuMode); \
  NS_IMETHOD SetBootMenuMode(PRUint32 aBootMenuMode); \
  NS_IMETHOD GetACPIEnabled(PRBool *aACPIEnabled); \
  NS_IMETHOD SetACPIEnabled(PRBool aACPIEnabled); \
  NS_IMETHOD GetIOAPICEnabled(PRBool *aIOAPICEnabled); \
  NS_IMETHOD SetIOAPICEnabled(PRBool aIOAPICEnabled); \
  NS_IMETHOD GetTimeOffset(PRInt64 *aTimeOffset); \
  NS_IMETHOD SetTimeOffset(PRInt64 aTimeOffset); \
  NS_IMETHOD GetPXEDebugEnabled(PRBool *aPXEDebugEnabled); \
  NS_IMETHOD SetPXEDebugEnabled(PRBool aPXEDebugEnabled); \
  NS_IMETHOD GetNonVolatileStorageFile(PRUnichar * *aNonVolatileStorageFile); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IBIOSSETTINGS(_to) \
  NS_IMETHOD GetLogoFadeIn(PRBool *aLogoFadeIn) { return _to GetLogoFadeIn(aLogoFadeIn); } \
  NS_IMETHOD SetLogoFadeIn(PRBool aLogoFadeIn) { return _to SetLogoFadeIn(aLogoFadeIn); } \
  NS_IMETHOD GetLogoFadeOut(PRBool *aLogoFadeOut) { return _to GetLogoFadeOut(aLogoFadeOut); } \
  NS_IMETHOD SetLogoFadeOut(PRBool aLogoFadeOut) { return _to SetLogoFadeOut(aLogoFadeOut); } \
  NS_IMETHOD GetLogoDisplayTime(PRUint32 *aLogoDisplayTime) { return _to GetLogoDisplayTime(aLogoDisplayTime); } \
  NS_IMETHOD SetLogoDisplayTime(PRUint32 aLogoDisplayTime) { return _to SetLogoDisplayTime(aLogoDisplayTime); } \
  NS_IMETHOD GetLogoImagePath(PRUnichar * *aLogoImagePath) { return _to GetLogoImagePath(aLogoImagePath); } \
  NS_IMETHOD SetLogoImagePath(const PRUnichar * aLogoImagePath) { return _to SetLogoImagePath(aLogoImagePath); } \
  NS_IMETHOD GetBootMenuMode(PRUint32 *aBootMenuMode) { return _to GetBootMenuMode(aBootMenuMode); } \
  NS_IMETHOD SetBootMenuMode(PRUint32 aBootMenuMode) { return _to SetBootMenuMode(aBootMenuMode); } \
  NS_IMETHOD GetACPIEnabled(PRBool *aACPIEnabled) { return _to GetACPIEnabled(aACPIEnabled); } \
  NS_IMETHOD SetACPIEnabled(PRBool aACPIEnabled) { return _to SetACPIEnabled(aACPIEnabled); } \
  NS_IMETHOD GetIOAPICEnabled(PRBool *aIOAPICEnabled) { return _to GetIOAPICEnabled(aIOAPICEnabled); } \
  NS_IMETHOD SetIOAPICEnabled(PRBool aIOAPICEnabled) { return _to SetIOAPICEnabled(aIOAPICEnabled); } \
  NS_IMETHOD GetTimeOffset(PRInt64 *aTimeOffset) { return _to GetTimeOffset(aTimeOffset); } \
  NS_IMETHOD SetTimeOffset(PRInt64 aTimeOffset) { return _to SetTimeOffset(aTimeOffset); } \
  NS_IMETHOD GetPXEDebugEnabled(PRBool *aPXEDebugEnabled) { return _to GetPXEDebugEnabled(aPXEDebugEnabled); } \
  NS_IMETHOD SetPXEDebugEnabled(PRBool aPXEDebugEnabled) { return _to SetPXEDebugEnabled(aPXEDebugEnabled); } \
  NS_IMETHOD GetNonVolatileStorageFile(PRUnichar * *aNonVolatileStorageFile) { return _to GetNonVolatileStorageFile(aNonVolatileStorageFile); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IBIOSSETTINGS(_to) \
  NS_IMETHOD GetLogoFadeIn(PRBool *aLogoFadeIn) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogoFadeIn(aLogoFadeIn); } \
  NS_IMETHOD SetLogoFadeIn(PRBool aLogoFadeIn) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLogoFadeIn(aLogoFadeIn); } \
  NS_IMETHOD GetLogoFadeOut(PRBool *aLogoFadeOut) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogoFadeOut(aLogoFadeOut); } \
  NS_IMETHOD SetLogoFadeOut(PRBool aLogoFadeOut) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLogoFadeOut(aLogoFadeOut); } \
  NS_IMETHOD GetLogoDisplayTime(PRUint32 *aLogoDisplayTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogoDisplayTime(aLogoDisplayTime); } \
  NS_IMETHOD SetLogoDisplayTime(PRUint32 aLogoDisplayTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLogoDisplayTime(aLogoDisplayTime); } \
  NS_IMETHOD GetLogoImagePath(PRUnichar * *aLogoImagePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogoImagePath(aLogoImagePath); } \
  NS_IMETHOD SetLogoImagePath(const PRUnichar * aLogoImagePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLogoImagePath(aLogoImagePath); } \
  NS_IMETHOD GetBootMenuMode(PRUint32 *aBootMenuMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBootMenuMode(aBootMenuMode); } \
  NS_IMETHOD SetBootMenuMode(PRUint32 aBootMenuMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBootMenuMode(aBootMenuMode); } \
  NS_IMETHOD GetACPIEnabled(PRBool *aACPIEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetACPIEnabled(aACPIEnabled); } \
  NS_IMETHOD SetACPIEnabled(PRBool aACPIEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetACPIEnabled(aACPIEnabled); } \
  NS_IMETHOD GetIOAPICEnabled(PRBool *aIOAPICEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIOAPICEnabled(aIOAPICEnabled); } \
  NS_IMETHOD SetIOAPICEnabled(PRBool aIOAPICEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIOAPICEnabled(aIOAPICEnabled); } \
  NS_IMETHOD GetTimeOffset(PRInt64 *aTimeOffset) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTimeOffset(aTimeOffset); } \
  NS_IMETHOD SetTimeOffset(PRInt64 aTimeOffset) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTimeOffset(aTimeOffset); } \
  NS_IMETHOD GetPXEDebugEnabled(PRBool *aPXEDebugEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPXEDebugEnabled(aPXEDebugEnabled); } \
  NS_IMETHOD SetPXEDebugEnabled(PRBool aPXEDebugEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPXEDebugEnabled(aPXEDebugEnabled); } \
  NS_IMETHOD GetNonVolatileStorageFile(PRUnichar * *aNonVolatileStorageFile) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNonVolatileStorageFile(aNonVolatileStorageFile); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class IBOSSettings : public IBIOSSettings
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IBIOSSETTINGS

  IBOSSettings();

private:
  ~IBOSSettings();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(IBOSSettings, IBIOSSettings)

IBOSSettings::IBOSSettings()
{
  /* member initializers and constructor code */
}

IBOSSettings::~IBOSSettings()
{
  /* destructor code */
}

/* attribute boolean logoFadeIn; */
NS_IMETHODIMP IBOSSettings::GetLogoFadeIn(PRBool *aLogoFadeIn)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP IBOSSettings::SetLogoFadeIn(PRBool aLogoFadeIn)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean logoFadeOut; */
NS_IMETHODIMP IBOSSettings::GetLogoFadeOut(PRBool *aLogoFadeOut)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP IBOSSettings::SetLogoFadeOut(PRBool aLogoFadeOut)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long logoDisplayTime; */
NS_IMETHODIMP IBOSSettings::GetLogoDisplayTime(PRUint32 *aLogoDisplayTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP IBOSSettings::SetLogoDisplayTime(PRUint32 aLogoDisplayTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring logoImagePath; */
NS_IMETHODIMP IBOSSettings::GetLogoImagePath(PRUnichar * *aLogoImagePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP IBOSSettings::SetLogoImagePath(const PRUnichar * aLogoImagePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 bootMenuMode; */
NS_IMETHODIMP IBOSSettings::GetBootMenuMode(PRUint32 *aBootMenuMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP IBOSSettings::SetBootMenuMode(PRUint32 aBootMenuMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean ACPIEnabled; */
NS_IMETHODIMP IBOSSettings::GetACPIEnabled(PRBool *aACPIEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP IBOSSettings::SetACPIEnabled(PRBool aACPIEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean IOAPICEnabled; */
NS_IMETHODIMP IBOSSettings::GetIOAPICEnabled(PRBool *aIOAPICEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP IBOSSettings::SetIOAPICEnabled(PRBool aIOAPICEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute long long timeOffset; */
NS_IMETHODIMP IBOSSettings::GetTimeOffset(PRInt64 *aTimeOffset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP IBOSSettings::SetTimeOffset(PRInt64 aTimeOffset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean PXEDebugEnabled; */
NS_IMETHODIMP IBOSSettings::GetPXEDebugEnabled(PRBool *aPXEDebugEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP IBOSSettings::SetPXEDebugEnabled(PRBool aPXEDebugEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring nonVolatileStorageFile; */
NS_IMETHODIMP IBOSSettings::GetNonVolatileStorageFile(PRUnichar * *aNonVolatileStorageFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IBIOSSettings_GETTER_LogoFadeIn_TO(smth) NS_IMETHOD GetLogoFadeIn (PRBool * aLogoFadeIn) { return smth GetLogoFadeIn (aLogoFadeIn); }
#define COM_FORWARD_IBIOSSettings_GETTER_LogoFadeIn_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_GETTER_LogoFadeIn_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_GETTER_LogoFadeIn_TO_BASE(base) COM_FORWARD_IBIOSSettings_GETTER_LogoFadeIn_TO (base::)
#define COM_FORWARD_IBIOSSettings_SETTER_LogoFadeIn_TO(smth) NS_IMETHOD SetLogoFadeIn (PRBool aLogoFadeIn) { return smth SetLogoFadeIn (aLogoFadeIn); }
#define COM_FORWARD_IBIOSSettings_SETTER_LogoFadeIn_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_SETTER_LogoFadeIn_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_SETTER_LogoFadeIn_TO_BASE(base) COM_FORWARD_IBIOSSettings_SETTER_LogoFadeIn_TO (base::)
#define COM_FORWARD_IBIOSSettings_GETTER_LogoFadeOut_TO(smth) NS_IMETHOD GetLogoFadeOut (PRBool * aLogoFadeOut) { return smth GetLogoFadeOut (aLogoFadeOut); }
#define COM_FORWARD_IBIOSSettings_GETTER_LogoFadeOut_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_GETTER_LogoFadeOut_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_GETTER_LogoFadeOut_TO_BASE(base) COM_FORWARD_IBIOSSettings_GETTER_LogoFadeOut_TO (base::)
#define COM_FORWARD_IBIOSSettings_SETTER_LogoFadeOut_TO(smth) NS_IMETHOD SetLogoFadeOut (PRBool aLogoFadeOut) { return smth SetLogoFadeOut (aLogoFadeOut); }
#define COM_FORWARD_IBIOSSettings_SETTER_LogoFadeOut_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_SETTER_LogoFadeOut_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_SETTER_LogoFadeOut_TO_BASE(base) COM_FORWARD_IBIOSSettings_SETTER_LogoFadeOut_TO (base::)
#define COM_FORWARD_IBIOSSettings_GETTER_LogoDisplayTime_TO(smth) NS_IMETHOD GetLogoDisplayTime (PRUint32 * aLogoDisplayTime) { return smth GetLogoDisplayTime (aLogoDisplayTime); }
#define COM_FORWARD_IBIOSSettings_GETTER_LogoDisplayTime_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_GETTER_LogoDisplayTime_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_GETTER_LogoDisplayTime_TO_BASE(base) COM_FORWARD_IBIOSSettings_GETTER_LogoDisplayTime_TO (base::)
#define COM_FORWARD_IBIOSSettings_SETTER_LogoDisplayTime_TO(smth) NS_IMETHOD SetLogoDisplayTime (PRUint32 aLogoDisplayTime) { return smth SetLogoDisplayTime (aLogoDisplayTime); }
#define COM_FORWARD_IBIOSSettings_SETTER_LogoDisplayTime_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_SETTER_LogoDisplayTime_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_SETTER_LogoDisplayTime_TO_BASE(base) COM_FORWARD_IBIOSSettings_SETTER_LogoDisplayTime_TO (base::)
#define COM_FORWARD_IBIOSSettings_GETTER_LogoImagePath_TO(smth) NS_IMETHOD GetLogoImagePath (PRUnichar * * aLogoImagePath) { return smth GetLogoImagePath (aLogoImagePath); }
#define COM_FORWARD_IBIOSSettings_GETTER_LogoImagePath_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_GETTER_LogoImagePath_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_GETTER_LogoImagePath_TO_BASE(base) COM_FORWARD_IBIOSSettings_GETTER_LogoImagePath_TO (base::)
#define COM_FORWARD_IBIOSSettings_SETTER_LogoImagePath_TO(smth) NS_IMETHOD SetLogoImagePath (const PRUnichar * aLogoImagePath) { return smth SetLogoImagePath (aLogoImagePath); }
#define COM_FORWARD_IBIOSSettings_SETTER_LogoImagePath_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_SETTER_LogoImagePath_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_SETTER_LogoImagePath_TO_BASE(base) COM_FORWARD_IBIOSSettings_SETTER_LogoImagePath_TO (base::)
#define COM_FORWARD_IBIOSSettings_GETTER_BootMenuMode_TO(smth) NS_IMETHOD GetBootMenuMode (PRUint32 * aBootMenuMode) { return smth GetBootMenuMode (aBootMenuMode); }
#define COM_FORWARD_IBIOSSettings_GETTER_BootMenuMode_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_GETTER_BootMenuMode_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_GETTER_BootMenuMode_TO_BASE(base) COM_FORWARD_IBIOSSettings_GETTER_BootMenuMode_TO (base::)
#define COM_FORWARD_IBIOSSettings_SETTER_BootMenuMode_TO(smth) NS_IMETHOD SetBootMenuMode (PRUint32 aBootMenuMode) { return smth SetBootMenuMode (aBootMenuMode); }
#define COM_FORWARD_IBIOSSettings_SETTER_BootMenuMode_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_SETTER_BootMenuMode_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_SETTER_BootMenuMode_TO_BASE(base) COM_FORWARD_IBIOSSettings_SETTER_BootMenuMode_TO (base::)
#define COM_FORWARD_IBIOSSettings_GETTER_ACPIEnabled_TO(smth) NS_IMETHOD GetACPIEnabled (PRBool * aACPIEnabled) { return smth GetACPIEnabled (aACPIEnabled); }
#define COM_FORWARD_IBIOSSettings_GETTER_ACPIEnabled_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_GETTER_ACPIEnabled_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_GETTER_ACPIEnabled_TO_BASE(base) COM_FORWARD_IBIOSSettings_GETTER_ACPIEnabled_TO (base::)
#define COM_FORWARD_IBIOSSettings_SETTER_ACPIEnabled_TO(smth) NS_IMETHOD SetACPIEnabled (PRBool aACPIEnabled) { return smth SetACPIEnabled (aACPIEnabled); }
#define COM_FORWARD_IBIOSSettings_SETTER_ACPIEnabled_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_SETTER_ACPIEnabled_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_SETTER_ACPIEnabled_TO_BASE(base) COM_FORWARD_IBIOSSettings_SETTER_ACPIEnabled_TO (base::)
#define COM_FORWARD_IBIOSSettings_GETTER_IOAPICEnabled_TO(smth) NS_IMETHOD GetIOAPICEnabled (PRBool * aIOAPICEnabled) { return smth GetIOAPICEnabled (aIOAPICEnabled); }
#define COM_FORWARD_IBIOSSettings_GETTER_IOAPICEnabled_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_GETTER_IOAPICEnabled_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_GETTER_IOAPICEnabled_TO_BASE(base) COM_FORWARD_IBIOSSettings_GETTER_IOAPICEnabled_TO (base::)
#define COM_FORWARD_IBIOSSettings_SETTER_IOAPICEnabled_TO(smth) NS_IMETHOD SetIOAPICEnabled (PRBool aIOAPICEnabled) { return smth SetIOAPICEnabled (aIOAPICEnabled); }
#define COM_FORWARD_IBIOSSettings_SETTER_IOAPICEnabled_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_SETTER_IOAPICEnabled_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_SETTER_IOAPICEnabled_TO_BASE(base) COM_FORWARD_IBIOSSettings_SETTER_IOAPICEnabled_TO (base::)
#define COM_FORWARD_IBIOSSettings_GETTER_TimeOffset_TO(smth) NS_IMETHOD GetTimeOffset (PRInt64 * aTimeOffset) { return smth GetTimeOffset (aTimeOffset); }
#define COM_FORWARD_IBIOSSettings_GETTER_TimeOffset_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_GETTER_TimeOffset_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_GETTER_TimeOffset_TO_BASE(base) COM_FORWARD_IBIOSSettings_GETTER_TimeOffset_TO (base::)
#define COM_FORWARD_IBIOSSettings_SETTER_TimeOffset_TO(smth) NS_IMETHOD SetTimeOffset (PRInt64 aTimeOffset) { return smth SetTimeOffset (aTimeOffset); }
#define COM_FORWARD_IBIOSSettings_SETTER_TimeOffset_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_SETTER_TimeOffset_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_SETTER_TimeOffset_TO_BASE(base) COM_FORWARD_IBIOSSettings_SETTER_TimeOffset_TO (base::)
#define COM_FORWARD_IBIOSSettings_GETTER_PXEDebugEnabled_TO(smth) NS_IMETHOD GetPXEDebugEnabled (PRBool * aPXEDebugEnabled) { return smth GetPXEDebugEnabled (aPXEDebugEnabled); }
#define COM_FORWARD_IBIOSSettings_GETTER_PXEDebugEnabled_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_GETTER_PXEDebugEnabled_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_GETTER_PXEDebugEnabled_TO_BASE(base) COM_FORWARD_IBIOSSettings_GETTER_PXEDebugEnabled_TO (base::)
#define COM_FORWARD_IBIOSSettings_SETTER_PXEDebugEnabled_TO(smth) NS_IMETHOD SetPXEDebugEnabled (PRBool aPXEDebugEnabled) { return smth SetPXEDebugEnabled (aPXEDebugEnabled); }
#define COM_FORWARD_IBIOSSettings_SETTER_PXEDebugEnabled_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_SETTER_PXEDebugEnabled_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_SETTER_PXEDebugEnabled_TO_BASE(base) COM_FORWARD_IBIOSSettings_SETTER_PXEDebugEnabled_TO (base::)
#define COM_FORWARD_IBIOSSettings_GETTER_NonVolatileStorageFile_TO(smth) NS_IMETHOD GetNonVolatileStorageFile (PRUnichar * * aNonVolatileStorageFile) { return smth GetNonVolatileStorageFile (aNonVolatileStorageFile); }
#define COM_FORWARD_IBIOSSettings_GETTER_NonVolatileStorageFile_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_GETTER_NonVolatileStorageFile_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_GETTER_NonVolatileStorageFile_TO_BASE(base) COM_FORWARD_IBIOSSettings_GETTER_NonVolatileStorageFile_TO (base::)
#define COM_FORWARD_IBIOSSettings_TO(smth) NS_FORWARD_IBIOSSETTINGS (smth)
#define COM_FORWARD_IBIOSSettings_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_TO_BASE(base) COM_FORWARD_IBIOSSettings_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IBIOSSettings;

/* starting interface:    IPCIAddress */
#define IPCIADDRESS_IID_STR "c984d15f-e191-400b-840e-970f3dad7296"

#define IPCIADDRESS_IID \
  {0xc984d15f, 0xe191, 0x400b, \
    { 0x84, 0x0e, 0x97, 0x0f, 0x3d, 0xad, 0x72, 0x96 }}

class NS_NO_VTABLE IPCIAddress : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IPCIADDRESS_IID)

  /* attribute short bus; */
  NS_IMETHOD GetBus(PRInt16 *aBus) = 0;
  NS_IMETHOD SetBus(PRInt16 aBus) = 0;

  /* attribute short device; */
  NS_IMETHOD GetDevice(PRInt16 *aDevice) = 0;
  NS_IMETHOD SetDevice(PRInt16 aDevice) = 0;

  /* attribute short devFunction; */
  NS_IMETHOD GetDevFunction(PRInt16 *aDevFunction) = 0;
  NS_IMETHOD SetDevFunction(PRInt16 aDevFunction) = 0;

  /* void asLong ([retval] out long result); */
  NS_IMETHOD AsLong(PRInt32 *result) = 0;

  /* void fromLong (in long number); */
  NS_IMETHOD FromLong(PRInt32 number) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IPCIADDRESS \
  NS_IMETHOD GetBus(PRInt16 *aBus); \
  NS_IMETHOD SetBus(PRInt16 aBus); \
  NS_IMETHOD GetDevice(PRInt16 *aDevice); \
  NS_IMETHOD SetDevice(PRInt16 aDevice); \
  NS_IMETHOD GetDevFunction(PRInt16 *aDevFunction); \
  NS_IMETHOD SetDevFunction(PRInt16 aDevFunction); \
  NS_IMETHOD AsLong(PRInt32 *result); \
  NS_IMETHOD FromLong(PRInt32 number); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IPCIADDRESS(_to) \
  NS_IMETHOD GetBus(PRInt16 *aBus) { return _to GetBus(aBus); } \
  NS_IMETHOD SetBus(PRInt16 aBus) { return _to SetBus(aBus); } \
  NS_IMETHOD GetDevice(PRInt16 *aDevice) { return _to GetDevice(aDevice); } \
  NS_IMETHOD SetDevice(PRInt16 aDevice) { return _to SetDevice(aDevice); } \
  NS_IMETHOD GetDevFunction(PRInt16 *aDevFunction) { return _to GetDevFunction(aDevFunction); } \
  NS_IMETHOD SetDevFunction(PRInt16 aDevFunction) { return _to SetDevFunction(aDevFunction); } \
  NS_IMETHOD AsLong(PRInt32 *result) { return _to AsLong(result); } \
  NS_IMETHOD FromLong(PRInt32 number) { return _to FromLong(number); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IPCIADDRESS(_to) \
  NS_IMETHOD GetBus(PRInt16 *aBus) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBus(aBus); } \
  NS_IMETHOD SetBus(PRInt16 aBus) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBus(aBus); } \
  NS_IMETHOD GetDevice(PRInt16 *aDevice) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDevice(aDevice); } \
  NS_IMETHOD SetDevice(PRInt16 aDevice) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDevice(aDevice); } \
  NS_IMETHOD GetDevFunction(PRInt16 *aDevFunction) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDevFunction(aDevFunction); } \
  NS_IMETHOD SetDevFunction(PRInt16 aDevFunction) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDevFunction(aDevFunction); } \
  NS_IMETHOD AsLong(PRInt32 *result) { return !_to ? NS_ERROR_NULL_POINTER : _to->AsLong(result); } \
  NS_IMETHOD FromLong(PRInt32 number) { return !_to ? NS_ERROR_NULL_POINTER : _to->FromLong(number); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IPCIAddress
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IPCIADDRESS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IPCIAddress)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* attribute short bus; */
NS_IMETHODIMP _MYCLASS_::GetBus(PRInt16 *aBus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetBus(PRInt16 aBus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute short device; */
NS_IMETHODIMP _MYCLASS_::GetDevice(PRInt16 *aDevice)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDevice(PRInt16 aDevice)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute short devFunction; */
NS_IMETHODIMP _MYCLASS_::GetDevFunction(PRInt16 *aDevFunction)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDevFunction(PRInt16 aDevFunction)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void asLong ([retval] out long result); */
NS_IMETHODIMP _MYCLASS_::AsLong(PRInt32 *result)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void fromLong (in long number); */
NS_IMETHODIMP _MYCLASS_::FromLong(PRInt32 number)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IPCIAddress_GETTER_Bus_TO(smth) NS_IMETHOD GetBus (PRInt16 * aBus) { return smth GetBus (aBus); }
#define COM_FORWARD_IPCIAddress_GETTER_Bus_TO_OBJ(obj) COM_FORWARD_IPCIAddress_GETTER_Bus_TO ((obj)->)
#define COM_FORWARD_IPCIAddress_GETTER_Bus_TO_BASE(base) COM_FORWARD_IPCIAddress_GETTER_Bus_TO (base::)
#define COM_FORWARD_IPCIAddress_SETTER_Bus_TO(smth) NS_IMETHOD SetBus (PRInt16 aBus) { return smth SetBus (aBus); }
#define COM_FORWARD_IPCIAddress_SETTER_Bus_TO_OBJ(obj) COM_FORWARD_IPCIAddress_SETTER_Bus_TO ((obj)->)
#define COM_FORWARD_IPCIAddress_SETTER_Bus_TO_BASE(base) COM_FORWARD_IPCIAddress_SETTER_Bus_TO (base::)
#define COM_FORWARD_IPCIAddress_GETTER_Device_TO(smth) NS_IMETHOD GetDevice (PRInt16 * aDevice) { return smth GetDevice (aDevice); }
#define COM_FORWARD_IPCIAddress_GETTER_Device_TO_OBJ(obj) COM_FORWARD_IPCIAddress_GETTER_Device_TO ((obj)->)
#define COM_FORWARD_IPCIAddress_GETTER_Device_TO_BASE(base) COM_FORWARD_IPCIAddress_GETTER_Device_TO (base::)
#define COM_FORWARD_IPCIAddress_SETTER_Device_TO(smth) NS_IMETHOD SetDevice (PRInt16 aDevice) { return smth SetDevice (aDevice); }
#define COM_FORWARD_IPCIAddress_SETTER_Device_TO_OBJ(obj) COM_FORWARD_IPCIAddress_SETTER_Device_TO ((obj)->)
#define COM_FORWARD_IPCIAddress_SETTER_Device_TO_BASE(base) COM_FORWARD_IPCIAddress_SETTER_Device_TO (base::)
#define COM_FORWARD_IPCIAddress_GETTER_DevFunction_TO(smth) NS_IMETHOD GetDevFunction (PRInt16 * aDevFunction) { return smth GetDevFunction (aDevFunction); }
#define COM_FORWARD_IPCIAddress_GETTER_DevFunction_TO_OBJ(obj) COM_FORWARD_IPCIAddress_GETTER_DevFunction_TO ((obj)->)
#define COM_FORWARD_IPCIAddress_GETTER_DevFunction_TO_BASE(base) COM_FORWARD_IPCIAddress_GETTER_DevFunction_TO (base::)
#define COM_FORWARD_IPCIAddress_SETTER_DevFunction_TO(smth) NS_IMETHOD SetDevFunction (PRInt16 aDevFunction) { return smth SetDevFunction (aDevFunction); }
#define COM_FORWARD_IPCIAddress_SETTER_DevFunction_TO_OBJ(obj) COM_FORWARD_IPCIAddress_SETTER_DevFunction_TO ((obj)->)
#define COM_FORWARD_IPCIAddress_SETTER_DevFunction_TO_BASE(base) COM_FORWARD_IPCIAddress_SETTER_DevFunction_TO (base::)
#define COM_FORWARD_IPCIAddress_AsLong_TO(smth) NS_IMETHOD AsLong (PRInt32 * aResult) { return smth AsLong (aResult); }
#define COM_FORWARD_IPCIAddress_AsLong_TO_OBJ(obj) COM_FORWARD_IPCIAddress_AsLong_TO ((obj)->)
#define COM_FORWARD_IPCIAddress_AsLong_TO_BASE(base) COM_FORWARD_IPCIAddress_AsLong_TO (base::)
#define COM_FORWARD_IPCIAddress_FromLong_TO(smth) NS_IMETHOD FromLong (PRInt32 aNumber) { return smth FromLong (aNumber); }
#define COM_FORWARD_IPCIAddress_FromLong_TO_OBJ(obj) COM_FORWARD_IPCIAddress_FromLong_TO ((obj)->)
#define COM_FORWARD_IPCIAddress_FromLong_TO_BASE(base) COM_FORWARD_IPCIAddress_FromLong_TO (base::)
#define COM_FORWARD_IPCIAddress_TO(smth) NS_FORWARD_IPCIADDRESS (smth)
#define COM_FORWARD_IPCIAddress_TO_OBJ(obj) COM_FORWARD_IPCIAddress_TO ((obj)->)
#define COM_FORWARD_IPCIAddress_TO_BASE(base) COM_FORWARD_IPCIAddress_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IPCIAddress;

/* starting interface:    IPCIDeviceAttachment */
#define IPCIDEVICEATTACHMENT_IID_STR "91f33d6f-e621-4f70-a77e-15f0e3c714d5"

#define IPCIDEVICEATTACHMENT_IID \
  {0x91f33d6f, 0xe621, 0x4f70, \
    { 0xa7, 0x7e, 0x15, 0xf0, 0xe3, 0xc7, 0x14, 0xd5 }}

class NS_NO_VTABLE IPCIDeviceAttachment : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IPCIDEVICEATTACHMENT_IID)

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* readonly attribute boolean isPhysicalDevice; */
  NS_IMETHOD GetIsPhysicalDevice(PRBool *aIsPhysicalDevice) = 0;

  /* readonly attribute long hostAddress; */
  NS_IMETHOD GetHostAddress(PRInt32 *aHostAddress) = 0;

  /* readonly attribute long guestAddress; */
  NS_IMETHOD GetGuestAddress(PRInt32 *aGuestAddress) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IPCIDEVICEATTACHMENT \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetIsPhysicalDevice(PRBool *aIsPhysicalDevice); \
  NS_IMETHOD GetHostAddress(PRInt32 *aHostAddress); \
  NS_IMETHOD GetGuestAddress(PRInt32 *aGuestAddress); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IPCIDEVICEATTACHMENT(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetIsPhysicalDevice(PRBool *aIsPhysicalDevice) { return _to GetIsPhysicalDevice(aIsPhysicalDevice); } \
  NS_IMETHOD GetHostAddress(PRInt32 *aHostAddress) { return _to GetHostAddress(aHostAddress); } \
  NS_IMETHOD GetGuestAddress(PRInt32 *aGuestAddress) { return _to GetGuestAddress(aGuestAddress); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IPCIDEVICEATTACHMENT(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetIsPhysicalDevice(PRBool *aIsPhysicalDevice) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsPhysicalDevice(aIsPhysicalDevice); } \
  NS_IMETHOD GetHostAddress(PRInt32 *aHostAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHostAddress(aHostAddress); } \
  NS_IMETHOD GetGuestAddress(PRInt32 *aGuestAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGuestAddress(aGuestAddress); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IPCIDeviceAttachment
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IPCIDEVICEATTACHMENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IPCIDeviceAttachment)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean isPhysicalDevice; */
NS_IMETHODIMP _MYCLASS_::GetIsPhysicalDevice(PRBool *aIsPhysicalDevice)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long hostAddress; */
NS_IMETHODIMP _MYCLASS_::GetHostAddress(PRInt32 *aHostAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long guestAddress; */
NS_IMETHODIMP _MYCLASS_::GetGuestAddress(PRInt32 *aGuestAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IPCIDeviceAttachment_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IPCIDeviceAttachment_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IPCIDeviceAttachment_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IPCIDeviceAttachment_GETTER_Name_TO_BASE(base) COM_FORWARD_IPCIDeviceAttachment_GETTER_Name_TO (base::)
#define COM_FORWARD_IPCIDeviceAttachment_GETTER_IsPhysicalDevice_TO(smth) NS_IMETHOD GetIsPhysicalDevice (PRBool * aIsPhysicalDevice) { return smth GetIsPhysicalDevice (aIsPhysicalDevice); }
#define COM_FORWARD_IPCIDeviceAttachment_GETTER_IsPhysicalDevice_TO_OBJ(obj) COM_FORWARD_IPCIDeviceAttachment_GETTER_IsPhysicalDevice_TO ((obj)->)
#define COM_FORWARD_IPCIDeviceAttachment_GETTER_IsPhysicalDevice_TO_BASE(base) COM_FORWARD_IPCIDeviceAttachment_GETTER_IsPhysicalDevice_TO (base::)
#define COM_FORWARD_IPCIDeviceAttachment_GETTER_HostAddress_TO(smth) NS_IMETHOD GetHostAddress (PRInt32 * aHostAddress) { return smth GetHostAddress (aHostAddress); }
#define COM_FORWARD_IPCIDeviceAttachment_GETTER_HostAddress_TO_OBJ(obj) COM_FORWARD_IPCIDeviceAttachment_GETTER_HostAddress_TO ((obj)->)
#define COM_FORWARD_IPCIDeviceAttachment_GETTER_HostAddress_TO_BASE(base) COM_FORWARD_IPCIDeviceAttachment_GETTER_HostAddress_TO (base::)
#define COM_FORWARD_IPCIDeviceAttachment_GETTER_GuestAddress_TO(smth) NS_IMETHOD GetGuestAddress (PRInt32 * aGuestAddress) { return smth GetGuestAddress (aGuestAddress); }
#define COM_FORWARD_IPCIDeviceAttachment_GETTER_GuestAddress_TO_OBJ(obj) COM_FORWARD_IPCIDeviceAttachment_GETTER_GuestAddress_TO ((obj)->)
#define COM_FORWARD_IPCIDeviceAttachment_GETTER_GuestAddress_TO_BASE(base) COM_FORWARD_IPCIDeviceAttachment_GETTER_GuestAddress_TO (base::)
#define COM_FORWARD_IPCIDeviceAttachment_TO(smth) NS_FORWARD_IPCIDEVICEATTACHMENT (smth)
#define COM_FORWARD_IPCIDeviceAttachment_TO_OBJ(obj) COM_FORWARD_IPCIDeviceAttachment_TO ((obj)->)
#define COM_FORWARD_IPCIDeviceAttachment_TO_BASE(base) COM_FORWARD_IPCIDeviceAttachment_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IPCIDeviceAttachment;

/* starting interface:    IMachine */
#define IMACHINE_IID_STR "480cf695-2d8d-4256-9c7c-cce4184fa048"

#define IMACHINE_IID \
  {0x480cf695, 0x2d8d, 0x4256, \
    { 0x9c, 0x7c, 0xcc, 0xe4, 0x18, 0x4f, 0xa0, 0x48 }}

class NS_NO_VTABLE IMachine : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMACHINE_IID)

  /* readonly attribute IVirtualBox parent; */
  NS_IMETHOD GetParent(IVirtualBox * *aParent) = 0;

  /* void getIcon (out unsigned long iconSize, [array, size_is (iconSize), retval] out octet icon); */
  NS_IMETHOD GetIcon(PRUint32 *iconSize, PRUint8 **icon) = 0;

  /* void setIcon (in unsigned long iconSize, [array, size_is (iconSize)] in octet icon); */
  NS_IMETHOD SetIcon(PRUint32 iconSize, PRUint8 *icon) = 0;

  /* readonly attribute boolean accessible; */
  NS_IMETHOD GetAccessible(PRBool *aAccessible) = 0;

  /* readonly attribute IVirtualBoxErrorInfo accessError; */
  NS_IMETHOD GetAccessError(IVirtualBoxErrorInfo * *aAccessError) = 0;

  /* attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;
  NS_IMETHOD SetName(const PRUnichar * aName) = 0;

  /* attribute wstring description; */
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) = 0;
  NS_IMETHOD SetDescription(const PRUnichar * aDescription) = 0;

  /* readonly attribute wstring id; */
  NS_IMETHOD GetId(PRUnichar * *aId) = 0;

  /* void getGroups (out unsigned long groupsSize, [array, size_is (groupsSize), retval] out wstring groups); */
  NS_IMETHOD GetGroups(PRUint32 *groupsSize, PRUnichar ***groups) = 0;

  /* void setGroups (in unsigned long groupsSize, [array, size_is (groupsSize)] in wstring groups); */
  NS_IMETHOD SetGroups(PRUint32 groupsSize, const PRUnichar **groups) = 0;

  /* attribute wstring OSTypeId; */
  NS_IMETHOD GetOSTypeId(PRUnichar * *aOSTypeId) = 0;
  NS_IMETHOD SetOSTypeId(const PRUnichar * aOSTypeId) = 0;

  /* attribute wstring hardwareVersion; */
  NS_IMETHOD GetHardwareVersion(PRUnichar * *aHardwareVersion) = 0;
  NS_IMETHOD SetHardwareVersion(const PRUnichar * aHardwareVersion) = 0;

  /* attribute wstring hardwareUUID; */
  NS_IMETHOD GetHardwareUUID(PRUnichar * *aHardwareUUID) = 0;
  NS_IMETHOD SetHardwareUUID(const PRUnichar * aHardwareUUID) = 0;

  /* attribute unsigned long CPUCount; */
  NS_IMETHOD GetCPUCount(PRUint32 *aCPUCount) = 0;
  NS_IMETHOD SetCPUCount(PRUint32 aCPUCount) = 0;

  /* attribute boolean CPUHotPlugEnabled; */
  NS_IMETHOD GetCPUHotPlugEnabled(PRBool *aCPUHotPlugEnabled) = 0;
  NS_IMETHOD SetCPUHotPlugEnabled(PRBool aCPUHotPlugEnabled) = 0;

  /* attribute unsigned long CPUExecutionCap; */
  NS_IMETHOD GetCPUExecutionCap(PRUint32 *aCPUExecutionCap) = 0;
  NS_IMETHOD SetCPUExecutionCap(PRUint32 aCPUExecutionCap) = 0;

  /* attribute unsigned long memorySize; */
  NS_IMETHOD GetMemorySize(PRUint32 *aMemorySize) = 0;
  NS_IMETHOD SetMemorySize(PRUint32 aMemorySize) = 0;

  /* attribute unsigned long memoryBalloonSize; */
  NS_IMETHOD GetMemoryBalloonSize(PRUint32 *aMemoryBalloonSize) = 0;
  NS_IMETHOD SetMemoryBalloonSize(PRUint32 aMemoryBalloonSize) = 0;

  /* attribute boolean pageFusionEnabled; */
  NS_IMETHOD GetPageFusionEnabled(PRBool *aPageFusionEnabled) = 0;
  NS_IMETHOD SetPageFusionEnabled(PRBool aPageFusionEnabled) = 0;

  /* attribute PRUint32 graphicsControllerType; */
  NS_IMETHOD GetGraphicsControllerType(PRUint32 *aGraphicsControllerType) = 0;
  NS_IMETHOD SetGraphicsControllerType(PRUint32 aGraphicsControllerType) = 0;

  /* attribute unsigned long VRAMSize; */
  NS_IMETHOD GetVRAMSize(PRUint32 *aVRAMSize) = 0;
  NS_IMETHOD SetVRAMSize(PRUint32 aVRAMSize) = 0;

  /* attribute boolean accelerate3DEnabled; */
  NS_IMETHOD GetAccelerate3DEnabled(PRBool *aAccelerate3DEnabled) = 0;
  NS_IMETHOD SetAccelerate3DEnabled(PRBool aAccelerate3DEnabled) = 0;

  /* attribute boolean accelerate2DVideoEnabled; */
  NS_IMETHOD GetAccelerate2DVideoEnabled(PRBool *aAccelerate2DVideoEnabled) = 0;
  NS_IMETHOD SetAccelerate2DVideoEnabled(PRBool aAccelerate2DVideoEnabled) = 0;

  /* attribute unsigned long monitorCount; */
  NS_IMETHOD GetMonitorCount(PRUint32 *aMonitorCount) = 0;
  NS_IMETHOD SetMonitorCount(PRUint32 aMonitorCount) = 0;

  /* attribute boolean videoCaptureEnabled; */
  NS_IMETHOD GetVideoCaptureEnabled(PRBool *aVideoCaptureEnabled) = 0;
  NS_IMETHOD SetVideoCaptureEnabled(PRBool aVideoCaptureEnabled) = 0;

  /* void getVideoCaptureScreens (out unsigned long videoCaptureScreensSize, [array, size_is (videoCaptureScreensSize), retval] out boolean videoCaptureScreens); */
  NS_IMETHOD GetVideoCaptureScreens(PRUint32 *videoCaptureScreensSize, PRBool **videoCaptureScreens) = 0;

  /* void setVideoCaptureScreens (in unsigned long videoCaptureScreensSize, [array, size_is (videoCaptureScreensSize)] in boolean videoCaptureScreens); */
  NS_IMETHOD SetVideoCaptureScreens(PRUint32 videoCaptureScreensSize, PRBool *videoCaptureScreens) = 0;

  /* attribute wstring videoCaptureFile; */
  NS_IMETHOD GetVideoCaptureFile(PRUnichar * *aVideoCaptureFile) = 0;
  NS_IMETHOD SetVideoCaptureFile(const PRUnichar * aVideoCaptureFile) = 0;

  /* attribute unsigned long videoCaptureWidth; */
  NS_IMETHOD GetVideoCaptureWidth(PRUint32 *aVideoCaptureWidth) = 0;
  NS_IMETHOD SetVideoCaptureWidth(PRUint32 aVideoCaptureWidth) = 0;

  /* attribute unsigned long videoCaptureHeight; */
  NS_IMETHOD GetVideoCaptureHeight(PRUint32 *aVideoCaptureHeight) = 0;
  NS_IMETHOD SetVideoCaptureHeight(PRUint32 aVideoCaptureHeight) = 0;

  /* attribute unsigned long videoCaptureRate; */
  NS_IMETHOD GetVideoCaptureRate(PRUint32 *aVideoCaptureRate) = 0;
  NS_IMETHOD SetVideoCaptureRate(PRUint32 aVideoCaptureRate) = 0;

  /* attribute unsigned long videoCaptureFPS; */
  NS_IMETHOD GetVideoCaptureFPS(PRUint32 *aVideoCaptureFPS) = 0;
  NS_IMETHOD SetVideoCaptureFPS(PRUint32 aVideoCaptureFPS) = 0;

  /* readonly attribute IBIOSSettings BIOSSettings; */
  NS_IMETHOD GetBIOSSettings(IBIOSSettings * *aBIOSSettings) = 0;

  /* attribute PRUint32 firmwareType; */
  NS_IMETHOD GetFirmwareType(PRUint32 *aFirmwareType) = 0;
  NS_IMETHOD SetFirmwareType(PRUint32 aFirmwareType) = 0;

  /* attribute PRUint32 pointingHIDType; */
  NS_IMETHOD GetPointingHIDType(PRUint32 *aPointingHIDType) = 0;
  NS_IMETHOD SetPointingHIDType(PRUint32 aPointingHIDType) = 0;

  /* attribute PRUint32 keyboardHIDType; */
  NS_IMETHOD GetKeyboardHIDType(PRUint32 *aKeyboardHIDType) = 0;
  NS_IMETHOD SetKeyboardHIDType(PRUint32 aKeyboardHIDType) = 0;

  /* attribute boolean HPETEnabled; */
  NS_IMETHOD GetHPETEnabled(PRBool *aHPETEnabled) = 0;
  NS_IMETHOD SetHPETEnabled(PRBool aHPETEnabled) = 0;

  /* attribute PRUint32 chipsetType; */
  NS_IMETHOD GetChipsetType(PRUint32 *aChipsetType) = 0;
  NS_IMETHOD SetChipsetType(PRUint32 aChipsetType) = 0;

  /* attribute wstring snapshotFolder; */
  NS_IMETHOD GetSnapshotFolder(PRUnichar * *aSnapshotFolder) = 0;
  NS_IMETHOD SetSnapshotFolder(const PRUnichar * aSnapshotFolder) = 0;

  /* readonly attribute IVRDEServer VRDEServer; */
  NS_IMETHOD GetVRDEServer(IVRDEServer * *aVRDEServer) = 0;

  /* attribute boolean emulatedUSBCardReaderEnabled; */
  NS_IMETHOD GetEmulatedUSBCardReaderEnabled(PRBool *aEmulatedUSBCardReaderEnabled) = 0;
  NS_IMETHOD SetEmulatedUSBCardReaderEnabled(PRBool aEmulatedUSBCardReaderEnabled) = 0;

  /* void getMediumAttachments (out unsigned long mediumAttachmentsSize, [array, size_is (mediumAttachmentsSize), retval] out IMediumAttachment mediumAttachments); */
  NS_IMETHOD GetMediumAttachments(PRUint32 *mediumAttachmentsSize, IMediumAttachment ***mediumAttachments) = 0;

  /* void getUSBControllers (out unsigned long USBControllersSize, [array, size_is (USBControllersSize), retval] out IUSBController USBControllers); */
  NS_IMETHOD GetUSBControllers(PRUint32 *USBControllersSize, IUSBController ***USBControllers) = 0;

  /* readonly attribute IUSBDeviceFilters USBDeviceFilters; */
  NS_IMETHOD GetUSBDeviceFilters(IUSBDeviceFilters * *aUSBDeviceFilters) = 0;

  /* readonly attribute IAudioAdapter audioAdapter; */
  NS_IMETHOD GetAudioAdapter(IAudioAdapter * *aAudioAdapter) = 0;

  /* void getStorageControllers (out unsigned long storageControllersSize, [array, size_is (storageControllersSize), retval] out IStorageController storageControllers); */
  NS_IMETHOD GetStorageControllers(PRUint32 *storageControllersSize, IStorageController ***storageControllers) = 0;

  /* readonly attribute wstring settingsFilePath; */
  NS_IMETHOD GetSettingsFilePath(PRUnichar * *aSettingsFilePath) = 0;

  /* readonly attribute boolean settingsModified; */
  NS_IMETHOD GetSettingsModified(PRBool *aSettingsModified) = 0;

  /* readonly attribute PRUint32 sessionState; */
  NS_IMETHOD GetSessionState(PRUint32 *aSessionState) = 0;

  /* readonly attribute wstring sessionType; */
  NS_IMETHOD GetSessionType(PRUnichar * *aSessionType) = 0;

  /* readonly attribute unsigned long sessionPID; */
  NS_IMETHOD GetSessionPID(PRUint32 *aSessionPID) = 0;

  /* readonly attribute PRUint32 state; */
  NS_IMETHOD GetState(PRUint32 *aState) = 0;

  /* readonly attribute long long lastStateChange; */
  NS_IMETHOD GetLastStateChange(PRInt64 *aLastStateChange) = 0;

  /* readonly attribute wstring stateFilePath; */
  NS_IMETHOD GetStateFilePath(PRUnichar * *aStateFilePath) = 0;

  /* readonly attribute wstring logFolder; */
  NS_IMETHOD GetLogFolder(PRUnichar * *aLogFolder) = 0;

  /* readonly attribute ISnapshot currentSnapshot; */
  NS_IMETHOD GetCurrentSnapshot(ISnapshot * *aCurrentSnapshot) = 0;

  /* readonly attribute unsigned long snapshotCount; */
  NS_IMETHOD GetSnapshotCount(PRUint32 *aSnapshotCount) = 0;

  /* readonly attribute boolean currentStateModified; */
  NS_IMETHOD GetCurrentStateModified(PRBool *aCurrentStateModified) = 0;

  /* void getSharedFolders (out unsigned long sharedFoldersSize, [array, size_is (sharedFoldersSize), retval] out ISharedFolder sharedFolders); */
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders) = 0;

  /* attribute PRUint32 clipboardMode; */
  NS_IMETHOD GetClipboardMode(PRUint32 *aClipboardMode) = 0;
  NS_IMETHOD SetClipboardMode(PRUint32 aClipboardMode) = 0;

  /* attribute PRUint32 dragAndDropMode; */
  NS_IMETHOD GetDragAndDropMode(PRUint32 *aDragAndDropMode) = 0;
  NS_IMETHOD SetDragAndDropMode(PRUint32 aDragAndDropMode) = 0;

  /* attribute wstring guestPropertyNotificationPatterns; */
  NS_IMETHOD GetGuestPropertyNotificationPatterns(PRUnichar * *aGuestPropertyNotificationPatterns) = 0;
  NS_IMETHOD SetGuestPropertyNotificationPatterns(const PRUnichar * aGuestPropertyNotificationPatterns) = 0;

  /* attribute boolean teleporterEnabled; */
  NS_IMETHOD GetTeleporterEnabled(PRBool *aTeleporterEnabled) = 0;
  NS_IMETHOD SetTeleporterEnabled(PRBool aTeleporterEnabled) = 0;

  /* attribute unsigned long teleporterPort; */
  NS_IMETHOD GetTeleporterPort(PRUint32 *aTeleporterPort) = 0;
  NS_IMETHOD SetTeleporterPort(PRUint32 aTeleporterPort) = 0;

  /* attribute wstring teleporterAddress; */
  NS_IMETHOD GetTeleporterAddress(PRUnichar * *aTeleporterAddress) = 0;
  NS_IMETHOD SetTeleporterAddress(const PRUnichar * aTeleporterAddress) = 0;

  /* attribute wstring teleporterPassword; */
  NS_IMETHOD GetTeleporterPassword(PRUnichar * *aTeleporterPassword) = 0;
  NS_IMETHOD SetTeleporterPassword(const PRUnichar * aTeleporterPassword) = 0;

  /* attribute PRUint32 faultToleranceState; */
  NS_IMETHOD GetFaultToleranceState(PRUint32 *aFaultToleranceState) = 0;
  NS_IMETHOD SetFaultToleranceState(PRUint32 aFaultToleranceState) = 0;

  /* attribute unsigned long faultTolerancePort; */
  NS_IMETHOD GetFaultTolerancePort(PRUint32 *aFaultTolerancePort) = 0;
  NS_IMETHOD SetFaultTolerancePort(PRUint32 aFaultTolerancePort) = 0;

  /* attribute wstring faultToleranceAddress; */
  NS_IMETHOD GetFaultToleranceAddress(PRUnichar * *aFaultToleranceAddress) = 0;
  NS_IMETHOD SetFaultToleranceAddress(const PRUnichar * aFaultToleranceAddress) = 0;

  /* attribute wstring faultTolerancePassword; */
  NS_IMETHOD GetFaultTolerancePassword(PRUnichar * *aFaultTolerancePassword) = 0;
  NS_IMETHOD SetFaultTolerancePassword(const PRUnichar * aFaultTolerancePassword) = 0;

  /* attribute unsigned long faultToleranceSyncInterval; */
  NS_IMETHOD GetFaultToleranceSyncInterval(PRUint32 *aFaultToleranceSyncInterval) = 0;
  NS_IMETHOD SetFaultToleranceSyncInterval(PRUint32 aFaultToleranceSyncInterval) = 0;

  /* attribute boolean RTCUseUTC; */
  NS_IMETHOD GetRTCUseUTC(PRBool *aRTCUseUTC) = 0;
  NS_IMETHOD SetRTCUseUTC(PRBool aRTCUseUTC) = 0;

  /* attribute boolean IOCacheEnabled; */
  NS_IMETHOD GetIOCacheEnabled(PRBool *aIOCacheEnabled) = 0;
  NS_IMETHOD SetIOCacheEnabled(PRBool aIOCacheEnabled) = 0;

  /* attribute unsigned long IOCacheSize; */
  NS_IMETHOD GetIOCacheSize(PRUint32 *aIOCacheSize) = 0;
  NS_IMETHOD SetIOCacheSize(PRUint32 aIOCacheSize) = 0;

  /* void getPCIDeviceAssignments (out unsigned long PCIDeviceAssignmentsSize, [array, size_is (PCIDeviceAssignmentsSize), retval] out IPCIDeviceAttachment PCIDeviceAssignments); */
  NS_IMETHOD GetPCIDeviceAssignments(PRUint32 *PCIDeviceAssignmentsSize, IPCIDeviceAttachment ***PCIDeviceAssignments) = 0;

  /* readonly attribute IBandwidthControl bandwidthControl; */
  NS_IMETHOD GetBandwidthControl(IBandwidthControl * *aBandwidthControl) = 0;

  /* attribute boolean tracingEnabled; */
  NS_IMETHOD GetTracingEnabled(PRBool *aTracingEnabled) = 0;
  NS_IMETHOD SetTracingEnabled(PRBool aTracingEnabled) = 0;

  /* attribute wstring tracingConfig; */
  NS_IMETHOD GetTracingConfig(PRUnichar * *aTracingConfig) = 0;
  NS_IMETHOD SetTracingConfig(const PRUnichar * aTracingConfig) = 0;

  /* attribute boolean allowTracingToAccessVM; */
  NS_IMETHOD GetAllowTracingToAccessVM(PRBool *aAllowTracingToAccessVM) = 0;
  NS_IMETHOD SetAllowTracingToAccessVM(PRBool aAllowTracingToAccessVM) = 0;

  /* attribute boolean autostartEnabled; */
  NS_IMETHOD GetAutostartEnabled(PRBool *aAutostartEnabled) = 0;
  NS_IMETHOD SetAutostartEnabled(PRBool aAutostartEnabled) = 0;

  /* attribute unsigned long autostartDelay; */
  NS_IMETHOD GetAutostartDelay(PRUint32 *aAutostartDelay) = 0;
  NS_IMETHOD SetAutostartDelay(PRUint32 aAutostartDelay) = 0;

  /* attribute PRUint32 autostopType; */
  NS_IMETHOD GetAutostopType(PRUint32 *aAutostopType) = 0;
  NS_IMETHOD SetAutostopType(PRUint32 aAutostopType) = 0;

  /* attribute wstring defaultFrontend; */
  NS_IMETHOD GetDefaultFrontend(PRUnichar * *aDefaultFrontend) = 0;
  NS_IMETHOD SetDefaultFrontend(const PRUnichar * aDefaultFrontend) = 0;

  /* readonly attribute boolean USBProxyAvailable; */
  NS_IMETHOD GetUSBProxyAvailable(PRBool *aUSBProxyAvailable) = 0;

  /* void lockMachine (in ISession session, in PRUint32 lockType); */
  NS_IMETHOD LockMachine(ISession *session, PRUint32 lockType) = 0;

  /* void launchVMProcess (in ISession session, in wstring type, in wstring environment, [retval] out IProgress progress); */
  NS_IMETHOD LaunchVMProcess(ISession *session, const PRUnichar *type, const PRUnichar *environment, IProgress **progress) = 0;

  /* void setBootOrder (in unsigned long position, in PRUint32 device); */
  NS_IMETHOD SetBootOrder(PRUint32 position, PRUint32 device) = 0;

  /* void getBootOrder (in unsigned long position, [retval] out PRUint32 device); */
  NS_IMETHOD GetBootOrder(PRUint32 position, PRUint32 *device) = 0;

  /* void attachDevice (in wstring name, in long controllerPort, in long device, in PRUint32 type, in IMedium medium); */
  NS_IMETHOD AttachDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRUint32 type, IMedium *medium) = 0;

  /* void attachDeviceWithoutMedium (in wstring name, in long controllerPort, in long device, in PRUint32 type); */
  NS_IMETHOD AttachDeviceWithoutMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRUint32 type) = 0;

  /* void detachDevice (in wstring name, in long controllerPort, in long device); */
  NS_IMETHOD DetachDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device) = 0;

  /* void passthroughDevice (in wstring name, in long controllerPort, in long device, in boolean passthrough); */
  NS_IMETHOD PassthroughDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool passthrough) = 0;

  /* void temporaryEjectDevice (in wstring name, in long controllerPort, in long device, in boolean temporaryEject); */
  NS_IMETHOD TemporaryEjectDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool temporaryEject) = 0;

  /* void nonRotationalDevice (in wstring name, in long controllerPort, in long device, in boolean nonRotational); */
  NS_IMETHOD NonRotationalDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool nonRotational) = 0;

  /* void setAutoDiscardForDevice (in wstring name, in long controllerPort, in long device, in boolean discard); */
  NS_IMETHOD SetAutoDiscardForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool discard) = 0;

  /* void setHotPluggableForDevice (in wstring name, in long controllerPort, in long device, in boolean hotPluggable); */
  NS_IMETHOD SetHotPluggableForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool hotPluggable) = 0;

  /* void setBandwidthGroupForDevice (in wstring name, in long controllerPort, in long device, in IBandwidthGroup bandwidthGroup); */
  NS_IMETHOD SetBandwidthGroupForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IBandwidthGroup *bandwidthGroup) = 0;

  /* void setNoBandwidthGroupForDevice (in wstring name, in long controllerPort, in long device); */
  NS_IMETHOD SetNoBandwidthGroupForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device) = 0;

  /* void unmountMedium (in wstring name, in long controllerPort, in long device, in boolean force); */
  NS_IMETHOD UnmountMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool force) = 0;

  /* void mountMedium (in wstring name, in long controllerPort, in long device, in IMedium medium, in boolean force); */
  NS_IMETHOD MountMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMedium *medium, PRBool force) = 0;

  /* void getMedium (in wstring name, in long controllerPort, in long device, [retval] out IMedium medium); */
  NS_IMETHOD GetMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMedium **medium) = 0;

  /* void getMediumAttachmentsOfController (in wstring name, out unsigned long mediumAttachmentsSize, [array, size_is (mediumAttachmentsSize), retval] out IMediumAttachment mediumAttachments); */
  NS_IMETHOD GetMediumAttachmentsOfController(const PRUnichar *name, PRUint32 *mediumAttachmentsSize, IMediumAttachment ***mediumAttachments) = 0;

  /* void getMediumAttachment (in wstring name, in long controllerPort, in long device, [retval] out IMediumAttachment attachment); */
  NS_IMETHOD GetMediumAttachment(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMediumAttachment **attachment) = 0;

  /* void attachHostPCIDevice (in long hostAddress, in long desiredGuestAddress, in boolean tryToUnbind); */
  NS_IMETHOD AttachHostPCIDevice(PRInt32 hostAddress, PRInt32 desiredGuestAddress, PRBool tryToUnbind) = 0;

  /* void detachHostPCIDevice (in long hostAddress); */
  NS_IMETHOD DetachHostPCIDevice(PRInt32 hostAddress) = 0;

  /* void getNetworkAdapter (in unsigned long slot, [retval] out INetworkAdapter adapter); */
  NS_IMETHOD GetNetworkAdapter(PRUint32 slot, INetworkAdapter **adapter) = 0;

  /* void addStorageController (in wstring name, in PRUint32 connectionType, [retval] out IStorageController controller); */
  NS_IMETHOD AddStorageController(const PRUnichar *name, PRUint32 connectionType, IStorageController **controller) = 0;

  /* void getStorageControllerByName (in wstring name, [retval] out IStorageController storageController); */
  NS_IMETHOD GetStorageControllerByName(const PRUnichar *name, IStorageController **storageController) = 0;

  /* void getStorageControllerByInstance (in unsigned long instance, [retval] out IStorageController storageController); */
  NS_IMETHOD GetStorageControllerByInstance(PRUint32 instance, IStorageController **storageController) = 0;

  /* void removeStorageController (in wstring name); */
  NS_IMETHOD RemoveStorageController(const PRUnichar *name) = 0;

  /* void setStorageControllerBootable (in wstring name, in boolean bootable); */
  NS_IMETHOD SetStorageControllerBootable(const PRUnichar *name, PRBool bootable) = 0;

  /* void addUSBController (in wstring name, in PRUint32 type, [retval] out IUSBController controller); */
  NS_IMETHOD AddUSBController(const PRUnichar *name, PRUint32 type, IUSBController **controller) = 0;

  /* void removeUSBController (in wstring name); */
  NS_IMETHOD RemoveUSBController(const PRUnichar *name) = 0;

  /* void getUSBControllerByName (in wstring name, [retval] out IUSBController controller); */
  NS_IMETHOD GetUSBControllerByName(const PRUnichar *name, IUSBController **controller) = 0;

  /* void getUSBControllerCountByType (in PRUint32 type, [retval] out unsigned long controllers); */
  NS_IMETHOD GetUSBControllerCountByType(PRUint32 type, PRUint32 *controllers) = 0;

  /* void getSerialPort (in unsigned long slot, [retval] out ISerialPort port); */
  NS_IMETHOD GetSerialPort(PRUint32 slot, ISerialPort **port) = 0;

  /* void getParallelPort (in unsigned long slot, [retval] out IParallelPort port); */
  NS_IMETHOD GetParallelPort(PRUint32 slot, IParallelPort **port) = 0;

  /* void getExtraDataKeys (out unsigned long keysSize, [array, size_is (keysSize), retval] out wstring keys); */
  NS_IMETHOD GetExtraDataKeys(PRUint32 *keysSize, PRUnichar ***keys) = 0;

  /* void getExtraData (in wstring key, [retval] out wstring value); */
  NS_IMETHOD GetExtraData(const PRUnichar *key, PRUnichar **value) = 0;

  /* void setExtraData (in wstring key, in wstring value); */
  NS_IMETHOD SetExtraData(const PRUnichar *key, const PRUnichar *value) = 0;

  /* void getCPUProperty (in PRUint32 property, [retval] out boolean value); */
  NS_IMETHOD GetCPUProperty(PRUint32 property, PRBool *value) = 0;

  /* void setCPUProperty (in PRUint32 property, in boolean value); */
  NS_IMETHOD SetCPUProperty(PRUint32 property, PRBool value) = 0;

  /* void getCPUIDLeaf (in unsigned long id, out unsigned long valEax, out unsigned long valEbx, out unsigned long valEcx, out unsigned long valEdx); */
  NS_IMETHOD GetCPUIDLeaf(PRUint32 id, PRUint32 *valEax, PRUint32 *valEbx, PRUint32 *valEcx, PRUint32 *valEdx) = 0;

  /* void setCPUIDLeaf (in unsigned long id, in unsigned long valEax, in unsigned long valEbx, in unsigned long valEcx, in unsigned long valEdx); */
  NS_IMETHOD SetCPUIDLeaf(PRUint32 id, PRUint32 valEax, PRUint32 valEbx, PRUint32 valEcx, PRUint32 valEdx) = 0;

  /* void removeCPUIDLeaf (in unsigned long id); */
  NS_IMETHOD RemoveCPUIDLeaf(PRUint32 id) = 0;

  /* void removeAllCPUIDLeaves (); */
  NS_IMETHOD RemoveAllCPUIDLeaves(void) = 0;

  /* void getHWVirtExProperty (in PRUint32 property, [retval] out boolean value); */
  NS_IMETHOD GetHWVirtExProperty(PRUint32 property, PRBool *value) = 0;

  /* void setHWVirtExProperty (in PRUint32 property, in boolean value); */
  NS_IMETHOD SetHWVirtExProperty(PRUint32 property, PRBool value) = 0;

  /* void setSettingsFilePath (in wstring settingsFilePath, [retval] out IProgress progress); */
  NS_IMETHOD SetSettingsFilePath(const PRUnichar *settingsFilePath, IProgress **progress) = 0;

  /* void saveSettings (); */
  NS_IMETHOD SaveSettings(void) = 0;

  /* void discardSettings (); */
  NS_IMETHOD DiscardSettings(void) = 0;

  /* void unregister (in PRUint32 cleanupMode, out unsigned long mediaSize, [array, size_is (mediaSize), retval] out IMedium media); */
  NS_IMETHOD Unregister(PRUint32 cleanupMode, PRUint32 *mediaSize, IMedium ***media) = 0;

  /* void deleteConfig (in unsigned long mediaSize, [array, size_is (mediaSize)] in IMedium media, [retval] out IProgress progress); */
  NS_IMETHOD DeleteConfig(PRUint32 mediaSize, IMedium **media, IProgress **progress) = 0;

  /* void exportTo (in IAppliance appliance, in wstring location, [retval] out IVirtualSystemDescription description); */
  NS_IMETHOD ExportTo(IAppliance *appliance, const PRUnichar *location, IVirtualSystemDescription **description) = 0;

  /* void findSnapshot (in wstring nameOrId, [retval] out ISnapshot snapshot); */
  NS_IMETHOD FindSnapshot(const PRUnichar *nameOrId, ISnapshot **snapshot) = 0;

  /* void createSharedFolder (in wstring name, in wstring hostPath, in boolean writable, in boolean automount); */
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable, PRBool automount) = 0;

  /* void removeSharedFolder (in wstring name); */
  NS_IMETHOD RemoveSharedFolder(const PRUnichar *name) = 0;

  /* void canShowConsoleWindow ([retval] out boolean canShow); */
  NS_IMETHOD CanShowConsoleWindow(PRBool *canShow) = 0;

  /* void showConsoleWindow ([retval] out long long winId); */
  NS_IMETHOD ShowConsoleWindow(PRInt64 *winId) = 0;

  /* void getGuestProperty (in wstring name, out wstring value, out long long timestamp, out wstring flags); */
  NS_IMETHOD GetGuestProperty(const PRUnichar *name, PRUnichar **value, PRInt64 *timestamp, PRUnichar **flags) = 0;

  /* void getGuestPropertyValue (in wstring property, [retval] out wstring value); */
  NS_IMETHOD GetGuestPropertyValue(const PRUnichar *property, PRUnichar **value) = 0;

  /* void getGuestPropertyTimestamp (in wstring property, [retval] out long long value); */
  NS_IMETHOD GetGuestPropertyTimestamp(const PRUnichar *property, PRInt64 *value) = 0;

  /* void setGuestProperty (in wstring property, in wstring value, in wstring flags); */
  NS_IMETHOD SetGuestProperty(const PRUnichar *property, const PRUnichar *value, const PRUnichar *flags) = 0;

  /* void setGuestPropertyValue (in wstring property, in wstring value); */
  NS_IMETHOD SetGuestPropertyValue(const PRUnichar *property, const PRUnichar *value) = 0;

  /* void deleteGuestProperty (in wstring name); */
  NS_IMETHOD DeleteGuestProperty(const PRUnichar *name) = 0;

  /* void enumerateGuestProperties (in wstring patterns, out unsigned long namesSize, [array, size_is (namesSize)] out wstring names, out unsigned long valuesSize, [array, size_is (valuesSize)] out wstring values, out unsigned long timestampsSize, [array, size_is (timestampsSize)] out long long timestamps, out unsigned long flagsSize, [array, size_is (flagsSize)] out wstring flags); */
  NS_IMETHOD EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *namesSize, PRUnichar ***names, PRUint32 *valuesSize, PRUnichar ***values, PRUint32 *timestampsSize, PRInt64 **timestamps, PRUint32 *flagsSize, PRUnichar ***flags) = 0;

  /* void querySavedGuestScreenInfo (in unsigned long screenId, out unsigned long originX, out unsigned long originY, out unsigned long width, out unsigned long height, out boolean enabled); */
  NS_IMETHOD QuerySavedGuestScreenInfo(PRUint32 screenId, PRUint32 *originX, PRUint32 *originY, PRUint32 *width, PRUint32 *height, PRBool *enabled) = 0;

  /* void querySavedThumbnailSize (in unsigned long screenId, out unsigned long size, out unsigned long width, out unsigned long height); */
  NS_IMETHOD QuerySavedThumbnailSize(PRUint32 screenId, PRUint32 *size, PRUint32 *width, PRUint32 *height) = 0;

  /* void readSavedThumbnailToArray (in unsigned long screenId, in boolean BGR, out unsigned long width, out unsigned long height, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
  NS_IMETHOD ReadSavedThumbnailToArray(PRUint32 screenId, PRBool BGR, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data) = 0;

  /* void readSavedThumbnailPNGToArray (in unsigned long screenId, out unsigned long width, out unsigned long height, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
  NS_IMETHOD ReadSavedThumbnailPNGToArray(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data) = 0;

  /* void querySavedScreenshotPNGSize (in unsigned long screenId, out unsigned long size, out unsigned long width, out unsigned long height); */
  NS_IMETHOD QuerySavedScreenshotPNGSize(PRUint32 screenId, PRUint32 *size, PRUint32 *width, PRUint32 *height) = 0;

  /* void readSavedScreenshotPNGToArray (in unsigned long screenId, out unsigned long width, out unsigned long height, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
  NS_IMETHOD ReadSavedScreenshotPNGToArray(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data) = 0;

  /* void hotPlugCPU (in unsigned long cpu); */
  NS_IMETHOD HotPlugCPU(PRUint32 cpu) = 0;

  /* void hotUnplugCPU (in unsigned long cpu); */
  NS_IMETHOD HotUnplugCPU(PRUint32 cpu) = 0;

  /* void getCPUStatus (in unsigned long cpu, [retval] out boolean attached); */
  NS_IMETHOD GetCPUStatus(PRUint32 cpu, PRBool *attached) = 0;

  /* void queryLogFilename (in unsigned long idx, [retval] out wstring filename); */
  NS_IMETHOD QueryLogFilename(PRUint32 idx, PRUnichar **filename) = 0;

  /* void readLog (in unsigned long idx, in long long offset, in long long size, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
  NS_IMETHOD ReadLog(PRUint32 idx, PRInt64 offset, PRInt64 size, PRUint32 *dataSize, PRUint8 **data) = 0;

  /* void cloneTo (in IMachine target, in PRUint32 mode, in unsigned long optionsSize, [array, size_is (optionsSize)] in PRUint32 options, [retval] out IProgress progress); */
  NS_IMETHOD CloneTo(IMachine *target, PRUint32 mode, PRUint32 optionsSize, PRUint32 *options, IProgress **progress) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMACHINE \
  NS_IMETHOD GetParent(IVirtualBox * *aParent); \
  NS_IMETHOD GetIcon(PRUint32 *iconSize, PRUint8 **icon); \
  NS_IMETHOD SetIcon(PRUint32 iconSize, PRUint8 *icon); \
  NS_IMETHOD GetAccessible(PRBool *aAccessible); \
  NS_IMETHOD GetAccessError(IVirtualBoxErrorInfo * *aAccessError); \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD SetName(const PRUnichar * aName); \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription); \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription); \
  NS_IMETHOD GetId(PRUnichar * *aId); \
  NS_IMETHOD GetGroups(PRUint32 *groupsSize, PRUnichar ***groups); \
  NS_IMETHOD SetGroups(PRUint32 groupsSize, const PRUnichar **groups); \
  NS_IMETHOD GetOSTypeId(PRUnichar * *aOSTypeId); \
  NS_IMETHOD SetOSTypeId(const PRUnichar * aOSTypeId); \
  NS_IMETHOD GetHardwareVersion(PRUnichar * *aHardwareVersion); \
  NS_IMETHOD SetHardwareVersion(const PRUnichar * aHardwareVersion); \
  NS_IMETHOD GetHardwareUUID(PRUnichar * *aHardwareUUID); \
  NS_IMETHOD SetHardwareUUID(const PRUnichar * aHardwareUUID); \
  NS_IMETHOD GetCPUCount(PRUint32 *aCPUCount); \
  NS_IMETHOD SetCPUCount(PRUint32 aCPUCount); \
  NS_IMETHOD GetCPUHotPlugEnabled(PRBool *aCPUHotPlugEnabled); \
  NS_IMETHOD SetCPUHotPlugEnabled(PRBool aCPUHotPlugEnabled); \
  NS_IMETHOD GetCPUExecutionCap(PRUint32 *aCPUExecutionCap); \
  NS_IMETHOD SetCPUExecutionCap(PRUint32 aCPUExecutionCap); \
  NS_IMETHOD GetMemorySize(PRUint32 *aMemorySize); \
  NS_IMETHOD SetMemorySize(PRUint32 aMemorySize); \
  NS_IMETHOD GetMemoryBalloonSize(PRUint32 *aMemoryBalloonSize); \
  NS_IMETHOD SetMemoryBalloonSize(PRUint32 aMemoryBalloonSize); \
  NS_IMETHOD GetPageFusionEnabled(PRBool *aPageFusionEnabled); \
  NS_IMETHOD SetPageFusionEnabled(PRBool aPageFusionEnabled); \
  NS_IMETHOD GetGraphicsControllerType(PRUint32 *aGraphicsControllerType); \
  NS_IMETHOD SetGraphicsControllerType(PRUint32 aGraphicsControllerType); \
  NS_IMETHOD GetVRAMSize(PRUint32 *aVRAMSize); \
  NS_IMETHOD SetVRAMSize(PRUint32 aVRAMSize); \
  NS_IMETHOD GetAccelerate3DEnabled(PRBool *aAccelerate3DEnabled); \
  NS_IMETHOD SetAccelerate3DEnabled(PRBool aAccelerate3DEnabled); \
  NS_IMETHOD GetAccelerate2DVideoEnabled(PRBool *aAccelerate2DVideoEnabled); \
  NS_IMETHOD SetAccelerate2DVideoEnabled(PRBool aAccelerate2DVideoEnabled); \
  NS_IMETHOD GetMonitorCount(PRUint32 *aMonitorCount); \
  NS_IMETHOD SetMonitorCount(PRUint32 aMonitorCount); \
  NS_IMETHOD GetVideoCaptureEnabled(PRBool *aVideoCaptureEnabled); \
  NS_IMETHOD SetVideoCaptureEnabled(PRBool aVideoCaptureEnabled); \
  NS_IMETHOD GetVideoCaptureScreens(PRUint32 *videoCaptureScreensSize, PRBool **videoCaptureScreens); \
  NS_IMETHOD SetVideoCaptureScreens(PRUint32 videoCaptureScreensSize, PRBool *videoCaptureScreens); \
  NS_IMETHOD GetVideoCaptureFile(PRUnichar * *aVideoCaptureFile); \
  NS_IMETHOD SetVideoCaptureFile(const PRUnichar * aVideoCaptureFile); \
  NS_IMETHOD GetVideoCaptureWidth(PRUint32 *aVideoCaptureWidth); \
  NS_IMETHOD SetVideoCaptureWidth(PRUint32 aVideoCaptureWidth); \
  NS_IMETHOD GetVideoCaptureHeight(PRUint32 *aVideoCaptureHeight); \
  NS_IMETHOD SetVideoCaptureHeight(PRUint32 aVideoCaptureHeight); \
  NS_IMETHOD GetVideoCaptureRate(PRUint32 *aVideoCaptureRate); \
  NS_IMETHOD SetVideoCaptureRate(PRUint32 aVideoCaptureRate); \
  NS_IMETHOD GetVideoCaptureFPS(PRUint32 *aVideoCaptureFPS); \
  NS_IMETHOD SetVideoCaptureFPS(PRUint32 aVideoCaptureFPS); \
  NS_IMETHOD GetBIOSSettings(IBIOSSettings * *aBIOSSettings); \
  NS_IMETHOD GetFirmwareType(PRUint32 *aFirmwareType); \
  NS_IMETHOD SetFirmwareType(PRUint32 aFirmwareType); \
  NS_IMETHOD GetPointingHIDType(PRUint32 *aPointingHIDType); \
  NS_IMETHOD SetPointingHIDType(PRUint32 aPointingHIDType); \
  NS_IMETHOD GetKeyboardHIDType(PRUint32 *aKeyboardHIDType); \
  NS_IMETHOD SetKeyboardHIDType(PRUint32 aKeyboardHIDType); \
  NS_IMETHOD GetHPETEnabled(PRBool *aHPETEnabled); \
  NS_IMETHOD SetHPETEnabled(PRBool aHPETEnabled); \
  NS_IMETHOD GetChipsetType(PRUint32 *aChipsetType); \
  NS_IMETHOD SetChipsetType(PRUint32 aChipsetType); \
  NS_IMETHOD GetSnapshotFolder(PRUnichar * *aSnapshotFolder); \
  NS_IMETHOD SetSnapshotFolder(const PRUnichar * aSnapshotFolder); \
  NS_IMETHOD GetVRDEServer(IVRDEServer * *aVRDEServer); \
  NS_IMETHOD GetEmulatedUSBCardReaderEnabled(PRBool *aEmulatedUSBCardReaderEnabled); \
  NS_IMETHOD SetEmulatedUSBCardReaderEnabled(PRBool aEmulatedUSBCardReaderEnabled); \
  NS_IMETHOD GetMediumAttachments(PRUint32 *mediumAttachmentsSize, IMediumAttachment ***mediumAttachments); \
  NS_IMETHOD GetUSBControllers(PRUint32 *USBControllersSize, IUSBController ***USBControllers); \
  NS_IMETHOD GetUSBDeviceFilters(IUSBDeviceFilters * *aUSBDeviceFilters); \
  NS_IMETHOD GetAudioAdapter(IAudioAdapter * *aAudioAdapter); \
  NS_IMETHOD GetStorageControllers(PRUint32 *storageControllersSize, IStorageController ***storageControllers); \
  NS_IMETHOD GetSettingsFilePath(PRUnichar * *aSettingsFilePath); \
  NS_IMETHOD GetSettingsModified(PRBool *aSettingsModified); \
  NS_IMETHOD GetSessionState(PRUint32 *aSessionState); \
  NS_IMETHOD GetSessionType(PRUnichar * *aSessionType); \
  NS_IMETHOD GetSessionPID(PRUint32 *aSessionPID); \
  NS_IMETHOD GetState(PRUint32 *aState); \
  NS_IMETHOD GetLastStateChange(PRInt64 *aLastStateChange); \
  NS_IMETHOD GetStateFilePath(PRUnichar * *aStateFilePath); \
  NS_IMETHOD GetLogFolder(PRUnichar * *aLogFolder); \
  NS_IMETHOD GetCurrentSnapshot(ISnapshot * *aCurrentSnapshot); \
  NS_IMETHOD GetSnapshotCount(PRUint32 *aSnapshotCount); \
  NS_IMETHOD GetCurrentStateModified(PRBool *aCurrentStateModified); \
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders); \
  NS_IMETHOD GetClipboardMode(PRUint32 *aClipboardMode); \
  NS_IMETHOD SetClipboardMode(PRUint32 aClipboardMode); \
  NS_IMETHOD GetDragAndDropMode(PRUint32 *aDragAndDropMode); \
  NS_IMETHOD SetDragAndDropMode(PRUint32 aDragAndDropMode); \
  NS_IMETHOD GetGuestPropertyNotificationPatterns(PRUnichar * *aGuestPropertyNotificationPatterns); \
  NS_IMETHOD SetGuestPropertyNotificationPatterns(const PRUnichar * aGuestPropertyNotificationPatterns); \
  NS_IMETHOD GetTeleporterEnabled(PRBool *aTeleporterEnabled); \
  NS_IMETHOD SetTeleporterEnabled(PRBool aTeleporterEnabled); \
  NS_IMETHOD GetTeleporterPort(PRUint32 *aTeleporterPort); \
  NS_IMETHOD SetTeleporterPort(PRUint32 aTeleporterPort); \
  NS_IMETHOD GetTeleporterAddress(PRUnichar * *aTeleporterAddress); \
  NS_IMETHOD SetTeleporterAddress(const PRUnichar * aTeleporterAddress); \
  NS_IMETHOD GetTeleporterPassword(PRUnichar * *aTeleporterPassword); \
  NS_IMETHOD SetTeleporterPassword(const PRUnichar * aTeleporterPassword); \
  NS_IMETHOD GetFaultToleranceState(PRUint32 *aFaultToleranceState); \
  NS_IMETHOD SetFaultToleranceState(PRUint32 aFaultToleranceState); \
  NS_IMETHOD GetFaultTolerancePort(PRUint32 *aFaultTolerancePort); \
  NS_IMETHOD SetFaultTolerancePort(PRUint32 aFaultTolerancePort); \
  NS_IMETHOD GetFaultToleranceAddress(PRUnichar * *aFaultToleranceAddress); \
  NS_IMETHOD SetFaultToleranceAddress(const PRUnichar * aFaultToleranceAddress); \
  NS_IMETHOD GetFaultTolerancePassword(PRUnichar * *aFaultTolerancePassword); \
  NS_IMETHOD SetFaultTolerancePassword(const PRUnichar * aFaultTolerancePassword); \
  NS_IMETHOD GetFaultToleranceSyncInterval(PRUint32 *aFaultToleranceSyncInterval); \
  NS_IMETHOD SetFaultToleranceSyncInterval(PRUint32 aFaultToleranceSyncInterval); \
  NS_IMETHOD GetRTCUseUTC(PRBool *aRTCUseUTC); \
  NS_IMETHOD SetRTCUseUTC(PRBool aRTCUseUTC); \
  NS_IMETHOD GetIOCacheEnabled(PRBool *aIOCacheEnabled); \
  NS_IMETHOD SetIOCacheEnabled(PRBool aIOCacheEnabled); \
  NS_IMETHOD GetIOCacheSize(PRUint32 *aIOCacheSize); \
  NS_IMETHOD SetIOCacheSize(PRUint32 aIOCacheSize); \
  NS_IMETHOD GetPCIDeviceAssignments(PRUint32 *PCIDeviceAssignmentsSize, IPCIDeviceAttachment ***PCIDeviceAssignments); \
  NS_IMETHOD GetBandwidthControl(IBandwidthControl * *aBandwidthControl); \
  NS_IMETHOD GetTracingEnabled(PRBool *aTracingEnabled); \
  NS_IMETHOD SetTracingEnabled(PRBool aTracingEnabled); \
  NS_IMETHOD GetTracingConfig(PRUnichar * *aTracingConfig); \
  NS_IMETHOD SetTracingConfig(const PRUnichar * aTracingConfig); \
  NS_IMETHOD GetAllowTracingToAccessVM(PRBool *aAllowTracingToAccessVM); \
  NS_IMETHOD SetAllowTracingToAccessVM(PRBool aAllowTracingToAccessVM); \
  NS_IMETHOD GetAutostartEnabled(PRBool *aAutostartEnabled); \
  NS_IMETHOD SetAutostartEnabled(PRBool aAutostartEnabled); \
  NS_IMETHOD GetAutostartDelay(PRUint32 *aAutostartDelay); \
  NS_IMETHOD SetAutostartDelay(PRUint32 aAutostartDelay); \
  NS_IMETHOD GetAutostopType(PRUint32 *aAutostopType); \
  NS_IMETHOD SetAutostopType(PRUint32 aAutostopType); \
  NS_IMETHOD GetDefaultFrontend(PRUnichar * *aDefaultFrontend); \
  NS_IMETHOD SetDefaultFrontend(const PRUnichar * aDefaultFrontend); \
  NS_IMETHOD GetUSBProxyAvailable(PRBool *aUSBProxyAvailable); \
  NS_IMETHOD LockMachine(ISession *session, PRUint32 lockType); \
  NS_IMETHOD LaunchVMProcess(ISession *session, const PRUnichar *type, const PRUnichar *environment, IProgress **progress); \
  NS_IMETHOD SetBootOrder(PRUint32 position, PRUint32 device); \
  NS_IMETHOD GetBootOrder(PRUint32 position, PRUint32 *device); \
  NS_IMETHOD AttachDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRUint32 type, IMedium *medium); \
  NS_IMETHOD AttachDeviceWithoutMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRUint32 type); \
  NS_IMETHOD DetachDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device); \
  NS_IMETHOD PassthroughDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool passthrough); \
  NS_IMETHOD TemporaryEjectDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool temporaryEject); \
  NS_IMETHOD NonRotationalDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool nonRotational); \
  NS_IMETHOD SetAutoDiscardForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool discard); \
  NS_IMETHOD SetHotPluggableForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool hotPluggable); \
  NS_IMETHOD SetBandwidthGroupForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IBandwidthGroup *bandwidthGroup); \
  NS_IMETHOD SetNoBandwidthGroupForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device); \
  NS_IMETHOD UnmountMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool force); \
  NS_IMETHOD MountMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMedium *medium, PRBool force); \
  NS_IMETHOD GetMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMedium **medium); \
  NS_IMETHOD GetMediumAttachmentsOfController(const PRUnichar *name, PRUint32 *mediumAttachmentsSize, IMediumAttachment ***mediumAttachments); \
  NS_IMETHOD GetMediumAttachment(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMediumAttachment **attachment); \
  NS_IMETHOD AttachHostPCIDevice(PRInt32 hostAddress, PRInt32 desiredGuestAddress, PRBool tryToUnbind); \
  NS_IMETHOD DetachHostPCIDevice(PRInt32 hostAddress); \
  NS_IMETHOD GetNetworkAdapter(PRUint32 slot, INetworkAdapter **adapter); \
  NS_IMETHOD AddStorageController(const PRUnichar *name, PRUint32 connectionType, IStorageController **controller); \
  NS_IMETHOD GetStorageControllerByName(const PRUnichar *name, IStorageController **storageController); \
  NS_IMETHOD GetStorageControllerByInstance(PRUint32 instance, IStorageController **storageController); \
  NS_IMETHOD RemoveStorageController(const PRUnichar *name); \
  NS_IMETHOD SetStorageControllerBootable(const PRUnichar *name, PRBool bootable); \
  NS_IMETHOD AddUSBController(const PRUnichar *name, PRUint32 type, IUSBController **controller); \
  NS_IMETHOD RemoveUSBController(const PRUnichar *name); \
  NS_IMETHOD GetUSBControllerByName(const PRUnichar *name, IUSBController **controller); \
  NS_IMETHOD GetUSBControllerCountByType(PRUint32 type, PRUint32 *controllers); \
  NS_IMETHOD GetSerialPort(PRUint32 slot, ISerialPort **port); \
  NS_IMETHOD GetParallelPort(PRUint32 slot, IParallelPort **port); \
  NS_IMETHOD GetExtraDataKeys(PRUint32 *keysSize, PRUnichar ***keys); \
  NS_IMETHOD GetExtraData(const PRUnichar *key, PRUnichar **value); \
  NS_IMETHOD SetExtraData(const PRUnichar *key, const PRUnichar *value); \
  NS_IMETHOD GetCPUProperty(PRUint32 property, PRBool *value); \
  NS_IMETHOD SetCPUProperty(PRUint32 property, PRBool value); \
  NS_IMETHOD GetCPUIDLeaf(PRUint32 id, PRUint32 *valEax, PRUint32 *valEbx, PRUint32 *valEcx, PRUint32 *valEdx); \
  NS_IMETHOD SetCPUIDLeaf(PRUint32 id, PRUint32 valEax, PRUint32 valEbx, PRUint32 valEcx, PRUint32 valEdx); \
  NS_IMETHOD RemoveCPUIDLeaf(PRUint32 id); \
  NS_IMETHOD RemoveAllCPUIDLeaves(void); \
  NS_IMETHOD GetHWVirtExProperty(PRUint32 property, PRBool *value); \
  NS_IMETHOD SetHWVirtExProperty(PRUint32 property, PRBool value); \
  NS_IMETHOD SetSettingsFilePath(const PRUnichar *settingsFilePath, IProgress **progress); \
  NS_IMETHOD SaveSettings(void); \
  NS_IMETHOD DiscardSettings(void); \
  NS_IMETHOD Unregister(PRUint32 cleanupMode, PRUint32 *mediaSize, IMedium ***media); \
  NS_IMETHOD DeleteConfig(PRUint32 mediaSize, IMedium **media, IProgress **progress); \
  NS_IMETHOD ExportTo(IAppliance *appliance, const PRUnichar *location, IVirtualSystemDescription **description); \
  NS_IMETHOD FindSnapshot(const PRUnichar *nameOrId, ISnapshot **snapshot); \
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable, PRBool automount); \
  NS_IMETHOD RemoveSharedFolder(const PRUnichar *name); \
  NS_IMETHOD CanShowConsoleWindow(PRBool *canShow); \
  NS_IMETHOD ShowConsoleWindow(PRInt64 *winId); \
  NS_IMETHOD GetGuestProperty(const PRUnichar *name, PRUnichar **value, PRInt64 *timestamp, PRUnichar **flags); \
  NS_IMETHOD GetGuestPropertyValue(const PRUnichar *property, PRUnichar **value); \
  NS_IMETHOD GetGuestPropertyTimestamp(const PRUnichar *property, PRInt64 *value); \
  NS_IMETHOD SetGuestProperty(const PRUnichar *property, const PRUnichar *value, const PRUnichar *flags); \
  NS_IMETHOD SetGuestPropertyValue(const PRUnichar *property, const PRUnichar *value); \
  NS_IMETHOD DeleteGuestProperty(const PRUnichar *name); \
  NS_IMETHOD EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *namesSize, PRUnichar ***names, PRUint32 *valuesSize, PRUnichar ***values, PRUint32 *timestampsSize, PRInt64 **timestamps, PRUint32 *flagsSize, PRUnichar ***flags); \
  NS_IMETHOD QuerySavedGuestScreenInfo(PRUint32 screenId, PRUint32 *originX, PRUint32 *originY, PRUint32 *width, PRUint32 *height, PRBool *enabled); \
  NS_IMETHOD QuerySavedThumbnailSize(PRUint32 screenId, PRUint32 *size, PRUint32 *width, PRUint32 *height); \
  NS_IMETHOD ReadSavedThumbnailToArray(PRUint32 screenId, PRBool BGR, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data); \
  NS_IMETHOD ReadSavedThumbnailPNGToArray(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data); \
  NS_IMETHOD QuerySavedScreenshotPNGSize(PRUint32 screenId, PRUint32 *size, PRUint32 *width, PRUint32 *height); \
  NS_IMETHOD ReadSavedScreenshotPNGToArray(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data); \
  NS_IMETHOD HotPlugCPU(PRUint32 cpu); \
  NS_IMETHOD HotUnplugCPU(PRUint32 cpu); \
  NS_IMETHOD GetCPUStatus(PRUint32 cpu, PRBool *attached); \
  NS_IMETHOD QueryLogFilename(PRUint32 idx, PRUnichar **filename); \
  NS_IMETHOD ReadLog(PRUint32 idx, PRInt64 offset, PRInt64 size, PRUint32 *dataSize, PRUint8 **data); \
  NS_IMETHOD CloneTo(IMachine *target, PRUint32 mode, PRUint32 optionsSize, PRUint32 *options, IProgress **progress); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMACHINE(_to) \
  NS_IMETHOD GetParent(IVirtualBox * *aParent) { return _to GetParent(aParent); } \
  NS_IMETHOD GetIcon(PRUint32 *iconSize, PRUint8 **icon) { return _to GetIcon(iconSize, icon); } \
  NS_IMETHOD SetIcon(PRUint32 iconSize, PRUint8 *icon) { return _to SetIcon(iconSize, icon); } \
  NS_IMETHOD GetAccessible(PRBool *aAccessible) { return _to GetAccessible(aAccessible); } \
  NS_IMETHOD GetAccessError(IVirtualBoxErrorInfo * *aAccessError) { return _to GetAccessError(aAccessError); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD SetName(const PRUnichar * aName) { return _to SetName(aName); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return _to GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription) { return _to SetDescription(aDescription); } \
  NS_IMETHOD GetId(PRUnichar * *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetGroups(PRUint32 *groupsSize, PRUnichar ***groups) { return _to GetGroups(groupsSize, groups); } \
  NS_IMETHOD SetGroups(PRUint32 groupsSize, const PRUnichar **groups) { return _to SetGroups(groupsSize, groups); } \
  NS_IMETHOD GetOSTypeId(PRUnichar * *aOSTypeId) { return _to GetOSTypeId(aOSTypeId); } \
  NS_IMETHOD SetOSTypeId(const PRUnichar * aOSTypeId) { return _to SetOSTypeId(aOSTypeId); } \
  NS_IMETHOD GetHardwareVersion(PRUnichar * *aHardwareVersion) { return _to GetHardwareVersion(aHardwareVersion); } \
  NS_IMETHOD SetHardwareVersion(const PRUnichar * aHardwareVersion) { return _to SetHardwareVersion(aHardwareVersion); } \
  NS_IMETHOD GetHardwareUUID(PRUnichar * *aHardwareUUID) { return _to GetHardwareUUID(aHardwareUUID); } \
  NS_IMETHOD SetHardwareUUID(const PRUnichar * aHardwareUUID) { return _to SetHardwareUUID(aHardwareUUID); } \
  NS_IMETHOD GetCPUCount(PRUint32 *aCPUCount) { return _to GetCPUCount(aCPUCount); } \
  NS_IMETHOD SetCPUCount(PRUint32 aCPUCount) { return _to SetCPUCount(aCPUCount); } \
  NS_IMETHOD GetCPUHotPlugEnabled(PRBool *aCPUHotPlugEnabled) { return _to GetCPUHotPlugEnabled(aCPUHotPlugEnabled); } \
  NS_IMETHOD SetCPUHotPlugEnabled(PRBool aCPUHotPlugEnabled) { return _to SetCPUHotPlugEnabled(aCPUHotPlugEnabled); } \
  NS_IMETHOD GetCPUExecutionCap(PRUint32 *aCPUExecutionCap) { return _to GetCPUExecutionCap(aCPUExecutionCap); } \
  NS_IMETHOD SetCPUExecutionCap(PRUint32 aCPUExecutionCap) { return _to SetCPUExecutionCap(aCPUExecutionCap); } \
  NS_IMETHOD GetMemorySize(PRUint32 *aMemorySize) { return _to GetMemorySize(aMemorySize); } \
  NS_IMETHOD SetMemorySize(PRUint32 aMemorySize) { return _to SetMemorySize(aMemorySize); } \
  NS_IMETHOD GetMemoryBalloonSize(PRUint32 *aMemoryBalloonSize) { return _to GetMemoryBalloonSize(aMemoryBalloonSize); } \
  NS_IMETHOD SetMemoryBalloonSize(PRUint32 aMemoryBalloonSize) { return _to SetMemoryBalloonSize(aMemoryBalloonSize); } \
  NS_IMETHOD GetPageFusionEnabled(PRBool *aPageFusionEnabled) { return _to GetPageFusionEnabled(aPageFusionEnabled); } \
  NS_IMETHOD SetPageFusionEnabled(PRBool aPageFusionEnabled) { return _to SetPageFusionEnabled(aPageFusionEnabled); } \
  NS_IMETHOD GetGraphicsControllerType(PRUint32 *aGraphicsControllerType) { return _to GetGraphicsControllerType(aGraphicsControllerType); } \
  NS_IMETHOD SetGraphicsControllerType(PRUint32 aGraphicsControllerType) { return _to SetGraphicsControllerType(aGraphicsControllerType); } \
  NS_IMETHOD GetVRAMSize(PRUint32 *aVRAMSize) { return _to GetVRAMSize(aVRAMSize); } \
  NS_IMETHOD SetVRAMSize(PRUint32 aVRAMSize) { return _to SetVRAMSize(aVRAMSize); } \
  NS_IMETHOD GetAccelerate3DEnabled(PRBool *aAccelerate3DEnabled) { return _to GetAccelerate3DEnabled(aAccelerate3DEnabled); } \
  NS_IMETHOD SetAccelerate3DEnabled(PRBool aAccelerate3DEnabled) { return _to SetAccelerate3DEnabled(aAccelerate3DEnabled); } \
  NS_IMETHOD GetAccelerate2DVideoEnabled(PRBool *aAccelerate2DVideoEnabled) { return _to GetAccelerate2DVideoEnabled(aAccelerate2DVideoEnabled); } \
  NS_IMETHOD SetAccelerate2DVideoEnabled(PRBool aAccelerate2DVideoEnabled) { return _to SetAccelerate2DVideoEnabled(aAccelerate2DVideoEnabled); } \
  NS_IMETHOD GetMonitorCount(PRUint32 *aMonitorCount) { return _to GetMonitorCount(aMonitorCount); } \
  NS_IMETHOD SetMonitorCount(PRUint32 aMonitorCount) { return _to SetMonitorCount(aMonitorCount); } \
  NS_IMETHOD GetVideoCaptureEnabled(PRBool *aVideoCaptureEnabled) { return _to GetVideoCaptureEnabled(aVideoCaptureEnabled); } \
  NS_IMETHOD SetVideoCaptureEnabled(PRBool aVideoCaptureEnabled) { return _to SetVideoCaptureEnabled(aVideoCaptureEnabled); } \
  NS_IMETHOD GetVideoCaptureScreens(PRUint32 *videoCaptureScreensSize, PRBool **videoCaptureScreens) { return _to GetVideoCaptureScreens(videoCaptureScreensSize, videoCaptureScreens); } \
  NS_IMETHOD SetVideoCaptureScreens(PRUint32 videoCaptureScreensSize, PRBool *videoCaptureScreens) { return _to SetVideoCaptureScreens(videoCaptureScreensSize, videoCaptureScreens); } \
  NS_IMETHOD GetVideoCaptureFile(PRUnichar * *aVideoCaptureFile) { return _to GetVideoCaptureFile(aVideoCaptureFile); } \
  NS_IMETHOD SetVideoCaptureFile(const PRUnichar * aVideoCaptureFile) { return _to SetVideoCaptureFile(aVideoCaptureFile); } \
  NS_IMETHOD GetVideoCaptureWidth(PRUint32 *aVideoCaptureWidth) { return _to GetVideoCaptureWidth(aVideoCaptureWidth); } \
  NS_IMETHOD SetVideoCaptureWidth(PRUint32 aVideoCaptureWidth) { return _to SetVideoCaptureWidth(aVideoCaptureWidth); } \
  NS_IMETHOD GetVideoCaptureHeight(PRUint32 *aVideoCaptureHeight) { return _to GetVideoCaptureHeight(aVideoCaptureHeight); } \
  NS_IMETHOD SetVideoCaptureHeight(PRUint32 aVideoCaptureHeight) { return _to SetVideoCaptureHeight(aVideoCaptureHeight); } \
  NS_IMETHOD GetVideoCaptureRate(PRUint32 *aVideoCaptureRate) { return _to GetVideoCaptureRate(aVideoCaptureRate); } \
  NS_IMETHOD SetVideoCaptureRate(PRUint32 aVideoCaptureRate) { return _to SetVideoCaptureRate(aVideoCaptureRate); } \
  NS_IMETHOD GetVideoCaptureFPS(PRUint32 *aVideoCaptureFPS) { return _to GetVideoCaptureFPS(aVideoCaptureFPS); } \
  NS_IMETHOD SetVideoCaptureFPS(PRUint32 aVideoCaptureFPS) { return _to SetVideoCaptureFPS(aVideoCaptureFPS); } \
  NS_IMETHOD GetBIOSSettings(IBIOSSettings * *aBIOSSettings) { return _to GetBIOSSettings(aBIOSSettings); } \
  NS_IMETHOD GetFirmwareType(PRUint32 *aFirmwareType) { return _to GetFirmwareType(aFirmwareType); } \
  NS_IMETHOD SetFirmwareType(PRUint32 aFirmwareType) { return _to SetFirmwareType(aFirmwareType); } \
  NS_IMETHOD GetPointingHIDType(PRUint32 *aPointingHIDType) { return _to GetPointingHIDType(aPointingHIDType); } \
  NS_IMETHOD SetPointingHIDType(PRUint32 aPointingHIDType) { return _to SetPointingHIDType(aPointingHIDType); } \
  NS_IMETHOD GetKeyboardHIDType(PRUint32 *aKeyboardHIDType) { return _to GetKeyboardHIDType(aKeyboardHIDType); } \
  NS_IMETHOD SetKeyboardHIDType(PRUint32 aKeyboardHIDType) { return _to SetKeyboardHIDType(aKeyboardHIDType); } \
  NS_IMETHOD GetHPETEnabled(PRBool *aHPETEnabled) { return _to GetHPETEnabled(aHPETEnabled); } \
  NS_IMETHOD SetHPETEnabled(PRBool aHPETEnabled) { return _to SetHPETEnabled(aHPETEnabled); } \
  NS_IMETHOD GetChipsetType(PRUint32 *aChipsetType) { return _to GetChipsetType(aChipsetType); } \
  NS_IMETHOD SetChipsetType(PRUint32 aChipsetType) { return _to SetChipsetType(aChipsetType); } \
  NS_IMETHOD GetSnapshotFolder(PRUnichar * *aSnapshotFolder) { return _to GetSnapshotFolder(aSnapshotFolder); } \
  NS_IMETHOD SetSnapshotFolder(const PRUnichar * aSnapshotFolder) { return _to SetSnapshotFolder(aSnapshotFolder); } \
  NS_IMETHOD GetVRDEServer(IVRDEServer * *aVRDEServer) { return _to GetVRDEServer(aVRDEServer); } \
  NS_IMETHOD GetEmulatedUSBCardReaderEnabled(PRBool *aEmulatedUSBCardReaderEnabled) { return _to GetEmulatedUSBCardReaderEnabled(aEmulatedUSBCardReaderEnabled); } \
  NS_IMETHOD SetEmulatedUSBCardReaderEnabled(PRBool aEmulatedUSBCardReaderEnabled) { return _to SetEmulatedUSBCardReaderEnabled(aEmulatedUSBCardReaderEnabled); } \
  NS_IMETHOD GetMediumAttachments(PRUint32 *mediumAttachmentsSize, IMediumAttachment ***mediumAttachments) { return _to GetMediumAttachments(mediumAttachmentsSize, mediumAttachments); } \
  NS_IMETHOD GetUSBControllers(PRUint32 *USBControllersSize, IUSBController ***USBControllers) { return _to GetUSBControllers(USBControllersSize, USBControllers); } \
  NS_IMETHOD GetUSBDeviceFilters(IUSBDeviceFilters * *aUSBDeviceFilters) { return _to GetUSBDeviceFilters(aUSBDeviceFilters); } \
  NS_IMETHOD GetAudioAdapter(IAudioAdapter * *aAudioAdapter) { return _to GetAudioAdapter(aAudioAdapter); } \
  NS_IMETHOD GetStorageControllers(PRUint32 *storageControllersSize, IStorageController ***storageControllers) { return _to GetStorageControllers(storageControllersSize, storageControllers); } \
  NS_IMETHOD GetSettingsFilePath(PRUnichar * *aSettingsFilePath) { return _to GetSettingsFilePath(aSettingsFilePath); } \
  NS_IMETHOD GetSettingsModified(PRBool *aSettingsModified) { return _to GetSettingsModified(aSettingsModified); } \
  NS_IMETHOD GetSessionState(PRUint32 *aSessionState) { return _to GetSessionState(aSessionState); } \
  NS_IMETHOD GetSessionType(PRUnichar * *aSessionType) { return _to GetSessionType(aSessionType); } \
  NS_IMETHOD GetSessionPID(PRUint32 *aSessionPID) { return _to GetSessionPID(aSessionPID); } \
  NS_IMETHOD GetState(PRUint32 *aState) { return _to GetState(aState); } \
  NS_IMETHOD GetLastStateChange(PRInt64 *aLastStateChange) { return _to GetLastStateChange(aLastStateChange); } \
  NS_IMETHOD GetStateFilePath(PRUnichar * *aStateFilePath) { return _to GetStateFilePath(aStateFilePath); } \
  NS_IMETHOD GetLogFolder(PRUnichar * *aLogFolder) { return _to GetLogFolder(aLogFolder); } \
  NS_IMETHOD GetCurrentSnapshot(ISnapshot * *aCurrentSnapshot) { return _to GetCurrentSnapshot(aCurrentSnapshot); } \
  NS_IMETHOD GetSnapshotCount(PRUint32 *aSnapshotCount) { return _to GetSnapshotCount(aSnapshotCount); } \
  NS_IMETHOD GetCurrentStateModified(PRBool *aCurrentStateModified) { return _to GetCurrentStateModified(aCurrentStateModified); } \
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders) { return _to GetSharedFolders(sharedFoldersSize, sharedFolders); } \
  NS_IMETHOD GetClipboardMode(PRUint32 *aClipboardMode) { return _to GetClipboardMode(aClipboardMode); } \
  NS_IMETHOD SetClipboardMode(PRUint32 aClipboardMode) { return _to SetClipboardMode(aClipboardMode); } \
  NS_IMETHOD GetDragAndDropMode(PRUint32 *aDragAndDropMode) { return _to GetDragAndDropMode(aDragAndDropMode); } \
  NS_IMETHOD SetDragAndDropMode(PRUint32 aDragAndDropMode) { return _to SetDragAndDropMode(aDragAndDropMode); } \
  NS_IMETHOD GetGuestPropertyNotificationPatterns(PRUnichar * *aGuestPropertyNotificationPatterns) { return _to GetGuestPropertyNotificationPatterns(aGuestPropertyNotificationPatterns); } \
  NS_IMETHOD SetGuestPropertyNotificationPatterns(const PRUnichar * aGuestPropertyNotificationPatterns) { return _to SetGuestPropertyNotificationPatterns(aGuestPropertyNotificationPatterns); } \
  NS_IMETHOD GetTeleporterEnabled(PRBool *aTeleporterEnabled) { return _to GetTeleporterEnabled(aTeleporterEnabled); } \
  NS_IMETHOD SetTeleporterEnabled(PRBool aTeleporterEnabled) { return _to SetTeleporterEnabled(aTeleporterEnabled); } \
  NS_IMETHOD GetTeleporterPort(PRUint32 *aTeleporterPort) { return _to GetTeleporterPort(aTeleporterPort); } \
  NS_IMETHOD SetTeleporterPort(PRUint32 aTeleporterPort) { return _to SetTeleporterPort(aTeleporterPort); } \
  NS_IMETHOD GetTeleporterAddress(PRUnichar * *aTeleporterAddress) { return _to GetTeleporterAddress(aTeleporterAddress); } \
  NS_IMETHOD SetTeleporterAddress(const PRUnichar * aTeleporterAddress) { return _to SetTeleporterAddress(aTeleporterAddress); } \
  NS_IMETHOD GetTeleporterPassword(PRUnichar * *aTeleporterPassword) { return _to GetTeleporterPassword(aTeleporterPassword); } \
  NS_IMETHOD SetTeleporterPassword(const PRUnichar * aTeleporterPassword) { return _to SetTeleporterPassword(aTeleporterPassword); } \
  NS_IMETHOD GetFaultToleranceState(PRUint32 *aFaultToleranceState) { return _to GetFaultToleranceState(aFaultToleranceState); } \
  NS_IMETHOD SetFaultToleranceState(PRUint32 aFaultToleranceState) { return _to SetFaultToleranceState(aFaultToleranceState); } \
  NS_IMETHOD GetFaultTolerancePort(PRUint32 *aFaultTolerancePort) { return _to GetFaultTolerancePort(aFaultTolerancePort); } \
  NS_IMETHOD SetFaultTolerancePort(PRUint32 aFaultTolerancePort) { return _to SetFaultTolerancePort(aFaultTolerancePort); } \
  NS_IMETHOD GetFaultToleranceAddress(PRUnichar * *aFaultToleranceAddress) { return _to GetFaultToleranceAddress(aFaultToleranceAddress); } \
  NS_IMETHOD SetFaultToleranceAddress(const PRUnichar * aFaultToleranceAddress) { return _to SetFaultToleranceAddress(aFaultToleranceAddress); } \
  NS_IMETHOD GetFaultTolerancePassword(PRUnichar * *aFaultTolerancePassword) { return _to GetFaultTolerancePassword(aFaultTolerancePassword); } \
  NS_IMETHOD SetFaultTolerancePassword(const PRUnichar * aFaultTolerancePassword) { return _to SetFaultTolerancePassword(aFaultTolerancePassword); } \
  NS_IMETHOD GetFaultToleranceSyncInterval(PRUint32 *aFaultToleranceSyncInterval) { return _to GetFaultToleranceSyncInterval(aFaultToleranceSyncInterval); } \
  NS_IMETHOD SetFaultToleranceSyncInterval(PRUint32 aFaultToleranceSyncInterval) { return _to SetFaultToleranceSyncInterval(aFaultToleranceSyncInterval); } \
  NS_IMETHOD GetRTCUseUTC(PRBool *aRTCUseUTC) { return _to GetRTCUseUTC(aRTCUseUTC); } \
  NS_IMETHOD SetRTCUseUTC(PRBool aRTCUseUTC) { return _to SetRTCUseUTC(aRTCUseUTC); } \
  NS_IMETHOD GetIOCacheEnabled(PRBool *aIOCacheEnabled) { return _to GetIOCacheEnabled(aIOCacheEnabled); } \
  NS_IMETHOD SetIOCacheEnabled(PRBool aIOCacheEnabled) { return _to SetIOCacheEnabled(aIOCacheEnabled); } \
  NS_IMETHOD GetIOCacheSize(PRUint32 *aIOCacheSize) { return _to GetIOCacheSize(aIOCacheSize); } \
  NS_IMETHOD SetIOCacheSize(PRUint32 aIOCacheSize) { return _to SetIOCacheSize(aIOCacheSize); } \
  NS_IMETHOD GetPCIDeviceAssignments(PRUint32 *PCIDeviceAssignmentsSize, IPCIDeviceAttachment ***PCIDeviceAssignments) { return _to GetPCIDeviceAssignments(PCIDeviceAssignmentsSize, PCIDeviceAssignments); } \
  NS_IMETHOD GetBandwidthControl(IBandwidthControl * *aBandwidthControl) { return _to GetBandwidthControl(aBandwidthControl); } \
  NS_IMETHOD GetTracingEnabled(PRBool *aTracingEnabled) { return _to GetTracingEnabled(aTracingEnabled); } \
  NS_IMETHOD SetTracingEnabled(PRBool aTracingEnabled) { return _to SetTracingEnabled(aTracingEnabled); } \
  NS_IMETHOD GetTracingConfig(PRUnichar * *aTracingConfig) { return _to GetTracingConfig(aTracingConfig); } \
  NS_IMETHOD SetTracingConfig(const PRUnichar * aTracingConfig) { return _to SetTracingConfig(aTracingConfig); } \
  NS_IMETHOD GetAllowTracingToAccessVM(PRBool *aAllowTracingToAccessVM) { return _to GetAllowTracingToAccessVM(aAllowTracingToAccessVM); } \
  NS_IMETHOD SetAllowTracingToAccessVM(PRBool aAllowTracingToAccessVM) { return _to SetAllowTracingToAccessVM(aAllowTracingToAccessVM); } \
  NS_IMETHOD GetAutostartEnabled(PRBool *aAutostartEnabled) { return _to GetAutostartEnabled(aAutostartEnabled); } \
  NS_IMETHOD SetAutostartEnabled(PRBool aAutostartEnabled) { return _to SetAutostartEnabled(aAutostartEnabled); } \
  NS_IMETHOD GetAutostartDelay(PRUint32 *aAutostartDelay) { return _to GetAutostartDelay(aAutostartDelay); } \
  NS_IMETHOD SetAutostartDelay(PRUint32 aAutostartDelay) { return _to SetAutostartDelay(aAutostartDelay); } \
  NS_IMETHOD GetAutostopType(PRUint32 *aAutostopType) { return _to GetAutostopType(aAutostopType); } \
  NS_IMETHOD SetAutostopType(PRUint32 aAutostopType) { return _to SetAutostopType(aAutostopType); } \
  NS_IMETHOD GetDefaultFrontend(PRUnichar * *aDefaultFrontend) { return _to GetDefaultFrontend(aDefaultFrontend); } \
  NS_IMETHOD SetDefaultFrontend(const PRUnichar * aDefaultFrontend) { return _to SetDefaultFrontend(aDefaultFrontend); } \
  NS_IMETHOD GetUSBProxyAvailable(PRBool *aUSBProxyAvailable) { return _to GetUSBProxyAvailable(aUSBProxyAvailable); } \
  NS_IMETHOD LockMachine(ISession *session, PRUint32 lockType) { return _to LockMachine(session, lockType); } \
  NS_IMETHOD LaunchVMProcess(ISession *session, const PRUnichar *type, const PRUnichar *environment, IProgress **progress) { return _to LaunchVMProcess(session, type, environment, progress); } \
  NS_IMETHOD SetBootOrder(PRUint32 position, PRUint32 device) { return _to SetBootOrder(position, device); } \
  NS_IMETHOD GetBootOrder(PRUint32 position, PRUint32 *device) { return _to GetBootOrder(position, device); } \
  NS_IMETHOD AttachDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRUint32 type, IMedium *medium) { return _to AttachDevice(name, controllerPort, device, type, medium); } \
  NS_IMETHOD AttachDeviceWithoutMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRUint32 type) { return _to AttachDeviceWithoutMedium(name, controllerPort, device, type); } \
  NS_IMETHOD DetachDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device) { return _to DetachDevice(name, controllerPort, device); } \
  NS_IMETHOD PassthroughDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool passthrough) { return _to PassthroughDevice(name, controllerPort, device, passthrough); } \
  NS_IMETHOD TemporaryEjectDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool temporaryEject) { return _to TemporaryEjectDevice(name, controllerPort, device, temporaryEject); } \
  NS_IMETHOD NonRotationalDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool nonRotational) { return _to NonRotationalDevice(name, controllerPort, device, nonRotational); } \
  NS_IMETHOD SetAutoDiscardForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool discard) { return _to SetAutoDiscardForDevice(name, controllerPort, device, discard); } \
  NS_IMETHOD SetHotPluggableForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool hotPluggable) { return _to SetHotPluggableForDevice(name, controllerPort, device, hotPluggable); } \
  NS_IMETHOD SetBandwidthGroupForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IBandwidthGroup *bandwidthGroup) { return _to SetBandwidthGroupForDevice(name, controllerPort, device, bandwidthGroup); } \
  NS_IMETHOD SetNoBandwidthGroupForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device) { return _to SetNoBandwidthGroupForDevice(name, controllerPort, device); } \
  NS_IMETHOD UnmountMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool force) { return _to UnmountMedium(name, controllerPort, device, force); } \
  NS_IMETHOD MountMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMedium *medium, PRBool force) { return _to MountMedium(name, controllerPort, device, medium, force); } \
  NS_IMETHOD GetMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMedium **medium) { return _to GetMedium(name, controllerPort, device, medium); } \
  NS_IMETHOD GetMediumAttachmentsOfController(const PRUnichar *name, PRUint32 *mediumAttachmentsSize, IMediumAttachment ***mediumAttachments) { return _to GetMediumAttachmentsOfController(name, mediumAttachmentsSize, mediumAttachments); } \
  NS_IMETHOD GetMediumAttachment(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMediumAttachment **attachment) { return _to GetMediumAttachment(name, controllerPort, device, attachment); } \
  NS_IMETHOD AttachHostPCIDevice(PRInt32 hostAddress, PRInt32 desiredGuestAddress, PRBool tryToUnbind) { return _to AttachHostPCIDevice(hostAddress, desiredGuestAddress, tryToUnbind); } \
  NS_IMETHOD DetachHostPCIDevice(PRInt32 hostAddress) { return _to DetachHostPCIDevice(hostAddress); } \
  NS_IMETHOD GetNetworkAdapter(PRUint32 slot, INetworkAdapter **adapter) { return _to GetNetworkAdapter(slot, adapter); } \
  NS_IMETHOD AddStorageController(const PRUnichar *name, PRUint32 connectionType, IStorageController **controller) { return _to AddStorageController(name, connectionType, controller); } \
  NS_IMETHOD GetStorageControllerByName(const PRUnichar *name, IStorageController **storageController) { return _to GetStorageControllerByName(name, storageController); } \
  NS_IMETHOD GetStorageControllerByInstance(PRUint32 instance, IStorageController **storageController) { return _to GetStorageControllerByInstance(instance, storageController); } \
  NS_IMETHOD RemoveStorageController(const PRUnichar *name) { return _to RemoveStorageController(name); } \
  NS_IMETHOD SetStorageControllerBootable(const PRUnichar *name, PRBool bootable) { return _to SetStorageControllerBootable(name, bootable); } \
  NS_IMETHOD AddUSBController(const PRUnichar *name, PRUint32 type, IUSBController **controller) { return _to AddUSBController(name, type, controller); } \
  NS_IMETHOD RemoveUSBController(const PRUnichar *name) { return _to RemoveUSBController(name); } \
  NS_IMETHOD GetUSBControllerByName(const PRUnichar *name, IUSBController **controller) { return _to GetUSBControllerByName(name, controller); } \
  NS_IMETHOD GetUSBControllerCountByType(PRUint32 type, PRUint32 *controllers) { return _to GetUSBControllerCountByType(type, controllers); } \
  NS_IMETHOD GetSerialPort(PRUint32 slot, ISerialPort **port) { return _to GetSerialPort(slot, port); } \
  NS_IMETHOD GetParallelPort(PRUint32 slot, IParallelPort **port) { return _to GetParallelPort(slot, port); } \
  NS_IMETHOD GetExtraDataKeys(PRUint32 *keysSize, PRUnichar ***keys) { return _to GetExtraDataKeys(keysSize, keys); } \
  NS_IMETHOD GetExtraData(const PRUnichar *key, PRUnichar **value) { return _to GetExtraData(key, value); } \
  NS_IMETHOD SetExtraData(const PRUnichar *key, const PRUnichar *value) { return _to SetExtraData(key, value); } \
  NS_IMETHOD GetCPUProperty(PRUint32 property, PRBool *value) { return _to GetCPUProperty(property, value); } \
  NS_IMETHOD SetCPUProperty(PRUint32 property, PRBool value) { return _to SetCPUProperty(property, value); } \
  NS_IMETHOD GetCPUIDLeaf(PRUint32 id, PRUint32 *valEax, PRUint32 *valEbx, PRUint32 *valEcx, PRUint32 *valEdx) { return _to GetCPUIDLeaf(id, valEax, valEbx, valEcx, valEdx); } \
  NS_IMETHOD SetCPUIDLeaf(PRUint32 id, PRUint32 valEax, PRUint32 valEbx, PRUint32 valEcx, PRUint32 valEdx) { return _to SetCPUIDLeaf(id, valEax, valEbx, valEcx, valEdx); } \
  NS_IMETHOD RemoveCPUIDLeaf(PRUint32 id) { return _to RemoveCPUIDLeaf(id); } \
  NS_IMETHOD RemoveAllCPUIDLeaves(void) { return _to RemoveAllCPUIDLeaves(); } \
  NS_IMETHOD GetHWVirtExProperty(PRUint32 property, PRBool *value) { return _to GetHWVirtExProperty(property, value); } \
  NS_IMETHOD SetHWVirtExProperty(PRUint32 property, PRBool value) { return _to SetHWVirtExProperty(property, value); } \
  NS_IMETHOD SetSettingsFilePath(const PRUnichar *settingsFilePath, IProgress **progress) { return _to SetSettingsFilePath(settingsFilePath, progress); } \
  NS_IMETHOD SaveSettings(void) { return _to SaveSettings(); } \
  NS_IMETHOD DiscardSettings(void) { return _to DiscardSettings(); } \
  NS_IMETHOD Unregister(PRUint32 cleanupMode, PRUint32 *mediaSize, IMedium ***media) { return _to Unregister(cleanupMode, mediaSize, media); } \
  NS_IMETHOD DeleteConfig(PRUint32 mediaSize, IMedium **media, IProgress **progress) { return _to DeleteConfig(mediaSize, media, progress); } \
  NS_IMETHOD ExportTo(IAppliance *appliance, const PRUnichar *location, IVirtualSystemDescription **description) { return _to ExportTo(appliance, location, description); } \
  NS_IMETHOD FindSnapshot(const PRUnichar *nameOrId, ISnapshot **snapshot) { return _to FindSnapshot(nameOrId, snapshot); } \
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable, PRBool automount) { return _to CreateSharedFolder(name, hostPath, writable, automount); } \
  NS_IMETHOD RemoveSharedFolder(const PRUnichar *name) { return _to RemoveSharedFolder(name); } \
  NS_IMETHOD CanShowConsoleWindow(PRBool *canShow) { return _to CanShowConsoleWindow(canShow); } \
  NS_IMETHOD ShowConsoleWindow(PRInt64 *winId) { return _to ShowConsoleWindow(winId); } \
  NS_IMETHOD GetGuestProperty(const PRUnichar *name, PRUnichar **value, PRInt64 *timestamp, PRUnichar **flags) { return _to GetGuestProperty(name, value, timestamp, flags); } \
  NS_IMETHOD GetGuestPropertyValue(const PRUnichar *property, PRUnichar **value) { return _to GetGuestPropertyValue(property, value); } \
  NS_IMETHOD GetGuestPropertyTimestamp(const PRUnichar *property, PRInt64 *value) { return _to GetGuestPropertyTimestamp(property, value); } \
  NS_IMETHOD SetGuestProperty(const PRUnichar *property, const PRUnichar *value, const PRUnichar *flags) { return _to SetGuestProperty(property, value, flags); } \
  NS_IMETHOD SetGuestPropertyValue(const PRUnichar *property, const PRUnichar *value) { return _to SetGuestPropertyValue(property, value); } \
  NS_IMETHOD DeleteGuestProperty(const PRUnichar *name) { return _to DeleteGuestProperty(name); } \
  NS_IMETHOD EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *namesSize, PRUnichar ***names, PRUint32 *valuesSize, PRUnichar ***values, PRUint32 *timestampsSize, PRInt64 **timestamps, PRUint32 *flagsSize, PRUnichar ***flags) { return _to EnumerateGuestProperties(patterns, namesSize, names, valuesSize, values, timestampsSize, timestamps, flagsSize, flags); } \
  NS_IMETHOD QuerySavedGuestScreenInfo(PRUint32 screenId, PRUint32 *originX, PRUint32 *originY, PRUint32 *width, PRUint32 *height, PRBool *enabled) { return _to QuerySavedGuestScreenInfo(screenId, originX, originY, width, height, enabled); } \
  NS_IMETHOD QuerySavedThumbnailSize(PRUint32 screenId, PRUint32 *size, PRUint32 *width, PRUint32 *height) { return _to QuerySavedThumbnailSize(screenId, size, width, height); } \
  NS_IMETHOD ReadSavedThumbnailToArray(PRUint32 screenId, PRBool BGR, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data) { return _to ReadSavedThumbnailToArray(screenId, BGR, width, height, dataSize, data); } \
  NS_IMETHOD ReadSavedThumbnailPNGToArray(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data) { return _to ReadSavedThumbnailPNGToArray(screenId, width, height, dataSize, data); } \
  NS_IMETHOD QuerySavedScreenshotPNGSize(PRUint32 screenId, PRUint32 *size, PRUint32 *width, PRUint32 *height) { return _to QuerySavedScreenshotPNGSize(screenId, size, width, height); } \
  NS_IMETHOD ReadSavedScreenshotPNGToArray(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data) { return _to ReadSavedScreenshotPNGToArray(screenId, width, height, dataSize, data); } \
  NS_IMETHOD HotPlugCPU(PRUint32 cpu) { return _to HotPlugCPU(cpu); } \
  NS_IMETHOD HotUnplugCPU(PRUint32 cpu) { return _to HotUnplugCPU(cpu); } \
  NS_IMETHOD GetCPUStatus(PRUint32 cpu, PRBool *attached) { return _to GetCPUStatus(cpu, attached); } \
  NS_IMETHOD QueryLogFilename(PRUint32 idx, PRUnichar **filename) { return _to QueryLogFilename(idx, filename); } \
  NS_IMETHOD ReadLog(PRUint32 idx, PRInt64 offset, PRInt64 size, PRUint32 *dataSize, PRUint8 **data) { return _to ReadLog(idx, offset, size, dataSize, data); } \
  NS_IMETHOD CloneTo(IMachine *target, PRUint32 mode, PRUint32 optionsSize, PRUint32 *options, IProgress **progress) { return _to CloneTo(target, mode, optionsSize, options, progress); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMACHINE(_to) \
  NS_IMETHOD GetParent(IVirtualBox * *aParent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParent(aParent); } \
  NS_IMETHOD GetIcon(PRUint32 *iconSize, PRUint8 **icon) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIcon(iconSize, icon); } \
  NS_IMETHOD SetIcon(PRUint32 iconSize, PRUint8 *icon) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIcon(iconSize, icon); } \
  NS_IMETHOD GetAccessible(PRBool *aAccessible) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAccessible(aAccessible); } \
  NS_IMETHOD GetAccessError(IVirtualBoxErrorInfo * *aAccessError) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAccessError(aAccessError); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(const PRUnichar * aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetName(aName); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDescription(aDescription); } \
  NS_IMETHOD GetId(PRUnichar * *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetGroups(PRUint32 *groupsSize, PRUnichar ***groups) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGroups(groupsSize, groups); } \
  NS_IMETHOD SetGroups(PRUint32 groupsSize, const PRUnichar **groups) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetGroups(groupsSize, groups); } \
  NS_IMETHOD GetOSTypeId(PRUnichar * *aOSTypeId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOSTypeId(aOSTypeId); } \
  NS_IMETHOD SetOSTypeId(const PRUnichar * aOSTypeId) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetOSTypeId(aOSTypeId); } \
  NS_IMETHOD GetHardwareVersion(PRUnichar * *aHardwareVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHardwareVersion(aHardwareVersion); } \
  NS_IMETHOD SetHardwareVersion(const PRUnichar * aHardwareVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHardwareVersion(aHardwareVersion); } \
  NS_IMETHOD GetHardwareUUID(PRUnichar * *aHardwareUUID) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHardwareUUID(aHardwareUUID); } \
  NS_IMETHOD SetHardwareUUID(const PRUnichar * aHardwareUUID) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHardwareUUID(aHardwareUUID); } \
  NS_IMETHOD GetCPUCount(PRUint32 *aCPUCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCPUCount(aCPUCount); } \
  NS_IMETHOD SetCPUCount(PRUint32 aCPUCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCPUCount(aCPUCount); } \
  NS_IMETHOD GetCPUHotPlugEnabled(PRBool *aCPUHotPlugEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCPUHotPlugEnabled(aCPUHotPlugEnabled); } \
  NS_IMETHOD SetCPUHotPlugEnabled(PRBool aCPUHotPlugEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCPUHotPlugEnabled(aCPUHotPlugEnabled); } \
  NS_IMETHOD GetCPUExecutionCap(PRUint32 *aCPUExecutionCap) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCPUExecutionCap(aCPUExecutionCap); } \
  NS_IMETHOD SetCPUExecutionCap(PRUint32 aCPUExecutionCap) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCPUExecutionCap(aCPUExecutionCap); } \
  NS_IMETHOD GetMemorySize(PRUint32 *aMemorySize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMemorySize(aMemorySize); } \
  NS_IMETHOD SetMemorySize(PRUint32 aMemorySize) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMemorySize(aMemorySize); } \
  NS_IMETHOD GetMemoryBalloonSize(PRUint32 *aMemoryBalloonSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMemoryBalloonSize(aMemoryBalloonSize); } \
  NS_IMETHOD SetMemoryBalloonSize(PRUint32 aMemoryBalloonSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMemoryBalloonSize(aMemoryBalloonSize); } \
  NS_IMETHOD GetPageFusionEnabled(PRBool *aPageFusionEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPageFusionEnabled(aPageFusionEnabled); } \
  NS_IMETHOD SetPageFusionEnabled(PRBool aPageFusionEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPageFusionEnabled(aPageFusionEnabled); } \
  NS_IMETHOD GetGraphicsControllerType(PRUint32 *aGraphicsControllerType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGraphicsControllerType(aGraphicsControllerType); } \
  NS_IMETHOD SetGraphicsControllerType(PRUint32 aGraphicsControllerType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetGraphicsControllerType(aGraphicsControllerType); } \
  NS_IMETHOD GetVRAMSize(PRUint32 *aVRAMSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVRAMSize(aVRAMSize); } \
  NS_IMETHOD SetVRAMSize(PRUint32 aVRAMSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVRAMSize(aVRAMSize); } \
  NS_IMETHOD GetAccelerate3DEnabled(PRBool *aAccelerate3DEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAccelerate3DEnabled(aAccelerate3DEnabled); } \
  NS_IMETHOD SetAccelerate3DEnabled(PRBool aAccelerate3DEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAccelerate3DEnabled(aAccelerate3DEnabled); } \
  NS_IMETHOD GetAccelerate2DVideoEnabled(PRBool *aAccelerate2DVideoEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAccelerate2DVideoEnabled(aAccelerate2DVideoEnabled); } \
  NS_IMETHOD SetAccelerate2DVideoEnabled(PRBool aAccelerate2DVideoEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAccelerate2DVideoEnabled(aAccelerate2DVideoEnabled); } \
  NS_IMETHOD GetMonitorCount(PRUint32 *aMonitorCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMonitorCount(aMonitorCount); } \
  NS_IMETHOD SetMonitorCount(PRUint32 aMonitorCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMonitorCount(aMonitorCount); } \
  NS_IMETHOD GetVideoCaptureEnabled(PRBool *aVideoCaptureEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVideoCaptureEnabled(aVideoCaptureEnabled); } \
  NS_IMETHOD SetVideoCaptureEnabled(PRBool aVideoCaptureEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVideoCaptureEnabled(aVideoCaptureEnabled); } \
  NS_IMETHOD GetVideoCaptureScreens(PRUint32 *videoCaptureScreensSize, PRBool **videoCaptureScreens) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVideoCaptureScreens(videoCaptureScreensSize, videoCaptureScreens); } \
  NS_IMETHOD SetVideoCaptureScreens(PRUint32 videoCaptureScreensSize, PRBool *videoCaptureScreens) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVideoCaptureScreens(videoCaptureScreensSize, videoCaptureScreens); } \
  NS_IMETHOD GetVideoCaptureFile(PRUnichar * *aVideoCaptureFile) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVideoCaptureFile(aVideoCaptureFile); } \
  NS_IMETHOD SetVideoCaptureFile(const PRUnichar * aVideoCaptureFile) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVideoCaptureFile(aVideoCaptureFile); } \
  NS_IMETHOD GetVideoCaptureWidth(PRUint32 *aVideoCaptureWidth) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVideoCaptureWidth(aVideoCaptureWidth); } \
  NS_IMETHOD SetVideoCaptureWidth(PRUint32 aVideoCaptureWidth) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVideoCaptureWidth(aVideoCaptureWidth); } \
  NS_IMETHOD GetVideoCaptureHeight(PRUint32 *aVideoCaptureHeight) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVideoCaptureHeight(aVideoCaptureHeight); } \
  NS_IMETHOD SetVideoCaptureHeight(PRUint32 aVideoCaptureHeight) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVideoCaptureHeight(aVideoCaptureHeight); } \
  NS_IMETHOD GetVideoCaptureRate(PRUint32 *aVideoCaptureRate) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVideoCaptureRate(aVideoCaptureRate); } \
  NS_IMETHOD SetVideoCaptureRate(PRUint32 aVideoCaptureRate) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVideoCaptureRate(aVideoCaptureRate); } \
  NS_IMETHOD GetVideoCaptureFPS(PRUint32 *aVideoCaptureFPS) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVideoCaptureFPS(aVideoCaptureFPS); } \
  NS_IMETHOD SetVideoCaptureFPS(PRUint32 aVideoCaptureFPS) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVideoCaptureFPS(aVideoCaptureFPS); } \
  NS_IMETHOD GetBIOSSettings(IBIOSSettings * *aBIOSSettings) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBIOSSettings(aBIOSSettings); } \
  NS_IMETHOD GetFirmwareType(PRUint32 *aFirmwareType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFirmwareType(aFirmwareType); } \
  NS_IMETHOD SetFirmwareType(PRUint32 aFirmwareType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFirmwareType(aFirmwareType); } \
  NS_IMETHOD GetPointingHIDType(PRUint32 *aPointingHIDType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPointingHIDType(aPointingHIDType); } \
  NS_IMETHOD SetPointingHIDType(PRUint32 aPointingHIDType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPointingHIDType(aPointingHIDType); } \
  NS_IMETHOD GetKeyboardHIDType(PRUint32 *aKeyboardHIDType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetKeyboardHIDType(aKeyboardHIDType); } \
  NS_IMETHOD SetKeyboardHIDType(PRUint32 aKeyboardHIDType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetKeyboardHIDType(aKeyboardHIDType); } \
  NS_IMETHOD GetHPETEnabled(PRBool *aHPETEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHPETEnabled(aHPETEnabled); } \
  NS_IMETHOD SetHPETEnabled(PRBool aHPETEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHPETEnabled(aHPETEnabled); } \
  NS_IMETHOD GetChipsetType(PRUint32 *aChipsetType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChipsetType(aChipsetType); } \
  NS_IMETHOD SetChipsetType(PRUint32 aChipsetType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetChipsetType(aChipsetType); } \
  NS_IMETHOD GetSnapshotFolder(PRUnichar * *aSnapshotFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSnapshotFolder(aSnapshotFolder); } \
  NS_IMETHOD SetSnapshotFolder(const PRUnichar * aSnapshotFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSnapshotFolder(aSnapshotFolder); } \
  NS_IMETHOD GetVRDEServer(IVRDEServer * *aVRDEServer) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVRDEServer(aVRDEServer); } \
  NS_IMETHOD GetEmulatedUSBCardReaderEnabled(PRBool *aEmulatedUSBCardReaderEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEmulatedUSBCardReaderEnabled(aEmulatedUSBCardReaderEnabled); } \
  NS_IMETHOD SetEmulatedUSBCardReaderEnabled(PRBool aEmulatedUSBCardReaderEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEmulatedUSBCardReaderEnabled(aEmulatedUSBCardReaderEnabled); } \
  NS_IMETHOD GetMediumAttachments(PRUint32 *mediumAttachmentsSize, IMediumAttachment ***mediumAttachments) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMediumAttachments(mediumAttachmentsSize, mediumAttachments); } \
  NS_IMETHOD GetUSBControllers(PRUint32 *USBControllersSize, IUSBController ***USBControllers) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUSBControllers(USBControllersSize, USBControllers); } \
  NS_IMETHOD GetUSBDeviceFilters(IUSBDeviceFilters * *aUSBDeviceFilters) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUSBDeviceFilters(aUSBDeviceFilters); } \
  NS_IMETHOD GetAudioAdapter(IAudioAdapter * *aAudioAdapter) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAudioAdapter(aAudioAdapter); } \
  NS_IMETHOD GetStorageControllers(PRUint32 *storageControllersSize, IStorageController ***storageControllers) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStorageControllers(storageControllersSize, storageControllers); } \
  NS_IMETHOD GetSettingsFilePath(PRUnichar * *aSettingsFilePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSettingsFilePath(aSettingsFilePath); } \
  NS_IMETHOD GetSettingsModified(PRBool *aSettingsModified) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSettingsModified(aSettingsModified); } \
  NS_IMETHOD GetSessionState(PRUint32 *aSessionState) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSessionState(aSessionState); } \
  NS_IMETHOD GetSessionType(PRUnichar * *aSessionType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSessionType(aSessionType); } \
  NS_IMETHOD GetSessionPID(PRUint32 *aSessionPID) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSessionPID(aSessionPID); } \
  NS_IMETHOD GetState(PRUint32 *aState) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetState(aState); } \
  NS_IMETHOD GetLastStateChange(PRInt64 *aLastStateChange) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastStateChange(aLastStateChange); } \
  NS_IMETHOD GetStateFilePath(PRUnichar * *aStateFilePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStateFilePath(aStateFilePath); } \
  NS_IMETHOD GetLogFolder(PRUnichar * *aLogFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogFolder(aLogFolder); } \
  NS_IMETHOD GetCurrentSnapshot(ISnapshot * *aCurrentSnapshot) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCurrentSnapshot(aCurrentSnapshot); } \
  NS_IMETHOD GetSnapshotCount(PRUint32 *aSnapshotCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSnapshotCount(aSnapshotCount); } \
  NS_IMETHOD GetCurrentStateModified(PRBool *aCurrentStateModified) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCurrentStateModified(aCurrentStateModified); } \
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSharedFolders(sharedFoldersSize, sharedFolders); } \
  NS_IMETHOD GetClipboardMode(PRUint32 *aClipboardMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetClipboardMode(aClipboardMode); } \
  NS_IMETHOD SetClipboardMode(PRUint32 aClipboardMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetClipboardMode(aClipboardMode); } \
  NS_IMETHOD GetDragAndDropMode(PRUint32 *aDragAndDropMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDragAndDropMode(aDragAndDropMode); } \
  NS_IMETHOD SetDragAndDropMode(PRUint32 aDragAndDropMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDragAndDropMode(aDragAndDropMode); } \
  NS_IMETHOD GetGuestPropertyNotificationPatterns(PRUnichar * *aGuestPropertyNotificationPatterns) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGuestPropertyNotificationPatterns(aGuestPropertyNotificationPatterns); } \
  NS_IMETHOD SetGuestPropertyNotificationPatterns(const PRUnichar * aGuestPropertyNotificationPatterns) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetGuestPropertyNotificationPatterns(aGuestPropertyNotificationPatterns); } \
  NS_IMETHOD GetTeleporterEnabled(PRBool *aTeleporterEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTeleporterEnabled(aTeleporterEnabled); } \
  NS_IMETHOD SetTeleporterEnabled(PRBool aTeleporterEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTeleporterEnabled(aTeleporterEnabled); } \
  NS_IMETHOD GetTeleporterPort(PRUint32 *aTeleporterPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTeleporterPort(aTeleporterPort); } \
  NS_IMETHOD SetTeleporterPort(PRUint32 aTeleporterPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTeleporterPort(aTeleporterPort); } \
  NS_IMETHOD GetTeleporterAddress(PRUnichar * *aTeleporterAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTeleporterAddress(aTeleporterAddress); } \
  NS_IMETHOD SetTeleporterAddress(const PRUnichar * aTeleporterAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTeleporterAddress(aTeleporterAddress); } \
  NS_IMETHOD GetTeleporterPassword(PRUnichar * *aTeleporterPassword) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTeleporterPassword(aTeleporterPassword); } \
  NS_IMETHOD SetTeleporterPassword(const PRUnichar * aTeleporterPassword) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTeleporterPassword(aTeleporterPassword); } \
  NS_IMETHOD GetFaultToleranceState(PRUint32 *aFaultToleranceState) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFaultToleranceState(aFaultToleranceState); } \
  NS_IMETHOD SetFaultToleranceState(PRUint32 aFaultToleranceState) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFaultToleranceState(aFaultToleranceState); } \
  NS_IMETHOD GetFaultTolerancePort(PRUint32 *aFaultTolerancePort) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFaultTolerancePort(aFaultTolerancePort); } \
  NS_IMETHOD SetFaultTolerancePort(PRUint32 aFaultTolerancePort) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFaultTolerancePort(aFaultTolerancePort); } \
  NS_IMETHOD GetFaultToleranceAddress(PRUnichar * *aFaultToleranceAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFaultToleranceAddress(aFaultToleranceAddress); } \
  NS_IMETHOD SetFaultToleranceAddress(const PRUnichar * aFaultToleranceAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFaultToleranceAddress(aFaultToleranceAddress); } \
  NS_IMETHOD GetFaultTolerancePassword(PRUnichar * *aFaultTolerancePassword) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFaultTolerancePassword(aFaultTolerancePassword); } \
  NS_IMETHOD SetFaultTolerancePassword(const PRUnichar * aFaultTolerancePassword) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFaultTolerancePassword(aFaultTolerancePassword); } \
  NS_IMETHOD GetFaultToleranceSyncInterval(PRUint32 *aFaultToleranceSyncInterval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFaultToleranceSyncInterval(aFaultToleranceSyncInterval); } \
  NS_IMETHOD SetFaultToleranceSyncInterval(PRUint32 aFaultToleranceSyncInterval) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFaultToleranceSyncInterval(aFaultToleranceSyncInterval); } \
  NS_IMETHOD GetRTCUseUTC(PRBool *aRTCUseUTC) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRTCUseUTC(aRTCUseUTC); } \
  NS_IMETHOD SetRTCUseUTC(PRBool aRTCUseUTC) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRTCUseUTC(aRTCUseUTC); } \
  NS_IMETHOD GetIOCacheEnabled(PRBool *aIOCacheEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIOCacheEnabled(aIOCacheEnabled); } \
  NS_IMETHOD SetIOCacheEnabled(PRBool aIOCacheEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIOCacheEnabled(aIOCacheEnabled); } \
  NS_IMETHOD GetIOCacheSize(PRUint32 *aIOCacheSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIOCacheSize(aIOCacheSize); } \
  NS_IMETHOD SetIOCacheSize(PRUint32 aIOCacheSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIOCacheSize(aIOCacheSize); } \
  NS_IMETHOD GetPCIDeviceAssignments(PRUint32 *PCIDeviceAssignmentsSize, IPCIDeviceAttachment ***PCIDeviceAssignments) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPCIDeviceAssignments(PCIDeviceAssignmentsSize, PCIDeviceAssignments); } \
  NS_IMETHOD GetBandwidthControl(IBandwidthControl * *aBandwidthControl) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBandwidthControl(aBandwidthControl); } \
  NS_IMETHOD GetTracingEnabled(PRBool *aTracingEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTracingEnabled(aTracingEnabled); } \
  NS_IMETHOD SetTracingEnabled(PRBool aTracingEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTracingEnabled(aTracingEnabled); } \
  NS_IMETHOD GetTracingConfig(PRUnichar * *aTracingConfig) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTracingConfig(aTracingConfig); } \
  NS_IMETHOD SetTracingConfig(const PRUnichar * aTracingConfig) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTracingConfig(aTracingConfig); } \
  NS_IMETHOD GetAllowTracingToAccessVM(PRBool *aAllowTracingToAccessVM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllowTracingToAccessVM(aAllowTracingToAccessVM); } \
  NS_IMETHOD SetAllowTracingToAccessVM(PRBool aAllowTracingToAccessVM) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAllowTracingToAccessVM(aAllowTracingToAccessVM); } \
  NS_IMETHOD GetAutostartEnabled(PRBool *aAutostartEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAutostartEnabled(aAutostartEnabled); } \
  NS_IMETHOD SetAutostartEnabled(PRBool aAutostartEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAutostartEnabled(aAutostartEnabled); } \
  NS_IMETHOD GetAutostartDelay(PRUint32 *aAutostartDelay) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAutostartDelay(aAutostartDelay); } \
  NS_IMETHOD SetAutostartDelay(PRUint32 aAutostartDelay) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAutostartDelay(aAutostartDelay); } \
  NS_IMETHOD GetAutostopType(PRUint32 *aAutostopType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAutostopType(aAutostopType); } \
  NS_IMETHOD SetAutostopType(PRUint32 aAutostopType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAutostopType(aAutostopType); } \
  NS_IMETHOD GetDefaultFrontend(PRUnichar * *aDefaultFrontend) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDefaultFrontend(aDefaultFrontend); } \
  NS_IMETHOD SetDefaultFrontend(const PRUnichar * aDefaultFrontend) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDefaultFrontend(aDefaultFrontend); } \
  NS_IMETHOD GetUSBProxyAvailable(PRBool *aUSBProxyAvailable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUSBProxyAvailable(aUSBProxyAvailable); } \
  NS_IMETHOD LockMachine(ISession *session, PRUint32 lockType) { return !_to ? NS_ERROR_NULL_POINTER : _to->LockMachine(session, lockType); } \
  NS_IMETHOD LaunchVMProcess(ISession *session, const PRUnichar *type, const PRUnichar *environment, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->LaunchVMProcess(session, type, environment, progress); } \
  NS_IMETHOD SetBootOrder(PRUint32 position, PRUint32 device) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBootOrder(position, device); } \
  NS_IMETHOD GetBootOrder(PRUint32 position, PRUint32 *device) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBootOrder(position, device); } \
  NS_IMETHOD AttachDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRUint32 type, IMedium *medium) { return !_to ? NS_ERROR_NULL_POINTER : _to->AttachDevice(name, controllerPort, device, type, medium); } \
  NS_IMETHOD AttachDeviceWithoutMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRUint32 type) { return !_to ? NS_ERROR_NULL_POINTER : _to->AttachDeviceWithoutMedium(name, controllerPort, device, type); } \
  NS_IMETHOD DetachDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device) { return !_to ? NS_ERROR_NULL_POINTER : _to->DetachDevice(name, controllerPort, device); } \
  NS_IMETHOD PassthroughDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool passthrough) { return !_to ? NS_ERROR_NULL_POINTER : _to->PassthroughDevice(name, controllerPort, device, passthrough); } \
  NS_IMETHOD TemporaryEjectDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool temporaryEject) { return !_to ? NS_ERROR_NULL_POINTER : _to->TemporaryEjectDevice(name, controllerPort, device, temporaryEject); } \
  NS_IMETHOD NonRotationalDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool nonRotational) { return !_to ? NS_ERROR_NULL_POINTER : _to->NonRotationalDevice(name, controllerPort, device, nonRotational); } \
  NS_IMETHOD SetAutoDiscardForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool discard) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAutoDiscardForDevice(name, controllerPort, device, discard); } \
  NS_IMETHOD SetHotPluggableForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool hotPluggable) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHotPluggableForDevice(name, controllerPort, device, hotPluggable); } \
  NS_IMETHOD SetBandwidthGroupForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IBandwidthGroup *bandwidthGroup) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBandwidthGroupForDevice(name, controllerPort, device, bandwidthGroup); } \
  NS_IMETHOD SetNoBandwidthGroupForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNoBandwidthGroupForDevice(name, controllerPort, device); } \
  NS_IMETHOD UnmountMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool force) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnmountMedium(name, controllerPort, device, force); } \
  NS_IMETHOD MountMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMedium *medium, PRBool force) { return !_to ? NS_ERROR_NULL_POINTER : _to->MountMedium(name, controllerPort, device, medium, force); } \
  NS_IMETHOD GetMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMedium **medium) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMedium(name, controllerPort, device, medium); } \
  NS_IMETHOD GetMediumAttachmentsOfController(const PRUnichar *name, PRUint32 *mediumAttachmentsSize, IMediumAttachment ***mediumAttachments) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMediumAttachmentsOfController(name, mediumAttachmentsSize, mediumAttachments); } \
  NS_IMETHOD GetMediumAttachment(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMediumAttachment **attachment) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMediumAttachment(name, controllerPort, device, attachment); } \
  NS_IMETHOD AttachHostPCIDevice(PRInt32 hostAddress, PRInt32 desiredGuestAddress, PRBool tryToUnbind) { return !_to ? NS_ERROR_NULL_POINTER : _to->AttachHostPCIDevice(hostAddress, desiredGuestAddress, tryToUnbind); } \
  NS_IMETHOD DetachHostPCIDevice(PRInt32 hostAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->DetachHostPCIDevice(hostAddress); } \
  NS_IMETHOD GetNetworkAdapter(PRUint32 slot, INetworkAdapter **adapter) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworkAdapter(slot, adapter); } \
  NS_IMETHOD AddStorageController(const PRUnichar *name, PRUint32 connectionType, IStorageController **controller) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddStorageController(name, connectionType, controller); } \
  NS_IMETHOD GetStorageControllerByName(const PRUnichar *name, IStorageController **storageController) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStorageControllerByName(name, storageController); } \
  NS_IMETHOD GetStorageControllerByInstance(PRUint32 instance, IStorageController **storageController) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStorageControllerByInstance(instance, storageController); } \
  NS_IMETHOD RemoveStorageController(const PRUnichar *name) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveStorageController(name); } \
  NS_IMETHOD SetStorageControllerBootable(const PRUnichar *name, PRBool bootable) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetStorageControllerBootable(name, bootable); } \
  NS_IMETHOD AddUSBController(const PRUnichar *name, PRUint32 type, IUSBController **controller) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddUSBController(name, type, controller); } \
  NS_IMETHOD RemoveUSBController(const PRUnichar *name) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveUSBController(name); } \
  NS_IMETHOD GetUSBControllerByName(const PRUnichar *name, IUSBController **controller) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUSBControllerByName(name, controller); } \
  NS_IMETHOD GetUSBControllerCountByType(PRUint32 type, PRUint32 *controllers) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUSBControllerCountByType(type, controllers); } \
  NS_IMETHOD GetSerialPort(PRUint32 slot, ISerialPort **port) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSerialPort(slot, port); } \
  NS_IMETHOD GetParallelPort(PRUint32 slot, IParallelPort **port) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParallelPort(slot, port); } \
  NS_IMETHOD GetExtraDataKeys(PRUint32 *keysSize, PRUnichar ***keys) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExtraDataKeys(keysSize, keys); } \
  NS_IMETHOD GetExtraData(const PRUnichar *key, PRUnichar **value) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExtraData(key, value); } \
  NS_IMETHOD SetExtraData(const PRUnichar *key, const PRUnichar *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetExtraData(key, value); } \
  NS_IMETHOD GetCPUProperty(PRUint32 property, PRBool *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCPUProperty(property, value); } \
  NS_IMETHOD SetCPUProperty(PRUint32 property, PRBool value) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCPUProperty(property, value); } \
  NS_IMETHOD GetCPUIDLeaf(PRUint32 id, PRUint32 *valEax, PRUint32 *valEbx, PRUint32 *valEcx, PRUint32 *valEdx) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCPUIDLeaf(id, valEax, valEbx, valEcx, valEdx); } \
  NS_IMETHOD SetCPUIDLeaf(PRUint32 id, PRUint32 valEax, PRUint32 valEbx, PRUint32 valEcx, PRUint32 valEdx) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCPUIDLeaf(id, valEax, valEbx, valEcx, valEdx); } \
  NS_IMETHOD RemoveCPUIDLeaf(PRUint32 id) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveCPUIDLeaf(id); } \
  NS_IMETHOD RemoveAllCPUIDLeaves(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveAllCPUIDLeaves(); } \
  NS_IMETHOD GetHWVirtExProperty(PRUint32 property, PRBool *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHWVirtExProperty(property, value); } \
  NS_IMETHOD SetHWVirtExProperty(PRUint32 property, PRBool value) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHWVirtExProperty(property, value); } \
  NS_IMETHOD SetSettingsFilePath(const PRUnichar *settingsFilePath, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSettingsFilePath(settingsFilePath, progress); } \
  NS_IMETHOD SaveSettings(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->SaveSettings(); } \
  NS_IMETHOD DiscardSettings(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->DiscardSettings(); } \
  NS_IMETHOD Unregister(PRUint32 cleanupMode, PRUint32 *mediaSize, IMedium ***media) { return !_to ? NS_ERROR_NULL_POINTER : _to->Unregister(cleanupMode, mediaSize, media); } \
  NS_IMETHOD DeleteConfig(PRUint32 mediaSize, IMedium **media, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteConfig(mediaSize, media, progress); } \
  NS_IMETHOD ExportTo(IAppliance *appliance, const PRUnichar *location, IVirtualSystemDescription **description) { return !_to ? NS_ERROR_NULL_POINTER : _to->ExportTo(appliance, location, description); } \
  NS_IMETHOD FindSnapshot(const PRUnichar *nameOrId, ISnapshot **snapshot) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindSnapshot(nameOrId, snapshot); } \
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable, PRBool automount) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateSharedFolder(name, hostPath, writable, automount); } \
  NS_IMETHOD RemoveSharedFolder(const PRUnichar *name) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveSharedFolder(name); } \
  NS_IMETHOD CanShowConsoleWindow(PRBool *canShow) { return !_to ? NS_ERROR_NULL_POINTER : _to->CanShowConsoleWindow(canShow); } \
  NS_IMETHOD ShowConsoleWindow(PRInt64 *winId) { return !_to ? NS_ERROR_NULL_POINTER : _to->ShowConsoleWindow(winId); } \
  NS_IMETHOD GetGuestProperty(const PRUnichar *name, PRUnichar **value, PRInt64 *timestamp, PRUnichar **flags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGuestProperty(name, value, timestamp, flags); } \
  NS_IMETHOD GetGuestPropertyValue(const PRUnichar *property, PRUnichar **value) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGuestPropertyValue(property, value); } \
  NS_IMETHOD GetGuestPropertyTimestamp(const PRUnichar *property, PRInt64 *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGuestPropertyTimestamp(property, value); } \
  NS_IMETHOD SetGuestProperty(const PRUnichar *property, const PRUnichar *value, const PRUnichar *flags) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetGuestProperty(property, value, flags); } \
  NS_IMETHOD SetGuestPropertyValue(const PRUnichar *property, const PRUnichar *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetGuestPropertyValue(property, value); } \
  NS_IMETHOD DeleteGuestProperty(const PRUnichar *name) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteGuestProperty(name); } \
  NS_IMETHOD EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *namesSize, PRUnichar ***names, PRUint32 *valuesSize, PRUnichar ***values, PRUint32 *timestampsSize, PRInt64 **timestamps, PRUint32 *flagsSize, PRUnichar ***flags) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnumerateGuestProperties(patterns, namesSize, names, valuesSize, values, timestampsSize, timestamps, flagsSize, flags); } \
  NS_IMETHOD QuerySavedGuestScreenInfo(PRUint32 screenId, PRUint32 *originX, PRUint32 *originY, PRUint32 *width, PRUint32 *height, PRBool *enabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->QuerySavedGuestScreenInfo(screenId, originX, originY, width, height, enabled); } \
  NS_IMETHOD QuerySavedThumbnailSize(PRUint32 screenId, PRUint32 *size, PRUint32 *width, PRUint32 *height) { return !_to ? NS_ERROR_NULL_POINTER : _to->QuerySavedThumbnailSize(screenId, size, width, height); } \
  NS_IMETHOD ReadSavedThumbnailToArray(PRUint32 screenId, PRBool BGR, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data) { return !_to ? NS_ERROR_NULL_POINTER : _to->ReadSavedThumbnailToArray(screenId, BGR, width, height, dataSize, data); } \
  NS_IMETHOD ReadSavedThumbnailPNGToArray(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data) { return !_to ? NS_ERROR_NULL_POINTER : _to->ReadSavedThumbnailPNGToArray(screenId, width, height, dataSize, data); } \
  NS_IMETHOD QuerySavedScreenshotPNGSize(PRUint32 screenId, PRUint32 *size, PRUint32 *width, PRUint32 *height) { return !_to ? NS_ERROR_NULL_POINTER : _to->QuerySavedScreenshotPNGSize(screenId, size, width, height); } \
  NS_IMETHOD ReadSavedScreenshotPNGToArray(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data) { return !_to ? NS_ERROR_NULL_POINTER : _to->ReadSavedScreenshotPNGToArray(screenId, width, height, dataSize, data); } \
  NS_IMETHOD HotPlugCPU(PRUint32 cpu) { return !_to ? NS_ERROR_NULL_POINTER : _to->HotPlugCPU(cpu); } \
  NS_IMETHOD HotUnplugCPU(PRUint32 cpu) { return !_to ? NS_ERROR_NULL_POINTER : _to->HotUnplugCPU(cpu); } \
  NS_IMETHOD GetCPUStatus(PRUint32 cpu, PRBool *attached) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCPUStatus(cpu, attached); } \
  NS_IMETHOD QueryLogFilename(PRUint32 idx, PRUnichar **filename) { return !_to ? NS_ERROR_NULL_POINTER : _to->QueryLogFilename(idx, filename); } \
  NS_IMETHOD ReadLog(PRUint32 idx, PRInt64 offset, PRInt64 size, PRUint32 *dataSize, PRUint8 **data) { return !_to ? NS_ERROR_NULL_POINTER : _to->ReadLog(idx, offset, size, dataSize, data); } \
  NS_IMETHOD CloneTo(IMachine *target, PRUint32 mode, PRUint32 optionsSize, PRUint32 *options, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CloneTo(target, mode, optionsSize, options, progress); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IMachine
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMACHINE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IMachine)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute IVirtualBox parent; */
NS_IMETHODIMP _MYCLASS_::GetParent(IVirtualBox * *aParent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getIcon (out unsigned long iconSize, [array, size_is (iconSize), retval] out octet icon); */
NS_IMETHODIMP _MYCLASS_::GetIcon(PRUint32 *iconSize, PRUint8 **icon)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setIcon (in unsigned long iconSize, [array, size_is (iconSize)] in octet icon); */
NS_IMETHODIMP _MYCLASS_::SetIcon(PRUint32 iconSize, PRUint8 *icon)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean accessible; */
NS_IMETHODIMP _MYCLASS_::GetAccessible(PRBool *aAccessible)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IVirtualBoxErrorInfo accessError; */
NS_IMETHODIMP _MYCLASS_::GetAccessError(IVirtualBoxErrorInfo * *aAccessError)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetName(const PRUnichar * aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring description; */
NS_IMETHODIMP _MYCLASS_::GetDescription(PRUnichar * *aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDescription(const PRUnichar * aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring id; */
NS_IMETHODIMP _MYCLASS_::GetId(PRUnichar * *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getGroups (out unsigned long groupsSize, [array, size_is (groupsSize), retval] out wstring groups); */
NS_IMETHODIMP _MYCLASS_::GetGroups(PRUint32 *groupsSize, PRUnichar ***groups)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setGroups (in unsigned long groupsSize, [array, size_is (groupsSize)] in wstring groups); */
NS_IMETHODIMP _MYCLASS_::SetGroups(PRUint32 groupsSize, const PRUnichar **groups)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring OSTypeId; */
NS_IMETHODIMP _MYCLASS_::GetOSTypeId(PRUnichar * *aOSTypeId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetOSTypeId(const PRUnichar * aOSTypeId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring hardwareVersion; */
NS_IMETHODIMP _MYCLASS_::GetHardwareVersion(PRUnichar * *aHardwareVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetHardwareVersion(const PRUnichar * aHardwareVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring hardwareUUID; */
NS_IMETHODIMP _MYCLASS_::GetHardwareUUID(PRUnichar * *aHardwareUUID)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetHardwareUUID(const PRUnichar * aHardwareUUID)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long CPUCount; */
NS_IMETHODIMP _MYCLASS_::GetCPUCount(PRUint32 *aCPUCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetCPUCount(PRUint32 aCPUCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean CPUHotPlugEnabled; */
NS_IMETHODIMP _MYCLASS_::GetCPUHotPlugEnabled(PRBool *aCPUHotPlugEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetCPUHotPlugEnabled(PRBool aCPUHotPlugEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long CPUExecutionCap; */
NS_IMETHODIMP _MYCLASS_::GetCPUExecutionCap(PRUint32 *aCPUExecutionCap)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetCPUExecutionCap(PRUint32 aCPUExecutionCap)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long memorySize; */
NS_IMETHODIMP _MYCLASS_::GetMemorySize(PRUint32 *aMemorySize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetMemorySize(PRUint32 aMemorySize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long memoryBalloonSize; */
NS_IMETHODIMP _MYCLASS_::GetMemoryBalloonSize(PRUint32 *aMemoryBalloonSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetMemoryBalloonSize(PRUint32 aMemoryBalloonSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean pageFusionEnabled; */
NS_IMETHODIMP _MYCLASS_::GetPageFusionEnabled(PRBool *aPageFusionEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPageFusionEnabled(PRBool aPageFusionEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 graphicsControllerType; */
NS_IMETHODIMP _MYCLASS_::GetGraphicsControllerType(PRUint32 *aGraphicsControllerType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetGraphicsControllerType(PRUint32 aGraphicsControllerType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long VRAMSize; */
NS_IMETHODIMP _MYCLASS_::GetVRAMSize(PRUint32 *aVRAMSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetVRAMSize(PRUint32 aVRAMSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean accelerate3DEnabled; */
NS_IMETHODIMP _MYCLASS_::GetAccelerate3DEnabled(PRBool *aAccelerate3DEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAccelerate3DEnabled(PRBool aAccelerate3DEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean accelerate2DVideoEnabled; */
NS_IMETHODIMP _MYCLASS_::GetAccelerate2DVideoEnabled(PRBool *aAccelerate2DVideoEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAccelerate2DVideoEnabled(PRBool aAccelerate2DVideoEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long monitorCount; */
NS_IMETHODIMP _MYCLASS_::GetMonitorCount(PRUint32 *aMonitorCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetMonitorCount(PRUint32 aMonitorCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean videoCaptureEnabled; */
NS_IMETHODIMP _MYCLASS_::GetVideoCaptureEnabled(PRBool *aVideoCaptureEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetVideoCaptureEnabled(PRBool aVideoCaptureEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getVideoCaptureScreens (out unsigned long videoCaptureScreensSize, [array, size_is (videoCaptureScreensSize), retval] out boolean videoCaptureScreens); */
NS_IMETHODIMP _MYCLASS_::GetVideoCaptureScreens(PRUint32 *videoCaptureScreensSize, PRBool **videoCaptureScreens)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setVideoCaptureScreens (in unsigned long videoCaptureScreensSize, [array, size_is (videoCaptureScreensSize)] in boolean videoCaptureScreens); */
NS_IMETHODIMP _MYCLASS_::SetVideoCaptureScreens(PRUint32 videoCaptureScreensSize, PRBool *videoCaptureScreens)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring videoCaptureFile; */
NS_IMETHODIMP _MYCLASS_::GetVideoCaptureFile(PRUnichar * *aVideoCaptureFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetVideoCaptureFile(const PRUnichar * aVideoCaptureFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long videoCaptureWidth; */
NS_IMETHODIMP _MYCLASS_::GetVideoCaptureWidth(PRUint32 *aVideoCaptureWidth)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetVideoCaptureWidth(PRUint32 aVideoCaptureWidth)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long videoCaptureHeight; */
NS_IMETHODIMP _MYCLASS_::GetVideoCaptureHeight(PRUint32 *aVideoCaptureHeight)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetVideoCaptureHeight(PRUint32 aVideoCaptureHeight)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long videoCaptureRate; */
NS_IMETHODIMP _MYCLASS_::GetVideoCaptureRate(PRUint32 *aVideoCaptureRate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetVideoCaptureRate(PRUint32 aVideoCaptureRate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long videoCaptureFPS; */
NS_IMETHODIMP _MYCLASS_::GetVideoCaptureFPS(PRUint32 *aVideoCaptureFPS)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetVideoCaptureFPS(PRUint32 aVideoCaptureFPS)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IBIOSSettings BIOSSettings; */
NS_IMETHODIMP _MYCLASS_::GetBIOSSettings(IBIOSSettings * *aBIOSSettings)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 firmwareType; */
NS_IMETHODIMP _MYCLASS_::GetFirmwareType(PRUint32 *aFirmwareType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetFirmwareType(PRUint32 aFirmwareType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 pointingHIDType; */
NS_IMETHODIMP _MYCLASS_::GetPointingHIDType(PRUint32 *aPointingHIDType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPointingHIDType(PRUint32 aPointingHIDType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 keyboardHIDType; */
NS_IMETHODIMP _MYCLASS_::GetKeyboardHIDType(PRUint32 *aKeyboardHIDType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetKeyboardHIDType(PRUint32 aKeyboardHIDType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean HPETEnabled; */
NS_IMETHODIMP _MYCLASS_::GetHPETEnabled(PRBool *aHPETEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetHPETEnabled(PRBool aHPETEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 chipsetType; */
NS_IMETHODIMP _MYCLASS_::GetChipsetType(PRUint32 *aChipsetType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetChipsetType(PRUint32 aChipsetType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring snapshotFolder; */
NS_IMETHODIMP _MYCLASS_::GetSnapshotFolder(PRUnichar * *aSnapshotFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetSnapshotFolder(const PRUnichar * aSnapshotFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IVRDEServer VRDEServer; */
NS_IMETHODIMP _MYCLASS_::GetVRDEServer(IVRDEServer * *aVRDEServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean emulatedUSBCardReaderEnabled; */
NS_IMETHODIMP _MYCLASS_::GetEmulatedUSBCardReaderEnabled(PRBool *aEmulatedUSBCardReaderEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetEmulatedUSBCardReaderEnabled(PRBool aEmulatedUSBCardReaderEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMediumAttachments (out unsigned long mediumAttachmentsSize, [array, size_is (mediumAttachmentsSize), retval] out IMediumAttachment mediumAttachments); */
NS_IMETHODIMP _MYCLASS_::GetMediumAttachments(PRUint32 *mediumAttachmentsSize, IMediumAttachment ***mediumAttachments)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getUSBControllers (out unsigned long USBControllersSize, [array, size_is (USBControllersSize), retval] out IUSBController USBControllers); */
NS_IMETHODIMP _MYCLASS_::GetUSBControllers(PRUint32 *USBControllersSize, IUSBController ***USBControllers)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IUSBDeviceFilters USBDeviceFilters; */
NS_IMETHODIMP _MYCLASS_::GetUSBDeviceFilters(IUSBDeviceFilters * *aUSBDeviceFilters)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IAudioAdapter audioAdapter; */
NS_IMETHODIMP _MYCLASS_::GetAudioAdapter(IAudioAdapter * *aAudioAdapter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getStorageControllers (out unsigned long storageControllersSize, [array, size_is (storageControllersSize), retval] out IStorageController storageControllers); */
NS_IMETHODIMP _MYCLASS_::GetStorageControllers(PRUint32 *storageControllersSize, IStorageController ***storageControllers)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring settingsFilePath; */
NS_IMETHODIMP _MYCLASS_::GetSettingsFilePath(PRUnichar * *aSettingsFilePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean settingsModified; */
NS_IMETHODIMP _MYCLASS_::GetSettingsModified(PRBool *aSettingsModified)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 sessionState; */
NS_IMETHODIMP _MYCLASS_::GetSessionState(PRUint32 *aSessionState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring sessionType; */
NS_IMETHODIMP _MYCLASS_::GetSessionType(PRUnichar * *aSessionType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long sessionPID; */
NS_IMETHODIMP _MYCLASS_::GetSessionPID(PRUint32 *aSessionPID)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 state; */
NS_IMETHODIMP _MYCLASS_::GetState(PRUint32 *aState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long lastStateChange; */
NS_IMETHODIMP _MYCLASS_::GetLastStateChange(PRInt64 *aLastStateChange)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring stateFilePath; */
NS_IMETHODIMP _MYCLASS_::GetStateFilePath(PRUnichar * *aStateFilePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring logFolder; */
NS_IMETHODIMP _MYCLASS_::GetLogFolder(PRUnichar * *aLogFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute ISnapshot currentSnapshot; */
NS_IMETHODIMP _MYCLASS_::GetCurrentSnapshot(ISnapshot * *aCurrentSnapshot)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long snapshotCount; */
NS_IMETHODIMP _MYCLASS_::GetSnapshotCount(PRUint32 *aSnapshotCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean currentStateModified; */
NS_IMETHODIMP _MYCLASS_::GetCurrentStateModified(PRBool *aCurrentStateModified)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getSharedFolders (out unsigned long sharedFoldersSize, [array, size_is (sharedFoldersSize), retval] out ISharedFolder sharedFolders); */
NS_IMETHODIMP _MYCLASS_::GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 clipboardMode; */
NS_IMETHODIMP _MYCLASS_::GetClipboardMode(PRUint32 *aClipboardMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetClipboardMode(PRUint32 aClipboardMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 dragAndDropMode; */
NS_IMETHODIMP _MYCLASS_::GetDragAndDropMode(PRUint32 *aDragAndDropMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDragAndDropMode(PRUint32 aDragAndDropMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring guestPropertyNotificationPatterns; */
NS_IMETHODIMP _MYCLASS_::GetGuestPropertyNotificationPatterns(PRUnichar * *aGuestPropertyNotificationPatterns)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetGuestPropertyNotificationPatterns(const PRUnichar * aGuestPropertyNotificationPatterns)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean teleporterEnabled; */
NS_IMETHODIMP _MYCLASS_::GetTeleporterEnabled(PRBool *aTeleporterEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTeleporterEnabled(PRBool aTeleporterEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long teleporterPort; */
NS_IMETHODIMP _MYCLASS_::GetTeleporterPort(PRUint32 *aTeleporterPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTeleporterPort(PRUint32 aTeleporterPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring teleporterAddress; */
NS_IMETHODIMP _MYCLASS_::GetTeleporterAddress(PRUnichar * *aTeleporterAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTeleporterAddress(const PRUnichar * aTeleporterAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring teleporterPassword; */
NS_IMETHODIMP _MYCLASS_::GetTeleporterPassword(PRUnichar * *aTeleporterPassword)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTeleporterPassword(const PRUnichar * aTeleporterPassword)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 faultToleranceState; */
NS_IMETHODIMP _MYCLASS_::GetFaultToleranceState(PRUint32 *aFaultToleranceState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetFaultToleranceState(PRUint32 aFaultToleranceState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long faultTolerancePort; */
NS_IMETHODIMP _MYCLASS_::GetFaultTolerancePort(PRUint32 *aFaultTolerancePort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetFaultTolerancePort(PRUint32 aFaultTolerancePort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring faultToleranceAddress; */
NS_IMETHODIMP _MYCLASS_::GetFaultToleranceAddress(PRUnichar * *aFaultToleranceAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetFaultToleranceAddress(const PRUnichar * aFaultToleranceAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring faultTolerancePassword; */
NS_IMETHODIMP _MYCLASS_::GetFaultTolerancePassword(PRUnichar * *aFaultTolerancePassword)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetFaultTolerancePassword(const PRUnichar * aFaultTolerancePassword)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long faultToleranceSyncInterval; */
NS_IMETHODIMP _MYCLASS_::GetFaultToleranceSyncInterval(PRUint32 *aFaultToleranceSyncInterval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetFaultToleranceSyncInterval(PRUint32 aFaultToleranceSyncInterval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean RTCUseUTC; */
NS_IMETHODIMP _MYCLASS_::GetRTCUseUTC(PRBool *aRTCUseUTC)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetRTCUseUTC(PRBool aRTCUseUTC)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean IOCacheEnabled; */
NS_IMETHODIMP _MYCLASS_::GetIOCacheEnabled(PRBool *aIOCacheEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIOCacheEnabled(PRBool aIOCacheEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long IOCacheSize; */
NS_IMETHODIMP _MYCLASS_::GetIOCacheSize(PRUint32 *aIOCacheSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIOCacheSize(PRUint32 aIOCacheSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getPCIDeviceAssignments (out unsigned long PCIDeviceAssignmentsSize, [array, size_is (PCIDeviceAssignmentsSize), retval] out IPCIDeviceAttachment PCIDeviceAssignments); */
NS_IMETHODIMP _MYCLASS_::GetPCIDeviceAssignments(PRUint32 *PCIDeviceAssignmentsSize, IPCIDeviceAttachment ***PCIDeviceAssignments)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IBandwidthControl bandwidthControl; */
NS_IMETHODIMP _MYCLASS_::GetBandwidthControl(IBandwidthControl * *aBandwidthControl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean tracingEnabled; */
NS_IMETHODIMP _MYCLASS_::GetTracingEnabled(PRBool *aTracingEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTracingEnabled(PRBool aTracingEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring tracingConfig; */
NS_IMETHODIMP _MYCLASS_::GetTracingConfig(PRUnichar * *aTracingConfig)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTracingConfig(const PRUnichar * aTracingConfig)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean allowTracingToAccessVM; */
NS_IMETHODIMP _MYCLASS_::GetAllowTracingToAccessVM(PRBool *aAllowTracingToAccessVM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAllowTracingToAccessVM(PRBool aAllowTracingToAccessVM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean autostartEnabled; */
NS_IMETHODIMP _MYCLASS_::GetAutostartEnabled(PRBool *aAutostartEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAutostartEnabled(PRBool aAutostartEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long autostartDelay; */
NS_IMETHODIMP _MYCLASS_::GetAutostartDelay(PRUint32 *aAutostartDelay)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAutostartDelay(PRUint32 aAutostartDelay)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 autostopType; */
NS_IMETHODIMP _MYCLASS_::GetAutostopType(PRUint32 *aAutostopType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAutostopType(PRUint32 aAutostopType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring defaultFrontend; */
NS_IMETHODIMP _MYCLASS_::GetDefaultFrontend(PRUnichar * *aDefaultFrontend)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDefaultFrontend(const PRUnichar * aDefaultFrontend)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean USBProxyAvailable; */
NS_IMETHODIMP _MYCLASS_::GetUSBProxyAvailable(PRBool *aUSBProxyAvailable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void lockMachine (in ISession session, in PRUint32 lockType); */
NS_IMETHODIMP _MYCLASS_::LockMachine(ISession *session, PRUint32 lockType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void launchVMProcess (in ISession session, in wstring type, in wstring environment, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::LaunchVMProcess(ISession *session, const PRUnichar *type, const PRUnichar *environment, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setBootOrder (in unsigned long position, in PRUint32 device); */
NS_IMETHODIMP _MYCLASS_::SetBootOrder(PRUint32 position, PRUint32 device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getBootOrder (in unsigned long position, [retval] out PRUint32 device); */
NS_IMETHODIMP _MYCLASS_::GetBootOrder(PRUint32 position, PRUint32 *device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void attachDevice (in wstring name, in long controllerPort, in long device, in PRUint32 type, in IMedium medium); */
NS_IMETHODIMP _MYCLASS_::AttachDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRUint32 type, IMedium *medium)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void attachDeviceWithoutMedium (in wstring name, in long controllerPort, in long device, in PRUint32 type); */
NS_IMETHODIMP _MYCLASS_::AttachDeviceWithoutMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRUint32 type)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void detachDevice (in wstring name, in long controllerPort, in long device); */
NS_IMETHODIMP _MYCLASS_::DetachDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void passthroughDevice (in wstring name, in long controllerPort, in long device, in boolean passthrough); */
NS_IMETHODIMP _MYCLASS_::PassthroughDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool passthrough)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void temporaryEjectDevice (in wstring name, in long controllerPort, in long device, in boolean temporaryEject); */
NS_IMETHODIMP _MYCLASS_::TemporaryEjectDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool temporaryEject)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void nonRotationalDevice (in wstring name, in long controllerPort, in long device, in boolean nonRotational); */
NS_IMETHODIMP _MYCLASS_::NonRotationalDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool nonRotational)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setAutoDiscardForDevice (in wstring name, in long controllerPort, in long device, in boolean discard); */
NS_IMETHODIMP _MYCLASS_::SetAutoDiscardForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool discard)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setHotPluggableForDevice (in wstring name, in long controllerPort, in long device, in boolean hotPluggable); */
NS_IMETHODIMP _MYCLASS_::SetHotPluggableForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool hotPluggable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setBandwidthGroupForDevice (in wstring name, in long controllerPort, in long device, in IBandwidthGroup bandwidthGroup); */
NS_IMETHODIMP _MYCLASS_::SetBandwidthGroupForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IBandwidthGroup *bandwidthGroup)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setNoBandwidthGroupForDevice (in wstring name, in long controllerPort, in long device); */
NS_IMETHODIMP _MYCLASS_::SetNoBandwidthGroupForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unmountMedium (in wstring name, in long controllerPort, in long device, in boolean force); */
NS_IMETHODIMP _MYCLASS_::UnmountMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool force)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void mountMedium (in wstring name, in long controllerPort, in long device, in IMedium medium, in boolean force); */
NS_IMETHODIMP _MYCLASS_::MountMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMedium *medium, PRBool force)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMedium (in wstring name, in long controllerPort, in long device, [retval] out IMedium medium); */
NS_IMETHODIMP _MYCLASS_::GetMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMedium **medium)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMediumAttachmentsOfController (in wstring name, out unsigned long mediumAttachmentsSize, [array, size_is (mediumAttachmentsSize), retval] out IMediumAttachment mediumAttachments); */
NS_IMETHODIMP _MYCLASS_::GetMediumAttachmentsOfController(const PRUnichar *name, PRUint32 *mediumAttachmentsSize, IMediumAttachment ***mediumAttachments)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMediumAttachment (in wstring name, in long controllerPort, in long device, [retval] out IMediumAttachment attachment); */
NS_IMETHODIMP _MYCLASS_::GetMediumAttachment(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMediumAttachment **attachment)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void attachHostPCIDevice (in long hostAddress, in long desiredGuestAddress, in boolean tryToUnbind); */
NS_IMETHODIMP _MYCLASS_::AttachHostPCIDevice(PRInt32 hostAddress, PRInt32 desiredGuestAddress, PRBool tryToUnbind)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void detachHostPCIDevice (in long hostAddress); */
NS_IMETHODIMP _MYCLASS_::DetachHostPCIDevice(PRInt32 hostAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNetworkAdapter (in unsigned long slot, [retval] out INetworkAdapter adapter); */
NS_IMETHODIMP _MYCLASS_::GetNetworkAdapter(PRUint32 slot, INetworkAdapter **adapter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addStorageController (in wstring name, in PRUint32 connectionType, [retval] out IStorageController controller); */
NS_IMETHODIMP _MYCLASS_::AddStorageController(const PRUnichar *name, PRUint32 connectionType, IStorageController **controller)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getStorageControllerByName (in wstring name, [retval] out IStorageController storageController); */
NS_IMETHODIMP _MYCLASS_::GetStorageControllerByName(const PRUnichar *name, IStorageController **storageController)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getStorageControllerByInstance (in unsigned long instance, [retval] out IStorageController storageController); */
NS_IMETHODIMP _MYCLASS_::GetStorageControllerByInstance(PRUint32 instance, IStorageController **storageController)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeStorageController (in wstring name); */
NS_IMETHODIMP _MYCLASS_::RemoveStorageController(const PRUnichar *name)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setStorageControllerBootable (in wstring name, in boolean bootable); */
NS_IMETHODIMP _MYCLASS_::SetStorageControllerBootable(const PRUnichar *name, PRBool bootable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addUSBController (in wstring name, in PRUint32 type, [retval] out IUSBController controller); */
NS_IMETHODIMP _MYCLASS_::AddUSBController(const PRUnichar *name, PRUint32 type, IUSBController **controller)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeUSBController (in wstring name); */
NS_IMETHODIMP _MYCLASS_::RemoveUSBController(const PRUnichar *name)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getUSBControllerByName (in wstring name, [retval] out IUSBController controller); */
NS_IMETHODIMP _MYCLASS_::GetUSBControllerByName(const PRUnichar *name, IUSBController **controller)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getUSBControllerCountByType (in PRUint32 type, [retval] out unsigned long controllers); */
NS_IMETHODIMP _MYCLASS_::GetUSBControllerCountByType(PRUint32 type, PRUint32 *controllers)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getSerialPort (in unsigned long slot, [retval] out ISerialPort port); */
NS_IMETHODIMP _MYCLASS_::GetSerialPort(PRUint32 slot, ISerialPort **port)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getParallelPort (in unsigned long slot, [retval] out IParallelPort port); */
NS_IMETHODIMP _MYCLASS_::GetParallelPort(PRUint32 slot, IParallelPort **port)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getExtraDataKeys (out unsigned long keysSize, [array, size_is (keysSize), retval] out wstring keys); */
NS_IMETHODIMP _MYCLASS_::GetExtraDataKeys(PRUint32 *keysSize, PRUnichar ***keys)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getExtraData (in wstring key, [retval] out wstring value); */
NS_IMETHODIMP _MYCLASS_::GetExtraData(const PRUnichar *key, PRUnichar **value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setExtraData (in wstring key, in wstring value); */
NS_IMETHODIMP _MYCLASS_::SetExtraData(const PRUnichar *key, const PRUnichar *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getCPUProperty (in PRUint32 property, [retval] out boolean value); */
NS_IMETHODIMP _MYCLASS_::GetCPUProperty(PRUint32 property, PRBool *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setCPUProperty (in PRUint32 property, in boolean value); */
NS_IMETHODIMP _MYCLASS_::SetCPUProperty(PRUint32 property, PRBool value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getCPUIDLeaf (in unsigned long id, out unsigned long valEax, out unsigned long valEbx, out unsigned long valEcx, out unsigned long valEdx); */
NS_IMETHODIMP _MYCLASS_::GetCPUIDLeaf(PRUint32 id, PRUint32 *valEax, PRUint32 *valEbx, PRUint32 *valEcx, PRUint32 *valEdx)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setCPUIDLeaf (in unsigned long id, in unsigned long valEax, in unsigned long valEbx, in unsigned long valEcx, in unsigned long valEdx); */
NS_IMETHODIMP _MYCLASS_::SetCPUIDLeaf(PRUint32 id, PRUint32 valEax, PRUint32 valEbx, PRUint32 valEcx, PRUint32 valEdx)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeCPUIDLeaf (in unsigned long id); */
NS_IMETHODIMP _MYCLASS_::RemoveCPUIDLeaf(PRUint32 id)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeAllCPUIDLeaves (); */
NS_IMETHODIMP _MYCLASS_::RemoveAllCPUIDLeaves()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getHWVirtExProperty (in PRUint32 property, [retval] out boolean value); */
NS_IMETHODIMP _MYCLASS_::GetHWVirtExProperty(PRUint32 property, PRBool *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setHWVirtExProperty (in PRUint32 property, in boolean value); */
NS_IMETHODIMP _MYCLASS_::SetHWVirtExProperty(PRUint32 property, PRBool value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setSettingsFilePath (in wstring settingsFilePath, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::SetSettingsFilePath(const PRUnichar *settingsFilePath, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void saveSettings (); */
NS_IMETHODIMP _MYCLASS_::SaveSettings()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void discardSettings (); */
NS_IMETHODIMP _MYCLASS_::DiscardSettings()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unregister (in PRUint32 cleanupMode, out unsigned long mediaSize, [array, size_is (mediaSize), retval] out IMedium media); */
NS_IMETHODIMP _MYCLASS_::Unregister(PRUint32 cleanupMode, PRUint32 *mediaSize, IMedium ***media)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteConfig (in unsigned long mediaSize, [array, size_is (mediaSize)] in IMedium media, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::DeleteConfig(PRUint32 mediaSize, IMedium **media, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void exportTo (in IAppliance appliance, in wstring location, [retval] out IVirtualSystemDescription description); */
NS_IMETHODIMP _MYCLASS_::ExportTo(IAppliance *appliance, const PRUnichar *location, IVirtualSystemDescription **description)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findSnapshot (in wstring nameOrId, [retval] out ISnapshot snapshot); */
NS_IMETHODIMP _MYCLASS_::FindSnapshot(const PRUnichar *nameOrId, ISnapshot **snapshot)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createSharedFolder (in wstring name, in wstring hostPath, in boolean writable, in boolean automount); */
NS_IMETHODIMP _MYCLASS_::CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable, PRBool automount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeSharedFolder (in wstring name); */
NS_IMETHODIMP _MYCLASS_::RemoveSharedFolder(const PRUnichar *name)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void canShowConsoleWindow ([retval] out boolean canShow); */
NS_IMETHODIMP _MYCLASS_::CanShowConsoleWindow(PRBool *canShow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void showConsoleWindow ([retval] out long long winId); */
NS_IMETHODIMP _MYCLASS_::ShowConsoleWindow(PRInt64 *winId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getGuestProperty (in wstring name, out wstring value, out long long timestamp, out wstring flags); */
NS_IMETHODIMP _MYCLASS_::GetGuestProperty(const PRUnichar *name, PRUnichar **value, PRInt64 *timestamp, PRUnichar **flags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getGuestPropertyValue (in wstring property, [retval] out wstring value); */
NS_IMETHODIMP _MYCLASS_::GetGuestPropertyValue(const PRUnichar *property, PRUnichar **value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getGuestPropertyTimestamp (in wstring property, [retval] out long long value); */
NS_IMETHODIMP _MYCLASS_::GetGuestPropertyTimestamp(const PRUnichar *property, PRInt64 *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setGuestProperty (in wstring property, in wstring value, in wstring flags); */
NS_IMETHODIMP _MYCLASS_::SetGuestProperty(const PRUnichar *property, const PRUnichar *value, const PRUnichar *flags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setGuestPropertyValue (in wstring property, in wstring value); */
NS_IMETHODIMP _MYCLASS_::SetGuestPropertyValue(const PRUnichar *property, const PRUnichar *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteGuestProperty (in wstring name); */
NS_IMETHODIMP _MYCLASS_::DeleteGuestProperty(const PRUnichar *name)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enumerateGuestProperties (in wstring patterns, out unsigned long namesSize, [array, size_is (namesSize)] out wstring names, out unsigned long valuesSize, [array, size_is (valuesSize)] out wstring values, out unsigned long timestampsSize, [array, size_is (timestampsSize)] out long long timestamps, out unsigned long flagsSize, [array, size_is (flagsSize)] out wstring flags); */
NS_IMETHODIMP _MYCLASS_::EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *namesSize, PRUnichar ***names, PRUint32 *valuesSize, PRUnichar ***values, PRUint32 *timestampsSize, PRInt64 **timestamps, PRUint32 *flagsSize, PRUnichar ***flags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void querySavedGuestScreenInfo (in unsigned long screenId, out unsigned long originX, out unsigned long originY, out unsigned long width, out unsigned long height, out boolean enabled); */
NS_IMETHODIMP _MYCLASS_::QuerySavedGuestScreenInfo(PRUint32 screenId, PRUint32 *originX, PRUint32 *originY, PRUint32 *width, PRUint32 *height, PRBool *enabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void querySavedThumbnailSize (in unsigned long screenId, out unsigned long size, out unsigned long width, out unsigned long height); */
NS_IMETHODIMP _MYCLASS_::QuerySavedThumbnailSize(PRUint32 screenId, PRUint32 *size, PRUint32 *width, PRUint32 *height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void readSavedThumbnailToArray (in unsigned long screenId, in boolean BGR, out unsigned long width, out unsigned long height, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
NS_IMETHODIMP _MYCLASS_::ReadSavedThumbnailToArray(PRUint32 screenId, PRBool BGR, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void readSavedThumbnailPNGToArray (in unsigned long screenId, out unsigned long width, out unsigned long height, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
NS_IMETHODIMP _MYCLASS_::ReadSavedThumbnailPNGToArray(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void querySavedScreenshotPNGSize (in unsigned long screenId, out unsigned long size, out unsigned long width, out unsigned long height); */
NS_IMETHODIMP _MYCLASS_::QuerySavedScreenshotPNGSize(PRUint32 screenId, PRUint32 *size, PRUint32 *width, PRUint32 *height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void readSavedScreenshotPNGToArray (in unsigned long screenId, out unsigned long width, out unsigned long height, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
NS_IMETHODIMP _MYCLASS_::ReadSavedScreenshotPNGToArray(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void hotPlugCPU (in unsigned long cpu); */
NS_IMETHODIMP _MYCLASS_::HotPlugCPU(PRUint32 cpu)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void hotUnplugCPU (in unsigned long cpu); */
NS_IMETHODIMP _MYCLASS_::HotUnplugCPU(PRUint32 cpu)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getCPUStatus (in unsigned long cpu, [retval] out boolean attached); */
NS_IMETHODIMP _MYCLASS_::GetCPUStatus(PRUint32 cpu, PRBool *attached)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void queryLogFilename (in unsigned long idx, [retval] out wstring filename); */
NS_IMETHODIMP _MYCLASS_::QueryLogFilename(PRUint32 idx, PRUnichar **filename)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void readLog (in unsigned long idx, in long long offset, in long long size, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
NS_IMETHODIMP _MYCLASS_::ReadLog(PRUint32 idx, PRInt64 offset, PRInt64 size, PRUint32 *dataSize, PRUint8 **data)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void cloneTo (in IMachine target, in PRUint32 mode, in unsigned long optionsSize, [array, size_is (optionsSize)] in PRUint32 options, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CloneTo(IMachine *target, PRUint32 mode, PRUint32 optionsSize, PRUint32 *options, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IMachine_GETTER_Parent_TO(smth) NS_IMETHOD GetParent (IVirtualBox * * aParent) { return smth GetParent (aParent); }
#define COM_FORWARD_IMachine_GETTER_Parent_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_Parent_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_Parent_TO_BASE(base) COM_FORWARD_IMachine_GETTER_Parent_TO (base::)
#define COM_FORWARD_IMachine_GETTER_Icon_TO(smth) NS_IMETHOD GetIcon (PRUint32 * aIconSize, PRUint8 * * aIcon) { return smth GetIcon (aIconSize, aIcon); }
#define COM_FORWARD_IMachine_GETTER_Icon_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_Icon_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_Icon_TO_BASE(base) COM_FORWARD_IMachine_GETTER_Icon_TO (base::)
#define COM_FORWARD_IMachine_SETTER_Icon_TO(smth) NS_IMETHOD SetIcon (PRUint32 aIconSize, PRUint8 * aIcon) { return smth SetIcon (aIcon); }
#define COM_FORWARD_IMachine_SETTER_Icon_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_Icon_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_Icon_TO_BASE(base) COM_FORWARD_IMachine_SETTER_Icon_TO (base::)
#define COM_FORWARD_IMachine_GETTER_Accessible_TO(smth) NS_IMETHOD GetAccessible (PRBool * aAccessible) { return smth GetAccessible (aAccessible); }
#define COM_FORWARD_IMachine_GETTER_Accessible_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_Accessible_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_Accessible_TO_BASE(base) COM_FORWARD_IMachine_GETTER_Accessible_TO (base::)
#define COM_FORWARD_IMachine_GETTER_AccessError_TO(smth) NS_IMETHOD GetAccessError (IVirtualBoxErrorInfo * * aAccessError) { return smth GetAccessError (aAccessError); }
#define COM_FORWARD_IMachine_GETTER_AccessError_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_AccessError_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_AccessError_TO_BASE(base) COM_FORWARD_IMachine_GETTER_AccessError_TO (base::)
#define COM_FORWARD_IMachine_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IMachine_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_Name_TO_BASE(base) COM_FORWARD_IMachine_GETTER_Name_TO (base::)
#define COM_FORWARD_IMachine_SETTER_Name_TO(smth) NS_IMETHOD SetName (const PRUnichar * aName) { return smth SetName (aName); }
#define COM_FORWARD_IMachine_SETTER_Name_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_Name_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_Name_TO_BASE(base) COM_FORWARD_IMachine_SETTER_Name_TO (base::)
#define COM_FORWARD_IMachine_GETTER_Description_TO(smth) NS_IMETHOD GetDescription (PRUnichar * * aDescription) { return smth GetDescription (aDescription); }
#define COM_FORWARD_IMachine_GETTER_Description_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_Description_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_Description_TO_BASE(base) COM_FORWARD_IMachine_GETTER_Description_TO (base::)
#define COM_FORWARD_IMachine_SETTER_Description_TO(smth) NS_IMETHOD SetDescription (const PRUnichar * aDescription) { return smth SetDescription (aDescription); }
#define COM_FORWARD_IMachine_SETTER_Description_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_Description_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_Description_TO_BASE(base) COM_FORWARD_IMachine_SETTER_Description_TO (base::)
#define COM_FORWARD_IMachine_GETTER_Id_TO(smth) NS_IMETHOD GetId (PRUnichar * * aId) { return smth GetId (aId); }
#define COM_FORWARD_IMachine_GETTER_Id_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_Id_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_Id_TO_BASE(base) COM_FORWARD_IMachine_GETTER_Id_TO (base::)
#define COM_FORWARD_IMachine_GETTER_Groups_TO(smth) NS_IMETHOD GetGroups (PRUint32 * aGroupsSize, PRUnichar * * * aGroups) { return smth GetGroups (aGroupsSize, aGroups); }
#define COM_FORWARD_IMachine_GETTER_Groups_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_Groups_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_Groups_TO_BASE(base) COM_FORWARD_IMachine_GETTER_Groups_TO (base::)
#define COM_FORWARD_IMachine_SETTER_Groups_TO(smth) NS_IMETHOD SetGroups (PRUint32 aGroupsSize, PRUnichar * * aGroups) { return smth SetGroups (aGroups); }
#define COM_FORWARD_IMachine_SETTER_Groups_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_Groups_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_Groups_TO_BASE(base) COM_FORWARD_IMachine_SETTER_Groups_TO (base::)
#define COM_FORWARD_IMachine_GETTER_OSTypeId_TO(smth) NS_IMETHOD GetOSTypeId (PRUnichar * * aOSTypeId) { return smth GetOSTypeId (aOSTypeId); }
#define COM_FORWARD_IMachine_GETTER_OSTypeId_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_OSTypeId_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_OSTypeId_TO_BASE(base) COM_FORWARD_IMachine_GETTER_OSTypeId_TO (base::)
#define COM_FORWARD_IMachine_SETTER_OSTypeId_TO(smth) NS_IMETHOD SetOSTypeId (const PRUnichar * aOSTypeId) { return smth SetOSTypeId (aOSTypeId); }
#define COM_FORWARD_IMachine_SETTER_OSTypeId_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_OSTypeId_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_OSTypeId_TO_BASE(base) COM_FORWARD_IMachine_SETTER_OSTypeId_TO (base::)
#define COM_FORWARD_IMachine_GETTER_HardwareVersion_TO(smth) NS_IMETHOD GetHardwareVersion (PRUnichar * * aHardwareVersion) { return smth GetHardwareVersion (aHardwareVersion); }
#define COM_FORWARD_IMachine_GETTER_HardwareVersion_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_HardwareVersion_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_HardwareVersion_TO_BASE(base) COM_FORWARD_IMachine_GETTER_HardwareVersion_TO (base::)
#define COM_FORWARD_IMachine_SETTER_HardwareVersion_TO(smth) NS_IMETHOD SetHardwareVersion (const PRUnichar * aHardwareVersion) { return smth SetHardwareVersion (aHardwareVersion); }
#define COM_FORWARD_IMachine_SETTER_HardwareVersion_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_HardwareVersion_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_HardwareVersion_TO_BASE(base) COM_FORWARD_IMachine_SETTER_HardwareVersion_TO (base::)
#define COM_FORWARD_IMachine_GETTER_HardwareUUID_TO(smth) NS_IMETHOD GetHardwareUUID (PRUnichar * * aHardwareUUID) { return smth GetHardwareUUID (aHardwareUUID); }
#define COM_FORWARD_IMachine_GETTER_HardwareUUID_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_HardwareUUID_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_HardwareUUID_TO_BASE(base) COM_FORWARD_IMachine_GETTER_HardwareUUID_TO (base::)
#define COM_FORWARD_IMachine_SETTER_HardwareUUID_TO(smth) NS_IMETHOD SetHardwareUUID (PRUnichar * aHardwareUUID) { return smth SetHardwareUUID (aHardwareUUID); }
#define COM_FORWARD_IMachine_SETTER_HardwareUUID_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_HardwareUUID_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_HardwareUUID_TO_BASE(base) COM_FORWARD_IMachine_SETTER_HardwareUUID_TO (base::)
#define COM_FORWARD_IMachine_GETTER_CPUCount_TO(smth) NS_IMETHOD GetCPUCount (PRUint32 * aCPUCount) { return smth GetCPUCount (aCPUCount); }
#define COM_FORWARD_IMachine_GETTER_CPUCount_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_CPUCount_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_CPUCount_TO_BASE(base) COM_FORWARD_IMachine_GETTER_CPUCount_TO (base::)
#define COM_FORWARD_IMachine_SETTER_CPUCount_TO(smth) NS_IMETHOD SetCPUCount (PRUint32 aCPUCount) { return smth SetCPUCount (aCPUCount); }
#define COM_FORWARD_IMachine_SETTER_CPUCount_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_CPUCount_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_CPUCount_TO_BASE(base) COM_FORWARD_IMachine_SETTER_CPUCount_TO (base::)
#define COM_FORWARD_IMachine_GETTER_CPUHotPlugEnabled_TO(smth) NS_IMETHOD GetCPUHotPlugEnabled (PRBool * aCPUHotPlugEnabled) { return smth GetCPUHotPlugEnabled (aCPUHotPlugEnabled); }
#define COM_FORWARD_IMachine_GETTER_CPUHotPlugEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_CPUHotPlugEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_CPUHotPlugEnabled_TO_BASE(base) COM_FORWARD_IMachine_GETTER_CPUHotPlugEnabled_TO (base::)
#define COM_FORWARD_IMachine_SETTER_CPUHotPlugEnabled_TO(smth) NS_IMETHOD SetCPUHotPlugEnabled (PRBool aCPUHotPlugEnabled) { return smth SetCPUHotPlugEnabled (aCPUHotPlugEnabled); }
#define COM_FORWARD_IMachine_SETTER_CPUHotPlugEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_CPUHotPlugEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_CPUHotPlugEnabled_TO_BASE(base) COM_FORWARD_IMachine_SETTER_CPUHotPlugEnabled_TO (base::)
#define COM_FORWARD_IMachine_GETTER_CPUExecutionCap_TO(smth) NS_IMETHOD GetCPUExecutionCap (PRUint32 * aCPUExecutionCap) { return smth GetCPUExecutionCap (aCPUExecutionCap); }
#define COM_FORWARD_IMachine_GETTER_CPUExecutionCap_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_CPUExecutionCap_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_CPUExecutionCap_TO_BASE(base) COM_FORWARD_IMachine_GETTER_CPUExecutionCap_TO (base::)
#define COM_FORWARD_IMachine_SETTER_CPUExecutionCap_TO(smth) NS_IMETHOD SetCPUExecutionCap (PRUint32 aCPUExecutionCap) { return smth SetCPUExecutionCap (aCPUExecutionCap); }
#define COM_FORWARD_IMachine_SETTER_CPUExecutionCap_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_CPUExecutionCap_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_CPUExecutionCap_TO_BASE(base) COM_FORWARD_IMachine_SETTER_CPUExecutionCap_TO (base::)
#define COM_FORWARD_IMachine_GETTER_MemorySize_TO(smth) NS_IMETHOD GetMemorySize (PRUint32 * aMemorySize) { return smth GetMemorySize (aMemorySize); }
#define COM_FORWARD_IMachine_GETTER_MemorySize_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_MemorySize_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_MemorySize_TO_BASE(base) COM_FORWARD_IMachine_GETTER_MemorySize_TO (base::)
#define COM_FORWARD_IMachine_SETTER_MemorySize_TO(smth) NS_IMETHOD SetMemorySize (PRUint32 aMemorySize) { return smth SetMemorySize (aMemorySize); }
#define COM_FORWARD_IMachine_SETTER_MemorySize_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_MemorySize_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_MemorySize_TO_BASE(base) COM_FORWARD_IMachine_SETTER_MemorySize_TO (base::)
#define COM_FORWARD_IMachine_GETTER_MemoryBalloonSize_TO(smth) NS_IMETHOD GetMemoryBalloonSize (PRUint32 * aMemoryBalloonSize) { return smth GetMemoryBalloonSize (aMemoryBalloonSize); }
#define COM_FORWARD_IMachine_GETTER_MemoryBalloonSize_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_MemoryBalloonSize_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_MemoryBalloonSize_TO_BASE(base) COM_FORWARD_IMachine_GETTER_MemoryBalloonSize_TO (base::)
#define COM_FORWARD_IMachine_SETTER_MemoryBalloonSize_TO(smth) NS_IMETHOD SetMemoryBalloonSize (PRUint32 aMemoryBalloonSize) { return smth SetMemoryBalloonSize (aMemoryBalloonSize); }
#define COM_FORWARD_IMachine_SETTER_MemoryBalloonSize_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_MemoryBalloonSize_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_MemoryBalloonSize_TO_BASE(base) COM_FORWARD_IMachine_SETTER_MemoryBalloonSize_TO (base::)
#define COM_FORWARD_IMachine_GETTER_PageFusionEnabled_TO(smth) NS_IMETHOD GetPageFusionEnabled (PRBool * aPageFusionEnabled) { return smth GetPageFusionEnabled (aPageFusionEnabled); }
#define COM_FORWARD_IMachine_GETTER_PageFusionEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_PageFusionEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_PageFusionEnabled_TO_BASE(base) COM_FORWARD_IMachine_GETTER_PageFusionEnabled_TO (base::)
#define COM_FORWARD_IMachine_SETTER_PageFusionEnabled_TO(smth) NS_IMETHOD SetPageFusionEnabled (PRBool aPageFusionEnabled) { return smth SetPageFusionEnabled (aPageFusionEnabled); }
#define COM_FORWARD_IMachine_SETTER_PageFusionEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_PageFusionEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_PageFusionEnabled_TO_BASE(base) COM_FORWARD_IMachine_SETTER_PageFusionEnabled_TO (base::)
#define COM_FORWARD_IMachine_GETTER_GraphicsControllerType_TO(smth) NS_IMETHOD GetGraphicsControllerType (PRUint32 * aGraphicsControllerType) { return smth GetGraphicsControllerType (aGraphicsControllerType); }
#define COM_FORWARD_IMachine_GETTER_GraphicsControllerType_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_GraphicsControllerType_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_GraphicsControllerType_TO_BASE(base) COM_FORWARD_IMachine_GETTER_GraphicsControllerType_TO (base::)
#define COM_FORWARD_IMachine_SETTER_GraphicsControllerType_TO(smth) NS_IMETHOD SetGraphicsControllerType (PRUint32 aGraphicsControllerType) { return smth SetGraphicsControllerType (aGraphicsControllerType); }
#define COM_FORWARD_IMachine_SETTER_GraphicsControllerType_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_GraphicsControllerType_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_GraphicsControllerType_TO_BASE(base) COM_FORWARD_IMachine_SETTER_GraphicsControllerType_TO (base::)
#define COM_FORWARD_IMachine_GETTER_VRAMSize_TO(smth) NS_IMETHOD GetVRAMSize (PRUint32 * aVRAMSize) { return smth GetVRAMSize (aVRAMSize); }
#define COM_FORWARD_IMachine_GETTER_VRAMSize_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_VRAMSize_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_VRAMSize_TO_BASE(base) COM_FORWARD_IMachine_GETTER_VRAMSize_TO (base::)
#define COM_FORWARD_IMachine_SETTER_VRAMSize_TO(smth) NS_IMETHOD SetVRAMSize (PRUint32 aVRAMSize) { return smth SetVRAMSize (aVRAMSize); }
#define COM_FORWARD_IMachine_SETTER_VRAMSize_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_VRAMSize_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_VRAMSize_TO_BASE(base) COM_FORWARD_IMachine_SETTER_VRAMSize_TO (base::)
#define COM_FORWARD_IMachine_GETTER_Accelerate3DEnabled_TO(smth) NS_IMETHOD GetAccelerate3DEnabled (PRBool * aAccelerate3DEnabled) { return smth GetAccelerate3DEnabled (aAccelerate3DEnabled); }
#define COM_FORWARD_IMachine_GETTER_Accelerate3DEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_Accelerate3DEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_Accelerate3DEnabled_TO_BASE(base) COM_FORWARD_IMachine_GETTER_Accelerate3DEnabled_TO (base::)
#define COM_FORWARD_IMachine_SETTER_Accelerate3DEnabled_TO(smth) NS_IMETHOD SetAccelerate3DEnabled (PRBool aAccelerate3DEnabled) { return smth SetAccelerate3DEnabled (aAccelerate3DEnabled); }
#define COM_FORWARD_IMachine_SETTER_Accelerate3DEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_Accelerate3DEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_Accelerate3DEnabled_TO_BASE(base) COM_FORWARD_IMachine_SETTER_Accelerate3DEnabled_TO (base::)
#define COM_FORWARD_IMachine_GETTER_Accelerate2DVideoEnabled_TO(smth) NS_IMETHOD GetAccelerate2DVideoEnabled (PRBool * aAccelerate2DVideoEnabled) { return smth GetAccelerate2DVideoEnabled (aAccelerate2DVideoEnabled); }
#define COM_FORWARD_IMachine_GETTER_Accelerate2DVideoEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_Accelerate2DVideoEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_Accelerate2DVideoEnabled_TO_BASE(base) COM_FORWARD_IMachine_GETTER_Accelerate2DVideoEnabled_TO (base::)
#define COM_FORWARD_IMachine_SETTER_Accelerate2DVideoEnabled_TO(smth) NS_IMETHOD SetAccelerate2DVideoEnabled (PRBool aAccelerate2DVideoEnabled) { return smth SetAccelerate2DVideoEnabled (aAccelerate2DVideoEnabled); }
#define COM_FORWARD_IMachine_SETTER_Accelerate2DVideoEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_Accelerate2DVideoEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_Accelerate2DVideoEnabled_TO_BASE(base) COM_FORWARD_IMachine_SETTER_Accelerate2DVideoEnabled_TO (base::)
#define COM_FORWARD_IMachine_GETTER_MonitorCount_TO(smth) NS_IMETHOD GetMonitorCount (PRUint32 * aMonitorCount) { return smth GetMonitorCount (aMonitorCount); }
#define COM_FORWARD_IMachine_GETTER_MonitorCount_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_MonitorCount_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_MonitorCount_TO_BASE(base) COM_FORWARD_IMachine_GETTER_MonitorCount_TO (base::)
#define COM_FORWARD_IMachine_SETTER_MonitorCount_TO(smth) NS_IMETHOD SetMonitorCount (PRUint32 aMonitorCount) { return smth SetMonitorCount (aMonitorCount); }
#define COM_FORWARD_IMachine_SETTER_MonitorCount_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_MonitorCount_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_MonitorCount_TO_BASE(base) COM_FORWARD_IMachine_SETTER_MonitorCount_TO (base::)
#define COM_FORWARD_IMachine_GETTER_VideoCaptureEnabled_TO(smth) NS_IMETHOD GetVideoCaptureEnabled (PRBool * aVideoCaptureEnabled) { return smth GetVideoCaptureEnabled (aVideoCaptureEnabled); }
#define COM_FORWARD_IMachine_GETTER_VideoCaptureEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_VideoCaptureEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_VideoCaptureEnabled_TO_BASE(base) COM_FORWARD_IMachine_GETTER_VideoCaptureEnabled_TO (base::)
#define COM_FORWARD_IMachine_SETTER_VideoCaptureEnabled_TO(smth) NS_IMETHOD SetVideoCaptureEnabled (PRBool aVideoCaptureEnabled) { return smth SetVideoCaptureEnabled (aVideoCaptureEnabled); }
#define COM_FORWARD_IMachine_SETTER_VideoCaptureEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_VideoCaptureEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_VideoCaptureEnabled_TO_BASE(base) COM_FORWARD_IMachine_SETTER_VideoCaptureEnabled_TO (base::)
#define COM_FORWARD_IMachine_GETTER_VideoCaptureScreens_TO(smth) NS_IMETHOD GetVideoCaptureScreens (PRUint32 * aVideoCaptureScreensSize, PRBool * * aVideoCaptureScreens) { return smth GetVideoCaptureScreens (aVideoCaptureScreensSize, aVideoCaptureScreens); }
#define COM_FORWARD_IMachine_GETTER_VideoCaptureScreens_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_VideoCaptureScreens_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_VideoCaptureScreens_TO_BASE(base) COM_FORWARD_IMachine_GETTER_VideoCaptureScreens_TO (base::)
#define COM_FORWARD_IMachine_SETTER_VideoCaptureScreens_TO(smth) NS_IMETHOD SetVideoCaptureScreens (PRUint32 aVideoCaptureScreensSize, PRBool * aVideoCaptureScreens) { return smth SetVideoCaptureScreens (aVideoCaptureScreens); }
#define COM_FORWARD_IMachine_SETTER_VideoCaptureScreens_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_VideoCaptureScreens_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_VideoCaptureScreens_TO_BASE(base) COM_FORWARD_IMachine_SETTER_VideoCaptureScreens_TO (base::)
#define COM_FORWARD_IMachine_GETTER_VideoCaptureFile_TO(smth) NS_IMETHOD GetVideoCaptureFile (PRUnichar * * aVideoCaptureFile) { return smth GetVideoCaptureFile (aVideoCaptureFile); }
#define COM_FORWARD_IMachine_GETTER_VideoCaptureFile_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_VideoCaptureFile_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_VideoCaptureFile_TO_BASE(base) COM_FORWARD_IMachine_GETTER_VideoCaptureFile_TO (base::)
#define COM_FORWARD_IMachine_SETTER_VideoCaptureFile_TO(smth) NS_IMETHOD SetVideoCaptureFile (const PRUnichar * aVideoCaptureFile) { return smth SetVideoCaptureFile (aVideoCaptureFile); }
#define COM_FORWARD_IMachine_SETTER_VideoCaptureFile_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_VideoCaptureFile_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_VideoCaptureFile_TO_BASE(base) COM_FORWARD_IMachine_SETTER_VideoCaptureFile_TO (base::)
#define COM_FORWARD_IMachine_GETTER_VideoCaptureWidth_TO(smth) NS_IMETHOD GetVideoCaptureWidth (PRUint32 * aVideoCaptureWidth) { return smth GetVideoCaptureWidth (aVideoCaptureWidth); }
#define COM_FORWARD_IMachine_GETTER_VideoCaptureWidth_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_VideoCaptureWidth_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_VideoCaptureWidth_TO_BASE(base) COM_FORWARD_IMachine_GETTER_VideoCaptureWidth_TO (base::)
#define COM_FORWARD_IMachine_SETTER_VideoCaptureWidth_TO(smth) NS_IMETHOD SetVideoCaptureWidth (PRUint32 aVideoCaptureWidth) { return smth SetVideoCaptureWidth (aVideoCaptureWidth); }
#define COM_FORWARD_IMachine_SETTER_VideoCaptureWidth_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_VideoCaptureWidth_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_VideoCaptureWidth_TO_BASE(base) COM_FORWARD_IMachine_SETTER_VideoCaptureWidth_TO (base::)
#define COM_FORWARD_IMachine_GETTER_VideoCaptureHeight_TO(smth) NS_IMETHOD GetVideoCaptureHeight (PRUint32 * aVideoCaptureHeight) { return smth GetVideoCaptureHeight (aVideoCaptureHeight); }
#define COM_FORWARD_IMachine_GETTER_VideoCaptureHeight_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_VideoCaptureHeight_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_VideoCaptureHeight_TO_BASE(base) COM_FORWARD_IMachine_GETTER_VideoCaptureHeight_TO (base::)
#define COM_FORWARD_IMachine_SETTER_VideoCaptureHeight_TO(smth) NS_IMETHOD SetVideoCaptureHeight (PRUint32 aVideoCaptureHeight) { return smth SetVideoCaptureHeight (aVideoCaptureHeight); }
#define COM_FORWARD_IMachine_SETTER_VideoCaptureHeight_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_VideoCaptureHeight_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_VideoCaptureHeight_TO_BASE(base) COM_FORWARD_IMachine_SETTER_VideoCaptureHeight_TO (base::)
#define COM_FORWARD_IMachine_GETTER_VideoCaptureRate_TO(smth) NS_IMETHOD GetVideoCaptureRate (PRUint32 * aVideoCaptureRate) { return smth GetVideoCaptureRate (aVideoCaptureRate); }
#define COM_FORWARD_IMachine_GETTER_VideoCaptureRate_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_VideoCaptureRate_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_VideoCaptureRate_TO_BASE(base) COM_FORWARD_IMachine_GETTER_VideoCaptureRate_TO (base::)
#define COM_FORWARD_IMachine_SETTER_VideoCaptureRate_TO(smth) NS_IMETHOD SetVideoCaptureRate (PRUint32 aVideoCaptureRate) { return smth SetVideoCaptureRate (aVideoCaptureRate); }
#define COM_FORWARD_IMachine_SETTER_VideoCaptureRate_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_VideoCaptureRate_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_VideoCaptureRate_TO_BASE(base) COM_FORWARD_IMachine_SETTER_VideoCaptureRate_TO (base::)
#define COM_FORWARD_IMachine_GETTER_VideoCaptureFPS_TO(smth) NS_IMETHOD GetVideoCaptureFPS (PRUint32 * aVideoCaptureFPS) { return smth GetVideoCaptureFPS (aVideoCaptureFPS); }
#define COM_FORWARD_IMachine_GETTER_VideoCaptureFPS_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_VideoCaptureFPS_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_VideoCaptureFPS_TO_BASE(base) COM_FORWARD_IMachine_GETTER_VideoCaptureFPS_TO (base::)
#define COM_FORWARD_IMachine_SETTER_VideoCaptureFPS_TO(smth) NS_IMETHOD SetVideoCaptureFPS (PRUint32 aVideoCaptureFPS) { return smth SetVideoCaptureFPS (aVideoCaptureFPS); }
#define COM_FORWARD_IMachine_SETTER_VideoCaptureFPS_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_VideoCaptureFPS_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_VideoCaptureFPS_TO_BASE(base) COM_FORWARD_IMachine_SETTER_VideoCaptureFPS_TO (base::)
#define COM_FORWARD_IMachine_GETTER_BIOSSettings_TO(smth) NS_IMETHOD GetBIOSSettings (IBIOSSettings * * aBIOSSettings) { return smth GetBIOSSettings (aBIOSSettings); }
#define COM_FORWARD_IMachine_GETTER_BIOSSettings_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_BIOSSettings_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_BIOSSettings_TO_BASE(base) COM_FORWARD_IMachine_GETTER_BIOSSettings_TO (base::)
#define COM_FORWARD_IMachine_GETTER_FirmwareType_TO(smth) NS_IMETHOD GetFirmwareType (PRUint32 * aFirmwareType) { return smth GetFirmwareType (aFirmwareType); }
#define COM_FORWARD_IMachine_GETTER_FirmwareType_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_FirmwareType_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_FirmwareType_TO_BASE(base) COM_FORWARD_IMachine_GETTER_FirmwareType_TO (base::)
#define COM_FORWARD_IMachine_SETTER_FirmwareType_TO(smth) NS_IMETHOD SetFirmwareType (PRUint32 aFirmwareType) { return smth SetFirmwareType (aFirmwareType); }
#define COM_FORWARD_IMachine_SETTER_FirmwareType_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_FirmwareType_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_FirmwareType_TO_BASE(base) COM_FORWARD_IMachine_SETTER_FirmwareType_TO (base::)
#define COM_FORWARD_IMachine_GETTER_PointingHIDType_TO(smth) NS_IMETHOD GetPointingHIDType (PRUint32 * aPointingHIDType) { return smth GetPointingHIDType (aPointingHIDType); }
#define COM_FORWARD_IMachine_GETTER_PointingHIDType_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_PointingHIDType_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_PointingHIDType_TO_BASE(base) COM_FORWARD_IMachine_GETTER_PointingHIDType_TO (base::)
#define COM_FORWARD_IMachine_SETTER_PointingHIDType_TO(smth) NS_IMETHOD SetPointingHIDType (PRUint32 aPointingHIDType) { return smth SetPointingHIDType (aPointingHIDType); }
#define COM_FORWARD_IMachine_SETTER_PointingHIDType_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_PointingHIDType_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_PointingHIDType_TO_BASE(base) COM_FORWARD_IMachine_SETTER_PointingHIDType_TO (base::)
#define COM_FORWARD_IMachine_GETTER_KeyboardHIDType_TO(smth) NS_IMETHOD GetKeyboardHIDType (PRUint32 * aKeyboardHIDType) { return smth GetKeyboardHIDType (aKeyboardHIDType); }
#define COM_FORWARD_IMachine_GETTER_KeyboardHIDType_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_KeyboardHIDType_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_KeyboardHIDType_TO_BASE(base) COM_FORWARD_IMachine_GETTER_KeyboardHIDType_TO (base::)
#define COM_FORWARD_IMachine_SETTER_KeyboardHIDType_TO(smth) NS_IMETHOD SetKeyboardHIDType (PRUint32 aKeyboardHIDType) { return smth SetKeyboardHIDType (aKeyboardHIDType); }
#define COM_FORWARD_IMachine_SETTER_KeyboardHIDType_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_KeyboardHIDType_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_KeyboardHIDType_TO_BASE(base) COM_FORWARD_IMachine_SETTER_KeyboardHIDType_TO (base::)
#define COM_FORWARD_IMachine_GETTER_HPETEnabled_TO(smth) NS_IMETHOD GetHPETEnabled (PRBool * aHPETEnabled) { return smth GetHPETEnabled (aHPETEnabled); }
#define COM_FORWARD_IMachine_GETTER_HPETEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_HPETEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_HPETEnabled_TO_BASE(base) COM_FORWARD_IMachine_GETTER_HPETEnabled_TO (base::)
#define COM_FORWARD_IMachine_SETTER_HPETEnabled_TO(smth) NS_IMETHOD SetHPETEnabled (PRBool aHPETEnabled) { return smth SetHPETEnabled (aHPETEnabled); }
#define COM_FORWARD_IMachine_SETTER_HPETEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_HPETEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_HPETEnabled_TO_BASE(base) COM_FORWARD_IMachine_SETTER_HPETEnabled_TO (base::)
#define COM_FORWARD_IMachine_GETTER_ChipsetType_TO(smth) NS_IMETHOD GetChipsetType (PRUint32 * aChipsetType) { return smth GetChipsetType (aChipsetType); }
#define COM_FORWARD_IMachine_GETTER_ChipsetType_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_ChipsetType_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_ChipsetType_TO_BASE(base) COM_FORWARD_IMachine_GETTER_ChipsetType_TO (base::)
#define COM_FORWARD_IMachine_SETTER_ChipsetType_TO(smth) NS_IMETHOD SetChipsetType (PRUint32 aChipsetType) { return smth SetChipsetType (aChipsetType); }
#define COM_FORWARD_IMachine_SETTER_ChipsetType_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_ChipsetType_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_ChipsetType_TO_BASE(base) COM_FORWARD_IMachine_SETTER_ChipsetType_TO (base::)
#define COM_FORWARD_IMachine_GETTER_SnapshotFolder_TO(smth) NS_IMETHOD GetSnapshotFolder (PRUnichar * * aSnapshotFolder) { return smth GetSnapshotFolder (aSnapshotFolder); }
#define COM_FORWARD_IMachine_GETTER_SnapshotFolder_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_SnapshotFolder_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_SnapshotFolder_TO_BASE(base) COM_FORWARD_IMachine_GETTER_SnapshotFolder_TO (base::)
#define COM_FORWARD_IMachine_SETTER_SnapshotFolder_TO(smth) NS_IMETHOD SetSnapshotFolder (const PRUnichar * aSnapshotFolder) { return smth SetSnapshotFolder (aSnapshotFolder); }
#define COM_FORWARD_IMachine_SETTER_SnapshotFolder_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_SnapshotFolder_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_SnapshotFolder_TO_BASE(base) COM_FORWARD_IMachine_SETTER_SnapshotFolder_TO (base::)
#define COM_FORWARD_IMachine_GETTER_VRDEServer_TO(smth) NS_IMETHOD GetVRDEServer (IVRDEServer * * aVRDEServer) { return smth GetVRDEServer (aVRDEServer); }
#define COM_FORWARD_IMachine_GETTER_VRDEServer_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_VRDEServer_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_VRDEServer_TO_BASE(base) COM_FORWARD_IMachine_GETTER_VRDEServer_TO (base::)
#define COM_FORWARD_IMachine_GETTER_EmulatedUSBCardReaderEnabled_TO(smth) NS_IMETHOD GetEmulatedUSBCardReaderEnabled (PRBool * aEmulatedUSBCardReaderEnabled) { return smth GetEmulatedUSBCardReaderEnabled (aEmulatedUSBCardReaderEnabled); }
#define COM_FORWARD_IMachine_GETTER_EmulatedUSBCardReaderEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_EmulatedUSBCardReaderEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_EmulatedUSBCardReaderEnabled_TO_BASE(base) COM_FORWARD_IMachine_GETTER_EmulatedUSBCardReaderEnabled_TO (base::)
#define COM_FORWARD_IMachine_SETTER_EmulatedUSBCardReaderEnabled_TO(smth) NS_IMETHOD SetEmulatedUSBCardReaderEnabled (PRBool aEmulatedUSBCardReaderEnabled) { return smth SetEmulatedUSBCardReaderEnabled (aEmulatedUSBCardReaderEnabled); }
#define COM_FORWARD_IMachine_SETTER_EmulatedUSBCardReaderEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_EmulatedUSBCardReaderEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_EmulatedUSBCardReaderEnabled_TO_BASE(base) COM_FORWARD_IMachine_SETTER_EmulatedUSBCardReaderEnabled_TO (base::)
#define COM_FORWARD_IMachine_GETTER_MediumAttachments_TO(smth) NS_IMETHOD GetMediumAttachments (PRUint32 * aMediumAttachmentsSize, IMediumAttachment * * * aMediumAttachments) { return smth GetMediumAttachments (aMediumAttachmentsSize, aMediumAttachments); }
#define COM_FORWARD_IMachine_GETTER_MediumAttachments_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_MediumAttachments_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_MediumAttachments_TO_BASE(base) COM_FORWARD_IMachine_GETTER_MediumAttachments_TO (base::)
#define COM_FORWARD_IMachine_GETTER_USBControllers_TO(smth) NS_IMETHOD GetUSBControllers (PRUint32 * aUSBControllersSize, IUSBController * * * aUSBControllers) { return smth GetUSBControllers (aUSBControllersSize, aUSBControllers); }
#define COM_FORWARD_IMachine_GETTER_USBControllers_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_USBControllers_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_USBControllers_TO_BASE(base) COM_FORWARD_IMachine_GETTER_USBControllers_TO (base::)
#define COM_FORWARD_IMachine_GETTER_USBDeviceFilters_TO(smth) NS_IMETHOD GetUSBDeviceFilters (IUSBDeviceFilters * * aUSBDeviceFilters) { return smth GetUSBDeviceFilters (aUSBDeviceFilters); }
#define COM_FORWARD_IMachine_GETTER_USBDeviceFilters_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_USBDeviceFilters_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_USBDeviceFilters_TO_BASE(base) COM_FORWARD_IMachine_GETTER_USBDeviceFilters_TO (base::)
#define COM_FORWARD_IMachine_GETTER_AudioAdapter_TO(smth) NS_IMETHOD GetAudioAdapter (IAudioAdapter * * aAudioAdapter) { return smth GetAudioAdapter (aAudioAdapter); }
#define COM_FORWARD_IMachine_GETTER_AudioAdapter_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_AudioAdapter_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_AudioAdapter_TO_BASE(base) COM_FORWARD_IMachine_GETTER_AudioAdapter_TO (base::)
#define COM_FORWARD_IMachine_GETTER_StorageControllers_TO(smth) NS_IMETHOD GetStorageControllers (PRUint32 * aStorageControllersSize, IStorageController * * * aStorageControllers) { return smth GetStorageControllers (aStorageControllersSize, aStorageControllers); }
#define COM_FORWARD_IMachine_GETTER_StorageControllers_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_StorageControllers_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_StorageControllers_TO_BASE(base) COM_FORWARD_IMachine_GETTER_StorageControllers_TO (base::)
#define COM_FORWARD_IMachine_GETTER_SettingsFilePath_TO(smth) NS_IMETHOD GetSettingsFilePath (PRUnichar * * aSettingsFilePath) { return smth GetSettingsFilePath (aSettingsFilePath); }
#define COM_FORWARD_IMachine_GETTER_SettingsFilePath_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_SettingsFilePath_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_SettingsFilePath_TO_BASE(base) COM_FORWARD_IMachine_GETTER_SettingsFilePath_TO (base::)
#define COM_FORWARD_IMachine_GETTER_SettingsModified_TO(smth) NS_IMETHOD GetSettingsModified (PRBool * aSettingsModified) { return smth GetSettingsModified (aSettingsModified); }
#define COM_FORWARD_IMachine_GETTER_SettingsModified_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_SettingsModified_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_SettingsModified_TO_BASE(base) COM_FORWARD_IMachine_GETTER_SettingsModified_TO (base::)
#define COM_FORWARD_IMachine_GETTER_SessionState_TO(smth) NS_IMETHOD GetSessionState (PRUint32 * aSessionState) { return smth GetSessionState (aSessionState); }
#define COM_FORWARD_IMachine_GETTER_SessionState_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_SessionState_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_SessionState_TO_BASE(base) COM_FORWARD_IMachine_GETTER_SessionState_TO (base::)
#define COM_FORWARD_IMachine_GETTER_SessionType_TO(smth) NS_IMETHOD GetSessionType (PRUnichar * * aSessionType) { return smth GetSessionType (aSessionType); }
#define COM_FORWARD_IMachine_GETTER_SessionType_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_SessionType_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_SessionType_TO_BASE(base) COM_FORWARD_IMachine_GETTER_SessionType_TO (base::)
#define COM_FORWARD_IMachine_GETTER_SessionPID_TO(smth) NS_IMETHOD GetSessionPID (PRUint32 * aSessionPID) { return smth GetSessionPID (aSessionPID); }
#define COM_FORWARD_IMachine_GETTER_SessionPID_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_SessionPID_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_SessionPID_TO_BASE(base) COM_FORWARD_IMachine_GETTER_SessionPID_TO (base::)
#define COM_FORWARD_IMachine_GETTER_State_TO(smth) NS_IMETHOD GetState (PRUint32 * aState) { return smth GetState (aState); }
#define COM_FORWARD_IMachine_GETTER_State_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_State_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_State_TO_BASE(base) COM_FORWARD_IMachine_GETTER_State_TO (base::)
#define COM_FORWARD_IMachine_GETTER_LastStateChange_TO(smth) NS_IMETHOD GetLastStateChange (PRInt64 * aLastStateChange) { return smth GetLastStateChange (aLastStateChange); }
#define COM_FORWARD_IMachine_GETTER_LastStateChange_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_LastStateChange_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_LastStateChange_TO_BASE(base) COM_FORWARD_IMachine_GETTER_LastStateChange_TO (base::)
#define COM_FORWARD_IMachine_GETTER_StateFilePath_TO(smth) NS_IMETHOD GetStateFilePath (PRUnichar * * aStateFilePath) { return smth GetStateFilePath (aStateFilePath); }
#define COM_FORWARD_IMachine_GETTER_StateFilePath_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_StateFilePath_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_StateFilePath_TO_BASE(base) COM_FORWARD_IMachine_GETTER_StateFilePath_TO (base::)
#define COM_FORWARD_IMachine_GETTER_LogFolder_TO(smth) NS_IMETHOD GetLogFolder (PRUnichar * * aLogFolder) { return smth GetLogFolder (aLogFolder); }
#define COM_FORWARD_IMachine_GETTER_LogFolder_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_LogFolder_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_LogFolder_TO_BASE(base) COM_FORWARD_IMachine_GETTER_LogFolder_TO (base::)
#define COM_FORWARD_IMachine_GETTER_CurrentSnapshot_TO(smth) NS_IMETHOD GetCurrentSnapshot (ISnapshot * * aCurrentSnapshot) { return smth GetCurrentSnapshot (aCurrentSnapshot); }
#define COM_FORWARD_IMachine_GETTER_CurrentSnapshot_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_CurrentSnapshot_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_CurrentSnapshot_TO_BASE(base) COM_FORWARD_IMachine_GETTER_CurrentSnapshot_TO (base::)
#define COM_FORWARD_IMachine_GETTER_SnapshotCount_TO(smth) NS_IMETHOD GetSnapshotCount (PRUint32 * aSnapshotCount) { return smth GetSnapshotCount (aSnapshotCount); }
#define COM_FORWARD_IMachine_GETTER_SnapshotCount_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_SnapshotCount_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_SnapshotCount_TO_BASE(base) COM_FORWARD_IMachine_GETTER_SnapshotCount_TO (base::)
#define COM_FORWARD_IMachine_GETTER_CurrentStateModified_TO(smth) NS_IMETHOD GetCurrentStateModified (PRBool * aCurrentStateModified) { return smth GetCurrentStateModified (aCurrentStateModified); }
#define COM_FORWARD_IMachine_GETTER_CurrentStateModified_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_CurrentStateModified_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_CurrentStateModified_TO_BASE(base) COM_FORWARD_IMachine_GETTER_CurrentStateModified_TO (base::)
#define COM_FORWARD_IMachine_GETTER_SharedFolders_TO(smth) NS_IMETHOD GetSharedFolders (PRUint32 * aSharedFoldersSize, ISharedFolder * * * aSharedFolders) { return smth GetSharedFolders (aSharedFoldersSize, aSharedFolders); }
#define COM_FORWARD_IMachine_GETTER_SharedFolders_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_SharedFolders_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_SharedFolders_TO_BASE(base) COM_FORWARD_IMachine_GETTER_SharedFolders_TO (base::)
#define COM_FORWARD_IMachine_GETTER_ClipboardMode_TO(smth) NS_IMETHOD GetClipboardMode (PRUint32 * aClipboardMode) { return smth GetClipboardMode (aClipboardMode); }
#define COM_FORWARD_IMachine_GETTER_ClipboardMode_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_ClipboardMode_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_ClipboardMode_TO_BASE(base) COM_FORWARD_IMachine_GETTER_ClipboardMode_TO (base::)
#define COM_FORWARD_IMachine_SETTER_ClipboardMode_TO(smth) NS_IMETHOD SetClipboardMode (PRUint32 aClipboardMode) { return smth SetClipboardMode (aClipboardMode); }
#define COM_FORWARD_IMachine_SETTER_ClipboardMode_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_ClipboardMode_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_ClipboardMode_TO_BASE(base) COM_FORWARD_IMachine_SETTER_ClipboardMode_TO (base::)
#define COM_FORWARD_IMachine_GETTER_DragAndDropMode_TO(smth) NS_IMETHOD GetDragAndDropMode (PRUint32 * aDragAndDropMode) { return smth GetDragAndDropMode (aDragAndDropMode); }
#define COM_FORWARD_IMachine_GETTER_DragAndDropMode_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_DragAndDropMode_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_DragAndDropMode_TO_BASE(base) COM_FORWARD_IMachine_GETTER_DragAndDropMode_TO (base::)
#define COM_FORWARD_IMachine_SETTER_DragAndDropMode_TO(smth) NS_IMETHOD SetDragAndDropMode (PRUint32 aDragAndDropMode) { return smth SetDragAndDropMode (aDragAndDropMode); }
#define COM_FORWARD_IMachine_SETTER_DragAndDropMode_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_DragAndDropMode_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_DragAndDropMode_TO_BASE(base) COM_FORWARD_IMachine_SETTER_DragAndDropMode_TO (base::)
#define COM_FORWARD_IMachine_GETTER_GuestPropertyNotificationPatterns_TO(smth) NS_IMETHOD GetGuestPropertyNotificationPatterns (PRUnichar * * aGuestPropertyNotificationPatterns) { return smth GetGuestPropertyNotificationPatterns (aGuestPropertyNotificationPatterns); }
#define COM_FORWARD_IMachine_GETTER_GuestPropertyNotificationPatterns_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_GuestPropertyNotificationPatterns_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_GuestPropertyNotificationPatterns_TO_BASE(base) COM_FORWARD_IMachine_GETTER_GuestPropertyNotificationPatterns_TO (base::)
#define COM_FORWARD_IMachine_SETTER_GuestPropertyNotificationPatterns_TO(smth) NS_IMETHOD SetGuestPropertyNotificationPatterns (const PRUnichar * aGuestPropertyNotificationPatterns) { return smth SetGuestPropertyNotificationPatterns (aGuestPropertyNotificationPatterns); }
#define COM_FORWARD_IMachine_SETTER_GuestPropertyNotificationPatterns_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_GuestPropertyNotificationPatterns_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_GuestPropertyNotificationPatterns_TO_BASE(base) COM_FORWARD_IMachine_SETTER_GuestPropertyNotificationPatterns_TO (base::)
#define COM_FORWARD_IMachine_GETTER_TeleporterEnabled_TO(smth) NS_IMETHOD GetTeleporterEnabled (PRBool * aTeleporterEnabled) { return smth GetTeleporterEnabled (aTeleporterEnabled); }
#define COM_FORWARD_IMachine_GETTER_TeleporterEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_TeleporterEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_TeleporterEnabled_TO_BASE(base) COM_FORWARD_IMachine_GETTER_TeleporterEnabled_TO (base::)
#define COM_FORWARD_IMachine_SETTER_TeleporterEnabled_TO(smth) NS_IMETHOD SetTeleporterEnabled (PRBool aTeleporterEnabled) { return smth SetTeleporterEnabled (aTeleporterEnabled); }
#define COM_FORWARD_IMachine_SETTER_TeleporterEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_TeleporterEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_TeleporterEnabled_TO_BASE(base) COM_FORWARD_IMachine_SETTER_TeleporterEnabled_TO (base::)
#define COM_FORWARD_IMachine_GETTER_TeleporterPort_TO(smth) NS_IMETHOD GetTeleporterPort (PRUint32 * aTeleporterPort) { return smth GetTeleporterPort (aTeleporterPort); }
#define COM_FORWARD_IMachine_GETTER_TeleporterPort_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_TeleporterPort_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_TeleporterPort_TO_BASE(base) COM_FORWARD_IMachine_GETTER_TeleporterPort_TO (base::)
#define COM_FORWARD_IMachine_SETTER_TeleporterPort_TO(smth) NS_IMETHOD SetTeleporterPort (PRUint32 aTeleporterPort) { return smth SetTeleporterPort (aTeleporterPort); }
#define COM_FORWARD_IMachine_SETTER_TeleporterPort_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_TeleporterPort_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_TeleporterPort_TO_BASE(base) COM_FORWARD_IMachine_SETTER_TeleporterPort_TO (base::)
#define COM_FORWARD_IMachine_GETTER_TeleporterAddress_TO(smth) NS_IMETHOD GetTeleporterAddress (PRUnichar * * aTeleporterAddress) { return smth GetTeleporterAddress (aTeleporterAddress); }
#define COM_FORWARD_IMachine_GETTER_TeleporterAddress_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_TeleporterAddress_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_TeleporterAddress_TO_BASE(base) COM_FORWARD_IMachine_GETTER_TeleporterAddress_TO (base::)
#define COM_FORWARD_IMachine_SETTER_TeleporterAddress_TO(smth) NS_IMETHOD SetTeleporterAddress (const PRUnichar * aTeleporterAddress) { return smth SetTeleporterAddress (aTeleporterAddress); }
#define COM_FORWARD_IMachine_SETTER_TeleporterAddress_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_TeleporterAddress_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_TeleporterAddress_TO_BASE(base) COM_FORWARD_IMachine_SETTER_TeleporterAddress_TO (base::)
#define COM_FORWARD_IMachine_GETTER_TeleporterPassword_TO(smth) NS_IMETHOD GetTeleporterPassword (PRUnichar * * aTeleporterPassword) { return smth GetTeleporterPassword (aTeleporterPassword); }
#define COM_FORWARD_IMachine_GETTER_TeleporterPassword_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_TeleporterPassword_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_TeleporterPassword_TO_BASE(base) COM_FORWARD_IMachine_GETTER_TeleporterPassword_TO (base::)
#define COM_FORWARD_IMachine_SETTER_TeleporterPassword_TO(smth) NS_IMETHOD SetTeleporterPassword (const PRUnichar * aTeleporterPassword) { return smth SetTeleporterPassword (aTeleporterPassword); }
#define COM_FORWARD_IMachine_SETTER_TeleporterPassword_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_TeleporterPassword_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_TeleporterPassword_TO_BASE(base) COM_FORWARD_IMachine_SETTER_TeleporterPassword_TO (base::)
#define COM_FORWARD_IMachine_GETTER_FaultToleranceState_TO(smth) NS_IMETHOD GetFaultToleranceState (PRUint32 * aFaultToleranceState) { return smth GetFaultToleranceState (aFaultToleranceState); }
#define COM_FORWARD_IMachine_GETTER_FaultToleranceState_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_FaultToleranceState_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_FaultToleranceState_TO_BASE(base) COM_FORWARD_IMachine_GETTER_FaultToleranceState_TO (base::)
#define COM_FORWARD_IMachine_SETTER_FaultToleranceState_TO(smth) NS_IMETHOD SetFaultToleranceState (PRUint32 aFaultToleranceState) { return smth SetFaultToleranceState (aFaultToleranceState); }
#define COM_FORWARD_IMachine_SETTER_FaultToleranceState_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_FaultToleranceState_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_FaultToleranceState_TO_BASE(base) COM_FORWARD_IMachine_SETTER_FaultToleranceState_TO (base::)
#define COM_FORWARD_IMachine_GETTER_FaultTolerancePort_TO(smth) NS_IMETHOD GetFaultTolerancePort (PRUint32 * aFaultTolerancePort) { return smth GetFaultTolerancePort (aFaultTolerancePort); }
#define COM_FORWARD_IMachine_GETTER_FaultTolerancePort_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_FaultTolerancePort_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_FaultTolerancePort_TO_BASE(base) COM_FORWARD_IMachine_GETTER_FaultTolerancePort_TO (base::)
#define COM_FORWARD_IMachine_SETTER_FaultTolerancePort_TO(smth) NS_IMETHOD SetFaultTolerancePort (PRUint32 aFaultTolerancePort) { return smth SetFaultTolerancePort (aFaultTolerancePort); }
#define COM_FORWARD_IMachine_SETTER_FaultTolerancePort_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_FaultTolerancePort_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_FaultTolerancePort_TO_BASE(base) COM_FORWARD_IMachine_SETTER_FaultTolerancePort_TO (base::)
#define COM_FORWARD_IMachine_GETTER_FaultToleranceAddress_TO(smth) NS_IMETHOD GetFaultToleranceAddress (PRUnichar * * aFaultToleranceAddress) { return smth GetFaultToleranceAddress (aFaultToleranceAddress); }
#define COM_FORWARD_IMachine_GETTER_FaultToleranceAddress_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_FaultToleranceAddress_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_FaultToleranceAddress_TO_BASE(base) COM_FORWARD_IMachine_GETTER_FaultToleranceAddress_TO (base::)
#define COM_FORWARD_IMachine_SETTER_FaultToleranceAddress_TO(smth) NS_IMETHOD SetFaultToleranceAddress (const PRUnichar * aFaultToleranceAddress) { return smth SetFaultToleranceAddress (aFaultToleranceAddress); }
#define COM_FORWARD_IMachine_SETTER_FaultToleranceAddress_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_FaultToleranceAddress_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_FaultToleranceAddress_TO_BASE(base) COM_FORWARD_IMachine_SETTER_FaultToleranceAddress_TO (base::)
#define COM_FORWARD_IMachine_GETTER_FaultTolerancePassword_TO(smth) NS_IMETHOD GetFaultTolerancePassword (PRUnichar * * aFaultTolerancePassword) { return smth GetFaultTolerancePassword (aFaultTolerancePassword); }
#define COM_FORWARD_IMachine_GETTER_FaultTolerancePassword_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_FaultTolerancePassword_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_FaultTolerancePassword_TO_BASE(base) COM_FORWARD_IMachine_GETTER_FaultTolerancePassword_TO (base::)
#define COM_FORWARD_IMachine_SETTER_FaultTolerancePassword_TO(smth) NS_IMETHOD SetFaultTolerancePassword (const PRUnichar * aFaultTolerancePassword) { return smth SetFaultTolerancePassword (aFaultTolerancePassword); }
#define COM_FORWARD_IMachine_SETTER_FaultTolerancePassword_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_FaultTolerancePassword_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_FaultTolerancePassword_TO_BASE(base) COM_FORWARD_IMachine_SETTER_FaultTolerancePassword_TO (base::)
#define COM_FORWARD_IMachine_GETTER_FaultToleranceSyncInterval_TO(smth) NS_IMETHOD GetFaultToleranceSyncInterval (PRUint32 * aFaultToleranceSyncInterval) { return smth GetFaultToleranceSyncInterval (aFaultToleranceSyncInterval); }
#define COM_FORWARD_IMachine_GETTER_FaultToleranceSyncInterval_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_FaultToleranceSyncInterval_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_FaultToleranceSyncInterval_TO_BASE(base) COM_FORWARD_IMachine_GETTER_FaultToleranceSyncInterval_TO (base::)
#define COM_FORWARD_IMachine_SETTER_FaultToleranceSyncInterval_TO(smth) NS_IMETHOD SetFaultToleranceSyncInterval (PRUint32 aFaultToleranceSyncInterval) { return smth SetFaultToleranceSyncInterval (aFaultToleranceSyncInterval); }
#define COM_FORWARD_IMachine_SETTER_FaultToleranceSyncInterval_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_FaultToleranceSyncInterval_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_FaultToleranceSyncInterval_TO_BASE(base) COM_FORWARD_IMachine_SETTER_FaultToleranceSyncInterval_TO (base::)
#define COM_FORWARD_IMachine_GETTER_RTCUseUTC_TO(smth) NS_IMETHOD GetRTCUseUTC (PRBool * aRTCUseUTC) { return smth GetRTCUseUTC (aRTCUseUTC); }
#define COM_FORWARD_IMachine_GETTER_RTCUseUTC_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_RTCUseUTC_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_RTCUseUTC_TO_BASE(base) COM_FORWARD_IMachine_GETTER_RTCUseUTC_TO (base::)
#define COM_FORWARD_IMachine_SETTER_RTCUseUTC_TO(smth) NS_IMETHOD SetRTCUseUTC (PRBool aRTCUseUTC) { return smth SetRTCUseUTC (aRTCUseUTC); }
#define COM_FORWARD_IMachine_SETTER_RTCUseUTC_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_RTCUseUTC_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_RTCUseUTC_TO_BASE(base) COM_FORWARD_IMachine_SETTER_RTCUseUTC_TO (base::)
#define COM_FORWARD_IMachine_GETTER_IOCacheEnabled_TO(smth) NS_IMETHOD GetIOCacheEnabled (PRBool * aIOCacheEnabled) { return smth GetIOCacheEnabled (aIOCacheEnabled); }
#define COM_FORWARD_IMachine_GETTER_IOCacheEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_IOCacheEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_IOCacheEnabled_TO_BASE(base) COM_FORWARD_IMachine_GETTER_IOCacheEnabled_TO (base::)
#define COM_FORWARD_IMachine_SETTER_IOCacheEnabled_TO(smth) NS_IMETHOD SetIOCacheEnabled (PRBool aIOCacheEnabled) { return smth SetIOCacheEnabled (aIOCacheEnabled); }
#define COM_FORWARD_IMachine_SETTER_IOCacheEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_IOCacheEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_IOCacheEnabled_TO_BASE(base) COM_FORWARD_IMachine_SETTER_IOCacheEnabled_TO (base::)
#define COM_FORWARD_IMachine_GETTER_IOCacheSize_TO(smth) NS_IMETHOD GetIOCacheSize (PRUint32 * aIOCacheSize) { return smth GetIOCacheSize (aIOCacheSize); }
#define COM_FORWARD_IMachine_GETTER_IOCacheSize_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_IOCacheSize_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_IOCacheSize_TO_BASE(base) COM_FORWARD_IMachine_GETTER_IOCacheSize_TO (base::)
#define COM_FORWARD_IMachine_SETTER_IOCacheSize_TO(smth) NS_IMETHOD SetIOCacheSize (PRUint32 aIOCacheSize) { return smth SetIOCacheSize (aIOCacheSize); }
#define COM_FORWARD_IMachine_SETTER_IOCacheSize_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_IOCacheSize_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_IOCacheSize_TO_BASE(base) COM_FORWARD_IMachine_SETTER_IOCacheSize_TO (base::)
#define COM_FORWARD_IMachine_GETTER_PCIDeviceAssignments_TO(smth) NS_IMETHOD GetPCIDeviceAssignments (PRUint32 * aPCIDeviceAssignmentsSize, IPCIDeviceAttachment * * * aPCIDeviceAssignments) { return smth GetPCIDeviceAssignments (aPCIDeviceAssignmentsSize, aPCIDeviceAssignments); }
#define COM_FORWARD_IMachine_GETTER_PCIDeviceAssignments_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_PCIDeviceAssignments_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_PCIDeviceAssignments_TO_BASE(base) COM_FORWARD_IMachine_GETTER_PCIDeviceAssignments_TO (base::)
#define COM_FORWARD_IMachine_GETTER_BandwidthControl_TO(smth) NS_IMETHOD GetBandwidthControl (IBandwidthControl * * aBandwidthControl) { return smth GetBandwidthControl (aBandwidthControl); }
#define COM_FORWARD_IMachine_GETTER_BandwidthControl_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_BandwidthControl_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_BandwidthControl_TO_BASE(base) COM_FORWARD_IMachine_GETTER_BandwidthControl_TO (base::)
#define COM_FORWARD_IMachine_GETTER_TracingEnabled_TO(smth) NS_IMETHOD GetTracingEnabled (PRBool * aTracingEnabled) { return smth GetTracingEnabled (aTracingEnabled); }
#define COM_FORWARD_IMachine_GETTER_TracingEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_TracingEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_TracingEnabled_TO_BASE(base) COM_FORWARD_IMachine_GETTER_TracingEnabled_TO (base::)
#define COM_FORWARD_IMachine_SETTER_TracingEnabled_TO(smth) NS_IMETHOD SetTracingEnabled (PRBool aTracingEnabled) { return smth SetTracingEnabled (aTracingEnabled); }
#define COM_FORWARD_IMachine_SETTER_TracingEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_TracingEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_TracingEnabled_TO_BASE(base) COM_FORWARD_IMachine_SETTER_TracingEnabled_TO (base::)
#define COM_FORWARD_IMachine_GETTER_TracingConfig_TO(smth) NS_IMETHOD GetTracingConfig (PRUnichar * * aTracingConfig) { return smth GetTracingConfig (aTracingConfig); }
#define COM_FORWARD_IMachine_GETTER_TracingConfig_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_TracingConfig_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_TracingConfig_TO_BASE(base) COM_FORWARD_IMachine_GETTER_TracingConfig_TO (base::)
#define COM_FORWARD_IMachine_SETTER_TracingConfig_TO(smth) NS_IMETHOD SetTracingConfig (const PRUnichar * aTracingConfig) { return smth SetTracingConfig (aTracingConfig); }
#define COM_FORWARD_IMachine_SETTER_TracingConfig_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_TracingConfig_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_TracingConfig_TO_BASE(base) COM_FORWARD_IMachine_SETTER_TracingConfig_TO (base::)
#define COM_FORWARD_IMachine_GETTER_AllowTracingToAccessVM_TO(smth) NS_IMETHOD GetAllowTracingToAccessVM (PRBool * aAllowTracingToAccessVM) { return smth GetAllowTracingToAccessVM (aAllowTracingToAccessVM); }
#define COM_FORWARD_IMachine_GETTER_AllowTracingToAccessVM_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_AllowTracingToAccessVM_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_AllowTracingToAccessVM_TO_BASE(base) COM_FORWARD_IMachine_GETTER_AllowTracingToAccessVM_TO (base::)
#define COM_FORWARD_IMachine_SETTER_AllowTracingToAccessVM_TO(smth) NS_IMETHOD SetAllowTracingToAccessVM (PRBool aAllowTracingToAccessVM) { return smth SetAllowTracingToAccessVM (aAllowTracingToAccessVM); }
#define COM_FORWARD_IMachine_SETTER_AllowTracingToAccessVM_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_AllowTracingToAccessVM_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_AllowTracingToAccessVM_TO_BASE(base) COM_FORWARD_IMachine_SETTER_AllowTracingToAccessVM_TO (base::)
#define COM_FORWARD_IMachine_GETTER_AutostartEnabled_TO(smth) NS_IMETHOD GetAutostartEnabled (PRBool * aAutostartEnabled) { return smth GetAutostartEnabled (aAutostartEnabled); }
#define COM_FORWARD_IMachine_GETTER_AutostartEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_AutostartEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_AutostartEnabled_TO_BASE(base) COM_FORWARD_IMachine_GETTER_AutostartEnabled_TO (base::)
#define COM_FORWARD_IMachine_SETTER_AutostartEnabled_TO(smth) NS_IMETHOD SetAutostartEnabled (PRBool aAutostartEnabled) { return smth SetAutostartEnabled (aAutostartEnabled); }
#define COM_FORWARD_IMachine_SETTER_AutostartEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_AutostartEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_AutostartEnabled_TO_BASE(base) COM_FORWARD_IMachine_SETTER_AutostartEnabled_TO (base::)
#define COM_FORWARD_IMachine_GETTER_AutostartDelay_TO(smth) NS_IMETHOD GetAutostartDelay (PRUint32 * aAutostartDelay) { return smth GetAutostartDelay (aAutostartDelay); }
#define COM_FORWARD_IMachine_GETTER_AutostartDelay_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_AutostartDelay_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_AutostartDelay_TO_BASE(base) COM_FORWARD_IMachine_GETTER_AutostartDelay_TO (base::)
#define COM_FORWARD_IMachine_SETTER_AutostartDelay_TO(smth) NS_IMETHOD SetAutostartDelay (PRUint32 aAutostartDelay) { return smth SetAutostartDelay (aAutostartDelay); }
#define COM_FORWARD_IMachine_SETTER_AutostartDelay_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_AutostartDelay_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_AutostartDelay_TO_BASE(base) COM_FORWARD_IMachine_SETTER_AutostartDelay_TO (base::)
#define COM_FORWARD_IMachine_GETTER_AutostopType_TO(smth) NS_IMETHOD GetAutostopType (PRUint32 * aAutostopType) { return smth GetAutostopType (aAutostopType); }
#define COM_FORWARD_IMachine_GETTER_AutostopType_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_AutostopType_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_AutostopType_TO_BASE(base) COM_FORWARD_IMachine_GETTER_AutostopType_TO (base::)
#define COM_FORWARD_IMachine_SETTER_AutostopType_TO(smth) NS_IMETHOD SetAutostopType (PRUint32 aAutostopType) { return smth SetAutostopType (aAutostopType); }
#define COM_FORWARD_IMachine_SETTER_AutostopType_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_AutostopType_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_AutostopType_TO_BASE(base) COM_FORWARD_IMachine_SETTER_AutostopType_TO (base::)
#define COM_FORWARD_IMachine_GETTER_DefaultFrontend_TO(smth) NS_IMETHOD GetDefaultFrontend (PRUnichar * * aDefaultFrontend) { return smth GetDefaultFrontend (aDefaultFrontend); }
#define COM_FORWARD_IMachine_GETTER_DefaultFrontend_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_DefaultFrontend_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_DefaultFrontend_TO_BASE(base) COM_FORWARD_IMachine_GETTER_DefaultFrontend_TO (base::)
#define COM_FORWARD_IMachine_SETTER_DefaultFrontend_TO(smth) NS_IMETHOD SetDefaultFrontend (const PRUnichar * aDefaultFrontend) { return smth SetDefaultFrontend (aDefaultFrontend); }
#define COM_FORWARD_IMachine_SETTER_DefaultFrontend_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_DefaultFrontend_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_DefaultFrontend_TO_BASE(base) COM_FORWARD_IMachine_SETTER_DefaultFrontend_TO (base::)
#define COM_FORWARD_IMachine_GETTER_USBProxyAvailable_TO(smth) NS_IMETHOD GetUSBProxyAvailable (PRBool * aUSBProxyAvailable) { return smth GetUSBProxyAvailable (aUSBProxyAvailable); }
#define COM_FORWARD_IMachine_GETTER_USBProxyAvailable_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_USBProxyAvailable_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_USBProxyAvailable_TO_BASE(base) COM_FORWARD_IMachine_GETTER_USBProxyAvailable_TO (base::)
#define COM_FORWARD_IMachine_LockMachine_TO(smth) NS_IMETHOD LockMachine (ISession * aSession, PRUint32 aLockType) { return smth LockMachine (aSession, aLockType); }
#define COM_FORWARD_IMachine_LockMachine_TO_OBJ(obj) COM_FORWARD_IMachine_LockMachine_TO ((obj)->)
#define COM_FORWARD_IMachine_LockMachine_TO_BASE(base) COM_FORWARD_IMachine_LockMachine_TO (base::)
#define COM_FORWARD_IMachine_LaunchVMProcess_TO(smth) NS_IMETHOD LaunchVMProcess (ISession * aSession, PRUnichar * aType, PRUnichar * aEnvironment, IProgress * * aProgress) { return smth LaunchVMProcess (aSession, aType, aEnvironment, aProgress); }
#define COM_FORWARD_IMachine_LaunchVMProcess_TO_OBJ(obj) COM_FORWARD_IMachine_LaunchVMProcess_TO ((obj)->)
#define COM_FORWARD_IMachine_LaunchVMProcess_TO_BASE(base) COM_FORWARD_IMachine_LaunchVMProcess_TO (base::)
#define COM_FORWARD_IMachine_SetBootOrder_TO(smth) NS_IMETHOD SetBootOrder (PRUint32 aPosition, PRUint32 aDevice) { return smth SetBootOrder (aPosition, aDevice); }
#define COM_FORWARD_IMachine_SetBootOrder_TO_OBJ(obj) COM_FORWARD_IMachine_SetBootOrder_TO ((obj)->)
#define COM_FORWARD_IMachine_SetBootOrder_TO_BASE(base) COM_FORWARD_IMachine_SetBootOrder_TO (base::)
#define COM_FORWARD_IMachine_GetBootOrder_TO(smth) NS_IMETHOD GetBootOrder (PRUint32 aPosition, PRUint32 * aDevice) { return smth GetBootOrder (aPosition, aDevice); }
#define COM_FORWARD_IMachine_GetBootOrder_TO_OBJ(obj) COM_FORWARD_IMachine_GetBootOrder_TO ((obj)->)
#define COM_FORWARD_IMachine_GetBootOrder_TO_BASE(base) COM_FORWARD_IMachine_GetBootOrder_TO (base::)
#define COM_FORWARD_IMachine_AttachDevice_TO(smth) NS_IMETHOD AttachDevice (PRUnichar * aName, PRInt32 aControllerPort, PRInt32 aDevice, PRUint32 aType, IMedium * aMedium) { return smth AttachDevice (aName, aControllerPort, aDevice, aType, aMedium); }
#define COM_FORWARD_IMachine_AttachDevice_TO_OBJ(obj) COM_FORWARD_IMachine_AttachDevice_TO ((obj)->)
#define COM_FORWARD_IMachine_AttachDevice_TO_BASE(base) COM_FORWARD_IMachine_AttachDevice_TO (base::)
#define COM_FORWARD_IMachine_AttachDeviceWithoutMedium_TO(smth) NS_IMETHOD AttachDeviceWithoutMedium (PRUnichar * aName, PRInt32 aControllerPort, PRInt32 aDevice, PRUint32 aType) { return smth AttachDeviceWithoutMedium (aName, aControllerPort, aDevice, aType); }
#define COM_FORWARD_IMachine_AttachDeviceWithoutMedium_TO_OBJ(obj) COM_FORWARD_IMachine_AttachDeviceWithoutMedium_TO ((obj)->)
#define COM_FORWARD_IMachine_AttachDeviceWithoutMedium_TO_BASE(base) COM_FORWARD_IMachine_AttachDeviceWithoutMedium_TO (base::)
#define COM_FORWARD_IMachine_DetachDevice_TO(smth) NS_IMETHOD DetachDevice (PRUnichar * aName, PRInt32 aControllerPort, PRInt32 aDevice) { return smth DetachDevice (aName, aControllerPort, aDevice); }
#define COM_FORWARD_IMachine_DetachDevice_TO_OBJ(obj) COM_FORWARD_IMachine_DetachDevice_TO ((obj)->)
#define COM_FORWARD_IMachine_DetachDevice_TO_BASE(base) COM_FORWARD_IMachine_DetachDevice_TO (base::)
#define COM_FORWARD_IMachine_PassthroughDevice_TO(smth) NS_IMETHOD PassthroughDevice (PRUnichar * aName, PRInt32 aControllerPort, PRInt32 aDevice, PRBool aPassthrough) { return smth PassthroughDevice (aName, aControllerPort, aDevice, aPassthrough); }
#define COM_FORWARD_IMachine_PassthroughDevice_TO_OBJ(obj) COM_FORWARD_IMachine_PassthroughDevice_TO ((obj)->)
#define COM_FORWARD_IMachine_PassthroughDevice_TO_BASE(base) COM_FORWARD_IMachine_PassthroughDevice_TO (base::)
#define COM_FORWARD_IMachine_TemporaryEjectDevice_TO(smth) NS_IMETHOD TemporaryEjectDevice (PRUnichar * aName, PRInt32 aControllerPort, PRInt32 aDevice, PRBool aTemporaryEject) { return smth TemporaryEjectDevice (aName, aControllerPort, aDevice, aTemporaryEject); }
#define COM_FORWARD_IMachine_TemporaryEjectDevice_TO_OBJ(obj) COM_FORWARD_IMachine_TemporaryEjectDevice_TO ((obj)->)
#define COM_FORWARD_IMachine_TemporaryEjectDevice_TO_BASE(base) COM_FORWARD_IMachine_TemporaryEjectDevice_TO (base::)
#define COM_FORWARD_IMachine_NonRotationalDevice_TO(smth) NS_IMETHOD NonRotationalDevice (PRUnichar * aName, PRInt32 aControllerPort, PRInt32 aDevice, PRBool aNonRotational) { return smth NonRotationalDevice (aName, aControllerPort, aDevice, aNonRotational); }
#define COM_FORWARD_IMachine_NonRotationalDevice_TO_OBJ(obj) COM_FORWARD_IMachine_NonRotationalDevice_TO ((obj)->)
#define COM_FORWARD_IMachine_NonRotationalDevice_TO_BASE(base) COM_FORWARD_IMachine_NonRotationalDevice_TO (base::)
#define COM_FORWARD_IMachine_SetAutoDiscardForDevice_TO(smth) NS_IMETHOD SetAutoDiscardForDevice (PRUnichar * aName, PRInt32 aControllerPort, PRInt32 aDevice, PRBool aDiscard) { return smth SetAutoDiscardForDevice (aName, aControllerPort, aDevice, aDiscard); }
#define COM_FORWARD_IMachine_SetAutoDiscardForDevice_TO_OBJ(obj) COM_FORWARD_IMachine_SetAutoDiscardForDevice_TO ((obj)->)
#define COM_FORWARD_IMachine_SetAutoDiscardForDevice_TO_BASE(base) COM_FORWARD_IMachine_SetAutoDiscardForDevice_TO (base::)
#define COM_FORWARD_IMachine_SetHotPluggableForDevice_TO(smth) NS_IMETHOD SetHotPluggableForDevice (PRUnichar * aName, PRInt32 aControllerPort, PRInt32 aDevice, PRBool aHotPluggable) { return smth SetHotPluggableForDevice (aName, aControllerPort, aDevice, aHotPluggable); }
#define COM_FORWARD_IMachine_SetHotPluggableForDevice_TO_OBJ(obj) COM_FORWARD_IMachine_SetHotPluggableForDevice_TO ((obj)->)
#define COM_FORWARD_IMachine_SetHotPluggableForDevice_TO_BASE(base) COM_FORWARD_IMachine_SetHotPluggableForDevice_TO (base::)
#define COM_FORWARD_IMachine_SetBandwidthGroupForDevice_TO(smth) NS_IMETHOD SetBandwidthGroupForDevice (PRUnichar * aName, PRInt32 aControllerPort, PRInt32 aDevice, IBandwidthGroup * aBandwidthGroup) { return smth SetBandwidthGroupForDevice (aName, aControllerPort, aDevice, aBandwidthGroup); }
#define COM_FORWARD_IMachine_SetBandwidthGroupForDevice_TO_OBJ(obj) COM_FORWARD_IMachine_SetBandwidthGroupForDevice_TO ((obj)->)
#define COM_FORWARD_IMachine_SetBandwidthGroupForDevice_TO_BASE(base) COM_FORWARD_IMachine_SetBandwidthGroupForDevice_TO (base::)
#define COM_FORWARD_IMachine_SetNoBandwidthGroupForDevice_TO(smth) NS_IMETHOD SetNoBandwidthGroupForDevice (PRUnichar * aName, PRInt32 aControllerPort, PRInt32 aDevice) { return smth SetNoBandwidthGroupForDevice (aName, aControllerPort, aDevice); }
#define COM_FORWARD_IMachine_SetNoBandwidthGroupForDevice_TO_OBJ(obj) COM_FORWARD_IMachine_SetNoBandwidthGroupForDevice_TO ((obj)->)
#define COM_FORWARD_IMachine_SetNoBandwidthGroupForDevice_TO_BASE(base) COM_FORWARD_IMachine_SetNoBandwidthGroupForDevice_TO (base::)
#define COM_FORWARD_IMachine_UnmountMedium_TO(smth) NS_IMETHOD UnmountMedium (PRUnichar * aName, PRInt32 aControllerPort, PRInt32 aDevice, PRBool aForce) { return smth UnmountMedium (aName, aControllerPort, aDevice, aForce); }
#define COM_FORWARD_IMachine_UnmountMedium_TO_OBJ(obj) COM_FORWARD_IMachine_UnmountMedium_TO ((obj)->)
#define COM_FORWARD_IMachine_UnmountMedium_TO_BASE(base) COM_FORWARD_IMachine_UnmountMedium_TO (base::)
#define COM_FORWARD_IMachine_MountMedium_TO(smth) NS_IMETHOD MountMedium (PRUnichar * aName, PRInt32 aControllerPort, PRInt32 aDevice, IMedium * aMedium, PRBool aForce) { return smth MountMedium (aName, aControllerPort, aDevice, aMedium, aForce); }
#define COM_FORWARD_IMachine_MountMedium_TO_OBJ(obj) COM_FORWARD_IMachine_MountMedium_TO ((obj)->)
#define COM_FORWARD_IMachine_MountMedium_TO_BASE(base) COM_FORWARD_IMachine_MountMedium_TO (base::)
#define COM_FORWARD_IMachine_GetMedium_TO(smth) NS_IMETHOD GetMedium (PRUnichar * aName, PRInt32 aControllerPort, PRInt32 aDevice, IMedium * * aMedium) { return smth GetMedium (aName, aControllerPort, aDevice, aMedium); }
#define COM_FORWARD_IMachine_GetMedium_TO_OBJ(obj) COM_FORWARD_IMachine_GetMedium_TO ((obj)->)
#define COM_FORWARD_IMachine_GetMedium_TO_BASE(base) COM_FORWARD_IMachine_GetMedium_TO (base::)
#define COM_FORWARD_IMachine_GetMediumAttachmentsOfController_TO(smth) NS_IMETHOD GetMediumAttachmentsOfController (PRUnichar * aName, PRUint32 * aMediumAttachmentsSize, IMediumAttachment * * * aMediumAttachments) { return smth GetMediumAttachmentsOfController (aName, aMediumAttachmentsSize, aMediumAttachments); }
#define COM_FORWARD_IMachine_GetMediumAttachmentsOfController_TO_OBJ(obj) COM_FORWARD_IMachine_GetMediumAttachmentsOfController_TO ((obj)->)
#define COM_FORWARD_IMachine_GetMediumAttachmentsOfController_TO_BASE(base) COM_FORWARD_IMachine_GetMediumAttachmentsOfController_TO (base::)
#define COM_FORWARD_IMachine_GetMediumAttachment_TO(smth) NS_IMETHOD GetMediumAttachment (PRUnichar * aName, PRInt32 aControllerPort, PRInt32 aDevice, IMediumAttachment * * aAttachment) { return smth GetMediumAttachment (aName, aControllerPort, aDevice, aAttachment); }
#define COM_FORWARD_IMachine_GetMediumAttachment_TO_OBJ(obj) COM_FORWARD_IMachine_GetMediumAttachment_TO ((obj)->)
#define COM_FORWARD_IMachine_GetMediumAttachment_TO_BASE(base) COM_FORWARD_IMachine_GetMediumAttachment_TO (base::)
#define COM_FORWARD_IMachine_AttachHostPCIDevice_TO(smth) NS_IMETHOD AttachHostPCIDevice (PRInt32 aHostAddress, PRInt32 aDesiredGuestAddress, PRBool aTryToUnbind) { return smth AttachHostPCIDevice (aHostAddress, aDesiredGuestAddress, aTryToUnbind); }
#define COM_FORWARD_IMachine_AttachHostPCIDevice_TO_OBJ(obj) COM_FORWARD_IMachine_AttachHostPCIDevice_TO ((obj)->)
#define COM_FORWARD_IMachine_AttachHostPCIDevice_TO_BASE(base) COM_FORWARD_IMachine_AttachHostPCIDevice_TO (base::)
#define COM_FORWARD_IMachine_DetachHostPCIDevice_TO(smth) NS_IMETHOD DetachHostPCIDevice (PRInt32 aHostAddress) { return smth DetachHostPCIDevice (aHostAddress); }
#define COM_FORWARD_IMachine_DetachHostPCIDevice_TO_OBJ(obj) COM_FORWARD_IMachine_DetachHostPCIDevice_TO ((obj)->)
#define COM_FORWARD_IMachine_DetachHostPCIDevice_TO_BASE(base) COM_FORWARD_IMachine_DetachHostPCIDevice_TO (base::)
#define COM_FORWARD_IMachine_GetNetworkAdapter_TO(smth) NS_IMETHOD GetNetworkAdapter (PRUint32 aSlot, INetworkAdapter * * aAdapter) { return smth GetNetworkAdapter (aSlot, aAdapter); }
#define COM_FORWARD_IMachine_GetNetworkAdapter_TO_OBJ(obj) COM_FORWARD_IMachine_GetNetworkAdapter_TO ((obj)->)
#define COM_FORWARD_IMachine_GetNetworkAdapter_TO_BASE(base) COM_FORWARD_IMachine_GetNetworkAdapter_TO (base::)
#define COM_FORWARD_IMachine_AddStorageController_TO(smth) NS_IMETHOD AddStorageController (PRUnichar * aName, PRUint32 aConnectionType, IStorageController * * aController) { return smth AddStorageController (aName, aConnectionType, aController); }
#define COM_FORWARD_IMachine_AddStorageController_TO_OBJ(obj) COM_FORWARD_IMachine_AddStorageController_TO ((obj)->)
#define COM_FORWARD_IMachine_AddStorageController_TO_BASE(base) COM_FORWARD_IMachine_AddStorageController_TO (base::)
#define COM_FORWARD_IMachine_GetStorageControllerByName_TO(smth) NS_IMETHOD GetStorageControllerByName (PRUnichar * aName, IStorageController * * aStorageController) { return smth GetStorageControllerByName (aName, aStorageController); }
#define COM_FORWARD_IMachine_GetStorageControllerByName_TO_OBJ(obj) COM_FORWARD_IMachine_GetStorageControllerByName_TO ((obj)->)
#define COM_FORWARD_IMachine_GetStorageControllerByName_TO_BASE(base) COM_FORWARD_IMachine_GetStorageControllerByName_TO (base::)
#define COM_FORWARD_IMachine_GetStorageControllerByInstance_TO(smth) NS_IMETHOD GetStorageControllerByInstance (PRUint32 aInstance, IStorageController * * aStorageController) { return smth GetStorageControllerByInstance (aInstance, aStorageController); }
#define COM_FORWARD_IMachine_GetStorageControllerByInstance_TO_OBJ(obj) COM_FORWARD_IMachine_GetStorageControllerByInstance_TO ((obj)->)
#define COM_FORWARD_IMachine_GetStorageControllerByInstance_TO_BASE(base) COM_FORWARD_IMachine_GetStorageControllerByInstance_TO (base::)
#define COM_FORWARD_IMachine_RemoveStorageController_TO(smth) NS_IMETHOD RemoveStorageController (PRUnichar * aName) { return smth RemoveStorageController (aName); }
#define COM_FORWARD_IMachine_RemoveStorageController_TO_OBJ(obj) COM_FORWARD_IMachine_RemoveStorageController_TO ((obj)->)
#define COM_FORWARD_IMachine_RemoveStorageController_TO_BASE(base) COM_FORWARD_IMachine_RemoveStorageController_TO (base::)
#define COM_FORWARD_IMachine_SetStorageControllerBootable_TO(smth) NS_IMETHOD SetStorageControllerBootable (PRUnichar * aName, PRBool aBootable) { return smth SetStorageControllerBootable (aName, aBootable); }
#define COM_FORWARD_IMachine_SetStorageControllerBootable_TO_OBJ(obj) COM_FORWARD_IMachine_SetStorageControllerBootable_TO ((obj)->)
#define COM_FORWARD_IMachine_SetStorageControllerBootable_TO_BASE(base) COM_FORWARD_IMachine_SetStorageControllerBootable_TO (base::)
#define COM_FORWARD_IMachine_AddUSBController_TO(smth) NS_IMETHOD AddUSBController (PRUnichar * aName, PRUint32 aType, IUSBController * * aController) { return smth AddUSBController (aName, aType, aController); }
#define COM_FORWARD_IMachine_AddUSBController_TO_OBJ(obj) COM_FORWARD_IMachine_AddUSBController_TO ((obj)->)
#define COM_FORWARD_IMachine_AddUSBController_TO_BASE(base) COM_FORWARD_IMachine_AddUSBController_TO (base::)
#define COM_FORWARD_IMachine_RemoveUSBController_TO(smth) NS_IMETHOD RemoveUSBController (PRUnichar * aName) { return smth RemoveUSBController (aName); }
#define COM_FORWARD_IMachine_RemoveUSBController_TO_OBJ(obj) COM_FORWARD_IMachine_RemoveUSBController_TO ((obj)->)
#define COM_FORWARD_IMachine_RemoveUSBController_TO_BASE(base) COM_FORWARD_IMachine_RemoveUSBController_TO (base::)
#define COM_FORWARD_IMachine_GetUSBControllerByName_TO(smth) NS_IMETHOD GetUSBControllerByName (PRUnichar * aName, IUSBController * * aController) { return smth GetUSBControllerByName (aName, aController); }
#define COM_FORWARD_IMachine_GetUSBControllerByName_TO_OBJ(obj) COM_FORWARD_IMachine_GetUSBControllerByName_TO ((obj)->)
#define COM_FORWARD_IMachine_GetUSBControllerByName_TO_BASE(base) COM_FORWARD_IMachine_GetUSBControllerByName_TO (base::)
#define COM_FORWARD_IMachine_GetUSBControllerCountByType_TO(smth) NS_IMETHOD GetUSBControllerCountByType (PRUint32 aType, PRUint32 * aControllers) { return smth GetUSBControllerCountByType (aType, aControllers); }
#define COM_FORWARD_IMachine_GetUSBControllerCountByType_TO_OBJ(obj) COM_FORWARD_IMachine_GetUSBControllerCountByType_TO ((obj)->)
#define COM_FORWARD_IMachine_GetUSBControllerCountByType_TO_BASE(base) COM_FORWARD_IMachine_GetUSBControllerCountByType_TO (base::)
#define COM_FORWARD_IMachine_GetSerialPort_TO(smth) NS_IMETHOD GetSerialPort (PRUint32 aSlot, ISerialPort * * aPort) { return smth GetSerialPort (aSlot, aPort); }
#define COM_FORWARD_IMachine_GetSerialPort_TO_OBJ(obj) COM_FORWARD_IMachine_GetSerialPort_TO ((obj)->)
#define COM_FORWARD_IMachine_GetSerialPort_TO_BASE(base) COM_FORWARD_IMachine_GetSerialPort_TO (base::)
#define COM_FORWARD_IMachine_GetParallelPort_TO(smth) NS_IMETHOD GetParallelPort (PRUint32 aSlot, IParallelPort * * aPort) { return smth GetParallelPort (aSlot, aPort); }
#define COM_FORWARD_IMachine_GetParallelPort_TO_OBJ(obj) COM_FORWARD_IMachine_GetParallelPort_TO ((obj)->)
#define COM_FORWARD_IMachine_GetParallelPort_TO_BASE(base) COM_FORWARD_IMachine_GetParallelPort_TO (base::)
#define COM_FORWARD_IMachine_GetExtraDataKeys_TO(smth) NS_IMETHOD GetExtraDataKeys (PRUint32 * aKeysSize, PRUnichar * * * aKeys) { return smth GetExtraDataKeys (aKeysSize, aKeys); }
#define COM_FORWARD_IMachine_GetExtraDataKeys_TO_OBJ(obj) COM_FORWARD_IMachine_GetExtraDataKeys_TO ((obj)->)
#define COM_FORWARD_IMachine_GetExtraDataKeys_TO_BASE(base) COM_FORWARD_IMachine_GetExtraDataKeys_TO (base::)
#define COM_FORWARD_IMachine_GetExtraData_TO(smth) NS_IMETHOD GetExtraData (PRUnichar * aKey, PRUnichar * * aValue) { return smth GetExtraData (aKey, aValue); }
#define COM_FORWARD_IMachine_GetExtraData_TO_OBJ(obj) COM_FORWARD_IMachine_GetExtraData_TO ((obj)->)
#define COM_FORWARD_IMachine_GetExtraData_TO_BASE(base) COM_FORWARD_IMachine_GetExtraData_TO (base::)
#define COM_FORWARD_IMachine_SetExtraData_TO(smth) NS_IMETHOD SetExtraData (PRUnichar * aKey, PRUnichar * aValue) { return smth SetExtraData (aKey, aValue); }
#define COM_FORWARD_IMachine_SetExtraData_TO_OBJ(obj) COM_FORWARD_IMachine_SetExtraData_TO ((obj)->)
#define COM_FORWARD_IMachine_SetExtraData_TO_BASE(base) COM_FORWARD_IMachine_SetExtraData_TO (base::)
#define COM_FORWARD_IMachine_GetCPUProperty_TO(smth) NS_IMETHOD GetCPUProperty (PRUint32 aProperty, PRBool * aValue) { return smth GetCPUProperty (aProperty, aValue); }
#define COM_FORWARD_IMachine_GetCPUProperty_TO_OBJ(obj) COM_FORWARD_IMachine_GetCPUProperty_TO ((obj)->)
#define COM_FORWARD_IMachine_GetCPUProperty_TO_BASE(base) COM_FORWARD_IMachine_GetCPUProperty_TO (base::)
#define COM_FORWARD_IMachine_SetCPUProperty_TO(smth) NS_IMETHOD SetCPUProperty (PRUint32 aProperty, PRBool aValue) { return smth SetCPUProperty (aProperty, aValue); }
#define COM_FORWARD_IMachine_SetCPUProperty_TO_OBJ(obj) COM_FORWARD_IMachine_SetCPUProperty_TO ((obj)->)
#define COM_FORWARD_IMachine_SetCPUProperty_TO_BASE(base) COM_FORWARD_IMachine_SetCPUProperty_TO (base::)
#define COM_FORWARD_IMachine_GetCPUIDLeaf_TO(smth) NS_IMETHOD GetCPUIDLeaf (PRUint32 aId, PRUint32 * aValEax, PRUint32 * aValEbx, PRUint32 * aValEcx, PRUint32 * aValEdx) { return smth GetCPUIDLeaf (aId, aValEax, aValEbx, aValEcx, aValEdx); }
#define COM_FORWARD_IMachine_GetCPUIDLeaf_TO_OBJ(obj) COM_FORWARD_IMachine_GetCPUIDLeaf_TO ((obj)->)
#define COM_FORWARD_IMachine_GetCPUIDLeaf_TO_BASE(base) COM_FORWARD_IMachine_GetCPUIDLeaf_TO (base::)
#define COM_FORWARD_IMachine_SetCPUIDLeaf_TO(smth) NS_IMETHOD SetCPUIDLeaf (PRUint32 aId, PRUint32 aValEax, PRUint32 aValEbx, PRUint32 aValEcx, PRUint32 aValEdx) { return smth SetCPUIDLeaf (aId, aValEax, aValEbx, aValEcx, aValEdx); }
#define COM_FORWARD_IMachine_SetCPUIDLeaf_TO_OBJ(obj) COM_FORWARD_IMachine_SetCPUIDLeaf_TO ((obj)->)
#define COM_FORWARD_IMachine_SetCPUIDLeaf_TO_BASE(base) COM_FORWARD_IMachine_SetCPUIDLeaf_TO (base::)
#define COM_FORWARD_IMachine_RemoveCPUIDLeaf_TO(smth) NS_IMETHOD RemoveCPUIDLeaf (PRUint32 aId) { return smth RemoveCPUIDLeaf (aId); }
#define COM_FORWARD_IMachine_RemoveCPUIDLeaf_TO_OBJ(obj) COM_FORWARD_IMachine_RemoveCPUIDLeaf_TO ((obj)->)
#define COM_FORWARD_IMachine_RemoveCPUIDLeaf_TO_BASE(base) COM_FORWARD_IMachine_RemoveCPUIDLeaf_TO (base::)
#define COM_FORWARD_IMachine_RemoveAllCPUIDLeaves_TO(smth) NS_IMETHOD RemoveAllCPUIDLeaves() { return smth RemoveAllCPUIDLeaves(); }
#define COM_FORWARD_IMachine_RemoveAllCPUIDLeaves_TO_OBJ(obj) COM_FORWARD_IMachine_RemoveAllCPUIDLeaves_TO ((obj)->)
#define COM_FORWARD_IMachine_RemoveAllCPUIDLeaves_TO_BASE(base) COM_FORWARD_IMachine_RemoveAllCPUIDLeaves_TO (base::)
#define COM_FORWARD_IMachine_GetHWVirtExProperty_TO(smth) NS_IMETHOD GetHWVirtExProperty (PRUint32 aProperty, PRBool * aValue) { return smth GetHWVirtExProperty (aProperty, aValue); }
#define COM_FORWARD_IMachine_GetHWVirtExProperty_TO_OBJ(obj) COM_FORWARD_IMachine_GetHWVirtExProperty_TO ((obj)->)
#define COM_FORWARD_IMachine_GetHWVirtExProperty_TO_BASE(base) COM_FORWARD_IMachine_GetHWVirtExProperty_TO (base::)
#define COM_FORWARD_IMachine_SetHWVirtExProperty_TO(smth) NS_IMETHOD SetHWVirtExProperty (PRUint32 aProperty, PRBool aValue) { return smth SetHWVirtExProperty (aProperty, aValue); }
#define COM_FORWARD_IMachine_SetHWVirtExProperty_TO_OBJ(obj) COM_FORWARD_IMachine_SetHWVirtExProperty_TO ((obj)->)
#define COM_FORWARD_IMachine_SetHWVirtExProperty_TO_BASE(base) COM_FORWARD_IMachine_SetHWVirtExProperty_TO (base::)
#define COM_FORWARD_IMachine_SetSettingsFilePath_TO(smth) NS_IMETHOD SetSettingsFilePath (PRUnichar * aSettingsFilePath, IProgress * * aProgress) { return smth SetSettingsFilePath (aSettingsFilePath, aProgress); }
#define COM_FORWARD_IMachine_SetSettingsFilePath_TO_OBJ(obj) COM_FORWARD_IMachine_SetSettingsFilePath_TO ((obj)->)
#define COM_FORWARD_IMachine_SetSettingsFilePath_TO_BASE(base) COM_FORWARD_IMachine_SetSettingsFilePath_TO (base::)
#define COM_FORWARD_IMachine_SaveSettings_TO(smth) NS_IMETHOD SaveSettings() { return smth SaveSettings(); }
#define COM_FORWARD_IMachine_SaveSettings_TO_OBJ(obj) COM_FORWARD_IMachine_SaveSettings_TO ((obj)->)
#define COM_FORWARD_IMachine_SaveSettings_TO_BASE(base) COM_FORWARD_IMachine_SaveSettings_TO (base::)
#define COM_FORWARD_IMachine_DiscardSettings_TO(smth) NS_IMETHOD DiscardSettings() { return smth DiscardSettings(); }
#define COM_FORWARD_IMachine_DiscardSettings_TO_OBJ(obj) COM_FORWARD_IMachine_DiscardSettings_TO ((obj)->)
#define COM_FORWARD_IMachine_DiscardSettings_TO_BASE(base) COM_FORWARD_IMachine_DiscardSettings_TO (base::)
#define COM_FORWARD_IMachine_Unregister_TO(smth) NS_IMETHOD Unregister (PRUint32 aCleanupMode, PRUint32 * aMediaSize, IMedium * * * aMedia) { return smth Unregister (aCleanupMode, aMediaSize, aMedia); }
#define COM_FORWARD_IMachine_Unregister_TO_OBJ(obj) COM_FORWARD_IMachine_Unregister_TO ((obj)->)
#define COM_FORWARD_IMachine_Unregister_TO_BASE(base) COM_FORWARD_IMachine_Unregister_TO (base::)
#define COM_FORWARD_IMachine_DeleteConfig_TO(smth) NS_IMETHOD DeleteConfig (PRUint32 aMediaSize, IMedium * * aMedia, IProgress * * aProgress) { return smth DeleteConfig (aMediaSize+++, aMedia, aProgress); }
#define COM_FORWARD_IMachine_DeleteConfig_TO_OBJ(obj) COM_FORWARD_IMachine_DeleteConfig_TO ((obj)->)
#define COM_FORWARD_IMachine_DeleteConfig_TO_BASE(base) COM_FORWARD_IMachine_DeleteConfig_TO (base::)
#define COM_FORWARD_IMachine_ExportTo_TO(smth) NS_IMETHOD ExportTo (IAppliance * aAppliance, PRUnichar * aLocation, IVirtualSystemDescription * * aDescription) { return smth ExportTo (aAppliance, aLocation, aDescription); }
#define COM_FORWARD_IMachine_ExportTo_TO_OBJ(obj) COM_FORWARD_IMachine_ExportTo_TO ((obj)->)
#define COM_FORWARD_IMachine_ExportTo_TO_BASE(base) COM_FORWARD_IMachine_ExportTo_TO (base::)
#define COM_FORWARD_IMachine_FindSnapshot_TO(smth) NS_IMETHOD FindSnapshot (PRUnichar * aNameOrId, ISnapshot * * aSnapshot) { return smth FindSnapshot (aNameOrId, aSnapshot); }
#define COM_FORWARD_IMachine_FindSnapshot_TO_OBJ(obj) COM_FORWARD_IMachine_FindSnapshot_TO ((obj)->)
#define COM_FORWARD_IMachine_FindSnapshot_TO_BASE(base) COM_FORWARD_IMachine_FindSnapshot_TO (base::)
#define COM_FORWARD_IMachine_CreateSharedFolder_TO(smth) NS_IMETHOD CreateSharedFolder (PRUnichar * aName, PRUnichar * aHostPath, PRBool aWritable, PRBool aAutomount) { return smth CreateSharedFolder (aName, aHostPath, aWritable, aAutomount); }
#define COM_FORWARD_IMachine_CreateSharedFolder_TO_OBJ(obj) COM_FORWARD_IMachine_CreateSharedFolder_TO ((obj)->)
#define COM_FORWARD_IMachine_CreateSharedFolder_TO_BASE(base) COM_FORWARD_IMachine_CreateSharedFolder_TO (base::)
#define COM_FORWARD_IMachine_RemoveSharedFolder_TO(smth) NS_IMETHOD RemoveSharedFolder (PRUnichar * aName) { return smth RemoveSharedFolder (aName); }
#define COM_FORWARD_IMachine_RemoveSharedFolder_TO_OBJ(obj) COM_FORWARD_IMachine_RemoveSharedFolder_TO ((obj)->)
#define COM_FORWARD_IMachine_RemoveSharedFolder_TO_BASE(base) COM_FORWARD_IMachine_RemoveSharedFolder_TO (base::)
#define COM_FORWARD_IMachine_CanShowConsoleWindow_TO(smth) NS_IMETHOD CanShowConsoleWindow (PRBool * aCanShow) { return smth CanShowConsoleWindow (aCanShow); }
#define COM_FORWARD_IMachine_CanShowConsoleWindow_TO_OBJ(obj) COM_FORWARD_IMachine_CanShowConsoleWindow_TO ((obj)->)
#define COM_FORWARD_IMachine_CanShowConsoleWindow_TO_BASE(base) COM_FORWARD_IMachine_CanShowConsoleWindow_TO (base::)
#define COM_FORWARD_IMachine_ShowConsoleWindow_TO(smth) NS_IMETHOD ShowConsoleWindow (PRInt64 * aWinId) { return smth ShowConsoleWindow (aWinId); }
#define COM_FORWARD_IMachine_ShowConsoleWindow_TO_OBJ(obj) COM_FORWARD_IMachine_ShowConsoleWindow_TO ((obj)->)
#define COM_FORWARD_IMachine_ShowConsoleWindow_TO_BASE(base) COM_FORWARD_IMachine_ShowConsoleWindow_TO (base::)
#define COM_FORWARD_IMachine_GetGuestProperty_TO(smth) NS_IMETHOD GetGuestProperty (PRUnichar * aName, PRUnichar * * aValue, PRInt64 * aTimestamp, PRUnichar * * aFlags) { return smth GetGuestProperty (aName, aValue, aTimestamp, aFlags); }
#define COM_FORWARD_IMachine_GetGuestProperty_TO_OBJ(obj) COM_FORWARD_IMachine_GetGuestProperty_TO ((obj)->)
#define COM_FORWARD_IMachine_GetGuestProperty_TO_BASE(base) COM_FORWARD_IMachine_GetGuestProperty_TO (base::)
#define COM_FORWARD_IMachine_GetGuestPropertyValue_TO(smth) NS_IMETHOD GetGuestPropertyValue (PRUnichar * aProperty, PRUnichar * * aValue) { return smth GetGuestPropertyValue (aProperty, aValue); }
#define COM_FORWARD_IMachine_GetGuestPropertyValue_TO_OBJ(obj) COM_FORWARD_IMachine_GetGuestPropertyValue_TO ((obj)->)
#define COM_FORWARD_IMachine_GetGuestPropertyValue_TO_BASE(base) COM_FORWARD_IMachine_GetGuestPropertyValue_TO (base::)
#define COM_FORWARD_IMachine_GetGuestPropertyTimestamp_TO(smth) NS_IMETHOD GetGuestPropertyTimestamp (PRUnichar * aProperty, PRInt64 * aValue) { return smth GetGuestPropertyTimestamp (aProperty, aValue); }
#define COM_FORWARD_IMachine_GetGuestPropertyTimestamp_TO_OBJ(obj) COM_FORWARD_IMachine_GetGuestPropertyTimestamp_TO ((obj)->)
#define COM_FORWARD_IMachine_GetGuestPropertyTimestamp_TO_BASE(base) COM_FORWARD_IMachine_GetGuestPropertyTimestamp_TO (base::)
#define COM_FORWARD_IMachine_SetGuestProperty_TO(smth) NS_IMETHOD SetGuestProperty (PRUnichar * aProperty, PRUnichar * aValue, PRUnichar * aFlags) { return smth SetGuestProperty (aProperty, aValue, aFlags); }
#define COM_FORWARD_IMachine_SetGuestProperty_TO_OBJ(obj) COM_FORWARD_IMachine_SetGuestProperty_TO ((obj)->)
#define COM_FORWARD_IMachine_SetGuestProperty_TO_BASE(base) COM_FORWARD_IMachine_SetGuestProperty_TO (base::)
#define COM_FORWARD_IMachine_SetGuestPropertyValue_TO(smth) NS_IMETHOD SetGuestPropertyValue (PRUnichar * aProperty, PRUnichar * aValue) { return smth SetGuestPropertyValue (aProperty, aValue); }
#define COM_FORWARD_IMachine_SetGuestPropertyValue_TO_OBJ(obj) COM_FORWARD_IMachine_SetGuestPropertyValue_TO ((obj)->)
#define COM_FORWARD_IMachine_SetGuestPropertyValue_TO_BASE(base) COM_FORWARD_IMachine_SetGuestPropertyValue_TO (base::)
#define COM_FORWARD_IMachine_DeleteGuestProperty_TO(smth) NS_IMETHOD DeleteGuestProperty (PRUnichar * aName) { return smth DeleteGuestProperty (aName); }
#define COM_FORWARD_IMachine_DeleteGuestProperty_TO_OBJ(obj) COM_FORWARD_IMachine_DeleteGuestProperty_TO ((obj)->)
#define COM_FORWARD_IMachine_DeleteGuestProperty_TO_BASE(base) COM_FORWARD_IMachine_DeleteGuestProperty_TO (base::)
#define COM_FORWARD_IMachine_EnumerateGuestProperties_TO(smth) NS_IMETHOD EnumerateGuestProperties (PRUnichar * aPatterns, PRUint32 * aNamesSize, PRUnichar * * * aNames, PRUint32 * aValuesSize, PRUnichar * * * aValues, PRUint32 * aTimestampsSize, PRInt64 * * aTimestamps, PRUint32 * aFlagsSize, PRUnichar * * * aFlags) { return smth EnumerateGuestProperties (aPatterns, aNamesSize+++, aNames, aValuesSize+++, aValues, aTimestampsSize+++, aTimestamps, aFlagsSize, aFlags); }
#define COM_FORWARD_IMachine_EnumerateGuestProperties_TO_OBJ(obj) COM_FORWARD_IMachine_EnumerateGuestProperties_TO ((obj)->)
#define COM_FORWARD_IMachine_EnumerateGuestProperties_TO_BASE(base) COM_FORWARD_IMachine_EnumerateGuestProperties_TO (base::)
#define COM_FORWARD_IMachine_QuerySavedGuestScreenInfo_TO(smth) NS_IMETHOD QuerySavedGuestScreenInfo (PRUint32 aScreenId, PRUint32 * aOriginX, PRUint32 * aOriginY, PRUint32 * aWidth, PRUint32 * aHeight, PRBool * aEnabled) { return smth QuerySavedGuestScreenInfo (aScreenId, aOriginX, aOriginY, aWidth, aHeight, aEnabled); }
#define COM_FORWARD_IMachine_QuerySavedGuestScreenInfo_TO_OBJ(obj) COM_FORWARD_IMachine_QuerySavedGuestScreenInfo_TO ((obj)->)
#define COM_FORWARD_IMachine_QuerySavedGuestScreenInfo_TO_BASE(base) COM_FORWARD_IMachine_QuerySavedGuestScreenInfo_TO (base::)
#define COM_FORWARD_IMachine_QuerySavedThumbnailSize_TO(smth) NS_IMETHOD QuerySavedThumbnailSize (PRUint32 aScreenId, PRUint32 * aSize, PRUint32 * aWidth, PRUint32 * aHeight) { return smth QuerySavedThumbnailSize (aScreenId, aSize, aWidth, aHeight); }
#define COM_FORWARD_IMachine_QuerySavedThumbnailSize_TO_OBJ(obj) COM_FORWARD_IMachine_QuerySavedThumbnailSize_TO ((obj)->)
#define COM_FORWARD_IMachine_QuerySavedThumbnailSize_TO_BASE(base) COM_FORWARD_IMachine_QuerySavedThumbnailSize_TO (base::)
#define COM_FORWARD_IMachine_ReadSavedThumbnailToArray_TO(smth) NS_IMETHOD ReadSavedThumbnailToArray (PRUint32 aScreenId, PRBool aBGR, PRUint32 * aWidth, PRUint32 * aHeight, PRUint32 * aDataSize, PRUint8 * * aData) { return smth ReadSavedThumbnailToArray (aScreenId, aBGR, aWidth, aHeight, aDataSize, aData); }
#define COM_FORWARD_IMachine_ReadSavedThumbnailToArray_TO_OBJ(obj) COM_FORWARD_IMachine_ReadSavedThumbnailToArray_TO ((obj)->)
#define COM_FORWARD_IMachine_ReadSavedThumbnailToArray_TO_BASE(base) COM_FORWARD_IMachine_ReadSavedThumbnailToArray_TO (base::)
#define COM_FORWARD_IMachine_ReadSavedThumbnailPNGToArray_TO(smth) NS_IMETHOD ReadSavedThumbnailPNGToArray (PRUint32 aScreenId, PRUint32 * aWidth, PRUint32 * aHeight, PRUint32 * aDataSize, PRUint8 * * aData) { return smth ReadSavedThumbnailPNGToArray (aScreenId, aWidth, aHeight, aDataSize, aData); }
#define COM_FORWARD_IMachine_ReadSavedThumbnailPNGToArray_TO_OBJ(obj) COM_FORWARD_IMachine_ReadSavedThumbnailPNGToArray_TO ((obj)->)
#define COM_FORWARD_IMachine_ReadSavedThumbnailPNGToArray_TO_BASE(base) COM_FORWARD_IMachine_ReadSavedThumbnailPNGToArray_TO (base::)
#define COM_FORWARD_IMachine_QuerySavedScreenshotPNGSize_TO(smth) NS_IMETHOD QuerySavedScreenshotPNGSize (PRUint32 aScreenId, PRUint32 * aSize, PRUint32 * aWidth, PRUint32 * aHeight) { return smth QuerySavedScreenshotPNGSize (aScreenId, aSize, aWidth, aHeight); }
#define COM_FORWARD_IMachine_QuerySavedScreenshotPNGSize_TO_OBJ(obj) COM_FORWARD_IMachine_QuerySavedScreenshotPNGSize_TO ((obj)->)
#define COM_FORWARD_IMachine_QuerySavedScreenshotPNGSize_TO_BASE(base) COM_FORWARD_IMachine_QuerySavedScreenshotPNGSize_TO (base::)
#define COM_FORWARD_IMachine_ReadSavedScreenshotPNGToArray_TO(smth) NS_IMETHOD ReadSavedScreenshotPNGToArray (PRUint32 aScreenId, PRUint32 * aWidth, PRUint32 * aHeight, PRUint32 * aDataSize, PRUint8 * * aData) { return smth ReadSavedScreenshotPNGToArray (aScreenId, aWidth, aHeight, aDataSize, aData); }
#define COM_FORWARD_IMachine_ReadSavedScreenshotPNGToArray_TO_OBJ(obj) COM_FORWARD_IMachine_ReadSavedScreenshotPNGToArray_TO ((obj)->)
#define COM_FORWARD_IMachine_ReadSavedScreenshotPNGToArray_TO_BASE(base) COM_FORWARD_IMachine_ReadSavedScreenshotPNGToArray_TO (base::)
#define COM_FORWARD_IMachine_HotPlugCPU_TO(smth) NS_IMETHOD HotPlugCPU (PRUint32 aCpu) { return smth HotPlugCPU (aCpu); }
#define COM_FORWARD_IMachine_HotPlugCPU_TO_OBJ(obj) COM_FORWARD_IMachine_HotPlugCPU_TO ((obj)->)
#define COM_FORWARD_IMachine_HotPlugCPU_TO_BASE(base) COM_FORWARD_IMachine_HotPlugCPU_TO (base::)
#define COM_FORWARD_IMachine_HotUnplugCPU_TO(smth) NS_IMETHOD HotUnplugCPU (PRUint32 aCpu) { return smth HotUnplugCPU (aCpu); }
#define COM_FORWARD_IMachine_HotUnplugCPU_TO_OBJ(obj) COM_FORWARD_IMachine_HotUnplugCPU_TO ((obj)->)
#define COM_FORWARD_IMachine_HotUnplugCPU_TO_BASE(base) COM_FORWARD_IMachine_HotUnplugCPU_TO (base::)
#define COM_FORWARD_IMachine_GetCPUStatus_TO(smth) NS_IMETHOD GetCPUStatus (PRUint32 aCpu, PRBool * aAttached) { return smth GetCPUStatus (aCpu, aAttached); }
#define COM_FORWARD_IMachine_GetCPUStatus_TO_OBJ(obj) COM_FORWARD_IMachine_GetCPUStatus_TO ((obj)->)
#define COM_FORWARD_IMachine_GetCPUStatus_TO_BASE(base) COM_FORWARD_IMachine_GetCPUStatus_TO (base::)
#define COM_FORWARD_IMachine_QueryLogFilename_TO(smth) NS_IMETHOD QueryLogFilename (PRUint32 aIdx, PRUnichar * * aFilename) { return smth QueryLogFilename (aIdx, aFilename); }
#define COM_FORWARD_IMachine_QueryLogFilename_TO_OBJ(obj) COM_FORWARD_IMachine_QueryLogFilename_TO ((obj)->)
#define COM_FORWARD_IMachine_QueryLogFilename_TO_BASE(base) COM_FORWARD_IMachine_QueryLogFilename_TO (base::)
#define COM_FORWARD_IMachine_ReadLog_TO(smth) NS_IMETHOD ReadLog (PRUint32 aIdx, PRInt64 aOffset, PRInt64 aSize, PRUint32 * aDataSize, PRUint8 * * aData) { return smth ReadLog (aIdx, aOffset, aSize, aDataSize, aData); }
#define COM_FORWARD_IMachine_ReadLog_TO_OBJ(obj) COM_FORWARD_IMachine_ReadLog_TO ((obj)->)
#define COM_FORWARD_IMachine_ReadLog_TO_BASE(base) COM_FORWARD_IMachine_ReadLog_TO (base::)
#define COM_FORWARD_IMachine_CloneTo_TO(smth) NS_IMETHOD CloneTo (IMachine * aTarget, PRUint32 aMode, PRUint32 aOptionsSize, PRUint32 * aOptions, IProgress * * aProgress) { return smth CloneTo (aTarget, aMode, aOptionsSize+++, aOptions, aProgress); }
#define COM_FORWARD_IMachine_CloneTo_TO_OBJ(obj) COM_FORWARD_IMachine_CloneTo_TO ((obj)->)
#define COM_FORWARD_IMachine_CloneTo_TO_BASE(base) COM_FORWARD_IMachine_CloneTo_TO (base::)
#define COM_FORWARD_IMachine_TO(smth) NS_FORWARD_IMACHINE (smth)
#define COM_FORWARD_IMachine_TO_OBJ(obj) COM_FORWARD_IMachine_TO ((obj)->)
#define COM_FORWARD_IMachine_TO_BASE(base) COM_FORWARD_IMachine_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IMachine;

/* starting interface:    IEmulatedUSB */
#define IEMULATEDUSB_IID_STR "38cc4dfd-8bb2-4d40-aebe-699eead8c2dd"

#define IEMULATEDUSB_IID \
  {0x38cc4dfd, 0x8bb2, 0x4d40, \
    { 0xae, 0xbe, 0x69, 0x9e, 0xea, 0xd8, 0xc2, 0xdd }}

class NS_NO_VTABLE IEmulatedUSB : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IEMULATEDUSB_IID)

  /* void getWebcams (out unsigned long webcamsSize, [array, size_is (webcamsSize), retval] out wstring webcams); */
  NS_IMETHOD GetWebcams(PRUint32 *webcamsSize, PRUnichar ***webcams) = 0;

  /* void webcamAttach (in wstring path, in wstring settings); */
  NS_IMETHOD WebcamAttach(const PRUnichar *path, const PRUnichar *settings) = 0;

  /* void webcamDetach (in wstring path); */
  NS_IMETHOD WebcamDetach(const PRUnichar *path) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IEMULATEDUSB \
  NS_IMETHOD GetWebcams(PRUint32 *webcamsSize, PRUnichar ***webcams); \
  NS_IMETHOD WebcamAttach(const PRUnichar *path, const PRUnichar *settings); \
  NS_IMETHOD WebcamDetach(const PRUnichar *path); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IEMULATEDUSB(_to) \
  NS_IMETHOD GetWebcams(PRUint32 *webcamsSize, PRUnichar ***webcams) { return _to GetWebcams(webcamsSize, webcams); } \
  NS_IMETHOD WebcamAttach(const PRUnichar *path, const PRUnichar *settings) { return _to WebcamAttach(path, settings); } \
  NS_IMETHOD WebcamDetach(const PRUnichar *path) { return _to WebcamDetach(path); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IEMULATEDUSB(_to) \
  NS_IMETHOD GetWebcams(PRUint32 *webcamsSize, PRUnichar ***webcams) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWebcams(webcamsSize, webcams); } \
  NS_IMETHOD WebcamAttach(const PRUnichar *path, const PRUnichar *settings) { return !_to ? NS_ERROR_NULL_POINTER : _to->WebcamAttach(path, settings); } \
  NS_IMETHOD WebcamDetach(const PRUnichar *path) { return !_to ? NS_ERROR_NULL_POINTER : _to->WebcamDetach(path); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IEmulatedUSB
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IEMULATEDUSB

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IEmulatedUSB)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* void getWebcams (out unsigned long webcamsSize, [array, size_is (webcamsSize), retval] out wstring webcams); */
NS_IMETHODIMP _MYCLASS_::GetWebcams(PRUint32 *webcamsSize, PRUnichar ***webcams)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void webcamAttach (in wstring path, in wstring settings); */
NS_IMETHODIMP _MYCLASS_::WebcamAttach(const PRUnichar *path, const PRUnichar *settings)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void webcamDetach (in wstring path); */
NS_IMETHODIMP _MYCLASS_::WebcamDetach(const PRUnichar *path)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IEmulatedUSB_GETTER_Webcams_TO(smth) NS_IMETHOD GetWebcams (PRUint32 * aWebcamsSize, PRUnichar * * * aWebcams) { return smth GetWebcams (aWebcamsSize, aWebcams); }
#define COM_FORWARD_IEmulatedUSB_GETTER_Webcams_TO_OBJ(obj) COM_FORWARD_IEmulatedUSB_GETTER_Webcams_TO ((obj)->)
#define COM_FORWARD_IEmulatedUSB_GETTER_Webcams_TO_BASE(base) COM_FORWARD_IEmulatedUSB_GETTER_Webcams_TO (base::)
#define COM_FORWARD_IEmulatedUSB_WebcamAttach_TO(smth) NS_IMETHOD WebcamAttach (PRUnichar * aPath, PRUnichar * aSettings) { return smth WebcamAttach (aPath, aSettings); }
#define COM_FORWARD_IEmulatedUSB_WebcamAttach_TO_OBJ(obj) COM_FORWARD_IEmulatedUSB_WebcamAttach_TO ((obj)->)
#define COM_FORWARD_IEmulatedUSB_WebcamAttach_TO_BASE(base) COM_FORWARD_IEmulatedUSB_WebcamAttach_TO (base::)
#define COM_FORWARD_IEmulatedUSB_WebcamDetach_TO(smth) NS_IMETHOD WebcamDetach (PRUnichar * aPath) { return smth WebcamDetach (aPath); }
#define COM_FORWARD_IEmulatedUSB_WebcamDetach_TO_OBJ(obj) COM_FORWARD_IEmulatedUSB_WebcamDetach_TO ((obj)->)
#define COM_FORWARD_IEmulatedUSB_WebcamDetach_TO_BASE(base) COM_FORWARD_IEmulatedUSB_WebcamDetach_TO (base::)
#define COM_FORWARD_IEmulatedUSB_TO(smth) NS_FORWARD_IEMULATEDUSB (smth)
#define COM_FORWARD_IEmulatedUSB_TO_OBJ(obj) COM_FORWARD_IEmulatedUSB_TO ((obj)->)
#define COM_FORWARD_IEmulatedUSB_TO_BASE(base) COM_FORWARD_IEmulatedUSB_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IEmulatedUSB;

/* starting interface:    IVRDEServerInfo */
#define IVRDESERVERINFO_IID_STR "714434a1-58c3-4aab-9049-7652c5df113b"

#define IVRDESERVERINFO_IID \
  {0x714434a1, 0x58c3, 0x4aab, \
    { 0x90, 0x49, 0x76, 0x52, 0xc5, 0xdf, 0x11, 0x3b }}

class NS_NO_VTABLE IVRDEServerInfo : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVRDESERVERINFO_IID)

  /* readonly attribute boolean active; */
  NS_IMETHOD GetActive(PRBool *aActive) = 0;

  /* readonly attribute long port; */
  NS_IMETHOD GetPort(PRInt32 *aPort) = 0;

  /* readonly attribute unsigned long numberOfClients; */
  NS_IMETHOD GetNumberOfClients(PRUint32 *aNumberOfClients) = 0;

  /* readonly attribute long long beginTime; */
  NS_IMETHOD GetBeginTime(PRInt64 *aBeginTime) = 0;

  /* readonly attribute long long endTime; */
  NS_IMETHOD GetEndTime(PRInt64 *aEndTime) = 0;

  /* readonly attribute long long bytesSent; */
  NS_IMETHOD GetBytesSent(PRInt64 *aBytesSent) = 0;

  /* readonly attribute long long bytesSentTotal; */
  NS_IMETHOD GetBytesSentTotal(PRInt64 *aBytesSentTotal) = 0;

  /* readonly attribute long long bytesReceived; */
  NS_IMETHOD GetBytesReceived(PRInt64 *aBytesReceived) = 0;

  /* readonly attribute long long bytesReceivedTotal; */
  NS_IMETHOD GetBytesReceivedTotal(PRInt64 *aBytesReceivedTotal) = 0;

  /* readonly attribute wstring user; */
  NS_IMETHOD GetUser(PRUnichar * *aUser) = 0;

  /* readonly attribute wstring domain; */
  NS_IMETHOD GetDomain(PRUnichar * *aDomain) = 0;

  /* readonly attribute wstring clientName; */
  NS_IMETHOD GetClientName(PRUnichar * *aClientName) = 0;

  /* readonly attribute wstring clientIP; */
  NS_IMETHOD GetClientIP(PRUnichar * *aClientIP) = 0;

  /* readonly attribute unsigned long clientVersion; */
  NS_IMETHOD GetClientVersion(PRUint32 *aClientVersion) = 0;

  /* readonly attribute unsigned long encryptionStyle; */
  NS_IMETHOD GetEncryptionStyle(PRUint32 *aEncryptionStyle) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVRDESERVERINFO \
  NS_IMETHOD GetActive(PRBool *aActive); \
  NS_IMETHOD GetPort(PRInt32 *aPort); \
  NS_IMETHOD GetNumberOfClients(PRUint32 *aNumberOfClients); \
  NS_IMETHOD GetBeginTime(PRInt64 *aBeginTime); \
  NS_IMETHOD GetEndTime(PRInt64 *aEndTime); \
  NS_IMETHOD GetBytesSent(PRInt64 *aBytesSent); \
  NS_IMETHOD GetBytesSentTotal(PRInt64 *aBytesSentTotal); \
  NS_IMETHOD GetBytesReceived(PRInt64 *aBytesReceived); \
  NS_IMETHOD GetBytesReceivedTotal(PRInt64 *aBytesReceivedTotal); \
  NS_IMETHOD GetUser(PRUnichar * *aUser); \
  NS_IMETHOD GetDomain(PRUnichar * *aDomain); \
  NS_IMETHOD GetClientName(PRUnichar * *aClientName); \
  NS_IMETHOD GetClientIP(PRUnichar * *aClientIP); \
  NS_IMETHOD GetClientVersion(PRUint32 *aClientVersion); \
  NS_IMETHOD GetEncryptionStyle(PRUint32 *aEncryptionStyle); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IVRDESERVERINFO(_to) \
  NS_IMETHOD GetActive(PRBool *aActive) { return _to GetActive(aActive); } \
  NS_IMETHOD GetPort(PRInt32 *aPort) { return _to GetPort(aPort); } \
  NS_IMETHOD GetNumberOfClients(PRUint32 *aNumberOfClients) { return _to GetNumberOfClients(aNumberOfClients); } \
  NS_IMETHOD GetBeginTime(PRInt64 *aBeginTime) { return _to GetBeginTime(aBeginTime); } \
  NS_IMETHOD GetEndTime(PRInt64 *aEndTime) { return _to GetEndTime(aEndTime); } \
  NS_IMETHOD GetBytesSent(PRInt64 *aBytesSent) { return _to GetBytesSent(aBytesSent); } \
  NS_IMETHOD GetBytesSentTotal(PRInt64 *aBytesSentTotal) { return _to GetBytesSentTotal(aBytesSentTotal); } \
  NS_IMETHOD GetBytesReceived(PRInt64 *aBytesReceived) { return _to GetBytesReceived(aBytesReceived); } \
  NS_IMETHOD GetBytesReceivedTotal(PRInt64 *aBytesReceivedTotal) { return _to GetBytesReceivedTotal(aBytesReceivedTotal); } \
  NS_IMETHOD GetUser(PRUnichar * *aUser) { return _to GetUser(aUser); } \
  NS_IMETHOD GetDomain(PRUnichar * *aDomain) { return _to GetDomain(aDomain); } \
  NS_IMETHOD GetClientName(PRUnichar * *aClientName) { return _to GetClientName(aClientName); } \
  NS_IMETHOD GetClientIP(PRUnichar * *aClientIP) { return _to GetClientIP(aClientIP); } \
  NS_IMETHOD GetClientVersion(PRUint32 *aClientVersion) { return _to GetClientVersion(aClientVersion); } \
  NS_IMETHOD GetEncryptionStyle(PRUint32 *aEncryptionStyle) { return _to GetEncryptionStyle(aEncryptionStyle); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IVRDESERVERINFO(_to) \
  NS_IMETHOD GetActive(PRBool *aActive) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetActive(aActive); } \
  NS_IMETHOD GetPort(PRInt32 *aPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPort(aPort); } \
  NS_IMETHOD GetNumberOfClients(PRUint32 *aNumberOfClients) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNumberOfClients(aNumberOfClients); } \
  NS_IMETHOD GetBeginTime(PRInt64 *aBeginTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBeginTime(aBeginTime); } \
  NS_IMETHOD GetEndTime(PRInt64 *aEndTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEndTime(aEndTime); } \
  NS_IMETHOD GetBytesSent(PRInt64 *aBytesSent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBytesSent(aBytesSent); } \
  NS_IMETHOD GetBytesSentTotal(PRInt64 *aBytesSentTotal) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBytesSentTotal(aBytesSentTotal); } \
  NS_IMETHOD GetBytesReceived(PRInt64 *aBytesReceived) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBytesReceived(aBytesReceived); } \
  NS_IMETHOD GetBytesReceivedTotal(PRInt64 *aBytesReceivedTotal) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBytesReceivedTotal(aBytesReceivedTotal); } \
  NS_IMETHOD GetUser(PRUnichar * *aUser) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUser(aUser); } \
  NS_IMETHOD GetDomain(PRUnichar * *aDomain) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDomain(aDomain); } \
  NS_IMETHOD GetClientName(PRUnichar * *aClientName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetClientName(aClientName); } \
  NS_IMETHOD GetClientIP(PRUnichar * *aClientIP) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetClientIP(aClientIP); } \
  NS_IMETHOD GetClientVersion(PRUint32 *aClientVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetClientVersion(aClientVersion); } \
  NS_IMETHOD GetEncryptionStyle(PRUint32 *aEncryptionStyle) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEncryptionStyle(aEncryptionStyle); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IVRDEServerInfo
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IVRDESERVERINFO

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IVRDEServerInfo)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute boolean active; */
NS_IMETHODIMP _MYCLASS_::GetActive(PRBool *aActive)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long port; */
NS_IMETHODIMP _MYCLASS_::GetPort(PRInt32 *aPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long numberOfClients; */
NS_IMETHODIMP _MYCLASS_::GetNumberOfClients(PRUint32 *aNumberOfClients)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long beginTime; */
NS_IMETHODIMP _MYCLASS_::GetBeginTime(PRInt64 *aBeginTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long endTime; */
NS_IMETHODIMP _MYCLASS_::GetEndTime(PRInt64 *aEndTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long bytesSent; */
NS_IMETHODIMP _MYCLASS_::GetBytesSent(PRInt64 *aBytesSent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long bytesSentTotal; */
NS_IMETHODIMP _MYCLASS_::GetBytesSentTotal(PRInt64 *aBytesSentTotal)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long bytesReceived; */
NS_IMETHODIMP _MYCLASS_::GetBytesReceived(PRInt64 *aBytesReceived)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long bytesReceivedTotal; */
NS_IMETHODIMP _MYCLASS_::GetBytesReceivedTotal(PRInt64 *aBytesReceivedTotal)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring user; */
NS_IMETHODIMP _MYCLASS_::GetUser(PRUnichar * *aUser)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring domain; */
NS_IMETHODIMP _MYCLASS_::GetDomain(PRUnichar * *aDomain)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring clientName; */
NS_IMETHODIMP _MYCLASS_::GetClientName(PRUnichar * *aClientName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring clientIP; */
NS_IMETHODIMP _MYCLASS_::GetClientIP(PRUnichar * *aClientIP)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long clientVersion; */
NS_IMETHODIMP _MYCLASS_::GetClientVersion(PRUint32 *aClientVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long encryptionStyle; */
NS_IMETHODIMP _MYCLASS_::GetEncryptionStyle(PRUint32 *aEncryptionStyle)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IVRDEServerInfo_GETTER_Active_TO(smth) NS_IMETHOD GetActive (PRBool * aActive) { return smth GetActive (aActive); }
#define COM_FORWARD_IVRDEServerInfo_GETTER_Active_TO_OBJ(obj) COM_FORWARD_IVRDEServerInfo_GETTER_Active_TO ((obj)->)
#define COM_FORWARD_IVRDEServerInfo_GETTER_Active_TO_BASE(base) COM_FORWARD_IVRDEServerInfo_GETTER_Active_TO (base::)
#define COM_FORWARD_IVRDEServerInfo_GETTER_Port_TO(smth) NS_IMETHOD GetPort (PRInt32 * aPort) { return smth GetPort (aPort); }
#define COM_FORWARD_IVRDEServerInfo_GETTER_Port_TO_OBJ(obj) COM_FORWARD_IVRDEServerInfo_GETTER_Port_TO ((obj)->)
#define COM_FORWARD_IVRDEServerInfo_GETTER_Port_TO_BASE(base) COM_FORWARD_IVRDEServerInfo_GETTER_Port_TO (base::)
#define COM_FORWARD_IVRDEServerInfo_GETTER_NumberOfClients_TO(smth) NS_IMETHOD GetNumberOfClients (PRUint32 * aNumberOfClients) { return smth GetNumberOfClients (aNumberOfClients); }
#define COM_FORWARD_IVRDEServerInfo_GETTER_NumberOfClients_TO_OBJ(obj) COM_FORWARD_IVRDEServerInfo_GETTER_NumberOfClients_TO ((obj)->)
#define COM_FORWARD_IVRDEServerInfo_GETTER_NumberOfClients_TO_BASE(base) COM_FORWARD_IVRDEServerInfo_GETTER_NumberOfClients_TO (base::)
#define COM_FORWARD_IVRDEServerInfo_GETTER_BeginTime_TO(smth) NS_IMETHOD GetBeginTime (PRInt64 * aBeginTime) { return smth GetBeginTime (aBeginTime); }
#define COM_FORWARD_IVRDEServerInfo_GETTER_BeginTime_TO_OBJ(obj) COM_FORWARD_IVRDEServerInfo_GETTER_BeginTime_TO ((obj)->)
#define COM_FORWARD_IVRDEServerInfo_GETTER_BeginTime_TO_BASE(base) COM_FORWARD_IVRDEServerInfo_GETTER_BeginTime_TO (base::)
#define COM_FORWARD_IVRDEServerInfo_GETTER_EndTime_TO(smth) NS_IMETHOD GetEndTime (PRInt64 * aEndTime) { return smth GetEndTime (aEndTime); }
#define COM_FORWARD_IVRDEServerInfo_GETTER_EndTime_TO_OBJ(obj) COM_FORWARD_IVRDEServerInfo_GETTER_EndTime_TO ((obj)->)
#define COM_FORWARD_IVRDEServerInfo_GETTER_EndTime_TO_BASE(base) COM_FORWARD_IVRDEServerInfo_GETTER_EndTime_TO (base::)
#define COM_FORWARD_IVRDEServerInfo_GETTER_BytesSent_TO(smth) NS_IMETHOD GetBytesSent (PRInt64 * aBytesSent) { return smth GetBytesSent (aBytesSent); }
#define COM_FORWARD_IVRDEServerInfo_GETTER_BytesSent_TO_OBJ(obj) COM_FORWARD_IVRDEServerInfo_GETTER_BytesSent_TO ((obj)->)
#define COM_FORWARD_IVRDEServerInfo_GETTER_BytesSent_TO_BASE(base) COM_FORWARD_IVRDEServerInfo_GETTER_BytesSent_TO (base::)
#define COM_FORWARD_IVRDEServerInfo_GETTER_BytesSentTotal_TO(smth) NS_IMETHOD GetBytesSentTotal (PRInt64 * aBytesSentTotal) { return smth GetBytesSentTotal (aBytesSentTotal); }
#define COM_FORWARD_IVRDEServerInfo_GETTER_BytesSentTotal_TO_OBJ(obj) COM_FORWARD_IVRDEServerInfo_GETTER_BytesSentTotal_TO ((obj)->)
#define COM_FORWARD_IVRDEServerInfo_GETTER_BytesSentTotal_TO_BASE(base) COM_FORWARD_IVRDEServerInfo_GETTER_BytesSentTotal_TO (base::)
#define COM_FORWARD_IVRDEServerInfo_GETTER_BytesReceived_TO(smth) NS_IMETHOD GetBytesReceived (PRInt64 * aBytesReceived) { return smth GetBytesReceived (aBytesReceived); }
#define COM_FORWARD_IVRDEServerInfo_GETTER_BytesReceived_TO_OBJ(obj) COM_FORWARD_IVRDEServerInfo_GETTER_BytesReceived_TO ((obj)->)
#define COM_FORWARD_IVRDEServerInfo_GETTER_BytesReceived_TO_BASE(base) COM_FORWARD_IVRDEServerInfo_GETTER_BytesReceived_TO (base::)
#define COM_FORWARD_IVRDEServerInfo_GETTER_BytesReceivedTotal_TO(smth) NS_IMETHOD GetBytesReceivedTotal (PRInt64 * aBytesReceivedTotal) { return smth GetBytesReceivedTotal (aBytesReceivedTotal); }
#define COM_FORWARD_IVRDEServerInfo_GETTER_BytesReceivedTotal_TO_OBJ(obj) COM_FORWARD_IVRDEServerInfo_GETTER_BytesReceivedTotal_TO ((obj)->)
#define COM_FORWARD_IVRDEServerInfo_GETTER_BytesReceivedTotal_TO_BASE(base) COM_FORWARD_IVRDEServerInfo_GETTER_BytesReceivedTotal_TO (base::)
#define COM_FORWARD_IVRDEServerInfo_GETTER_User_TO(smth) NS_IMETHOD GetUser (PRUnichar * * aUser) { return smth GetUser (aUser); }
#define COM_FORWARD_IVRDEServerInfo_GETTER_User_TO_OBJ(obj) COM_FORWARD_IVRDEServerInfo_GETTER_User_TO ((obj)->)
#define COM_FORWARD_IVRDEServerInfo_GETTER_User_TO_BASE(base) COM_FORWARD_IVRDEServerInfo_GETTER_User_TO (base::)
#define COM_FORWARD_IVRDEServerInfo_GETTER_Domain_TO(smth) NS_IMETHOD GetDomain (PRUnichar * * aDomain) { return smth GetDomain (aDomain); }
#define COM_FORWARD_IVRDEServerInfo_GETTER_Domain_TO_OBJ(obj) COM_FORWARD_IVRDEServerInfo_GETTER_Domain_TO ((obj)->)
#define COM_FORWARD_IVRDEServerInfo_GETTER_Domain_TO_BASE(base) COM_FORWARD_IVRDEServerInfo_GETTER_Domain_TO (base::)
#define COM_FORWARD_IVRDEServerInfo_GETTER_ClientName_TO(smth) NS_IMETHOD GetClientName (PRUnichar * * aClientName) { return smth GetClientName (aClientName); }
#define COM_FORWARD_IVRDEServerInfo_GETTER_ClientName_TO_OBJ(obj) COM_FORWARD_IVRDEServerInfo_GETTER_ClientName_TO ((obj)->)
#define COM_FORWARD_IVRDEServerInfo_GETTER_ClientName_TO_BASE(base) COM_FORWARD_IVRDEServerInfo_GETTER_ClientName_TO (base::)
#define COM_FORWARD_IVRDEServerInfo_GETTER_ClientIP_TO(smth) NS_IMETHOD GetClientIP (PRUnichar * * aClientIP) { return smth GetClientIP (aClientIP); }
#define COM_FORWARD_IVRDEServerInfo_GETTER_ClientIP_TO_OBJ(obj) COM_FORWARD_IVRDEServerInfo_GETTER_ClientIP_TO ((obj)->)
#define COM_FORWARD_IVRDEServerInfo_GETTER_ClientIP_TO_BASE(base) COM_FORWARD_IVRDEServerInfo_GETTER_ClientIP_TO (base::)
#define COM_FORWARD_IVRDEServerInfo_GETTER_ClientVersion_TO(smth) NS_IMETHOD GetClientVersion (PRUint32 * aClientVersion) { return smth GetClientVersion (aClientVersion); }
#define COM_FORWARD_IVRDEServerInfo_GETTER_ClientVersion_TO_OBJ(obj) COM_FORWARD_IVRDEServerInfo_GETTER_ClientVersion_TO ((obj)->)
#define COM_FORWARD_IVRDEServerInfo_GETTER_ClientVersion_TO_BASE(base) COM_FORWARD_IVRDEServerInfo_GETTER_ClientVersion_TO (base::)
#define COM_FORWARD_IVRDEServerInfo_GETTER_EncryptionStyle_TO(smth) NS_IMETHOD GetEncryptionStyle (PRUint32 * aEncryptionStyle) { return smth GetEncryptionStyle (aEncryptionStyle); }
#define COM_FORWARD_IVRDEServerInfo_GETTER_EncryptionStyle_TO_OBJ(obj) COM_FORWARD_IVRDEServerInfo_GETTER_EncryptionStyle_TO ((obj)->)
#define COM_FORWARD_IVRDEServerInfo_GETTER_EncryptionStyle_TO_BASE(base) COM_FORWARD_IVRDEServerInfo_GETTER_EncryptionStyle_TO (base::)
#define COM_FORWARD_IVRDEServerInfo_TO(smth) NS_FORWARD_IVRDESERVERINFO (smth)
#define COM_FORWARD_IVRDEServerInfo_TO_OBJ(obj) COM_FORWARD_IVRDEServerInfo_TO ((obj)->)
#define COM_FORWARD_IVRDEServerInfo_TO_BASE(base) COM_FORWARD_IVRDEServerInfo_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IVRDEServerInfo;

/* starting interface:    IConsole */
#define ICONSOLE_IID_STR "8ab7c520-2442-4b66-8d74-4ff1e195d2b6"

#define ICONSOLE_IID \
  {0x8ab7c520, 0x2442, 0x4b66, \
    { 0x8d, 0x74, 0x4f, 0xf1, 0xe1, 0x95, 0xd2, 0xb6 }}

class NS_NO_VTABLE IConsole : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ICONSOLE_IID)

  /* readonly attribute IMachine machine; */
  NS_IMETHOD GetMachine(IMachine * *aMachine) = 0;

  /* readonly attribute PRUint32 state; */
  NS_IMETHOD GetState(PRUint32 *aState) = 0;

  /* readonly attribute IGuest guest; */
  NS_IMETHOD GetGuest(IGuest * *aGuest) = 0;

  /* readonly attribute IKeyboard keyboard; */
  NS_IMETHOD GetKeyboard(IKeyboard * *aKeyboard) = 0;

  /* readonly attribute IMouse mouse; */
  NS_IMETHOD GetMouse(IMouse * *aMouse) = 0;

  /* readonly attribute IDisplay display; */
  NS_IMETHOD GetDisplay(IDisplay * *aDisplay) = 0;

  /* readonly attribute IMachineDebugger debugger; */
  NS_IMETHOD GetDebugger(IMachineDebugger * *aDebugger) = 0;

  /* void getUSBDevices (out unsigned long USBDevicesSize, [array, size_is (USBDevicesSize), retval] out IUSBDevice USBDevices); */
  NS_IMETHOD GetUSBDevices(PRUint32 *USBDevicesSize, IUSBDevice ***USBDevices) = 0;

  /* void getRemoteUSBDevices (out unsigned long remoteUSBDevicesSize, [array, size_is (remoteUSBDevicesSize), retval] out IHostUSBDevice remoteUSBDevices); */
  NS_IMETHOD GetRemoteUSBDevices(PRUint32 *remoteUSBDevicesSize, IHostUSBDevice ***remoteUSBDevices) = 0;

  /* void getSharedFolders (out unsigned long sharedFoldersSize, [array, size_is (sharedFoldersSize), retval] out ISharedFolder sharedFolders); */
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders) = 0;

  /* readonly attribute IVRDEServerInfo VRDEServerInfo; */
  NS_IMETHOD GetVRDEServerInfo(IVRDEServerInfo * *aVRDEServerInfo) = 0;

  /* readonly attribute IEventSource eventSource; */
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) = 0;

  /* void getAttachedPCIDevices (out unsigned long attachedPCIDevicesSize, [array, size_is (attachedPCIDevicesSize), retval] out IPCIDeviceAttachment attachedPCIDevices); */
  NS_IMETHOD GetAttachedPCIDevices(PRUint32 *attachedPCIDevicesSize, IPCIDeviceAttachment ***attachedPCIDevices) = 0;

  /* attribute boolean useHostClipboard; */
  NS_IMETHOD GetUseHostClipboard(PRBool *aUseHostClipboard) = 0;
  NS_IMETHOD SetUseHostClipboard(PRBool aUseHostClipboard) = 0;

  /* readonly attribute IEmulatedUSB emulatedUSB; */
  NS_IMETHOD GetEmulatedUSB(IEmulatedUSB * *aEmulatedUSB) = 0;

  /* void powerUp ([retval] out IProgress progress); */
  NS_IMETHOD PowerUp(IProgress **progress) = 0;

  /* void powerUpPaused ([retval] out IProgress progress); */
  NS_IMETHOD PowerUpPaused(IProgress **progress) = 0;

  /* void powerDown ([retval] out IProgress progress); */
  NS_IMETHOD PowerDown(IProgress **progress) = 0;

  /* void reset (); */
  NS_IMETHOD Reset(void) = 0;

  /* void pause (); */
  NS_IMETHOD Pause(void) = 0;

  /* void resume (); */
  NS_IMETHOD Resume(void) = 0;

  /* void powerButton (); */
  NS_IMETHOD PowerButton(void) = 0;

  /* void sleepButton (); */
  NS_IMETHOD SleepButton(void) = 0;

  /* void getPowerButtonHandled ([retval] out boolean handled); */
  NS_IMETHOD GetPowerButtonHandled(PRBool *handled) = 0;

  /* void getGuestEnteredACPIMode ([retval] out boolean entered); */
  NS_IMETHOD GetGuestEnteredACPIMode(PRBool *entered) = 0;

  /* void saveState ([retval] out IProgress progress); */
  NS_IMETHOD SaveState(IProgress **progress) = 0;

  /* void adoptSavedState (in wstring savedStateFile); */
  NS_IMETHOD AdoptSavedState(const PRUnichar *savedStateFile) = 0;

  /* void discardSavedState (in boolean fRemoveFile); */
  NS_IMETHOD DiscardSavedState(PRBool fRemoveFile) = 0;

  /* void getDeviceActivity (in PRUint32 type, [retval] out PRUint32 activity); */
  NS_IMETHOD GetDeviceActivity(PRUint32 type, PRUint32 *activity) = 0;

  /* void attachUSBDevice (in wstring id); */
  NS_IMETHOD AttachUSBDevice(const PRUnichar *id) = 0;

  /* void detachUSBDevice (in wstring id, [retval] out IUSBDevice device); */
  NS_IMETHOD DetachUSBDevice(const PRUnichar *id, IUSBDevice **device) = 0;

  /* void findUSBDeviceByAddress (in wstring name, [retval] out IUSBDevice device); */
  NS_IMETHOD FindUSBDeviceByAddress(const PRUnichar *name, IUSBDevice **device) = 0;

  /* void findUSBDeviceById (in wstring id, [retval] out IUSBDevice device); */
  NS_IMETHOD FindUSBDeviceById(const PRUnichar *id, IUSBDevice **device) = 0;

  /* void createSharedFolder (in wstring name, in wstring hostPath, in boolean writable, in boolean automount); */
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable, PRBool automount) = 0;

  /* void removeSharedFolder (in wstring name); */
  NS_IMETHOD RemoveSharedFolder(const PRUnichar *name) = 0;

  /* void takeSnapshot (in wstring name, in wstring description, [retval] out IProgress progress); */
  NS_IMETHOD TakeSnapshot(const PRUnichar *name, const PRUnichar *description, IProgress **progress) = 0;

  /* void deleteSnapshot (in wstring id, [retval] out IProgress progress); */
  NS_IMETHOD DeleteSnapshot(const PRUnichar *id, IProgress **progress) = 0;

  /* void deleteSnapshotAndAllChildren (in wstring id, [retval] out IProgress progress); */
  NS_IMETHOD DeleteSnapshotAndAllChildren(const PRUnichar *id, IProgress **progress) = 0;

  /* void deleteSnapshotRange (in wstring startId, in wstring endId, [retval] out IProgress progress); */
  NS_IMETHOD DeleteSnapshotRange(const PRUnichar *startId, const PRUnichar *endId, IProgress **progress) = 0;

  /* void restoreSnapshot (in ISnapshot snapshot, [retval] out IProgress progress); */
  NS_IMETHOD RestoreSnapshot(ISnapshot *snapshot, IProgress **progress) = 0;

  /* void teleport (in wstring hostname, in unsigned long tcpport, in wstring password, in unsigned long maxDowntime, [retval] out IProgress progress); */
  NS_IMETHOD Teleport(const PRUnichar *hostname, PRUint32 tcpport, const PRUnichar *password, PRUint32 maxDowntime, IProgress **progress) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ICONSOLE \
  NS_IMETHOD GetMachine(IMachine * *aMachine); \
  NS_IMETHOD GetState(PRUint32 *aState); \
  NS_IMETHOD GetGuest(IGuest * *aGuest); \
  NS_IMETHOD GetKeyboard(IKeyboard * *aKeyboard); \
  NS_IMETHOD GetMouse(IMouse * *aMouse); \
  NS_IMETHOD GetDisplay(IDisplay * *aDisplay); \
  NS_IMETHOD GetDebugger(IMachineDebugger * *aDebugger); \
  NS_IMETHOD GetUSBDevices(PRUint32 *USBDevicesSize, IUSBDevice ***USBDevices); \
  NS_IMETHOD GetRemoteUSBDevices(PRUint32 *remoteUSBDevicesSize, IHostUSBDevice ***remoteUSBDevices); \
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders); \
  NS_IMETHOD GetVRDEServerInfo(IVRDEServerInfo * *aVRDEServerInfo); \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource); \
  NS_IMETHOD GetAttachedPCIDevices(PRUint32 *attachedPCIDevicesSize, IPCIDeviceAttachment ***attachedPCIDevices); \
  NS_IMETHOD GetUseHostClipboard(PRBool *aUseHostClipboard); \
  NS_IMETHOD SetUseHostClipboard(PRBool aUseHostClipboard); \
  NS_IMETHOD GetEmulatedUSB(IEmulatedUSB * *aEmulatedUSB); \
  NS_IMETHOD PowerUp(IProgress **progress); \
  NS_IMETHOD PowerUpPaused(IProgress **progress); \
  NS_IMETHOD PowerDown(IProgress **progress); \
  NS_IMETHOD Reset(void); \
  NS_IMETHOD Pause(void); \
  NS_IMETHOD Resume(void); \
  NS_IMETHOD PowerButton(void); \
  NS_IMETHOD SleepButton(void); \
  NS_IMETHOD GetPowerButtonHandled(PRBool *handled); \
  NS_IMETHOD GetGuestEnteredACPIMode(PRBool *entered); \
  NS_IMETHOD SaveState(IProgress **progress); \
  NS_IMETHOD AdoptSavedState(const PRUnichar *savedStateFile); \
  NS_IMETHOD DiscardSavedState(PRBool fRemoveFile); \
  NS_IMETHOD GetDeviceActivity(PRUint32 type, PRUint32 *activity); \
  NS_IMETHOD AttachUSBDevice(const PRUnichar *id); \
  NS_IMETHOD DetachUSBDevice(const PRUnichar *id, IUSBDevice **device); \
  NS_IMETHOD FindUSBDeviceByAddress(const PRUnichar *name, IUSBDevice **device); \
  NS_IMETHOD FindUSBDeviceById(const PRUnichar *id, IUSBDevice **device); \
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable, PRBool automount); \
  NS_IMETHOD RemoveSharedFolder(const PRUnichar *name); \
  NS_IMETHOD TakeSnapshot(const PRUnichar *name, const PRUnichar *description, IProgress **progress); \
  NS_IMETHOD DeleteSnapshot(const PRUnichar *id, IProgress **progress); \
  NS_IMETHOD DeleteSnapshotAndAllChildren(const PRUnichar *id, IProgress **progress); \
  NS_IMETHOD DeleteSnapshotRange(const PRUnichar *startId, const PRUnichar *endId, IProgress **progress); \
  NS_IMETHOD RestoreSnapshot(ISnapshot *snapshot, IProgress **progress); \
  NS_IMETHOD Teleport(const PRUnichar *hostname, PRUint32 tcpport, const PRUnichar *password, PRUint32 maxDowntime, IProgress **progress); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ICONSOLE(_to) \
  NS_IMETHOD GetMachine(IMachine * *aMachine) { return _to GetMachine(aMachine); } \
  NS_IMETHOD GetState(PRUint32 *aState) { return _to GetState(aState); } \
  NS_IMETHOD GetGuest(IGuest * *aGuest) { return _to GetGuest(aGuest); } \
  NS_IMETHOD GetKeyboard(IKeyboard * *aKeyboard) { return _to GetKeyboard(aKeyboard); } \
  NS_IMETHOD GetMouse(IMouse * *aMouse) { return _to GetMouse(aMouse); } \
  NS_IMETHOD GetDisplay(IDisplay * *aDisplay) { return _to GetDisplay(aDisplay); } \
  NS_IMETHOD GetDebugger(IMachineDebugger * *aDebugger) { return _to GetDebugger(aDebugger); } \
  NS_IMETHOD GetUSBDevices(PRUint32 *USBDevicesSize, IUSBDevice ***USBDevices) { return _to GetUSBDevices(USBDevicesSize, USBDevices); } \
  NS_IMETHOD GetRemoteUSBDevices(PRUint32 *remoteUSBDevicesSize, IHostUSBDevice ***remoteUSBDevices) { return _to GetRemoteUSBDevices(remoteUSBDevicesSize, remoteUSBDevices); } \
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders) { return _to GetSharedFolders(sharedFoldersSize, sharedFolders); } \
  NS_IMETHOD GetVRDEServerInfo(IVRDEServerInfo * *aVRDEServerInfo) { return _to GetVRDEServerInfo(aVRDEServerInfo); } \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return _to GetEventSource(aEventSource); } \
  NS_IMETHOD GetAttachedPCIDevices(PRUint32 *attachedPCIDevicesSize, IPCIDeviceAttachment ***attachedPCIDevices) { return _to GetAttachedPCIDevices(attachedPCIDevicesSize, attachedPCIDevices); } \
  NS_IMETHOD GetUseHostClipboard(PRBool *aUseHostClipboard) { return _to GetUseHostClipboard(aUseHostClipboard); } \
  NS_IMETHOD SetUseHostClipboard(PRBool aUseHostClipboard) { return _to SetUseHostClipboard(aUseHostClipboard); } \
  NS_IMETHOD GetEmulatedUSB(IEmulatedUSB * *aEmulatedUSB) { return _to GetEmulatedUSB(aEmulatedUSB); } \
  NS_IMETHOD PowerUp(IProgress **progress) { return _to PowerUp(progress); } \
  NS_IMETHOD PowerUpPaused(IProgress **progress) { return _to PowerUpPaused(progress); } \
  NS_IMETHOD PowerDown(IProgress **progress) { return _to PowerDown(progress); } \
  NS_IMETHOD Reset(void) { return _to Reset(); } \
  NS_IMETHOD Pause(void) { return _to Pause(); } \
  NS_IMETHOD Resume(void) { return _to Resume(); } \
  NS_IMETHOD PowerButton(void) { return _to PowerButton(); } \
  NS_IMETHOD SleepButton(void) { return _to SleepButton(); } \
  NS_IMETHOD GetPowerButtonHandled(PRBool *handled) { return _to GetPowerButtonHandled(handled); } \
  NS_IMETHOD GetGuestEnteredACPIMode(PRBool *entered) { return _to GetGuestEnteredACPIMode(entered); } \
  NS_IMETHOD SaveState(IProgress **progress) { return _to SaveState(progress); } \
  NS_IMETHOD AdoptSavedState(const PRUnichar *savedStateFile) { return _to AdoptSavedState(savedStateFile); } \
  NS_IMETHOD DiscardSavedState(PRBool fRemoveFile) { return _to DiscardSavedState(fRemoveFile); } \
  NS_IMETHOD GetDeviceActivity(PRUint32 type, PRUint32 *activity) { return _to GetDeviceActivity(type, activity); } \
  NS_IMETHOD AttachUSBDevice(const PRUnichar *id) { return _to AttachUSBDevice(id); } \
  NS_IMETHOD DetachUSBDevice(const PRUnichar *id, IUSBDevice **device) { return _to DetachUSBDevice(id, device); } \
  NS_IMETHOD FindUSBDeviceByAddress(const PRUnichar *name, IUSBDevice **device) { return _to FindUSBDeviceByAddress(name, device); } \
  NS_IMETHOD FindUSBDeviceById(const PRUnichar *id, IUSBDevice **device) { return _to FindUSBDeviceById(id, device); } \
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable, PRBool automount) { return _to CreateSharedFolder(name, hostPath, writable, automount); } \
  NS_IMETHOD RemoveSharedFolder(const PRUnichar *name) { return _to RemoveSharedFolder(name); } \
  NS_IMETHOD TakeSnapshot(const PRUnichar *name, const PRUnichar *description, IProgress **progress) { return _to TakeSnapshot(name, description, progress); } \
  NS_IMETHOD DeleteSnapshot(const PRUnichar *id, IProgress **progress) { return _to DeleteSnapshot(id, progress); } \
  NS_IMETHOD DeleteSnapshotAndAllChildren(const PRUnichar *id, IProgress **progress) { return _to DeleteSnapshotAndAllChildren(id, progress); } \
  NS_IMETHOD DeleteSnapshotRange(const PRUnichar *startId, const PRUnichar *endId, IProgress **progress) { return _to DeleteSnapshotRange(startId, endId, progress); } \
  NS_IMETHOD RestoreSnapshot(ISnapshot *snapshot, IProgress **progress) { return _to RestoreSnapshot(snapshot, progress); } \
  NS_IMETHOD Teleport(const PRUnichar *hostname, PRUint32 tcpport, const PRUnichar *password, PRUint32 maxDowntime, IProgress **progress) { return _to Teleport(hostname, tcpport, password, maxDowntime, progress); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ICONSOLE(_to) \
  NS_IMETHOD GetMachine(IMachine * *aMachine) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMachine(aMachine); } \
  NS_IMETHOD GetState(PRUint32 *aState) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetState(aState); } \
  NS_IMETHOD GetGuest(IGuest * *aGuest) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGuest(aGuest); } \
  NS_IMETHOD GetKeyboard(IKeyboard * *aKeyboard) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetKeyboard(aKeyboard); } \
  NS_IMETHOD GetMouse(IMouse * *aMouse) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMouse(aMouse); } \
  NS_IMETHOD GetDisplay(IDisplay * *aDisplay) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDisplay(aDisplay); } \
  NS_IMETHOD GetDebugger(IMachineDebugger * *aDebugger) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDebugger(aDebugger); } \
  NS_IMETHOD GetUSBDevices(PRUint32 *USBDevicesSize, IUSBDevice ***USBDevices) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUSBDevices(USBDevicesSize, USBDevices); } \
  NS_IMETHOD GetRemoteUSBDevices(PRUint32 *remoteUSBDevicesSize, IHostUSBDevice ***remoteUSBDevices) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRemoteUSBDevices(remoteUSBDevicesSize, remoteUSBDevices); } \
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSharedFolders(sharedFoldersSize, sharedFolders); } \
  NS_IMETHOD GetVRDEServerInfo(IVRDEServerInfo * *aVRDEServerInfo) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVRDEServerInfo(aVRDEServerInfo); } \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEventSource(aEventSource); } \
  NS_IMETHOD GetAttachedPCIDevices(PRUint32 *attachedPCIDevicesSize, IPCIDeviceAttachment ***attachedPCIDevices) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAttachedPCIDevices(attachedPCIDevicesSize, attachedPCIDevices); } \
  NS_IMETHOD GetUseHostClipboard(PRBool *aUseHostClipboard) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUseHostClipboard(aUseHostClipboard); } \
  NS_IMETHOD SetUseHostClipboard(PRBool aUseHostClipboard) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetUseHostClipboard(aUseHostClipboard); } \
  NS_IMETHOD GetEmulatedUSB(IEmulatedUSB * *aEmulatedUSB) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEmulatedUSB(aEmulatedUSB); } \
  NS_IMETHOD PowerUp(IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->PowerUp(progress); } \
  NS_IMETHOD PowerUpPaused(IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->PowerUpPaused(progress); } \
  NS_IMETHOD PowerDown(IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->PowerDown(progress); } \
  NS_IMETHOD Reset(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Reset(); } \
  NS_IMETHOD Pause(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Pause(); } \
  NS_IMETHOD Resume(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Resume(); } \
  NS_IMETHOD PowerButton(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->PowerButton(); } \
  NS_IMETHOD SleepButton(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->SleepButton(); } \
  NS_IMETHOD GetPowerButtonHandled(PRBool *handled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPowerButtonHandled(handled); } \
  NS_IMETHOD GetGuestEnteredACPIMode(PRBool *entered) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGuestEnteredACPIMode(entered); } \
  NS_IMETHOD SaveState(IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->SaveState(progress); } \
  NS_IMETHOD AdoptSavedState(const PRUnichar *savedStateFile) { return !_to ? NS_ERROR_NULL_POINTER : _to->AdoptSavedState(savedStateFile); } \
  NS_IMETHOD DiscardSavedState(PRBool fRemoveFile) { return !_to ? NS_ERROR_NULL_POINTER : _to->DiscardSavedState(fRemoveFile); } \
  NS_IMETHOD GetDeviceActivity(PRUint32 type, PRUint32 *activity) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDeviceActivity(type, activity); } \
  NS_IMETHOD AttachUSBDevice(const PRUnichar *id) { return !_to ? NS_ERROR_NULL_POINTER : _to->AttachUSBDevice(id); } \
  NS_IMETHOD DetachUSBDevice(const PRUnichar *id, IUSBDevice **device) { return !_to ? NS_ERROR_NULL_POINTER : _to->DetachUSBDevice(id, device); } \
  NS_IMETHOD FindUSBDeviceByAddress(const PRUnichar *name, IUSBDevice **device) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindUSBDeviceByAddress(name, device); } \
  NS_IMETHOD FindUSBDeviceById(const PRUnichar *id, IUSBDevice **device) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindUSBDeviceById(id, device); } \
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable, PRBool automount) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateSharedFolder(name, hostPath, writable, automount); } \
  NS_IMETHOD RemoveSharedFolder(const PRUnichar *name) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveSharedFolder(name); } \
  NS_IMETHOD TakeSnapshot(const PRUnichar *name, const PRUnichar *description, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->TakeSnapshot(name, description, progress); } \
  NS_IMETHOD DeleteSnapshot(const PRUnichar *id, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteSnapshot(id, progress); } \
  NS_IMETHOD DeleteSnapshotAndAllChildren(const PRUnichar *id, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteSnapshotAndAllChildren(id, progress); } \
  NS_IMETHOD DeleteSnapshotRange(const PRUnichar *startId, const PRUnichar *endId, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteSnapshotRange(startId, endId, progress); } \
  NS_IMETHOD RestoreSnapshot(ISnapshot *snapshot, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->RestoreSnapshot(snapshot, progress); } \
  NS_IMETHOD Teleport(const PRUnichar *hostname, PRUint32 tcpport, const PRUnichar *password, PRUint32 maxDowntime, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Teleport(hostname, tcpport, password, maxDowntime, progress); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IConsole
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ICONSOLE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IConsole)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute IMachine machine; */
NS_IMETHODIMP _MYCLASS_::GetMachine(IMachine * *aMachine)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 state; */
NS_IMETHODIMP _MYCLASS_::GetState(PRUint32 *aState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IGuest guest; */
NS_IMETHODIMP _MYCLASS_::GetGuest(IGuest * *aGuest)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IKeyboard keyboard; */
NS_IMETHODIMP _MYCLASS_::GetKeyboard(IKeyboard * *aKeyboard)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IMouse mouse; */
NS_IMETHODIMP _MYCLASS_::GetMouse(IMouse * *aMouse)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IDisplay display; */
NS_IMETHODIMP _MYCLASS_::GetDisplay(IDisplay * *aDisplay)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IMachineDebugger debugger; */
NS_IMETHODIMP _MYCLASS_::GetDebugger(IMachineDebugger * *aDebugger)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getUSBDevices (out unsigned long USBDevicesSize, [array, size_is (USBDevicesSize), retval] out IUSBDevice USBDevices); */
NS_IMETHODIMP _MYCLASS_::GetUSBDevices(PRUint32 *USBDevicesSize, IUSBDevice ***USBDevices)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getRemoteUSBDevices (out unsigned long remoteUSBDevicesSize, [array, size_is (remoteUSBDevicesSize), retval] out IHostUSBDevice remoteUSBDevices); */
NS_IMETHODIMP _MYCLASS_::GetRemoteUSBDevices(PRUint32 *remoteUSBDevicesSize, IHostUSBDevice ***remoteUSBDevices)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getSharedFolders (out unsigned long sharedFoldersSize, [array, size_is (sharedFoldersSize), retval] out ISharedFolder sharedFolders); */
NS_IMETHODIMP _MYCLASS_::GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IVRDEServerInfo VRDEServerInfo; */
NS_IMETHODIMP _MYCLASS_::GetVRDEServerInfo(IVRDEServerInfo * *aVRDEServerInfo)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IEventSource eventSource; */
NS_IMETHODIMP _MYCLASS_::GetEventSource(IEventSource * *aEventSource)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getAttachedPCIDevices (out unsigned long attachedPCIDevicesSize, [array, size_is (attachedPCIDevicesSize), retval] out IPCIDeviceAttachment attachedPCIDevices); */
NS_IMETHODIMP _MYCLASS_::GetAttachedPCIDevices(PRUint32 *attachedPCIDevicesSize, IPCIDeviceAttachment ***attachedPCIDevices)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean useHostClipboard; */
NS_IMETHODIMP _MYCLASS_::GetUseHostClipboard(PRBool *aUseHostClipboard)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetUseHostClipboard(PRBool aUseHostClipboard)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IEmulatedUSB emulatedUSB; */
NS_IMETHODIMP _MYCLASS_::GetEmulatedUSB(IEmulatedUSB * *aEmulatedUSB)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void powerUp ([retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::PowerUp(IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void powerUpPaused ([retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::PowerUpPaused(IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void powerDown ([retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::PowerDown(IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void reset (); */
NS_IMETHODIMP _MYCLASS_::Reset()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void pause (); */
NS_IMETHODIMP _MYCLASS_::Pause()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void resume (); */
NS_IMETHODIMP _MYCLASS_::Resume()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void powerButton (); */
NS_IMETHODIMP _MYCLASS_::PowerButton()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void sleepButton (); */
NS_IMETHODIMP _MYCLASS_::SleepButton()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getPowerButtonHandled ([retval] out boolean handled); */
NS_IMETHODIMP _MYCLASS_::GetPowerButtonHandled(PRBool *handled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getGuestEnteredACPIMode ([retval] out boolean entered); */
NS_IMETHODIMP _MYCLASS_::GetGuestEnteredACPIMode(PRBool *entered)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void saveState ([retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::SaveState(IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void adoptSavedState (in wstring savedStateFile); */
NS_IMETHODIMP _MYCLASS_::AdoptSavedState(const PRUnichar *savedStateFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void discardSavedState (in boolean fRemoveFile); */
NS_IMETHODIMP _MYCLASS_::DiscardSavedState(PRBool fRemoveFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getDeviceActivity (in PRUint32 type, [retval] out PRUint32 activity); */
NS_IMETHODIMP _MYCLASS_::GetDeviceActivity(PRUint32 type, PRUint32 *activity)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void attachUSBDevice (in wstring id); */
NS_IMETHODIMP _MYCLASS_::AttachUSBDevice(const PRUnichar *id)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void detachUSBDevice (in wstring id, [retval] out IUSBDevice device); */
NS_IMETHODIMP _MYCLASS_::DetachUSBDevice(const PRUnichar *id, IUSBDevice **device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findUSBDeviceByAddress (in wstring name, [retval] out IUSBDevice device); */
NS_IMETHODIMP _MYCLASS_::FindUSBDeviceByAddress(const PRUnichar *name, IUSBDevice **device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findUSBDeviceById (in wstring id, [retval] out IUSBDevice device); */
NS_IMETHODIMP _MYCLASS_::FindUSBDeviceById(const PRUnichar *id, IUSBDevice **device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createSharedFolder (in wstring name, in wstring hostPath, in boolean writable, in boolean automount); */
NS_IMETHODIMP _MYCLASS_::CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable, PRBool automount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeSharedFolder (in wstring name); */
NS_IMETHODIMP _MYCLASS_::RemoveSharedFolder(const PRUnichar *name)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void takeSnapshot (in wstring name, in wstring description, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::TakeSnapshot(const PRUnichar *name, const PRUnichar *description, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteSnapshot (in wstring id, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::DeleteSnapshot(const PRUnichar *id, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteSnapshotAndAllChildren (in wstring id, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::DeleteSnapshotAndAllChildren(const PRUnichar *id, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteSnapshotRange (in wstring startId, in wstring endId, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::DeleteSnapshotRange(const PRUnichar *startId, const PRUnichar *endId, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void restoreSnapshot (in ISnapshot snapshot, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::RestoreSnapshot(ISnapshot *snapshot, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void teleport (in wstring hostname, in unsigned long tcpport, in wstring password, in unsigned long maxDowntime, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::Teleport(const PRUnichar *hostname, PRUint32 tcpport, const PRUnichar *password, PRUint32 maxDowntime, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IConsole_GETTER_Machine_TO(smth) NS_IMETHOD GetMachine (IMachine * * aMachine) { return smth GetMachine (aMachine); }
#define COM_FORWARD_IConsole_GETTER_Machine_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_Machine_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_Machine_TO_BASE(base) COM_FORWARD_IConsole_GETTER_Machine_TO (base::)
#define COM_FORWARD_IConsole_GETTER_State_TO(smth) NS_IMETHOD GetState (PRUint32 * aState) { return smth GetState (aState); }
#define COM_FORWARD_IConsole_GETTER_State_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_State_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_State_TO_BASE(base) COM_FORWARD_IConsole_GETTER_State_TO (base::)
#define COM_FORWARD_IConsole_GETTER_Guest_TO(smth) NS_IMETHOD GetGuest (IGuest * * aGuest) { return smth GetGuest (aGuest); }
#define COM_FORWARD_IConsole_GETTER_Guest_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_Guest_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_Guest_TO_BASE(base) COM_FORWARD_IConsole_GETTER_Guest_TO (base::)
#define COM_FORWARD_IConsole_GETTER_Keyboard_TO(smth) NS_IMETHOD GetKeyboard (IKeyboard * * aKeyboard) { return smth GetKeyboard (aKeyboard); }
#define COM_FORWARD_IConsole_GETTER_Keyboard_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_Keyboard_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_Keyboard_TO_BASE(base) COM_FORWARD_IConsole_GETTER_Keyboard_TO (base::)
#define COM_FORWARD_IConsole_GETTER_Mouse_TO(smth) NS_IMETHOD GetMouse (IMouse * * aMouse) { return smth GetMouse (aMouse); }
#define COM_FORWARD_IConsole_GETTER_Mouse_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_Mouse_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_Mouse_TO_BASE(base) COM_FORWARD_IConsole_GETTER_Mouse_TO (base::)
#define COM_FORWARD_IConsole_GETTER_Display_TO(smth) NS_IMETHOD GetDisplay (IDisplay * * aDisplay) { return smth GetDisplay (aDisplay); }
#define COM_FORWARD_IConsole_GETTER_Display_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_Display_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_Display_TO_BASE(base) COM_FORWARD_IConsole_GETTER_Display_TO (base::)
#define COM_FORWARD_IConsole_GETTER_Debugger_TO(smth) NS_IMETHOD GetDebugger (IMachineDebugger * * aDebugger) { return smth GetDebugger (aDebugger); }
#define COM_FORWARD_IConsole_GETTER_Debugger_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_Debugger_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_Debugger_TO_BASE(base) COM_FORWARD_IConsole_GETTER_Debugger_TO (base::)
#define COM_FORWARD_IConsole_GETTER_USBDevices_TO(smth) NS_IMETHOD GetUSBDevices (PRUint32 * aUSBDevicesSize, IUSBDevice * * * aUSBDevices) { return smth GetUSBDevices (aUSBDevicesSize, aUSBDevices); }
#define COM_FORWARD_IConsole_GETTER_USBDevices_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_USBDevices_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_USBDevices_TO_BASE(base) COM_FORWARD_IConsole_GETTER_USBDevices_TO (base::)
#define COM_FORWARD_IConsole_GETTER_RemoteUSBDevices_TO(smth) NS_IMETHOD GetRemoteUSBDevices (PRUint32 * aRemoteUSBDevicesSize, IHostUSBDevice * * * aRemoteUSBDevices) { return smth GetRemoteUSBDevices (aRemoteUSBDevicesSize, aRemoteUSBDevices); }
#define COM_FORWARD_IConsole_GETTER_RemoteUSBDevices_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_RemoteUSBDevices_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_RemoteUSBDevices_TO_BASE(base) COM_FORWARD_IConsole_GETTER_RemoteUSBDevices_TO (base::)
#define COM_FORWARD_IConsole_GETTER_SharedFolders_TO(smth) NS_IMETHOD GetSharedFolders (PRUint32 * aSharedFoldersSize, ISharedFolder * * * aSharedFolders) { return smth GetSharedFolders (aSharedFoldersSize, aSharedFolders); }
#define COM_FORWARD_IConsole_GETTER_SharedFolders_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_SharedFolders_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_SharedFolders_TO_BASE(base) COM_FORWARD_IConsole_GETTER_SharedFolders_TO (base::)
#define COM_FORWARD_IConsole_GETTER_VRDEServerInfo_TO(smth) NS_IMETHOD GetVRDEServerInfo (IVRDEServerInfo * * aVRDEServerInfo) { return smth GetVRDEServerInfo (aVRDEServerInfo); }
#define COM_FORWARD_IConsole_GETTER_VRDEServerInfo_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_VRDEServerInfo_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_VRDEServerInfo_TO_BASE(base) COM_FORWARD_IConsole_GETTER_VRDEServerInfo_TO (base::)
#define COM_FORWARD_IConsole_GETTER_EventSource_TO(smth) NS_IMETHOD GetEventSource (IEventSource * * aEventSource) { return smth GetEventSource (aEventSource); }
#define COM_FORWARD_IConsole_GETTER_EventSource_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_EventSource_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_EventSource_TO_BASE(base) COM_FORWARD_IConsole_GETTER_EventSource_TO (base::)
#define COM_FORWARD_IConsole_GETTER_AttachedPCIDevices_TO(smth) NS_IMETHOD GetAttachedPCIDevices (PRUint32 * aAttachedPCIDevicesSize, IPCIDeviceAttachment * * * aAttachedPCIDevices) { return smth GetAttachedPCIDevices (aAttachedPCIDevicesSize, aAttachedPCIDevices); }
#define COM_FORWARD_IConsole_GETTER_AttachedPCIDevices_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_AttachedPCIDevices_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_AttachedPCIDevices_TO_BASE(base) COM_FORWARD_IConsole_GETTER_AttachedPCIDevices_TO (base::)
#define COM_FORWARD_IConsole_GETTER_UseHostClipboard_TO(smth) NS_IMETHOD GetUseHostClipboard (PRBool * aUseHostClipboard) { return smth GetUseHostClipboard (aUseHostClipboard); }
#define COM_FORWARD_IConsole_GETTER_UseHostClipboard_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_UseHostClipboard_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_UseHostClipboard_TO_BASE(base) COM_FORWARD_IConsole_GETTER_UseHostClipboard_TO (base::)
#define COM_FORWARD_IConsole_SETTER_UseHostClipboard_TO(smth) NS_IMETHOD SetUseHostClipboard (PRBool aUseHostClipboard) { return smth SetUseHostClipboard (aUseHostClipboard); }
#define COM_FORWARD_IConsole_SETTER_UseHostClipboard_TO_OBJ(obj) COM_FORWARD_IConsole_SETTER_UseHostClipboard_TO ((obj)->)
#define COM_FORWARD_IConsole_SETTER_UseHostClipboard_TO_BASE(base) COM_FORWARD_IConsole_SETTER_UseHostClipboard_TO (base::)
#define COM_FORWARD_IConsole_GETTER_EmulatedUSB_TO(smth) NS_IMETHOD GetEmulatedUSB (IEmulatedUSB * * aEmulatedUSB) { return smth GetEmulatedUSB (aEmulatedUSB); }
#define COM_FORWARD_IConsole_GETTER_EmulatedUSB_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_EmulatedUSB_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_EmulatedUSB_TO_BASE(base) COM_FORWARD_IConsole_GETTER_EmulatedUSB_TO (base::)
#define COM_FORWARD_IConsole_PowerUp_TO(smth) NS_IMETHOD PowerUp (IProgress * * aProgress) { return smth PowerUp (aProgress); }
#define COM_FORWARD_IConsole_PowerUp_TO_OBJ(obj) COM_FORWARD_IConsole_PowerUp_TO ((obj)->)
#define COM_FORWARD_IConsole_PowerUp_TO_BASE(base) COM_FORWARD_IConsole_PowerUp_TO (base::)
#define COM_FORWARD_IConsole_PowerUpPaused_TO(smth) NS_IMETHOD PowerUpPaused (IProgress * * aProgress) { return smth PowerUpPaused (aProgress); }
#define COM_FORWARD_IConsole_PowerUpPaused_TO_OBJ(obj) COM_FORWARD_IConsole_PowerUpPaused_TO ((obj)->)
#define COM_FORWARD_IConsole_PowerUpPaused_TO_BASE(base) COM_FORWARD_IConsole_PowerUpPaused_TO (base::)
#define COM_FORWARD_IConsole_PowerDown_TO(smth) NS_IMETHOD PowerDown (IProgress * * aProgress) { return smth PowerDown (aProgress); }
#define COM_FORWARD_IConsole_PowerDown_TO_OBJ(obj) COM_FORWARD_IConsole_PowerDown_TO ((obj)->)
#define COM_FORWARD_IConsole_PowerDown_TO_BASE(base) COM_FORWARD_IConsole_PowerDown_TO (base::)
#define COM_FORWARD_IConsole_Reset_TO(smth) NS_IMETHOD Reset() { return smth Reset(); }
#define COM_FORWARD_IConsole_Reset_TO_OBJ(obj) COM_FORWARD_IConsole_Reset_TO ((obj)->)
#define COM_FORWARD_IConsole_Reset_TO_BASE(base) COM_FORWARD_IConsole_Reset_TO (base::)
#define COM_FORWARD_IConsole_Pause_TO(smth) NS_IMETHOD Pause() { return smth Pause(); }
#define COM_FORWARD_IConsole_Pause_TO_OBJ(obj) COM_FORWARD_IConsole_Pause_TO ((obj)->)
#define COM_FORWARD_IConsole_Pause_TO_BASE(base) COM_FORWARD_IConsole_Pause_TO (base::)
#define COM_FORWARD_IConsole_Resume_TO(smth) NS_IMETHOD Resume() { return smth Resume(); }
#define COM_FORWARD_IConsole_Resume_TO_OBJ(obj) COM_FORWARD_IConsole_Resume_TO ((obj)->)
#define COM_FORWARD_IConsole_Resume_TO_BASE(base) COM_FORWARD_IConsole_Resume_TO (base::)
#define COM_FORWARD_IConsole_PowerButton_TO(smth) NS_IMETHOD PowerButton() { return smth PowerButton(); }
#define COM_FORWARD_IConsole_PowerButton_TO_OBJ(obj) COM_FORWARD_IConsole_PowerButton_TO ((obj)->)
#define COM_FORWARD_IConsole_PowerButton_TO_BASE(base) COM_FORWARD_IConsole_PowerButton_TO (base::)
#define COM_FORWARD_IConsole_SleepButton_TO(smth) NS_IMETHOD SleepButton() { return smth SleepButton(); }
#define COM_FORWARD_IConsole_SleepButton_TO_OBJ(obj) COM_FORWARD_IConsole_SleepButton_TO ((obj)->)
#define COM_FORWARD_IConsole_SleepButton_TO_BASE(base) COM_FORWARD_IConsole_SleepButton_TO (base::)
#define COM_FORWARD_IConsole_GetPowerButtonHandled_TO(smth) NS_IMETHOD GetPowerButtonHandled (PRBool * aHandled) { return smth GetPowerButtonHandled (aHandled); }
#define COM_FORWARD_IConsole_GetPowerButtonHandled_TO_OBJ(obj) COM_FORWARD_IConsole_GetPowerButtonHandled_TO ((obj)->)
#define COM_FORWARD_IConsole_GetPowerButtonHandled_TO_BASE(base) COM_FORWARD_IConsole_GetPowerButtonHandled_TO (base::)
#define COM_FORWARD_IConsole_GetGuestEnteredACPIMode_TO(smth) NS_IMETHOD GetGuestEnteredACPIMode (PRBool * aEntered) { return smth GetGuestEnteredACPIMode (aEntered); }
#define COM_FORWARD_IConsole_GetGuestEnteredACPIMode_TO_OBJ(obj) COM_FORWARD_IConsole_GetGuestEnteredACPIMode_TO ((obj)->)
#define COM_FORWARD_IConsole_GetGuestEnteredACPIMode_TO_BASE(base) COM_FORWARD_IConsole_GetGuestEnteredACPIMode_TO (base::)
#define COM_FORWARD_IConsole_SaveState_TO(smth) NS_IMETHOD SaveState (IProgress * * aProgress) { return smth SaveState (aProgress); }
#define COM_FORWARD_IConsole_SaveState_TO_OBJ(obj) COM_FORWARD_IConsole_SaveState_TO ((obj)->)
#define COM_FORWARD_IConsole_SaveState_TO_BASE(base) COM_FORWARD_IConsole_SaveState_TO (base::)
#define COM_FORWARD_IConsole_AdoptSavedState_TO(smth) NS_IMETHOD AdoptSavedState (PRUnichar * aSavedStateFile) { return smth AdoptSavedState (aSavedStateFile); }
#define COM_FORWARD_IConsole_AdoptSavedState_TO_OBJ(obj) COM_FORWARD_IConsole_AdoptSavedState_TO ((obj)->)
#define COM_FORWARD_IConsole_AdoptSavedState_TO_BASE(base) COM_FORWARD_IConsole_AdoptSavedState_TO (base::)
#define COM_FORWARD_IConsole_DiscardSavedState_TO(smth) NS_IMETHOD DiscardSavedState (PRBool aFRemoveFile) { return smth DiscardSavedState (aFRemoveFile); }
#define COM_FORWARD_IConsole_DiscardSavedState_TO_OBJ(obj) COM_FORWARD_IConsole_DiscardSavedState_TO ((obj)->)
#define COM_FORWARD_IConsole_DiscardSavedState_TO_BASE(base) COM_FORWARD_IConsole_DiscardSavedState_TO (base::)
#define COM_FORWARD_IConsole_GetDeviceActivity_TO(smth) NS_IMETHOD GetDeviceActivity (PRUint32 aType, PRUint32 * aActivity) { return smth GetDeviceActivity (aType, aActivity); }
#define COM_FORWARD_IConsole_GetDeviceActivity_TO_OBJ(obj) COM_FORWARD_IConsole_GetDeviceActivity_TO ((obj)->)
#define COM_FORWARD_IConsole_GetDeviceActivity_TO_BASE(base) COM_FORWARD_IConsole_GetDeviceActivity_TO (base::)
#define COM_FORWARD_IConsole_AttachUSBDevice_TO(smth) NS_IMETHOD AttachUSBDevice (PRUnichar * aId) { return smth AttachUSBDevice (aId); }
#define COM_FORWARD_IConsole_AttachUSBDevice_TO_OBJ(obj) COM_FORWARD_IConsole_AttachUSBDevice_TO ((obj)->)
#define COM_FORWARD_IConsole_AttachUSBDevice_TO_BASE(base) COM_FORWARD_IConsole_AttachUSBDevice_TO (base::)
#define COM_FORWARD_IConsole_DetachUSBDevice_TO(smth) NS_IMETHOD DetachUSBDevice (PRUnichar * aId, IUSBDevice * * aDevice) { return smth DetachUSBDevice (aId, aDevice); }
#define COM_FORWARD_IConsole_DetachUSBDevice_TO_OBJ(obj) COM_FORWARD_IConsole_DetachUSBDevice_TO ((obj)->)
#define COM_FORWARD_IConsole_DetachUSBDevice_TO_BASE(base) COM_FORWARD_IConsole_DetachUSBDevice_TO (base::)
#define COM_FORWARD_IConsole_FindUSBDeviceByAddress_TO(smth) NS_IMETHOD FindUSBDeviceByAddress (PRUnichar * aName, IUSBDevice * * aDevice) { return smth FindUSBDeviceByAddress (aName, aDevice); }
#define COM_FORWARD_IConsole_FindUSBDeviceByAddress_TO_OBJ(obj) COM_FORWARD_IConsole_FindUSBDeviceByAddress_TO ((obj)->)
#define COM_FORWARD_IConsole_FindUSBDeviceByAddress_TO_BASE(base) COM_FORWARD_IConsole_FindUSBDeviceByAddress_TO (base::)
#define COM_FORWARD_IConsole_FindUSBDeviceById_TO(smth) NS_IMETHOD FindUSBDeviceById (PRUnichar * aId, IUSBDevice * * aDevice) { return smth FindUSBDeviceById (aId, aDevice); }
#define COM_FORWARD_IConsole_FindUSBDeviceById_TO_OBJ(obj) COM_FORWARD_IConsole_FindUSBDeviceById_TO ((obj)->)
#define COM_FORWARD_IConsole_FindUSBDeviceById_TO_BASE(base) COM_FORWARD_IConsole_FindUSBDeviceById_TO (base::)
#define COM_FORWARD_IConsole_CreateSharedFolder_TO(smth) NS_IMETHOD CreateSharedFolder (PRUnichar * aName, PRUnichar * aHostPath, PRBool aWritable, PRBool aAutomount) { return smth CreateSharedFolder (aName, aHostPath, aWritable, aAutomount); }
#define COM_FORWARD_IConsole_CreateSharedFolder_TO_OBJ(obj) COM_FORWARD_IConsole_CreateSharedFolder_TO ((obj)->)
#define COM_FORWARD_IConsole_CreateSharedFolder_TO_BASE(base) COM_FORWARD_IConsole_CreateSharedFolder_TO (base::)
#define COM_FORWARD_IConsole_RemoveSharedFolder_TO(smth) NS_IMETHOD RemoveSharedFolder (PRUnichar * aName) { return smth RemoveSharedFolder (aName); }
#define COM_FORWARD_IConsole_RemoveSharedFolder_TO_OBJ(obj) COM_FORWARD_IConsole_RemoveSharedFolder_TO ((obj)->)
#define COM_FORWARD_IConsole_RemoveSharedFolder_TO_BASE(base) COM_FORWARD_IConsole_RemoveSharedFolder_TO (base::)
#define COM_FORWARD_IConsole_TakeSnapshot_TO(smth) NS_IMETHOD TakeSnapshot (PRUnichar * aName, PRUnichar * aDescription, IProgress * * aProgress) { return smth TakeSnapshot (aName, aDescription, aProgress); }
#define COM_FORWARD_IConsole_TakeSnapshot_TO_OBJ(obj) COM_FORWARD_IConsole_TakeSnapshot_TO ((obj)->)
#define COM_FORWARD_IConsole_TakeSnapshot_TO_BASE(base) COM_FORWARD_IConsole_TakeSnapshot_TO (base::)
#define COM_FORWARD_IConsole_DeleteSnapshot_TO(smth) NS_IMETHOD DeleteSnapshot (PRUnichar * aId, IProgress * * aProgress) { return smth DeleteSnapshot (aId, aProgress); }
#define COM_FORWARD_IConsole_DeleteSnapshot_TO_OBJ(obj) COM_FORWARD_IConsole_DeleteSnapshot_TO ((obj)->)
#define COM_FORWARD_IConsole_DeleteSnapshot_TO_BASE(base) COM_FORWARD_IConsole_DeleteSnapshot_TO (base::)
#define COM_FORWARD_IConsole_DeleteSnapshotAndAllChildren_TO(smth) NS_IMETHOD DeleteSnapshotAndAllChildren (PRUnichar * aId, IProgress * * aProgress) { return smth DeleteSnapshotAndAllChildren (aId, aProgress); }
#define COM_FORWARD_IConsole_DeleteSnapshotAndAllChildren_TO_OBJ(obj) COM_FORWARD_IConsole_DeleteSnapshotAndAllChildren_TO ((obj)->)
#define COM_FORWARD_IConsole_DeleteSnapshotAndAllChildren_TO_BASE(base) COM_FORWARD_IConsole_DeleteSnapshotAndAllChildren_TO (base::)
#define COM_FORWARD_IConsole_DeleteSnapshotRange_TO(smth) NS_IMETHOD DeleteSnapshotRange (PRUnichar * aStartId, PRUnichar * aEndId, IProgress * * aProgress) { return smth DeleteSnapshotRange (aStartId, aEndId, aProgress); }
#define COM_FORWARD_IConsole_DeleteSnapshotRange_TO_OBJ(obj) COM_FORWARD_IConsole_DeleteSnapshotRange_TO ((obj)->)
#define COM_FORWARD_IConsole_DeleteSnapshotRange_TO_BASE(base) COM_FORWARD_IConsole_DeleteSnapshotRange_TO (base::)
#define COM_FORWARD_IConsole_RestoreSnapshot_TO(smth) NS_IMETHOD RestoreSnapshot (ISnapshot * aSnapshot, IProgress * * aProgress) { return smth RestoreSnapshot (aSnapshot, aProgress); }
#define COM_FORWARD_IConsole_RestoreSnapshot_TO_OBJ(obj) COM_FORWARD_IConsole_RestoreSnapshot_TO ((obj)->)
#define COM_FORWARD_IConsole_RestoreSnapshot_TO_BASE(base) COM_FORWARD_IConsole_RestoreSnapshot_TO (base::)
#define COM_FORWARD_IConsole_Teleport_TO(smth) NS_IMETHOD Teleport (PRUnichar * aHostname, PRUint32 aTcpport, PRUnichar * aPassword, PRUint32 aMaxDowntime, IProgress * * aProgress) { return smth Teleport (aHostname, aTcpport, aPassword, aMaxDowntime, aProgress); }
#define COM_FORWARD_IConsole_Teleport_TO_OBJ(obj) COM_FORWARD_IConsole_Teleport_TO ((obj)->)
#define COM_FORWARD_IConsole_Teleport_TO_BASE(base) COM_FORWARD_IConsole_Teleport_TO (base::)
#define COM_FORWARD_IConsole_TO(smth) NS_FORWARD_ICONSOLE (smth)
#define COM_FORWARD_IConsole_TO_OBJ(obj) COM_FORWARD_IConsole_TO ((obj)->)
#define COM_FORWARD_IConsole_TO_BASE(base) COM_FORWARD_IConsole_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IConsole;

/* starting interface:    IHostNetworkInterface */
#define IHOSTNETWORKINTERFACE_IID_STR "f6e556f9-d598-409b-898c-8ba99d9b05ae"

#define IHOSTNETWORKINTERFACE_IID \
  {0xf6e556f9, 0xd598, 0x409b, \
    { 0x89, 0x8c, 0x8b, 0xa9, 0x9d, 0x9b, 0x05, 0xae }}

class NS_NO_VTABLE IHostNetworkInterface : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOSTNETWORKINTERFACE_IID)

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* readonly attribute wstring shortName; */
  NS_IMETHOD GetShortName(PRUnichar * *aShortName) = 0;

  /* readonly attribute wstring id; */
  NS_IMETHOD GetId(PRUnichar * *aId) = 0;

  /* readonly attribute wstring networkName; */
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName) = 0;

  /* readonly attribute boolean DHCPEnabled; */
  NS_IMETHOD GetDHCPEnabled(PRBool *aDHCPEnabled) = 0;

  /* readonly attribute wstring IPAddress; */
  NS_IMETHOD GetIPAddress(PRUnichar * *aIPAddress) = 0;

  /* readonly attribute wstring networkMask; */
  NS_IMETHOD GetNetworkMask(PRUnichar * *aNetworkMask) = 0;

  /* readonly attribute boolean IPV6Supported; */
  NS_IMETHOD GetIPV6Supported(PRBool *aIPV6Supported) = 0;

  /* readonly attribute wstring IPV6Address; */
  NS_IMETHOD GetIPV6Address(PRUnichar * *aIPV6Address) = 0;

  /* readonly attribute unsigned long IPV6NetworkMaskPrefixLength; */
  NS_IMETHOD GetIPV6NetworkMaskPrefixLength(PRUint32 *aIPV6NetworkMaskPrefixLength) = 0;

  /* readonly attribute wstring hardwareAddress; */
  NS_IMETHOD GetHardwareAddress(PRUnichar * *aHardwareAddress) = 0;

  /* readonly attribute PRUint32 mediumType; */
  NS_IMETHOD GetMediumType(PRUint32 *aMediumType) = 0;

  /* readonly attribute PRUint32 status; */
  NS_IMETHOD GetStatus(PRUint32 *aStatus) = 0;

  /* readonly attribute PRUint32 interfaceType; */
  NS_IMETHOD GetInterfaceType(PRUint32 *aInterfaceType) = 0;

  /* void enableStaticIPConfig (in wstring IPAddress, in wstring networkMask); */
  NS_IMETHOD EnableStaticIPConfig(const PRUnichar *IPAddress, const PRUnichar *networkMask) = 0;

  /* void enableStaticIPConfigV6 (in wstring IPV6Address, in unsigned long IPV6NetworkMaskPrefixLength); */
  NS_IMETHOD EnableStaticIPConfigV6(const PRUnichar *IPV6Address, PRUint32 IPV6NetworkMaskPrefixLength) = 0;

  /* void enableDynamicIPConfig (); */
  NS_IMETHOD EnableDynamicIPConfig(void) = 0;

  /* void DHCPRediscover (); */
  NS_IMETHOD DHCPRediscover(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOSTNETWORKINTERFACE \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetShortName(PRUnichar * *aShortName); \
  NS_IMETHOD GetId(PRUnichar * *aId); \
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName); \
  NS_IMETHOD GetDHCPEnabled(PRBool *aDHCPEnabled); \
  NS_IMETHOD GetIPAddress(PRUnichar * *aIPAddress); \
  NS_IMETHOD GetNetworkMask(PRUnichar * *aNetworkMask); \
  NS_IMETHOD GetIPV6Supported(PRBool *aIPV6Supported); \
  NS_IMETHOD GetIPV6Address(PRUnichar * *aIPV6Address); \
  NS_IMETHOD GetIPV6NetworkMaskPrefixLength(PRUint32 *aIPV6NetworkMaskPrefixLength); \
  NS_IMETHOD GetHardwareAddress(PRUnichar * *aHardwareAddress); \
  NS_IMETHOD GetMediumType(PRUint32 *aMediumType); \
  NS_IMETHOD GetStatus(PRUint32 *aStatus); \
  NS_IMETHOD GetInterfaceType(PRUint32 *aInterfaceType); \
  NS_IMETHOD EnableStaticIPConfig(const PRUnichar *IPAddress, const PRUnichar *networkMask); \
  NS_IMETHOD EnableStaticIPConfigV6(const PRUnichar *IPV6Address, PRUint32 IPV6NetworkMaskPrefixLength); \
  NS_IMETHOD EnableDynamicIPConfig(void); \
  NS_IMETHOD DHCPRediscover(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOSTNETWORKINTERFACE(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetShortName(PRUnichar * *aShortName) { return _to GetShortName(aShortName); } \
  NS_IMETHOD GetId(PRUnichar * *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName) { return _to GetNetworkName(aNetworkName); } \
  NS_IMETHOD GetDHCPEnabled(PRBool *aDHCPEnabled) { return _to GetDHCPEnabled(aDHCPEnabled); } \
  NS_IMETHOD GetIPAddress(PRUnichar * *aIPAddress) { return _to GetIPAddress(aIPAddress); } \
  NS_IMETHOD GetNetworkMask(PRUnichar * *aNetworkMask) { return _to GetNetworkMask(aNetworkMask); } \
  NS_IMETHOD GetIPV6Supported(PRBool *aIPV6Supported) { return _to GetIPV6Supported(aIPV6Supported); } \
  NS_IMETHOD GetIPV6Address(PRUnichar * *aIPV6Address) { return _to GetIPV6Address(aIPV6Address); } \
  NS_IMETHOD GetIPV6NetworkMaskPrefixLength(PRUint32 *aIPV6NetworkMaskPrefixLength) { return _to GetIPV6NetworkMaskPrefixLength(aIPV6NetworkMaskPrefixLength); } \
  NS_IMETHOD GetHardwareAddress(PRUnichar * *aHardwareAddress) { return _to GetHardwareAddress(aHardwareAddress); } \
  NS_IMETHOD GetMediumType(PRUint32 *aMediumType) { return _to GetMediumType(aMediumType); } \
  NS_IMETHOD GetStatus(PRUint32 *aStatus) { return _to GetStatus(aStatus); } \
  NS_IMETHOD GetInterfaceType(PRUint32 *aInterfaceType) { return _to GetInterfaceType(aInterfaceType); } \
  NS_IMETHOD EnableStaticIPConfig(const PRUnichar *IPAddress, const PRUnichar *networkMask) { return _to EnableStaticIPConfig(IPAddress, networkMask); } \
  NS_IMETHOD EnableStaticIPConfigV6(const PRUnichar *IPV6Address, PRUint32 IPV6NetworkMaskPrefixLength) { return _to EnableStaticIPConfigV6(IPV6Address, IPV6NetworkMaskPrefixLength); } \
  NS_IMETHOD EnableDynamicIPConfig(void) { return _to EnableDynamicIPConfig(); } \
  NS_IMETHOD DHCPRediscover(void) { return _to DHCPRediscover(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHOSTNETWORKINTERFACE(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetShortName(PRUnichar * *aShortName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetShortName(aShortName); } \
  NS_IMETHOD GetId(PRUnichar * *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworkName(aNetworkName); } \
  NS_IMETHOD GetDHCPEnabled(PRBool *aDHCPEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDHCPEnabled(aDHCPEnabled); } \
  NS_IMETHOD GetIPAddress(PRUnichar * *aIPAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIPAddress(aIPAddress); } \
  NS_IMETHOD GetNetworkMask(PRUnichar * *aNetworkMask) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworkMask(aNetworkMask); } \
  NS_IMETHOD GetIPV6Supported(PRBool *aIPV6Supported) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIPV6Supported(aIPV6Supported); } \
  NS_IMETHOD GetIPV6Address(PRUnichar * *aIPV6Address) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIPV6Address(aIPV6Address); } \
  NS_IMETHOD GetIPV6NetworkMaskPrefixLength(PRUint32 *aIPV6NetworkMaskPrefixLength) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIPV6NetworkMaskPrefixLength(aIPV6NetworkMaskPrefixLength); } \
  NS_IMETHOD GetHardwareAddress(PRUnichar * *aHardwareAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHardwareAddress(aHardwareAddress); } \
  NS_IMETHOD GetMediumType(PRUint32 *aMediumType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMediumType(aMediumType); } \
  NS_IMETHOD GetStatus(PRUint32 *aStatus) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStatus(aStatus); } \
  NS_IMETHOD GetInterfaceType(PRUint32 *aInterfaceType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInterfaceType(aInterfaceType); } \
  NS_IMETHOD EnableStaticIPConfig(const PRUnichar *IPAddress, const PRUnichar *networkMask) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnableStaticIPConfig(IPAddress, networkMask); } \
  NS_IMETHOD EnableStaticIPConfigV6(const PRUnichar *IPV6Address, PRUint32 IPV6NetworkMaskPrefixLength) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnableStaticIPConfigV6(IPV6Address, IPV6NetworkMaskPrefixLength); } \
  NS_IMETHOD EnableDynamicIPConfig(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnableDynamicIPConfig(); } \
  NS_IMETHOD DHCPRediscover(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->DHCPRediscover(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IHostNetworkInterface
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHOSTNETWORKINTERFACE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IHostNetworkInterface)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring shortName; */
NS_IMETHODIMP _MYCLASS_::GetShortName(PRUnichar * *aShortName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring id; */
NS_IMETHODIMP _MYCLASS_::GetId(PRUnichar * *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring networkName; */
NS_IMETHODIMP _MYCLASS_::GetNetworkName(PRUnichar * *aNetworkName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean DHCPEnabled; */
NS_IMETHODIMP _MYCLASS_::GetDHCPEnabled(PRBool *aDHCPEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring IPAddress; */
NS_IMETHODIMP _MYCLASS_::GetIPAddress(PRUnichar * *aIPAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring networkMask; */
NS_IMETHODIMP _MYCLASS_::GetNetworkMask(PRUnichar * *aNetworkMask)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean IPV6Supported; */
NS_IMETHODIMP _MYCLASS_::GetIPV6Supported(PRBool *aIPV6Supported)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring IPV6Address; */
NS_IMETHODIMP _MYCLASS_::GetIPV6Address(PRUnichar * *aIPV6Address)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long IPV6NetworkMaskPrefixLength; */
NS_IMETHODIMP _MYCLASS_::GetIPV6NetworkMaskPrefixLength(PRUint32 *aIPV6NetworkMaskPrefixLength)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring hardwareAddress; */
NS_IMETHODIMP _MYCLASS_::GetHardwareAddress(PRUnichar * *aHardwareAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 mediumType; */
NS_IMETHODIMP _MYCLASS_::GetMediumType(PRUint32 *aMediumType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 status; */
NS_IMETHODIMP _MYCLASS_::GetStatus(PRUint32 *aStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 interfaceType; */
NS_IMETHODIMP _MYCLASS_::GetInterfaceType(PRUint32 *aInterfaceType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enableStaticIPConfig (in wstring IPAddress, in wstring networkMask); */
NS_IMETHODIMP _MYCLASS_::EnableStaticIPConfig(const PRUnichar *IPAddress, const PRUnichar *networkMask)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enableStaticIPConfigV6 (in wstring IPV6Address, in unsigned long IPV6NetworkMaskPrefixLength); */
NS_IMETHODIMP _MYCLASS_::EnableStaticIPConfigV6(const PRUnichar *IPV6Address, PRUint32 IPV6NetworkMaskPrefixLength)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enableDynamicIPConfig (); */
NS_IMETHODIMP _MYCLASS_::EnableDynamicIPConfig()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void DHCPRediscover (); */
NS_IMETHODIMP _MYCLASS_::DHCPRediscover()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IHostNetworkInterface_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_Name_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_Name_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_ShortName_TO(smth) NS_IMETHOD GetShortName (PRUnichar * * aShortName) { return smth GetShortName (aShortName); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_ShortName_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_ShortName_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_ShortName_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_ShortName_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_Id_TO(smth) NS_IMETHOD GetId (PRUnichar * * aId) { return smth GetId (aId); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_Id_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_Id_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_Id_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_Id_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_NetworkName_TO(smth) NS_IMETHOD GetNetworkName (PRUnichar * * aNetworkName) { return smth GetNetworkName (aNetworkName); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_NetworkName_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_NetworkName_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_NetworkName_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_NetworkName_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_DHCPEnabled_TO(smth) NS_IMETHOD GetDHCPEnabled (PRBool * aDHCPEnabled) { return smth GetDHCPEnabled (aDHCPEnabled); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_DHCPEnabled_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_DHCPEnabled_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_DHCPEnabled_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_DHCPEnabled_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPAddress_TO(smth) NS_IMETHOD GetIPAddress (PRUnichar * * aIPAddress) { return smth GetIPAddress (aIPAddress); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPAddress_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_IPAddress_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPAddress_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_IPAddress_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_NetworkMask_TO(smth) NS_IMETHOD GetNetworkMask (PRUnichar * * aNetworkMask) { return smth GetNetworkMask (aNetworkMask); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_NetworkMask_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_NetworkMask_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_NetworkMask_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_NetworkMask_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPV6Supported_TO(smth) NS_IMETHOD GetIPV6Supported (PRBool * aIPV6Supported) { return smth GetIPV6Supported (aIPV6Supported); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPV6Supported_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_IPV6Supported_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPV6Supported_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_IPV6Supported_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPV6Address_TO(smth) NS_IMETHOD GetIPV6Address (PRUnichar * * aIPV6Address) { return smth GetIPV6Address (aIPV6Address); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPV6Address_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_IPV6Address_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPV6Address_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_IPV6Address_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPV6NetworkMaskPrefixLength_TO(smth) NS_IMETHOD GetIPV6NetworkMaskPrefixLength (PRUint32 * aIPV6NetworkMaskPrefixLength) { return smth GetIPV6NetworkMaskPrefixLength (aIPV6NetworkMaskPrefixLength); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPV6NetworkMaskPrefixLength_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_IPV6NetworkMaskPrefixLength_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPV6NetworkMaskPrefixLength_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_IPV6NetworkMaskPrefixLength_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_HardwareAddress_TO(smth) NS_IMETHOD GetHardwareAddress (PRUnichar * * aHardwareAddress) { return smth GetHardwareAddress (aHardwareAddress); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_HardwareAddress_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_HardwareAddress_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_HardwareAddress_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_HardwareAddress_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_MediumType_TO(smth) NS_IMETHOD GetMediumType (PRUint32 * aMediumType) { return smth GetMediumType (aMediumType); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_MediumType_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_MediumType_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_MediumType_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_MediumType_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_Status_TO(smth) NS_IMETHOD GetStatus (PRUint32 * aStatus) { return smth GetStatus (aStatus); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_Status_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_Status_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_Status_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_Status_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_InterfaceType_TO(smth) NS_IMETHOD GetInterfaceType (PRUint32 * aInterfaceType) { return smth GetInterfaceType (aInterfaceType); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_InterfaceType_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_InterfaceType_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_InterfaceType_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_InterfaceType_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_EnableStaticIPConfig_TO(smth) NS_IMETHOD EnableStaticIPConfig (PRUnichar * aIPAddress, PRUnichar * aNetworkMask) { return smth EnableStaticIPConfig (aIPAddress, aNetworkMask); }
#define COM_FORWARD_IHostNetworkInterface_EnableStaticIPConfig_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_EnableStaticIPConfig_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_EnableStaticIPConfig_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_EnableStaticIPConfig_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_EnableStaticIPConfigV6_TO(smth) NS_IMETHOD EnableStaticIPConfigV6 (PRUnichar * aIPV6Address, PRUint32 aIPV6NetworkMaskPrefixLength) { return smth EnableStaticIPConfigV6 (aIPV6Address, aIPV6NetworkMaskPrefixLength); }
#define COM_FORWARD_IHostNetworkInterface_EnableStaticIPConfigV6_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_EnableStaticIPConfigV6_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_EnableStaticIPConfigV6_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_EnableStaticIPConfigV6_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_EnableDynamicIPConfig_TO(smth) NS_IMETHOD EnableDynamicIPConfig() { return smth EnableDynamicIPConfig(); }
#define COM_FORWARD_IHostNetworkInterface_EnableDynamicIPConfig_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_EnableDynamicIPConfig_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_EnableDynamicIPConfig_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_EnableDynamicIPConfig_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_DHCPRediscover_TO(smth) NS_IMETHOD DHCPRediscover() { return smth DHCPRediscover(); }
#define COM_FORWARD_IHostNetworkInterface_DHCPRediscover_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_DHCPRediscover_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_DHCPRediscover_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_DHCPRediscover_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_TO(smth) NS_FORWARD_IHOSTNETWORKINTERFACE (smth)
#define COM_FORWARD_IHostNetworkInterface_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IHostNetworkInterface;

/* starting interface:    IHostVideoInputDevice */
#define IHOSTVIDEOINPUTDEVICE_IID_STR "a1ceae44-d65e-4156-9359-d390f93ee9a0"

#define IHOSTVIDEOINPUTDEVICE_IID \
  {0xa1ceae44, 0xd65e, 0x4156, \
    { 0x93, 0x59, 0xd3, 0x90, 0xf9, 0x3e, 0xe9, 0xa0 }}

class NS_NO_VTABLE IHostVideoInputDevice : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOSTVIDEOINPUTDEVICE_IID)

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* readonly attribute wstring path; */
  NS_IMETHOD GetPath(PRUnichar * *aPath) = 0;

  /* readonly attribute wstring alias; */
  NS_IMETHOD GetAlias(PRUnichar * *aAlias) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOSTVIDEOINPUTDEVICE \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetPath(PRUnichar * *aPath); \
  NS_IMETHOD GetAlias(PRUnichar * *aAlias); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOSTVIDEOINPUTDEVICE(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetPath(PRUnichar * *aPath) { return _to GetPath(aPath); } \
  NS_IMETHOD GetAlias(PRUnichar * *aAlias) { return _to GetAlias(aAlias); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHOSTVIDEOINPUTDEVICE(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetPath(PRUnichar * *aPath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPath(aPath); } \
  NS_IMETHOD GetAlias(PRUnichar * *aAlias) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAlias(aAlias); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IHostVideoInputDevice
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHOSTVIDEOINPUTDEVICE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IHostVideoInputDevice)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring path; */
NS_IMETHODIMP _MYCLASS_::GetPath(PRUnichar * *aPath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring alias; */
NS_IMETHODIMP _MYCLASS_::GetAlias(PRUnichar * *aAlias)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IHostVideoInputDevice_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IHostVideoInputDevice_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IHostVideoInputDevice_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IHostVideoInputDevice_GETTER_Name_TO_BASE(base) COM_FORWARD_IHostVideoInputDevice_GETTER_Name_TO (base::)
#define COM_FORWARD_IHostVideoInputDevice_GETTER_Path_TO(smth) NS_IMETHOD GetPath (PRUnichar * * aPath) { return smth GetPath (aPath); }
#define COM_FORWARD_IHostVideoInputDevice_GETTER_Path_TO_OBJ(obj) COM_FORWARD_IHostVideoInputDevice_GETTER_Path_TO ((obj)->)
#define COM_FORWARD_IHostVideoInputDevice_GETTER_Path_TO_BASE(base) COM_FORWARD_IHostVideoInputDevice_GETTER_Path_TO (base::)
#define COM_FORWARD_IHostVideoInputDevice_GETTER_Alias_TO(smth) NS_IMETHOD GetAlias (PRUnichar * * aAlias) { return smth GetAlias (aAlias); }
#define COM_FORWARD_IHostVideoInputDevice_GETTER_Alias_TO_OBJ(obj) COM_FORWARD_IHostVideoInputDevice_GETTER_Alias_TO ((obj)->)
#define COM_FORWARD_IHostVideoInputDevice_GETTER_Alias_TO_BASE(base) COM_FORWARD_IHostVideoInputDevice_GETTER_Alias_TO (base::)
#define COM_FORWARD_IHostVideoInputDevice_TO(smth) NS_FORWARD_IHOSTVIDEOINPUTDEVICE (smth)
#define COM_FORWARD_IHostVideoInputDevice_TO_OBJ(obj) COM_FORWARD_IHostVideoInputDevice_TO ((obj)->)
#define COM_FORWARD_IHostVideoInputDevice_TO_BASE(base) COM_FORWARD_IHostVideoInputDevice_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IHostVideoInputDevice;

/* starting interface:    IHost */
#define IHOST_IID_STR "93269330-48ca-4096-b4a2-1189df336267"

#define IHOST_IID \
  {0x93269330, 0x48ca, 0x4096, \
    { 0xb4, 0xa2, 0x11, 0x89, 0xdf, 0x33, 0x62, 0x67 }}

class NS_NO_VTABLE IHost : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOST_IID)

  /* void getDVDDrives (out unsigned long DVDDrivesSize, [array, size_is (DVDDrivesSize), retval] out IMedium DVDDrives); */
  NS_IMETHOD GetDVDDrives(PRUint32 *DVDDrivesSize, IMedium ***DVDDrives) = 0;

  /* void getFloppyDrives (out unsigned long floppyDrivesSize, [array, size_is (floppyDrivesSize), retval] out IMedium floppyDrives); */
  NS_IMETHOD GetFloppyDrives(PRUint32 *floppyDrivesSize, IMedium ***floppyDrives) = 0;

  /* void getUSBDevices (out unsigned long USBDevicesSize, [array, size_is (USBDevicesSize), retval] out IHostUSBDevice USBDevices); */
  NS_IMETHOD GetUSBDevices(PRUint32 *USBDevicesSize, IHostUSBDevice ***USBDevices) = 0;

  /* void getUSBDeviceFilters (out unsigned long USBDeviceFiltersSize, [array, size_is (USBDeviceFiltersSize), retval] out IHostUSBDeviceFilter USBDeviceFilters); */
  NS_IMETHOD GetUSBDeviceFilters(PRUint32 *USBDeviceFiltersSize, IHostUSBDeviceFilter ***USBDeviceFilters) = 0;

  /* void getNetworkInterfaces (out unsigned long networkInterfacesSize, [array, size_is (networkInterfacesSize), retval] out IHostNetworkInterface networkInterfaces); */
  NS_IMETHOD GetNetworkInterfaces(PRUint32 *networkInterfacesSize, IHostNetworkInterface ***networkInterfaces) = 0;

  /* void getNameServers (out unsigned long nameServersSize, [array, size_is (nameServersSize), retval] out wstring nameServers); */
  NS_IMETHOD GetNameServers(PRUint32 *nameServersSize, PRUnichar ***nameServers) = 0;

  /* readonly attribute wstring domainName; */
  NS_IMETHOD GetDomainName(PRUnichar * *aDomainName) = 0;

  /* void getSearchStrings (out unsigned long searchStringsSize, [array, size_is (searchStringsSize), retval] out wstring searchStrings); */
  NS_IMETHOD GetSearchStrings(PRUint32 *searchStringsSize, PRUnichar ***searchStrings) = 0;

  /* readonly attribute unsigned long processorCount; */
  NS_IMETHOD GetProcessorCount(PRUint32 *aProcessorCount) = 0;

  /* readonly attribute unsigned long processorOnlineCount; */
  NS_IMETHOD GetProcessorOnlineCount(PRUint32 *aProcessorOnlineCount) = 0;

  /* readonly attribute unsigned long processorCoreCount; */
  NS_IMETHOD GetProcessorCoreCount(PRUint32 *aProcessorCoreCount) = 0;

  /* readonly attribute unsigned long processorOnlineCoreCount; */
  NS_IMETHOD GetProcessorOnlineCoreCount(PRUint32 *aProcessorOnlineCoreCount) = 0;

  /* readonly attribute unsigned long memorySize; */
  NS_IMETHOD GetMemorySize(PRUint32 *aMemorySize) = 0;

  /* readonly attribute unsigned long memoryAvailable; */
  NS_IMETHOD GetMemoryAvailable(PRUint32 *aMemoryAvailable) = 0;

  /* readonly attribute wstring operatingSystem; */
  NS_IMETHOD GetOperatingSystem(PRUnichar * *aOperatingSystem) = 0;

  /* readonly attribute wstring OSVersion; */
  NS_IMETHOD GetOSVersion(PRUnichar * *aOSVersion) = 0;

  /* readonly attribute long long UTCTime; */
  NS_IMETHOD GetUTCTime(PRInt64 *aUTCTime) = 0;

  /* readonly attribute boolean acceleration3DAvailable; */
  NS_IMETHOD GetAcceleration3DAvailable(PRBool *aAcceleration3DAvailable) = 0;

  /* void getVideoInputDevices (out unsigned long videoInputDevicesSize, [array, size_is (videoInputDevicesSize), retval] out IHostVideoInputDevice videoInputDevices); */
  NS_IMETHOD GetVideoInputDevices(PRUint32 *videoInputDevicesSize, IHostVideoInputDevice ***videoInputDevices) = 0;

  /* void getProcessorSpeed (in unsigned long cpuId, [retval] out unsigned long speed); */
  NS_IMETHOD GetProcessorSpeed(PRUint32 cpuId, PRUint32 *speed) = 0;

  /* void getProcessorFeature (in PRUint32 feature, [retval] out boolean supported); */
  NS_IMETHOD GetProcessorFeature(PRUint32 feature, PRBool *supported) = 0;

  /* void getProcessorDescription (in unsigned long cpuId, [retval] out wstring description); */
  NS_IMETHOD GetProcessorDescription(PRUint32 cpuId, PRUnichar **description) = 0;

  /* void getProcessorCPUIDLeaf (in unsigned long cpuId, in unsigned long leaf, in unsigned long subLeaf, out unsigned long valEax, out unsigned long valEbx, out unsigned long valEcx, out unsigned long valEdx); */
  NS_IMETHOD GetProcessorCPUIDLeaf(PRUint32 cpuId, PRUint32 leaf, PRUint32 subLeaf, PRUint32 *valEax, PRUint32 *valEbx, PRUint32 *valEcx, PRUint32 *valEdx) = 0;

  /* void createHostOnlyNetworkInterface (out IHostNetworkInterface hostInterface, [retval] out IProgress progress); */
  NS_IMETHOD CreateHostOnlyNetworkInterface(IHostNetworkInterface **hostInterface, IProgress **progress) = 0;

  /* void removeHostOnlyNetworkInterface (in wstring id, [retval] out IProgress progress); */
  NS_IMETHOD RemoveHostOnlyNetworkInterface(const PRUnichar *id, IProgress **progress) = 0;

  /* void createUSBDeviceFilter (in wstring name, [retval] out IHostUSBDeviceFilter filter); */
  NS_IMETHOD CreateUSBDeviceFilter(const PRUnichar *name, IHostUSBDeviceFilter **filter) = 0;

  /* void insertUSBDeviceFilter (in unsigned long position, in IHostUSBDeviceFilter filter); */
  NS_IMETHOD InsertUSBDeviceFilter(PRUint32 position, IHostUSBDeviceFilter *filter) = 0;

  /* void removeUSBDeviceFilter (in unsigned long position); */
  NS_IMETHOD RemoveUSBDeviceFilter(PRUint32 position) = 0;

  /* void findHostDVDDrive (in wstring name, [retval] out IMedium drive); */
  NS_IMETHOD FindHostDVDDrive(const PRUnichar *name, IMedium **drive) = 0;

  /* void findHostFloppyDrive (in wstring name, [retval] out IMedium drive); */
  NS_IMETHOD FindHostFloppyDrive(const PRUnichar *name, IMedium **drive) = 0;

  /* void findHostNetworkInterfaceByName (in wstring name, [retval] out IHostNetworkInterface networkInterface); */
  NS_IMETHOD FindHostNetworkInterfaceByName(const PRUnichar *name, IHostNetworkInterface **networkInterface) = 0;

  /* void findHostNetworkInterfaceById (in wstring id, [retval] out IHostNetworkInterface networkInterface); */
  NS_IMETHOD FindHostNetworkInterfaceById(const PRUnichar *id, IHostNetworkInterface **networkInterface) = 0;

  /* void findHostNetworkInterfacesOfType (in PRUint32 type, out unsigned long networkInterfacesSize, [array, size_is (networkInterfacesSize), retval] out IHostNetworkInterface networkInterfaces); */
  NS_IMETHOD FindHostNetworkInterfacesOfType(PRUint32 type, PRUint32 *networkInterfacesSize, IHostNetworkInterface ***networkInterfaces) = 0;

  /* void findUSBDeviceById (in wstring id, [retval] out IHostUSBDevice device); */
  NS_IMETHOD FindUSBDeviceById(const PRUnichar *id, IHostUSBDevice **device) = 0;

  /* void findUSBDeviceByAddress (in wstring name, [retval] out IHostUSBDevice device); */
  NS_IMETHOD FindUSBDeviceByAddress(const PRUnichar *name, IHostUSBDevice **device) = 0;

  /* void generateMACAddress ([retval] out wstring address); */
  NS_IMETHOD GenerateMACAddress(PRUnichar **address) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOST \
  NS_IMETHOD GetDVDDrives(PRUint32 *DVDDrivesSize, IMedium ***DVDDrives); \
  NS_IMETHOD GetFloppyDrives(PRUint32 *floppyDrivesSize, IMedium ***floppyDrives); \
  NS_IMETHOD GetUSBDevices(PRUint32 *USBDevicesSize, IHostUSBDevice ***USBDevices); \
  NS_IMETHOD GetUSBDeviceFilters(PRUint32 *USBDeviceFiltersSize, IHostUSBDeviceFilter ***USBDeviceFilters); \
  NS_IMETHOD GetNetworkInterfaces(PRUint32 *networkInterfacesSize, IHostNetworkInterface ***networkInterfaces); \
  NS_IMETHOD GetNameServers(PRUint32 *nameServersSize, PRUnichar ***nameServers); \
  NS_IMETHOD GetDomainName(PRUnichar * *aDomainName); \
  NS_IMETHOD GetSearchStrings(PRUint32 *searchStringsSize, PRUnichar ***searchStrings); \
  NS_IMETHOD GetProcessorCount(PRUint32 *aProcessorCount); \
  NS_IMETHOD GetProcessorOnlineCount(PRUint32 *aProcessorOnlineCount); \
  NS_IMETHOD GetProcessorCoreCount(PRUint32 *aProcessorCoreCount); \
  NS_IMETHOD GetProcessorOnlineCoreCount(PRUint32 *aProcessorOnlineCoreCount); \
  NS_IMETHOD GetMemorySize(PRUint32 *aMemorySize); \
  NS_IMETHOD GetMemoryAvailable(PRUint32 *aMemoryAvailable); \
  NS_IMETHOD GetOperatingSystem(PRUnichar * *aOperatingSystem); \
  NS_IMETHOD GetOSVersion(PRUnichar * *aOSVersion); \
  NS_IMETHOD GetUTCTime(PRInt64 *aUTCTime); \
  NS_IMETHOD GetAcceleration3DAvailable(PRBool *aAcceleration3DAvailable); \
  NS_IMETHOD GetVideoInputDevices(PRUint32 *videoInputDevicesSize, IHostVideoInputDevice ***videoInputDevices); \
  NS_IMETHOD GetProcessorSpeed(PRUint32 cpuId, PRUint32 *speed); \
  NS_IMETHOD GetProcessorFeature(PRUint32 feature, PRBool *supported); \
  NS_IMETHOD GetProcessorDescription(PRUint32 cpuId, PRUnichar **description); \
  NS_IMETHOD GetProcessorCPUIDLeaf(PRUint32 cpuId, PRUint32 leaf, PRUint32 subLeaf, PRUint32 *valEax, PRUint32 *valEbx, PRUint32 *valEcx, PRUint32 *valEdx); \
  NS_IMETHOD CreateHostOnlyNetworkInterface(IHostNetworkInterface **hostInterface, IProgress **progress); \
  NS_IMETHOD RemoveHostOnlyNetworkInterface(const PRUnichar *id, IProgress **progress); \
  NS_IMETHOD CreateUSBDeviceFilter(const PRUnichar *name, IHostUSBDeviceFilter **filter); \
  NS_IMETHOD InsertUSBDeviceFilter(PRUint32 position, IHostUSBDeviceFilter *filter); \
  NS_IMETHOD RemoveUSBDeviceFilter(PRUint32 position); \
  NS_IMETHOD FindHostDVDDrive(const PRUnichar *name, IMedium **drive); \
  NS_IMETHOD FindHostFloppyDrive(const PRUnichar *name, IMedium **drive); \
  NS_IMETHOD FindHostNetworkInterfaceByName(const PRUnichar *name, IHostNetworkInterface **networkInterface); \
  NS_IMETHOD FindHostNetworkInterfaceById(const PRUnichar *id, IHostNetworkInterface **networkInterface); \
  NS_IMETHOD FindHostNetworkInterfacesOfType(PRUint32 type, PRUint32 *networkInterfacesSize, IHostNetworkInterface ***networkInterfaces); \
  NS_IMETHOD FindUSBDeviceById(const PRUnichar *id, IHostUSBDevice **device); \
  NS_IMETHOD FindUSBDeviceByAddress(const PRUnichar *name, IHostUSBDevice **device); \
  NS_IMETHOD GenerateMACAddress(PRUnichar **address); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOST(_to) \
  NS_IMETHOD GetDVDDrives(PRUint32 *DVDDrivesSize, IMedium ***DVDDrives) { return _to GetDVDDrives(DVDDrivesSize, DVDDrives); } \
  NS_IMETHOD GetFloppyDrives(PRUint32 *floppyDrivesSize, IMedium ***floppyDrives) { return _to GetFloppyDrives(floppyDrivesSize, floppyDrives); } \
  NS_IMETHOD GetUSBDevices(PRUint32 *USBDevicesSize, IHostUSBDevice ***USBDevices) { return _to GetUSBDevices(USBDevicesSize, USBDevices); } \
  NS_IMETHOD GetUSBDeviceFilters(PRUint32 *USBDeviceFiltersSize, IHostUSBDeviceFilter ***USBDeviceFilters) { return _to GetUSBDeviceFilters(USBDeviceFiltersSize, USBDeviceFilters); } \
  NS_IMETHOD GetNetworkInterfaces(PRUint32 *networkInterfacesSize, IHostNetworkInterface ***networkInterfaces) { return _to GetNetworkInterfaces(networkInterfacesSize, networkInterfaces); } \
  NS_IMETHOD GetNameServers(PRUint32 *nameServersSize, PRUnichar ***nameServers) { return _to GetNameServers(nameServersSize, nameServers); } \
  NS_IMETHOD GetDomainName(PRUnichar * *aDomainName) { return _to GetDomainName(aDomainName); } \
  NS_IMETHOD GetSearchStrings(PRUint32 *searchStringsSize, PRUnichar ***searchStrings) { return _to GetSearchStrings(searchStringsSize, searchStrings); } \
  NS_IMETHOD GetProcessorCount(PRUint32 *aProcessorCount) { return _to GetProcessorCount(aProcessorCount); } \
  NS_IMETHOD GetProcessorOnlineCount(PRUint32 *aProcessorOnlineCount) { return _to GetProcessorOnlineCount(aProcessorOnlineCount); } \
  NS_IMETHOD GetProcessorCoreCount(PRUint32 *aProcessorCoreCount) { return _to GetProcessorCoreCount(aProcessorCoreCount); } \
  NS_IMETHOD GetProcessorOnlineCoreCount(PRUint32 *aProcessorOnlineCoreCount) { return _to GetProcessorOnlineCoreCount(aProcessorOnlineCoreCount); } \
  NS_IMETHOD GetMemorySize(PRUint32 *aMemorySize) { return _to GetMemorySize(aMemorySize); } \
  NS_IMETHOD GetMemoryAvailable(PRUint32 *aMemoryAvailable) { return _to GetMemoryAvailable(aMemoryAvailable); } \
  NS_IMETHOD GetOperatingSystem(PRUnichar * *aOperatingSystem) { return _to GetOperatingSystem(aOperatingSystem); } \
  NS_IMETHOD GetOSVersion(PRUnichar * *aOSVersion) { return _to GetOSVersion(aOSVersion); } \
  NS_IMETHOD GetUTCTime(PRInt64 *aUTCTime) { return _to GetUTCTime(aUTCTime); } \
  NS_IMETHOD GetAcceleration3DAvailable(PRBool *aAcceleration3DAvailable) { return _to GetAcceleration3DAvailable(aAcceleration3DAvailable); } \
  NS_IMETHOD GetVideoInputDevices(PRUint32 *videoInputDevicesSize, IHostVideoInputDevice ***videoInputDevices) { return _to GetVideoInputDevices(videoInputDevicesSize, videoInputDevices); } \
  NS_IMETHOD GetProcessorSpeed(PRUint32 cpuId, PRUint32 *speed) { return _to GetProcessorSpeed(cpuId, speed); } \
  NS_IMETHOD GetProcessorFeature(PRUint32 feature, PRBool *supported) { return _to GetProcessorFeature(feature, supported); } \
  NS_IMETHOD GetProcessorDescription(PRUint32 cpuId, PRUnichar **description) { return _to GetProcessorDescription(cpuId, description); } \
  NS_IMETHOD GetProcessorCPUIDLeaf(PRUint32 cpuId, PRUint32 leaf, PRUint32 subLeaf, PRUint32 *valEax, PRUint32 *valEbx, PRUint32 *valEcx, PRUint32 *valEdx) { return _to GetProcessorCPUIDLeaf(cpuId, leaf, subLeaf, valEax, valEbx, valEcx, valEdx); } \
  NS_IMETHOD CreateHostOnlyNetworkInterface(IHostNetworkInterface **hostInterface, IProgress **progress) { return _to CreateHostOnlyNetworkInterface(hostInterface, progress); } \
  NS_IMETHOD RemoveHostOnlyNetworkInterface(const PRUnichar *id, IProgress **progress) { return _to RemoveHostOnlyNetworkInterface(id, progress); } \
  NS_IMETHOD CreateUSBDeviceFilter(const PRUnichar *name, IHostUSBDeviceFilter **filter) { return _to CreateUSBDeviceFilter(name, filter); } \
  NS_IMETHOD InsertUSBDeviceFilter(PRUint32 position, IHostUSBDeviceFilter *filter) { return _to InsertUSBDeviceFilter(position, filter); } \
  NS_IMETHOD RemoveUSBDeviceFilter(PRUint32 position) { return _to RemoveUSBDeviceFilter(position); } \
  NS_IMETHOD FindHostDVDDrive(const PRUnichar *name, IMedium **drive) { return _to FindHostDVDDrive(name, drive); } \
  NS_IMETHOD FindHostFloppyDrive(const PRUnichar *name, IMedium **drive) { return _to FindHostFloppyDrive(name, drive); } \
  NS_IMETHOD FindHostNetworkInterfaceByName(const PRUnichar *name, IHostNetworkInterface **networkInterface) { return _to FindHostNetworkInterfaceByName(name, networkInterface); } \
  NS_IMETHOD FindHostNetworkInterfaceById(const PRUnichar *id, IHostNetworkInterface **networkInterface) { return _to FindHostNetworkInterfaceById(id, networkInterface); } \
  NS_IMETHOD FindHostNetworkInterfacesOfType(PRUint32 type, PRUint32 *networkInterfacesSize, IHostNetworkInterface ***networkInterfaces) { return _to FindHostNetworkInterfacesOfType(type, networkInterfacesSize, networkInterfaces); } \
  NS_IMETHOD FindUSBDeviceById(const PRUnichar *id, IHostUSBDevice **device) { return _to FindUSBDeviceById(id, device); } \
  NS_IMETHOD FindUSBDeviceByAddress(const PRUnichar *name, IHostUSBDevice **device) { return _to FindUSBDeviceByAddress(name, device); } \
  NS_IMETHOD GenerateMACAddress(PRUnichar **address) { return _to GenerateMACAddress(address); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHOST(_to) \
  NS_IMETHOD GetDVDDrives(PRUint32 *DVDDrivesSize, IMedium ***DVDDrives) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDVDDrives(DVDDrivesSize, DVDDrives); } \
  NS_IMETHOD GetFloppyDrives(PRUint32 *floppyDrivesSize, IMedium ***floppyDrives) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFloppyDrives(floppyDrivesSize, floppyDrives); } \
  NS_IMETHOD GetUSBDevices(PRUint32 *USBDevicesSize, IHostUSBDevice ***USBDevices) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUSBDevices(USBDevicesSize, USBDevices); } \
  NS_IMETHOD GetUSBDeviceFilters(PRUint32 *USBDeviceFiltersSize, IHostUSBDeviceFilter ***USBDeviceFilters) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUSBDeviceFilters(USBDeviceFiltersSize, USBDeviceFilters); } \
  NS_IMETHOD GetNetworkInterfaces(PRUint32 *networkInterfacesSize, IHostNetworkInterface ***networkInterfaces) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworkInterfaces(networkInterfacesSize, networkInterfaces); } \
  NS_IMETHOD GetNameServers(PRUint32 *nameServersSize, PRUnichar ***nameServers) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNameServers(nameServersSize, nameServers); } \
  NS_IMETHOD GetDomainName(PRUnichar * *aDomainName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDomainName(aDomainName); } \
  NS_IMETHOD GetSearchStrings(PRUint32 *searchStringsSize, PRUnichar ***searchStrings) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSearchStrings(searchStringsSize, searchStrings); } \
  NS_IMETHOD GetProcessorCount(PRUint32 *aProcessorCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessorCount(aProcessorCount); } \
  NS_IMETHOD GetProcessorOnlineCount(PRUint32 *aProcessorOnlineCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessorOnlineCount(aProcessorOnlineCount); } \
  NS_IMETHOD GetProcessorCoreCount(PRUint32 *aProcessorCoreCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessorCoreCount(aProcessorCoreCount); } \
  NS_IMETHOD GetProcessorOnlineCoreCount(PRUint32 *aProcessorOnlineCoreCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessorOnlineCoreCount(aProcessorOnlineCoreCount); } \
  NS_IMETHOD GetMemorySize(PRUint32 *aMemorySize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMemorySize(aMemorySize); } \
  NS_IMETHOD GetMemoryAvailable(PRUint32 *aMemoryAvailable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMemoryAvailable(aMemoryAvailable); } \
  NS_IMETHOD GetOperatingSystem(PRUnichar * *aOperatingSystem) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOperatingSystem(aOperatingSystem); } \
  NS_IMETHOD GetOSVersion(PRUnichar * *aOSVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOSVersion(aOSVersion); } \
  NS_IMETHOD GetUTCTime(PRInt64 *aUTCTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUTCTime(aUTCTime); } \
  NS_IMETHOD GetAcceleration3DAvailable(PRBool *aAcceleration3DAvailable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAcceleration3DAvailable(aAcceleration3DAvailable); } \
  NS_IMETHOD GetVideoInputDevices(PRUint32 *videoInputDevicesSize, IHostVideoInputDevice ***videoInputDevices) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVideoInputDevices(videoInputDevicesSize, videoInputDevices); } \
  NS_IMETHOD GetProcessorSpeed(PRUint32 cpuId, PRUint32 *speed) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessorSpeed(cpuId, speed); } \
  NS_IMETHOD GetProcessorFeature(PRUint32 feature, PRBool *supported) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessorFeature(feature, supported); } \
  NS_IMETHOD GetProcessorDescription(PRUint32 cpuId, PRUnichar **description) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessorDescription(cpuId, description); } \
  NS_IMETHOD GetProcessorCPUIDLeaf(PRUint32 cpuId, PRUint32 leaf, PRUint32 subLeaf, PRUint32 *valEax, PRUint32 *valEbx, PRUint32 *valEcx, PRUint32 *valEdx) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessorCPUIDLeaf(cpuId, leaf, subLeaf, valEax, valEbx, valEcx, valEdx); } \
  NS_IMETHOD CreateHostOnlyNetworkInterface(IHostNetworkInterface **hostInterface, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateHostOnlyNetworkInterface(hostInterface, progress); } \
  NS_IMETHOD RemoveHostOnlyNetworkInterface(const PRUnichar *id, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveHostOnlyNetworkInterface(id, progress); } \
  NS_IMETHOD CreateUSBDeviceFilter(const PRUnichar *name, IHostUSBDeviceFilter **filter) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateUSBDeviceFilter(name, filter); } \
  NS_IMETHOD InsertUSBDeviceFilter(PRUint32 position, IHostUSBDeviceFilter *filter) { return !_to ? NS_ERROR_NULL_POINTER : _to->InsertUSBDeviceFilter(position, filter); } \
  NS_IMETHOD RemoveUSBDeviceFilter(PRUint32 position) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveUSBDeviceFilter(position); } \
  NS_IMETHOD FindHostDVDDrive(const PRUnichar *name, IMedium **drive) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindHostDVDDrive(name, drive); } \
  NS_IMETHOD FindHostFloppyDrive(const PRUnichar *name, IMedium **drive) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindHostFloppyDrive(name, drive); } \
  NS_IMETHOD FindHostNetworkInterfaceByName(const PRUnichar *name, IHostNetworkInterface **networkInterface) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindHostNetworkInterfaceByName(name, networkInterface); } \
  NS_IMETHOD FindHostNetworkInterfaceById(const PRUnichar *id, IHostNetworkInterface **networkInterface) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindHostNetworkInterfaceById(id, networkInterface); } \
  NS_IMETHOD FindHostNetworkInterfacesOfType(PRUint32 type, PRUint32 *networkInterfacesSize, IHostNetworkInterface ***networkInterfaces) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindHostNetworkInterfacesOfType(type, networkInterfacesSize, networkInterfaces); } \
  NS_IMETHOD FindUSBDeviceById(const PRUnichar *id, IHostUSBDevice **device) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindUSBDeviceById(id, device); } \
  NS_IMETHOD FindUSBDeviceByAddress(const PRUnichar *name, IHostUSBDevice **device) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindUSBDeviceByAddress(name, device); } \
  NS_IMETHOD GenerateMACAddress(PRUnichar **address) { return !_to ? NS_ERROR_NULL_POINTER : _to->GenerateMACAddress(address); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IHost
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHOST

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IHost)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* void getDVDDrives (out unsigned long DVDDrivesSize, [array, size_is (DVDDrivesSize), retval] out IMedium DVDDrives); */
NS_IMETHODIMP _MYCLASS_::GetDVDDrives(PRUint32 *DVDDrivesSize, IMedium ***DVDDrives)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getFloppyDrives (out unsigned long floppyDrivesSize, [array, size_is (floppyDrivesSize), retval] out IMedium floppyDrives); */
NS_IMETHODIMP _MYCLASS_::GetFloppyDrives(PRUint32 *floppyDrivesSize, IMedium ***floppyDrives)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getUSBDevices (out unsigned long USBDevicesSize, [array, size_is (USBDevicesSize), retval] out IHostUSBDevice USBDevices); */
NS_IMETHODIMP _MYCLASS_::GetUSBDevices(PRUint32 *USBDevicesSize, IHostUSBDevice ***USBDevices)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getUSBDeviceFilters (out unsigned long USBDeviceFiltersSize, [array, size_is (USBDeviceFiltersSize), retval] out IHostUSBDeviceFilter USBDeviceFilters); */
NS_IMETHODIMP _MYCLASS_::GetUSBDeviceFilters(PRUint32 *USBDeviceFiltersSize, IHostUSBDeviceFilter ***USBDeviceFilters)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNetworkInterfaces (out unsigned long networkInterfacesSize, [array, size_is (networkInterfacesSize), retval] out IHostNetworkInterface networkInterfaces); */
NS_IMETHODIMP _MYCLASS_::GetNetworkInterfaces(PRUint32 *networkInterfacesSize, IHostNetworkInterface ***networkInterfaces)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNameServers (out unsigned long nameServersSize, [array, size_is (nameServersSize), retval] out wstring nameServers); */
NS_IMETHODIMP _MYCLASS_::GetNameServers(PRUint32 *nameServersSize, PRUnichar ***nameServers)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring domainName; */
NS_IMETHODIMP _MYCLASS_::GetDomainName(PRUnichar * *aDomainName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getSearchStrings (out unsigned long searchStringsSize, [array, size_is (searchStringsSize), retval] out wstring searchStrings); */
NS_IMETHODIMP _MYCLASS_::GetSearchStrings(PRUint32 *searchStringsSize, PRUnichar ***searchStrings)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long processorCount; */
NS_IMETHODIMP _MYCLASS_::GetProcessorCount(PRUint32 *aProcessorCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long processorOnlineCount; */
NS_IMETHODIMP _MYCLASS_::GetProcessorOnlineCount(PRUint32 *aProcessorOnlineCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long processorCoreCount; */
NS_IMETHODIMP _MYCLASS_::GetProcessorCoreCount(PRUint32 *aProcessorCoreCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long processorOnlineCoreCount; */
NS_IMETHODIMP _MYCLASS_::GetProcessorOnlineCoreCount(PRUint32 *aProcessorOnlineCoreCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long memorySize; */
NS_IMETHODIMP _MYCLASS_::GetMemorySize(PRUint32 *aMemorySize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long memoryAvailable; */
NS_IMETHODIMP _MYCLASS_::GetMemoryAvailable(PRUint32 *aMemoryAvailable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring operatingSystem; */
NS_IMETHODIMP _MYCLASS_::GetOperatingSystem(PRUnichar * *aOperatingSystem)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring OSVersion; */
NS_IMETHODIMP _MYCLASS_::GetOSVersion(PRUnichar * *aOSVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long UTCTime; */
NS_IMETHODIMP _MYCLASS_::GetUTCTime(PRInt64 *aUTCTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean acceleration3DAvailable; */
NS_IMETHODIMP _MYCLASS_::GetAcceleration3DAvailable(PRBool *aAcceleration3DAvailable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getVideoInputDevices (out unsigned long videoInputDevicesSize, [array, size_is (videoInputDevicesSize), retval] out IHostVideoInputDevice videoInputDevices); */
NS_IMETHODIMP _MYCLASS_::GetVideoInputDevices(PRUint32 *videoInputDevicesSize, IHostVideoInputDevice ***videoInputDevices)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getProcessorSpeed (in unsigned long cpuId, [retval] out unsigned long speed); */
NS_IMETHODIMP _MYCLASS_::GetProcessorSpeed(PRUint32 cpuId, PRUint32 *speed)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getProcessorFeature (in PRUint32 feature, [retval] out boolean supported); */
NS_IMETHODIMP _MYCLASS_::GetProcessorFeature(PRUint32 feature, PRBool *supported)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getProcessorDescription (in unsigned long cpuId, [retval] out wstring description); */
NS_IMETHODIMP _MYCLASS_::GetProcessorDescription(PRUint32 cpuId, PRUnichar **description)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getProcessorCPUIDLeaf (in unsigned long cpuId, in unsigned long leaf, in unsigned long subLeaf, out unsigned long valEax, out unsigned long valEbx, out unsigned long valEcx, out unsigned long valEdx); */
NS_IMETHODIMP _MYCLASS_::GetProcessorCPUIDLeaf(PRUint32 cpuId, PRUint32 leaf, PRUint32 subLeaf, PRUint32 *valEax, PRUint32 *valEbx, PRUint32 *valEcx, PRUint32 *valEdx)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createHostOnlyNetworkInterface (out IHostNetworkInterface hostInterface, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CreateHostOnlyNetworkInterface(IHostNetworkInterface **hostInterface, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeHostOnlyNetworkInterface (in wstring id, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::RemoveHostOnlyNetworkInterface(const PRUnichar *id, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createUSBDeviceFilter (in wstring name, [retval] out IHostUSBDeviceFilter filter); */
NS_IMETHODIMP _MYCLASS_::CreateUSBDeviceFilter(const PRUnichar *name, IHostUSBDeviceFilter **filter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void insertUSBDeviceFilter (in unsigned long position, in IHostUSBDeviceFilter filter); */
NS_IMETHODIMP _MYCLASS_::InsertUSBDeviceFilter(PRUint32 position, IHostUSBDeviceFilter *filter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeUSBDeviceFilter (in unsigned long position); */
NS_IMETHODIMP _MYCLASS_::RemoveUSBDeviceFilter(PRUint32 position)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findHostDVDDrive (in wstring name, [retval] out IMedium drive); */
NS_IMETHODIMP _MYCLASS_::FindHostDVDDrive(const PRUnichar *name, IMedium **drive)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findHostFloppyDrive (in wstring name, [retval] out IMedium drive); */
NS_IMETHODIMP _MYCLASS_::FindHostFloppyDrive(const PRUnichar *name, IMedium **drive)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findHostNetworkInterfaceByName (in wstring name, [retval] out IHostNetworkInterface networkInterface); */
NS_IMETHODIMP _MYCLASS_::FindHostNetworkInterfaceByName(const PRUnichar *name, IHostNetworkInterface **networkInterface)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findHostNetworkInterfaceById (in wstring id, [retval] out IHostNetworkInterface networkInterface); */
NS_IMETHODIMP _MYCLASS_::FindHostNetworkInterfaceById(const PRUnichar *id, IHostNetworkInterface **networkInterface)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findHostNetworkInterfacesOfType (in PRUint32 type, out unsigned long networkInterfacesSize, [array, size_is (networkInterfacesSize), retval] out IHostNetworkInterface networkInterfaces); */
NS_IMETHODIMP _MYCLASS_::FindHostNetworkInterfacesOfType(PRUint32 type, PRUint32 *networkInterfacesSize, IHostNetworkInterface ***networkInterfaces)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findUSBDeviceById (in wstring id, [retval] out IHostUSBDevice device); */
NS_IMETHODIMP _MYCLASS_::FindUSBDeviceById(const PRUnichar *id, IHostUSBDevice **device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findUSBDeviceByAddress (in wstring name, [retval] out IHostUSBDevice device); */
NS_IMETHODIMP _MYCLASS_::FindUSBDeviceByAddress(const PRUnichar *name, IHostUSBDevice **device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void generateMACAddress ([retval] out wstring address); */
NS_IMETHODIMP _MYCLASS_::GenerateMACAddress(PRUnichar **address)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IHost_GETTER_DVDDrives_TO(smth) NS_IMETHOD GetDVDDrives (PRUint32 * aDVDDrivesSize, IMedium * * * aDVDDrives) { return smth GetDVDDrives (aDVDDrivesSize, aDVDDrives); }
#define COM_FORWARD_IHost_GETTER_DVDDrives_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_DVDDrives_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_DVDDrives_TO_BASE(base) COM_FORWARD_IHost_GETTER_DVDDrives_TO (base::)
#define COM_FORWARD_IHost_GETTER_FloppyDrives_TO(smth) NS_IMETHOD GetFloppyDrives (PRUint32 * aFloppyDrivesSize, IMedium * * * aFloppyDrives) { return smth GetFloppyDrives (aFloppyDrivesSize, aFloppyDrives); }
#define COM_FORWARD_IHost_GETTER_FloppyDrives_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_FloppyDrives_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_FloppyDrives_TO_BASE(base) COM_FORWARD_IHost_GETTER_FloppyDrives_TO (base::)
#define COM_FORWARD_IHost_GETTER_USBDevices_TO(smth) NS_IMETHOD GetUSBDevices (PRUint32 * aUSBDevicesSize, IHostUSBDevice * * * aUSBDevices) { return smth GetUSBDevices (aUSBDevicesSize, aUSBDevices); }
#define COM_FORWARD_IHost_GETTER_USBDevices_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_USBDevices_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_USBDevices_TO_BASE(base) COM_FORWARD_IHost_GETTER_USBDevices_TO (base::)
#define COM_FORWARD_IHost_GETTER_USBDeviceFilters_TO(smth) NS_IMETHOD GetUSBDeviceFilters (PRUint32 * aUSBDeviceFiltersSize, IHostUSBDeviceFilter * * * aUSBDeviceFilters) { return smth GetUSBDeviceFilters (aUSBDeviceFiltersSize, aUSBDeviceFilters); }
#define COM_FORWARD_IHost_GETTER_USBDeviceFilters_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_USBDeviceFilters_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_USBDeviceFilters_TO_BASE(base) COM_FORWARD_IHost_GETTER_USBDeviceFilters_TO (base::)
#define COM_FORWARD_IHost_GETTER_NetworkInterfaces_TO(smth) NS_IMETHOD GetNetworkInterfaces (PRUint32 * aNetworkInterfacesSize, IHostNetworkInterface * * * aNetworkInterfaces) { return smth GetNetworkInterfaces (aNetworkInterfacesSize, aNetworkInterfaces); }
#define COM_FORWARD_IHost_GETTER_NetworkInterfaces_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_NetworkInterfaces_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_NetworkInterfaces_TO_BASE(base) COM_FORWARD_IHost_GETTER_NetworkInterfaces_TO (base::)
#define COM_FORWARD_IHost_GETTER_NameServers_TO(smth) NS_IMETHOD GetNameServers (PRUint32 * aNameServersSize, PRUnichar * * * aNameServers) { return smth GetNameServers (aNameServersSize, aNameServers); }
#define COM_FORWARD_IHost_GETTER_NameServers_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_NameServers_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_NameServers_TO_BASE(base) COM_FORWARD_IHost_GETTER_NameServers_TO (base::)
#define COM_FORWARD_IHost_GETTER_DomainName_TO(smth) NS_IMETHOD GetDomainName (PRUnichar * * aDomainName) { return smth GetDomainName (aDomainName); }
#define COM_FORWARD_IHost_GETTER_DomainName_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_DomainName_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_DomainName_TO_BASE(base) COM_FORWARD_IHost_GETTER_DomainName_TO (base::)
#define COM_FORWARD_IHost_GETTER_SearchStrings_TO(smth) NS_IMETHOD GetSearchStrings (PRUint32 * aSearchStringsSize, PRUnichar * * * aSearchStrings) { return smth GetSearchStrings (aSearchStringsSize, aSearchStrings); }
#define COM_FORWARD_IHost_GETTER_SearchStrings_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_SearchStrings_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_SearchStrings_TO_BASE(base) COM_FORWARD_IHost_GETTER_SearchStrings_TO (base::)
#define COM_FORWARD_IHost_GETTER_ProcessorCount_TO(smth) NS_IMETHOD GetProcessorCount (PRUint32 * aProcessorCount) { return smth GetProcessorCount (aProcessorCount); }
#define COM_FORWARD_IHost_GETTER_ProcessorCount_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_ProcessorCount_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_ProcessorCount_TO_BASE(base) COM_FORWARD_IHost_GETTER_ProcessorCount_TO (base::)
#define COM_FORWARD_IHost_GETTER_ProcessorOnlineCount_TO(smth) NS_IMETHOD GetProcessorOnlineCount (PRUint32 * aProcessorOnlineCount) { return smth GetProcessorOnlineCount (aProcessorOnlineCount); }
#define COM_FORWARD_IHost_GETTER_ProcessorOnlineCount_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_ProcessorOnlineCount_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_ProcessorOnlineCount_TO_BASE(base) COM_FORWARD_IHost_GETTER_ProcessorOnlineCount_TO (base::)
#define COM_FORWARD_IHost_GETTER_ProcessorCoreCount_TO(smth) NS_IMETHOD GetProcessorCoreCount (PRUint32 * aProcessorCoreCount) { return smth GetProcessorCoreCount (aProcessorCoreCount); }
#define COM_FORWARD_IHost_GETTER_ProcessorCoreCount_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_ProcessorCoreCount_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_ProcessorCoreCount_TO_BASE(base) COM_FORWARD_IHost_GETTER_ProcessorCoreCount_TO (base::)
#define COM_FORWARD_IHost_GETTER_ProcessorOnlineCoreCount_TO(smth) NS_IMETHOD GetProcessorOnlineCoreCount (PRUint32 * aProcessorOnlineCoreCount) { return smth GetProcessorOnlineCoreCount (aProcessorOnlineCoreCount); }
#define COM_FORWARD_IHost_GETTER_ProcessorOnlineCoreCount_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_ProcessorOnlineCoreCount_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_ProcessorOnlineCoreCount_TO_BASE(base) COM_FORWARD_IHost_GETTER_ProcessorOnlineCoreCount_TO (base::)
#define COM_FORWARD_IHost_GETTER_MemorySize_TO(smth) NS_IMETHOD GetMemorySize (PRUint32 * aMemorySize) { return smth GetMemorySize (aMemorySize); }
#define COM_FORWARD_IHost_GETTER_MemorySize_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_MemorySize_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_MemorySize_TO_BASE(base) COM_FORWARD_IHost_GETTER_MemorySize_TO (base::)
#define COM_FORWARD_IHost_GETTER_MemoryAvailable_TO(smth) NS_IMETHOD GetMemoryAvailable (PRUint32 * aMemoryAvailable) { return smth GetMemoryAvailable (aMemoryAvailable); }
#define COM_FORWARD_IHost_GETTER_MemoryAvailable_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_MemoryAvailable_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_MemoryAvailable_TO_BASE(base) COM_FORWARD_IHost_GETTER_MemoryAvailable_TO (base::)
#define COM_FORWARD_IHost_GETTER_OperatingSystem_TO(smth) NS_IMETHOD GetOperatingSystem (PRUnichar * * aOperatingSystem) { return smth GetOperatingSystem (aOperatingSystem); }
#define COM_FORWARD_IHost_GETTER_OperatingSystem_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_OperatingSystem_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_OperatingSystem_TO_BASE(base) COM_FORWARD_IHost_GETTER_OperatingSystem_TO (base::)
#define COM_FORWARD_IHost_GETTER_OSVersion_TO(smth) NS_IMETHOD GetOSVersion (PRUnichar * * aOSVersion) { return smth GetOSVersion (aOSVersion); }
#define COM_FORWARD_IHost_GETTER_OSVersion_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_OSVersion_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_OSVersion_TO_BASE(base) COM_FORWARD_IHost_GETTER_OSVersion_TO (base::)
#define COM_FORWARD_IHost_GETTER_UTCTime_TO(smth) NS_IMETHOD GetUTCTime (PRInt64 * aUTCTime) { return smth GetUTCTime (aUTCTime); }
#define COM_FORWARD_IHost_GETTER_UTCTime_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_UTCTime_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_UTCTime_TO_BASE(base) COM_FORWARD_IHost_GETTER_UTCTime_TO (base::)
#define COM_FORWARD_IHost_GETTER_Acceleration3DAvailable_TO(smth) NS_IMETHOD GetAcceleration3DAvailable (PRBool * aAcceleration3DAvailable) { return smth GetAcceleration3DAvailable (aAcceleration3DAvailable); }
#define COM_FORWARD_IHost_GETTER_Acceleration3DAvailable_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_Acceleration3DAvailable_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_Acceleration3DAvailable_TO_BASE(base) COM_FORWARD_IHost_GETTER_Acceleration3DAvailable_TO (base::)
#define COM_FORWARD_IHost_GETTER_VideoInputDevices_TO(smth) NS_IMETHOD GetVideoInputDevices (PRUint32 * aVideoInputDevicesSize, IHostVideoInputDevice * * * aVideoInputDevices) { return smth GetVideoInputDevices (aVideoInputDevicesSize, aVideoInputDevices); }
#define COM_FORWARD_IHost_GETTER_VideoInputDevices_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_VideoInputDevices_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_VideoInputDevices_TO_BASE(base) COM_FORWARD_IHost_GETTER_VideoInputDevices_TO (base::)
#define COM_FORWARD_IHost_GetProcessorSpeed_TO(smth) NS_IMETHOD GetProcessorSpeed (PRUint32 aCpuId, PRUint32 * aSpeed) { return smth GetProcessorSpeed (aCpuId, aSpeed); }
#define COM_FORWARD_IHost_GetProcessorSpeed_TO_OBJ(obj) COM_FORWARD_IHost_GetProcessorSpeed_TO ((obj)->)
#define COM_FORWARD_IHost_GetProcessorSpeed_TO_BASE(base) COM_FORWARD_IHost_GetProcessorSpeed_TO (base::)
#define COM_FORWARD_IHost_GetProcessorFeature_TO(smth) NS_IMETHOD GetProcessorFeature (PRUint32 aFeature, PRBool * aSupported) { return smth GetProcessorFeature (aFeature, aSupported); }
#define COM_FORWARD_IHost_GetProcessorFeature_TO_OBJ(obj) COM_FORWARD_IHost_GetProcessorFeature_TO ((obj)->)
#define COM_FORWARD_IHost_GetProcessorFeature_TO_BASE(base) COM_FORWARD_IHost_GetProcessorFeature_TO (base::)
#define COM_FORWARD_IHost_GetProcessorDescription_TO(smth) NS_IMETHOD GetProcessorDescription (PRUint32 aCpuId, PRUnichar * * aDescription) { return smth GetProcessorDescription (aCpuId, aDescription); }
#define COM_FORWARD_IHost_GetProcessorDescription_TO_OBJ(obj) COM_FORWARD_IHost_GetProcessorDescription_TO ((obj)->)
#define COM_FORWARD_IHost_GetProcessorDescription_TO_BASE(base) COM_FORWARD_IHost_GetProcessorDescription_TO (base::)
#define COM_FORWARD_IHost_GetProcessorCPUIDLeaf_TO(smth) NS_IMETHOD GetProcessorCPUIDLeaf (PRUint32 aCpuId, PRUint32 aLeaf, PRUint32 aSubLeaf, PRUint32 * aValEax, PRUint32 * aValEbx, PRUint32 * aValEcx, PRUint32 * aValEdx) { return smth GetProcessorCPUIDLeaf (aCpuId, aLeaf, aSubLeaf, aValEax, aValEbx, aValEcx, aValEdx); }
#define COM_FORWARD_IHost_GetProcessorCPUIDLeaf_TO_OBJ(obj) COM_FORWARD_IHost_GetProcessorCPUIDLeaf_TO ((obj)->)
#define COM_FORWARD_IHost_GetProcessorCPUIDLeaf_TO_BASE(base) COM_FORWARD_IHost_GetProcessorCPUIDLeaf_TO (base::)
#define COM_FORWARD_IHost_CreateHostOnlyNetworkInterface_TO(smth) NS_IMETHOD CreateHostOnlyNetworkInterface (IHostNetworkInterface * * aHostInterface, IProgress * * aProgress) { return smth CreateHostOnlyNetworkInterface (aHostInterface, aProgress); }
#define COM_FORWARD_IHost_CreateHostOnlyNetworkInterface_TO_OBJ(obj) COM_FORWARD_IHost_CreateHostOnlyNetworkInterface_TO ((obj)->)
#define COM_FORWARD_IHost_CreateHostOnlyNetworkInterface_TO_BASE(base) COM_FORWARD_IHost_CreateHostOnlyNetworkInterface_TO (base::)
#define COM_FORWARD_IHost_RemoveHostOnlyNetworkInterface_TO(smth) NS_IMETHOD RemoveHostOnlyNetworkInterface (PRUnichar * aId, IProgress * * aProgress) { return smth RemoveHostOnlyNetworkInterface (aId, aProgress); }
#define COM_FORWARD_IHost_RemoveHostOnlyNetworkInterface_TO_OBJ(obj) COM_FORWARD_IHost_RemoveHostOnlyNetworkInterface_TO ((obj)->)
#define COM_FORWARD_IHost_RemoveHostOnlyNetworkInterface_TO_BASE(base) COM_FORWARD_IHost_RemoveHostOnlyNetworkInterface_TO (base::)
#define COM_FORWARD_IHost_CreateUSBDeviceFilter_TO(smth) NS_IMETHOD CreateUSBDeviceFilter (PRUnichar * aName, IHostUSBDeviceFilter * * aFilter) { return smth CreateUSBDeviceFilter (aName, aFilter); }
#define COM_FORWARD_IHost_CreateUSBDeviceFilter_TO_OBJ(obj) COM_FORWARD_IHost_CreateUSBDeviceFilter_TO ((obj)->)
#define COM_FORWARD_IHost_CreateUSBDeviceFilter_TO_BASE(base) COM_FORWARD_IHost_CreateUSBDeviceFilter_TO (base::)
#define COM_FORWARD_IHost_InsertUSBDeviceFilter_TO(smth) NS_IMETHOD InsertUSBDeviceFilter (PRUint32 aPosition, IHostUSBDeviceFilter * aFilter) { return smth InsertUSBDeviceFilter (aPosition, aFilter); }
#define COM_FORWARD_IHost_InsertUSBDeviceFilter_TO_OBJ(obj) COM_FORWARD_IHost_InsertUSBDeviceFilter_TO ((obj)->)
#define COM_FORWARD_IHost_InsertUSBDeviceFilter_TO_BASE(base) COM_FORWARD_IHost_InsertUSBDeviceFilter_TO (base::)
#define COM_FORWARD_IHost_RemoveUSBDeviceFilter_TO(smth) NS_IMETHOD RemoveUSBDeviceFilter (PRUint32 aPosition) { return smth RemoveUSBDeviceFilter (aPosition); }
#define COM_FORWARD_IHost_RemoveUSBDeviceFilter_TO_OBJ(obj) COM_FORWARD_IHost_RemoveUSBDeviceFilter_TO ((obj)->)
#define COM_FORWARD_IHost_RemoveUSBDeviceFilter_TO_BASE(base) COM_FORWARD_IHost_RemoveUSBDeviceFilter_TO (base::)
#define COM_FORWARD_IHost_FindHostDVDDrive_TO(smth) NS_IMETHOD FindHostDVDDrive (PRUnichar * aName, IMedium * * aDrive) { return smth FindHostDVDDrive (aName, aDrive); }
#define COM_FORWARD_IHost_FindHostDVDDrive_TO_OBJ(obj) COM_FORWARD_IHost_FindHostDVDDrive_TO ((obj)->)
#define COM_FORWARD_IHost_FindHostDVDDrive_TO_BASE(base) COM_FORWARD_IHost_FindHostDVDDrive_TO (base::)
#define COM_FORWARD_IHost_FindHostFloppyDrive_TO(smth) NS_IMETHOD FindHostFloppyDrive (PRUnichar * aName, IMedium * * aDrive) { return smth FindHostFloppyDrive (aName, aDrive); }
#define COM_FORWARD_IHost_FindHostFloppyDrive_TO_OBJ(obj) COM_FORWARD_IHost_FindHostFloppyDrive_TO ((obj)->)
#define COM_FORWARD_IHost_FindHostFloppyDrive_TO_BASE(base) COM_FORWARD_IHost_FindHostFloppyDrive_TO (base::)
#define COM_FORWARD_IHost_FindHostNetworkInterfaceByName_TO(smth) NS_IMETHOD FindHostNetworkInterfaceByName (PRUnichar * aName, IHostNetworkInterface * * aNetworkInterface) { return smth FindHostNetworkInterfaceByName (aName, aNetworkInterface); }
#define COM_FORWARD_IHost_FindHostNetworkInterfaceByName_TO_OBJ(obj) COM_FORWARD_IHost_FindHostNetworkInterfaceByName_TO ((obj)->)
#define COM_FORWARD_IHost_FindHostNetworkInterfaceByName_TO_BASE(base) COM_FORWARD_IHost_FindHostNetworkInterfaceByName_TO (base::)
#define COM_FORWARD_IHost_FindHostNetworkInterfaceById_TO(smth) NS_IMETHOD FindHostNetworkInterfaceById (PRUnichar * aId, IHostNetworkInterface * * aNetworkInterface) { return smth FindHostNetworkInterfaceById (aId, aNetworkInterface); }
#define COM_FORWARD_IHost_FindHostNetworkInterfaceById_TO_OBJ(obj) COM_FORWARD_IHost_FindHostNetworkInterfaceById_TO ((obj)->)
#define COM_FORWARD_IHost_FindHostNetworkInterfaceById_TO_BASE(base) COM_FORWARD_IHost_FindHostNetworkInterfaceById_TO (base::)
#define COM_FORWARD_IHost_FindHostNetworkInterfacesOfType_TO(smth) NS_IMETHOD FindHostNetworkInterfacesOfType (PRUint32 aType, PRUint32 * aNetworkInterfacesSize, IHostNetworkInterface * * * aNetworkInterfaces) { return smth FindHostNetworkInterfacesOfType (aType, aNetworkInterfacesSize, aNetworkInterfaces); }
#define COM_FORWARD_IHost_FindHostNetworkInterfacesOfType_TO_OBJ(obj) COM_FORWARD_IHost_FindHostNetworkInterfacesOfType_TO ((obj)->)
#define COM_FORWARD_IHost_FindHostNetworkInterfacesOfType_TO_BASE(base) COM_FORWARD_IHost_FindHostNetworkInterfacesOfType_TO (base::)
#define COM_FORWARD_IHost_FindUSBDeviceById_TO(smth) NS_IMETHOD FindUSBDeviceById (PRUnichar * aId, IHostUSBDevice * * aDevice) { return smth FindUSBDeviceById (aId, aDevice); }
#define COM_FORWARD_IHost_FindUSBDeviceById_TO_OBJ(obj) COM_FORWARD_IHost_FindUSBDeviceById_TO ((obj)->)
#define COM_FORWARD_IHost_FindUSBDeviceById_TO_BASE(base) COM_FORWARD_IHost_FindUSBDeviceById_TO (base::)
#define COM_FORWARD_IHost_FindUSBDeviceByAddress_TO(smth) NS_IMETHOD FindUSBDeviceByAddress (PRUnichar * aName, IHostUSBDevice * * aDevice) { return smth FindUSBDeviceByAddress (aName, aDevice); }
#define COM_FORWARD_IHost_FindUSBDeviceByAddress_TO_OBJ(obj) COM_FORWARD_IHost_FindUSBDeviceByAddress_TO ((obj)->)
#define COM_FORWARD_IHost_FindUSBDeviceByAddress_TO_BASE(base) COM_FORWARD_IHost_FindUSBDeviceByAddress_TO (base::)
#define COM_FORWARD_IHost_GenerateMACAddress_TO(smth) NS_IMETHOD GenerateMACAddress (PRUnichar * * aAddress) { return smth GenerateMACAddress (aAddress); }
#define COM_FORWARD_IHost_GenerateMACAddress_TO_OBJ(obj) COM_FORWARD_IHost_GenerateMACAddress_TO ((obj)->)
#define COM_FORWARD_IHost_GenerateMACAddress_TO_BASE(base) COM_FORWARD_IHost_GenerateMACAddress_TO (base::)
#define COM_FORWARD_IHost_TO(smth) NS_FORWARD_IHOST (smth)
#define COM_FORWARD_IHost_TO_OBJ(obj) COM_FORWARD_IHost_TO ((obj)->)
#define COM_FORWARD_IHost_TO_BASE(base) COM_FORWARD_IHost_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IHost;

/* starting interface:    ISystemProperties */
#define ISYSTEMPROPERTIES_IID_STR "1254a96a-ae57-4484-946a-22d86c1f98af"

#define ISYSTEMPROPERTIES_IID \
  {0x1254a96a, 0xae57, 0x4484, \
    { 0x94, 0x6a, 0x22, 0xd8, 0x6c, 0x1f, 0x98, 0xaf }}

class NS_NO_VTABLE ISystemProperties : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISYSTEMPROPERTIES_IID)

  /* readonly attribute unsigned long minGuestRAM; */
  NS_IMETHOD GetMinGuestRAM(PRUint32 *aMinGuestRAM) = 0;

  /* readonly attribute unsigned long maxGuestRAM; */
  NS_IMETHOD GetMaxGuestRAM(PRUint32 *aMaxGuestRAM) = 0;

  /* readonly attribute unsigned long minGuestVRAM; */
  NS_IMETHOD GetMinGuestVRAM(PRUint32 *aMinGuestVRAM) = 0;

  /* readonly attribute unsigned long maxGuestVRAM; */
  NS_IMETHOD GetMaxGuestVRAM(PRUint32 *aMaxGuestVRAM) = 0;

  /* readonly attribute unsigned long minGuestCPUCount; */
  NS_IMETHOD GetMinGuestCPUCount(PRUint32 *aMinGuestCPUCount) = 0;

  /* readonly attribute unsigned long maxGuestCPUCount; */
  NS_IMETHOD GetMaxGuestCPUCount(PRUint32 *aMaxGuestCPUCount) = 0;

  /* readonly attribute unsigned long maxGuestMonitors; */
  NS_IMETHOD GetMaxGuestMonitors(PRUint32 *aMaxGuestMonitors) = 0;

  /* readonly attribute long long infoVDSize; */
  NS_IMETHOD GetInfoVDSize(PRInt64 *aInfoVDSize) = 0;

  /* readonly attribute unsigned long serialPortCount; */
  NS_IMETHOD GetSerialPortCount(PRUint32 *aSerialPortCount) = 0;

  /* readonly attribute unsigned long parallelPortCount; */
  NS_IMETHOD GetParallelPortCount(PRUint32 *aParallelPortCount) = 0;

  /* readonly attribute unsigned long maxBootPosition; */
  NS_IMETHOD GetMaxBootPosition(PRUint32 *aMaxBootPosition) = 0;

  /* attribute boolean exclusiveHwVirt; */
  NS_IMETHOD GetExclusiveHwVirt(PRBool *aExclusiveHwVirt) = 0;
  NS_IMETHOD SetExclusiveHwVirt(PRBool aExclusiveHwVirt) = 0;

  /* attribute wstring defaultMachineFolder; */
  NS_IMETHOD GetDefaultMachineFolder(PRUnichar * *aDefaultMachineFolder) = 0;
  NS_IMETHOD SetDefaultMachineFolder(const PRUnichar * aDefaultMachineFolder) = 0;

  /* attribute wstring loggingLevel; */
  NS_IMETHOD GetLoggingLevel(PRUnichar * *aLoggingLevel) = 0;
  NS_IMETHOD SetLoggingLevel(const PRUnichar * aLoggingLevel) = 0;

  /* void getMediumFormats (out unsigned long mediumFormatsSize, [array, size_is (mediumFormatsSize), retval] out IMediumFormat mediumFormats); */
  NS_IMETHOD GetMediumFormats(PRUint32 *mediumFormatsSize, IMediumFormat ***mediumFormats) = 0;

  /* attribute wstring defaultHardDiskFormat; */
  NS_IMETHOD GetDefaultHardDiskFormat(PRUnichar * *aDefaultHardDiskFormat) = 0;
  NS_IMETHOD SetDefaultHardDiskFormat(const PRUnichar * aDefaultHardDiskFormat) = 0;

  /* attribute long long freeDiskSpaceWarning; */
  NS_IMETHOD GetFreeDiskSpaceWarning(PRInt64 *aFreeDiskSpaceWarning) = 0;
  NS_IMETHOD SetFreeDiskSpaceWarning(PRInt64 aFreeDiskSpaceWarning) = 0;

  /* attribute unsigned long freeDiskSpacePercentWarning; */
  NS_IMETHOD GetFreeDiskSpacePercentWarning(PRUint32 *aFreeDiskSpacePercentWarning) = 0;
  NS_IMETHOD SetFreeDiskSpacePercentWarning(PRUint32 aFreeDiskSpacePercentWarning) = 0;

  /* attribute long long freeDiskSpaceError; */
  NS_IMETHOD GetFreeDiskSpaceError(PRInt64 *aFreeDiskSpaceError) = 0;
  NS_IMETHOD SetFreeDiskSpaceError(PRInt64 aFreeDiskSpaceError) = 0;

  /* attribute unsigned long freeDiskSpacePercentError; */
  NS_IMETHOD GetFreeDiskSpacePercentError(PRUint32 *aFreeDiskSpacePercentError) = 0;
  NS_IMETHOD SetFreeDiskSpacePercentError(PRUint32 aFreeDiskSpacePercentError) = 0;

  /* attribute wstring VRDEAuthLibrary; */
  NS_IMETHOD GetVRDEAuthLibrary(PRUnichar * *aVRDEAuthLibrary) = 0;
  NS_IMETHOD SetVRDEAuthLibrary(const PRUnichar * aVRDEAuthLibrary) = 0;

  /* attribute wstring webServiceAuthLibrary; */
  NS_IMETHOD GetWebServiceAuthLibrary(PRUnichar * *aWebServiceAuthLibrary) = 0;
  NS_IMETHOD SetWebServiceAuthLibrary(const PRUnichar * aWebServiceAuthLibrary) = 0;

  /* attribute wstring defaultVRDEExtPack; */
  NS_IMETHOD GetDefaultVRDEExtPack(PRUnichar * *aDefaultVRDEExtPack) = 0;
  NS_IMETHOD SetDefaultVRDEExtPack(const PRUnichar * aDefaultVRDEExtPack) = 0;

  /* attribute unsigned long logHistoryCount; */
  NS_IMETHOD GetLogHistoryCount(PRUint32 *aLogHistoryCount) = 0;
  NS_IMETHOD SetLogHistoryCount(PRUint32 aLogHistoryCount) = 0;

  /* readonly attribute PRUint32 defaultAudioDriver; */
  NS_IMETHOD GetDefaultAudioDriver(PRUint32 *aDefaultAudioDriver) = 0;

  /* attribute wstring autostartDatabasePath; */
  NS_IMETHOD GetAutostartDatabasePath(PRUnichar * *aAutostartDatabasePath) = 0;
  NS_IMETHOD SetAutostartDatabasePath(const PRUnichar * aAutostartDatabasePath) = 0;

  /* attribute wstring defaultAdditionsISO; */
  NS_IMETHOD GetDefaultAdditionsISO(PRUnichar * *aDefaultAdditionsISO) = 0;
  NS_IMETHOD SetDefaultAdditionsISO(const PRUnichar * aDefaultAdditionsISO) = 0;

  /* attribute wstring defaultFrontend; */
  NS_IMETHOD GetDefaultFrontend(PRUnichar * *aDefaultFrontend) = 0;
  NS_IMETHOD SetDefaultFrontend(const PRUnichar * aDefaultFrontend) = 0;

  /* void getMaxNetworkAdapters (in PRUint32 chipset, [retval] out unsigned long maxNetworkAdapters); */
  NS_IMETHOD GetMaxNetworkAdapters(PRUint32 chipset, PRUint32 *maxNetworkAdapters) = 0;

  /* void getMaxNetworkAdaptersOfType (in PRUint32 chipset, in PRUint32 type, [retval] out unsigned long maxNetworkAdapters); */
  NS_IMETHOD GetMaxNetworkAdaptersOfType(PRUint32 chipset, PRUint32 type, PRUint32 *maxNetworkAdapters) = 0;

  /* void getMaxDevicesPerPortForStorageBus (in PRUint32 bus, [retval] out unsigned long maxDevicesPerPort); */
  NS_IMETHOD GetMaxDevicesPerPortForStorageBus(PRUint32 bus, PRUint32 *maxDevicesPerPort) = 0;

  /* void getMinPortCountForStorageBus (in PRUint32 bus, [retval] out unsigned long minPortCount); */
  NS_IMETHOD GetMinPortCountForStorageBus(PRUint32 bus, PRUint32 *minPortCount) = 0;

  /* void getMaxPortCountForStorageBus (in PRUint32 bus, [retval] out unsigned long maxPortCount); */
  NS_IMETHOD GetMaxPortCountForStorageBus(PRUint32 bus, PRUint32 *maxPortCount) = 0;

  /* void getMaxInstancesOfStorageBus (in PRUint32 chipset, in PRUint32 bus, [retval] out unsigned long maxInstances); */
  NS_IMETHOD GetMaxInstancesOfStorageBus(PRUint32 chipset, PRUint32 bus, PRUint32 *maxInstances) = 0;

  /* void getDeviceTypesForStorageBus (in PRUint32 bus, out unsigned long deviceTypesSize, [array, size_is (deviceTypesSize), retval] out PRUint32 deviceTypes); */
  NS_IMETHOD GetDeviceTypesForStorageBus(PRUint32 bus, PRUint32 *deviceTypesSize, PRUint32 **deviceTypes) = 0;

  /* void getDefaultIoCacheSettingForStorageController (in PRUint32 controllerType, [retval] out boolean enabled); */
  NS_IMETHOD GetDefaultIoCacheSettingForStorageController(PRUint32 controllerType, PRBool *enabled) = 0;

  /* void getMaxInstancesOfUSBControllerType (in PRUint32 chipset, in PRUint32 type, [retval] out unsigned long maxInstances); */
  NS_IMETHOD GetMaxInstancesOfUSBControllerType(PRUint32 chipset, PRUint32 type, PRUint32 *maxInstances) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISYSTEMPROPERTIES \
  NS_IMETHOD GetMinGuestRAM(PRUint32 *aMinGuestRAM); \
  NS_IMETHOD GetMaxGuestRAM(PRUint32 *aMaxGuestRAM); \
  NS_IMETHOD GetMinGuestVRAM(PRUint32 *aMinGuestVRAM); \
  NS_IMETHOD GetMaxGuestVRAM(PRUint32 *aMaxGuestVRAM); \
  NS_IMETHOD GetMinGuestCPUCount(PRUint32 *aMinGuestCPUCount); \
  NS_IMETHOD GetMaxGuestCPUCount(PRUint32 *aMaxGuestCPUCount); \
  NS_IMETHOD GetMaxGuestMonitors(PRUint32 *aMaxGuestMonitors); \
  NS_IMETHOD GetInfoVDSize(PRInt64 *aInfoVDSize); \
  NS_IMETHOD GetSerialPortCount(PRUint32 *aSerialPortCount); \
  NS_IMETHOD GetParallelPortCount(PRUint32 *aParallelPortCount); \
  NS_IMETHOD GetMaxBootPosition(PRUint32 *aMaxBootPosition); \
  NS_IMETHOD GetExclusiveHwVirt(PRBool *aExclusiveHwVirt); \
  NS_IMETHOD SetExclusiveHwVirt(PRBool aExclusiveHwVirt); \
  NS_IMETHOD GetDefaultMachineFolder(PRUnichar * *aDefaultMachineFolder); \
  NS_IMETHOD SetDefaultMachineFolder(const PRUnichar * aDefaultMachineFolder); \
  NS_IMETHOD GetLoggingLevel(PRUnichar * *aLoggingLevel); \
  NS_IMETHOD SetLoggingLevel(const PRUnichar * aLoggingLevel); \
  NS_IMETHOD GetMediumFormats(PRUint32 *mediumFormatsSize, IMediumFormat ***mediumFormats); \
  NS_IMETHOD GetDefaultHardDiskFormat(PRUnichar * *aDefaultHardDiskFormat); \
  NS_IMETHOD SetDefaultHardDiskFormat(const PRUnichar * aDefaultHardDiskFormat); \
  NS_IMETHOD GetFreeDiskSpaceWarning(PRInt64 *aFreeDiskSpaceWarning); \
  NS_IMETHOD SetFreeDiskSpaceWarning(PRInt64 aFreeDiskSpaceWarning); \
  NS_IMETHOD GetFreeDiskSpacePercentWarning(PRUint32 *aFreeDiskSpacePercentWarning); \
  NS_IMETHOD SetFreeDiskSpacePercentWarning(PRUint32 aFreeDiskSpacePercentWarning); \
  NS_IMETHOD GetFreeDiskSpaceError(PRInt64 *aFreeDiskSpaceError); \
  NS_IMETHOD SetFreeDiskSpaceError(PRInt64 aFreeDiskSpaceError); \
  NS_IMETHOD GetFreeDiskSpacePercentError(PRUint32 *aFreeDiskSpacePercentError); \
  NS_IMETHOD SetFreeDiskSpacePercentError(PRUint32 aFreeDiskSpacePercentError); \
  NS_IMETHOD GetVRDEAuthLibrary(PRUnichar * *aVRDEAuthLibrary); \
  NS_IMETHOD SetVRDEAuthLibrary(const PRUnichar * aVRDEAuthLibrary); \
  NS_IMETHOD GetWebServiceAuthLibrary(PRUnichar * *aWebServiceAuthLibrary); \
  NS_IMETHOD SetWebServiceAuthLibrary(const PRUnichar * aWebServiceAuthLibrary); \
  NS_IMETHOD GetDefaultVRDEExtPack(PRUnichar * *aDefaultVRDEExtPack); \
  NS_IMETHOD SetDefaultVRDEExtPack(const PRUnichar * aDefaultVRDEExtPack); \
  NS_IMETHOD GetLogHistoryCount(PRUint32 *aLogHistoryCount); \
  NS_IMETHOD SetLogHistoryCount(PRUint32 aLogHistoryCount); \
  NS_IMETHOD GetDefaultAudioDriver(PRUint32 *aDefaultAudioDriver); \
  NS_IMETHOD GetAutostartDatabasePath(PRUnichar * *aAutostartDatabasePath); \
  NS_IMETHOD SetAutostartDatabasePath(const PRUnichar * aAutostartDatabasePath); \
  NS_IMETHOD GetDefaultAdditionsISO(PRUnichar * *aDefaultAdditionsISO); \
  NS_IMETHOD SetDefaultAdditionsISO(const PRUnichar * aDefaultAdditionsISO); \
  NS_IMETHOD GetDefaultFrontend(PRUnichar * *aDefaultFrontend); \
  NS_IMETHOD SetDefaultFrontend(const PRUnichar * aDefaultFrontend); \
  NS_IMETHOD GetMaxNetworkAdapters(PRUint32 chipset, PRUint32 *maxNetworkAdapters); \
  NS_IMETHOD GetMaxNetworkAdaptersOfType(PRUint32 chipset, PRUint32 type, PRUint32 *maxNetworkAdapters); \
  NS_IMETHOD GetMaxDevicesPerPortForStorageBus(PRUint32 bus, PRUint32 *maxDevicesPerPort); \
  NS_IMETHOD GetMinPortCountForStorageBus(PRUint32 bus, PRUint32 *minPortCount); \
  NS_IMETHOD GetMaxPortCountForStorageBus(PRUint32 bus, PRUint32 *maxPortCount); \
  NS_IMETHOD GetMaxInstancesOfStorageBus(PRUint32 chipset, PRUint32 bus, PRUint32 *maxInstances); \
  NS_IMETHOD GetDeviceTypesForStorageBus(PRUint32 bus, PRUint32 *deviceTypesSize, PRUint32 **deviceTypes); \
  NS_IMETHOD GetDefaultIoCacheSettingForStorageController(PRUint32 controllerType, PRBool *enabled); \
  NS_IMETHOD GetMaxInstancesOfUSBControllerType(PRUint32 chipset, PRUint32 type, PRUint32 *maxInstances); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISYSTEMPROPERTIES(_to) \
  NS_IMETHOD GetMinGuestRAM(PRUint32 *aMinGuestRAM) { return _to GetMinGuestRAM(aMinGuestRAM); } \
  NS_IMETHOD GetMaxGuestRAM(PRUint32 *aMaxGuestRAM) { return _to GetMaxGuestRAM(aMaxGuestRAM); } \
  NS_IMETHOD GetMinGuestVRAM(PRUint32 *aMinGuestVRAM) { return _to GetMinGuestVRAM(aMinGuestVRAM); } \
  NS_IMETHOD GetMaxGuestVRAM(PRUint32 *aMaxGuestVRAM) { return _to GetMaxGuestVRAM(aMaxGuestVRAM); } \
  NS_IMETHOD GetMinGuestCPUCount(PRUint32 *aMinGuestCPUCount) { return _to GetMinGuestCPUCount(aMinGuestCPUCount); } \
  NS_IMETHOD GetMaxGuestCPUCount(PRUint32 *aMaxGuestCPUCount) { return _to GetMaxGuestCPUCount(aMaxGuestCPUCount); } \
  NS_IMETHOD GetMaxGuestMonitors(PRUint32 *aMaxGuestMonitors) { return _to GetMaxGuestMonitors(aMaxGuestMonitors); } \
  NS_IMETHOD GetInfoVDSize(PRInt64 *aInfoVDSize) { return _to GetInfoVDSize(aInfoVDSize); } \
  NS_IMETHOD GetSerialPortCount(PRUint32 *aSerialPortCount) { return _to GetSerialPortCount(aSerialPortCount); } \
  NS_IMETHOD GetParallelPortCount(PRUint32 *aParallelPortCount) { return _to GetParallelPortCount(aParallelPortCount); } \
  NS_IMETHOD GetMaxBootPosition(PRUint32 *aMaxBootPosition) { return _to GetMaxBootPosition(aMaxBootPosition); } \
  NS_IMETHOD GetExclusiveHwVirt(PRBool *aExclusiveHwVirt) { return _to GetExclusiveHwVirt(aExclusiveHwVirt); } \
  NS_IMETHOD SetExclusiveHwVirt(PRBool aExclusiveHwVirt) { return _to SetExclusiveHwVirt(aExclusiveHwVirt); } \
  NS_IMETHOD GetDefaultMachineFolder(PRUnichar * *aDefaultMachineFolder) { return _to GetDefaultMachineFolder(aDefaultMachineFolder); } \
  NS_IMETHOD SetDefaultMachineFolder(const PRUnichar * aDefaultMachineFolder) { return _to SetDefaultMachineFolder(aDefaultMachineFolder); } \
  NS_IMETHOD GetLoggingLevel(PRUnichar * *aLoggingLevel) { return _to GetLoggingLevel(aLoggingLevel); } \
  NS_IMETHOD SetLoggingLevel(const PRUnichar * aLoggingLevel) { return _to SetLoggingLevel(aLoggingLevel); } \
  NS_IMETHOD GetMediumFormats(PRUint32 *mediumFormatsSize, IMediumFormat ***mediumFormats) { return _to GetMediumFormats(mediumFormatsSize, mediumFormats); } \
  NS_IMETHOD GetDefaultHardDiskFormat(PRUnichar * *aDefaultHardDiskFormat) { return _to GetDefaultHardDiskFormat(aDefaultHardDiskFormat); } \
  NS_IMETHOD SetDefaultHardDiskFormat(const PRUnichar * aDefaultHardDiskFormat) { return _to SetDefaultHardDiskFormat(aDefaultHardDiskFormat); } \
  NS_IMETHOD GetFreeDiskSpaceWarning(PRInt64 *aFreeDiskSpaceWarning) { return _to GetFreeDiskSpaceWarning(aFreeDiskSpaceWarning); } \
  NS_IMETHOD SetFreeDiskSpaceWarning(PRInt64 aFreeDiskSpaceWarning) { return _to SetFreeDiskSpaceWarning(aFreeDiskSpaceWarning); } \
  NS_IMETHOD GetFreeDiskSpacePercentWarning(PRUint32 *aFreeDiskSpacePercentWarning) { return _to GetFreeDiskSpacePercentWarning(aFreeDiskSpacePercentWarning); } \
  NS_IMETHOD SetFreeDiskSpacePercentWarning(PRUint32 aFreeDiskSpacePercentWarning) { return _to SetFreeDiskSpacePercentWarning(aFreeDiskSpacePercentWarning); } \
  NS_IMETHOD GetFreeDiskSpaceError(PRInt64 *aFreeDiskSpaceError) { return _to GetFreeDiskSpaceError(aFreeDiskSpaceError); } \
  NS_IMETHOD SetFreeDiskSpaceError(PRInt64 aFreeDiskSpaceError) { return _to SetFreeDiskSpaceError(aFreeDiskSpaceError); } \
  NS_IMETHOD GetFreeDiskSpacePercentError(PRUint32 *aFreeDiskSpacePercentError) { return _to GetFreeDiskSpacePercentError(aFreeDiskSpacePercentError); } \
  NS_IMETHOD SetFreeDiskSpacePercentError(PRUint32 aFreeDiskSpacePercentError) { return _to SetFreeDiskSpacePercentError(aFreeDiskSpacePercentError); } \
  NS_IMETHOD GetVRDEAuthLibrary(PRUnichar * *aVRDEAuthLibrary) { return _to GetVRDEAuthLibrary(aVRDEAuthLibrary); } \
  NS_IMETHOD SetVRDEAuthLibrary(const PRUnichar * aVRDEAuthLibrary) { return _to SetVRDEAuthLibrary(aVRDEAuthLibrary); } \
  NS_IMETHOD GetWebServiceAuthLibrary(PRUnichar * *aWebServiceAuthLibrary) { return _to GetWebServiceAuthLibrary(aWebServiceAuthLibrary); } \
  NS_IMETHOD SetWebServiceAuthLibrary(const PRUnichar * aWebServiceAuthLibrary) { return _to SetWebServiceAuthLibrary(aWebServiceAuthLibrary); } \
  NS_IMETHOD GetDefaultVRDEExtPack(PRUnichar * *aDefaultVRDEExtPack) { return _to GetDefaultVRDEExtPack(aDefaultVRDEExtPack); } \
  NS_IMETHOD SetDefaultVRDEExtPack(const PRUnichar * aDefaultVRDEExtPack) { return _to SetDefaultVRDEExtPack(aDefaultVRDEExtPack); } \
  NS_IMETHOD GetLogHistoryCount(PRUint32 *aLogHistoryCount) { return _to GetLogHistoryCount(aLogHistoryCount); } \
  NS_IMETHOD SetLogHistoryCount(PRUint32 aLogHistoryCount) { return _to SetLogHistoryCount(aLogHistoryCount); } \
  NS_IMETHOD GetDefaultAudioDriver(PRUint32 *aDefaultAudioDriver) { return _to GetDefaultAudioDriver(aDefaultAudioDriver); } \
  NS_IMETHOD GetAutostartDatabasePath(PRUnichar * *aAutostartDatabasePath) { return _to GetAutostartDatabasePath(aAutostartDatabasePath); } \
  NS_IMETHOD SetAutostartDatabasePath(const PRUnichar * aAutostartDatabasePath) { return _to SetAutostartDatabasePath(aAutostartDatabasePath); } \
  NS_IMETHOD GetDefaultAdditionsISO(PRUnichar * *aDefaultAdditionsISO) { return _to GetDefaultAdditionsISO(aDefaultAdditionsISO); } \
  NS_IMETHOD SetDefaultAdditionsISO(const PRUnichar * aDefaultAdditionsISO) { return _to SetDefaultAdditionsISO(aDefaultAdditionsISO); } \
  NS_IMETHOD GetDefaultFrontend(PRUnichar * *aDefaultFrontend) { return _to GetDefaultFrontend(aDefaultFrontend); } \
  NS_IMETHOD SetDefaultFrontend(const PRUnichar * aDefaultFrontend) { return _to SetDefaultFrontend(aDefaultFrontend); } \
  NS_IMETHOD GetMaxNetworkAdapters(PRUint32 chipset, PRUint32 *maxNetworkAdapters) { return _to GetMaxNetworkAdapters(chipset, maxNetworkAdapters); } \
  NS_IMETHOD GetMaxNetworkAdaptersOfType(PRUint32 chipset, PRUint32 type, PRUint32 *maxNetworkAdapters) { return _to GetMaxNetworkAdaptersOfType(chipset, type, maxNetworkAdapters); } \
  NS_IMETHOD GetMaxDevicesPerPortForStorageBus(PRUint32 bus, PRUint32 *maxDevicesPerPort) { return _to GetMaxDevicesPerPortForStorageBus(bus, maxDevicesPerPort); } \
  NS_IMETHOD GetMinPortCountForStorageBus(PRUint32 bus, PRUint32 *minPortCount) { return _to GetMinPortCountForStorageBus(bus, minPortCount); } \
  NS_IMETHOD GetMaxPortCountForStorageBus(PRUint32 bus, PRUint32 *maxPortCount) { return _to GetMaxPortCountForStorageBus(bus, maxPortCount); } \
  NS_IMETHOD GetMaxInstancesOfStorageBus(PRUint32 chipset, PRUint32 bus, PRUint32 *maxInstances) { return _to GetMaxInstancesOfStorageBus(chipset, bus, maxInstances); } \
  NS_IMETHOD GetDeviceTypesForStorageBus(PRUint32 bus, PRUint32 *deviceTypesSize, PRUint32 **deviceTypes) { return _to GetDeviceTypesForStorageBus(bus, deviceTypesSize, deviceTypes); } \
  NS_IMETHOD GetDefaultIoCacheSettingForStorageController(PRUint32 controllerType, PRBool *enabled) { return _to GetDefaultIoCacheSettingForStorageController(controllerType, enabled); } \
  NS_IMETHOD GetMaxInstancesOfUSBControllerType(PRUint32 chipset, PRUint32 type, PRUint32 *maxInstances) { return _to GetMaxInstancesOfUSBControllerType(chipset, type, maxInstances); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISYSTEMPROPERTIES(_to) \
  NS_IMETHOD GetMinGuestRAM(PRUint32 *aMinGuestRAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMinGuestRAM(aMinGuestRAM); } \
  NS_IMETHOD GetMaxGuestRAM(PRUint32 *aMaxGuestRAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxGuestRAM(aMaxGuestRAM); } \
  NS_IMETHOD GetMinGuestVRAM(PRUint32 *aMinGuestVRAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMinGuestVRAM(aMinGuestVRAM); } \
  NS_IMETHOD GetMaxGuestVRAM(PRUint32 *aMaxGuestVRAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxGuestVRAM(aMaxGuestVRAM); } \
  NS_IMETHOD GetMinGuestCPUCount(PRUint32 *aMinGuestCPUCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMinGuestCPUCount(aMinGuestCPUCount); } \
  NS_IMETHOD GetMaxGuestCPUCount(PRUint32 *aMaxGuestCPUCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxGuestCPUCount(aMaxGuestCPUCount); } \
  NS_IMETHOD GetMaxGuestMonitors(PRUint32 *aMaxGuestMonitors) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxGuestMonitors(aMaxGuestMonitors); } \
  NS_IMETHOD GetInfoVDSize(PRInt64 *aInfoVDSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInfoVDSize(aInfoVDSize); } \
  NS_IMETHOD GetSerialPortCount(PRUint32 *aSerialPortCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSerialPortCount(aSerialPortCount); } \
  NS_IMETHOD GetParallelPortCount(PRUint32 *aParallelPortCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParallelPortCount(aParallelPortCount); } \
  NS_IMETHOD GetMaxBootPosition(PRUint32 *aMaxBootPosition) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxBootPosition(aMaxBootPosition); } \
  NS_IMETHOD GetExclusiveHwVirt(PRBool *aExclusiveHwVirt) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExclusiveHwVirt(aExclusiveHwVirt); } \
  NS_IMETHOD SetExclusiveHwVirt(PRBool aExclusiveHwVirt) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetExclusiveHwVirt(aExclusiveHwVirt); } \
  NS_IMETHOD GetDefaultMachineFolder(PRUnichar * *aDefaultMachineFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDefaultMachineFolder(aDefaultMachineFolder); } \
  NS_IMETHOD SetDefaultMachineFolder(const PRUnichar * aDefaultMachineFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDefaultMachineFolder(aDefaultMachineFolder); } \
  NS_IMETHOD GetLoggingLevel(PRUnichar * *aLoggingLevel) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLoggingLevel(aLoggingLevel); } \
  NS_IMETHOD SetLoggingLevel(const PRUnichar * aLoggingLevel) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLoggingLevel(aLoggingLevel); } \
  NS_IMETHOD GetMediumFormats(PRUint32 *mediumFormatsSize, IMediumFormat ***mediumFormats) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMediumFormats(mediumFormatsSize, mediumFormats); } \
  NS_IMETHOD GetDefaultHardDiskFormat(PRUnichar * *aDefaultHardDiskFormat) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDefaultHardDiskFormat(aDefaultHardDiskFormat); } \
  NS_IMETHOD SetDefaultHardDiskFormat(const PRUnichar * aDefaultHardDiskFormat) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDefaultHardDiskFormat(aDefaultHardDiskFormat); } \
  NS_IMETHOD GetFreeDiskSpaceWarning(PRInt64 *aFreeDiskSpaceWarning) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFreeDiskSpaceWarning(aFreeDiskSpaceWarning); } \
  NS_IMETHOD SetFreeDiskSpaceWarning(PRInt64 aFreeDiskSpaceWarning) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFreeDiskSpaceWarning(aFreeDiskSpaceWarning); } \
  NS_IMETHOD GetFreeDiskSpacePercentWarning(PRUint32 *aFreeDiskSpacePercentWarning) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFreeDiskSpacePercentWarning(aFreeDiskSpacePercentWarning); } \
  NS_IMETHOD SetFreeDiskSpacePercentWarning(PRUint32 aFreeDiskSpacePercentWarning) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFreeDiskSpacePercentWarning(aFreeDiskSpacePercentWarning); } \
  NS_IMETHOD GetFreeDiskSpaceError(PRInt64 *aFreeDiskSpaceError) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFreeDiskSpaceError(aFreeDiskSpaceError); } \
  NS_IMETHOD SetFreeDiskSpaceError(PRInt64 aFreeDiskSpaceError) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFreeDiskSpaceError(aFreeDiskSpaceError); } \
  NS_IMETHOD GetFreeDiskSpacePercentError(PRUint32 *aFreeDiskSpacePercentError) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFreeDiskSpacePercentError(aFreeDiskSpacePercentError); } \
  NS_IMETHOD SetFreeDiskSpacePercentError(PRUint32 aFreeDiskSpacePercentError) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFreeDiskSpacePercentError(aFreeDiskSpacePercentError); } \
  NS_IMETHOD GetVRDEAuthLibrary(PRUnichar * *aVRDEAuthLibrary) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVRDEAuthLibrary(aVRDEAuthLibrary); } \
  NS_IMETHOD SetVRDEAuthLibrary(const PRUnichar * aVRDEAuthLibrary) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVRDEAuthLibrary(aVRDEAuthLibrary); } \
  NS_IMETHOD GetWebServiceAuthLibrary(PRUnichar * *aWebServiceAuthLibrary) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWebServiceAuthLibrary(aWebServiceAuthLibrary); } \
  NS_IMETHOD SetWebServiceAuthLibrary(const PRUnichar * aWebServiceAuthLibrary) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetWebServiceAuthLibrary(aWebServiceAuthLibrary); } \
  NS_IMETHOD GetDefaultVRDEExtPack(PRUnichar * *aDefaultVRDEExtPack) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDefaultVRDEExtPack(aDefaultVRDEExtPack); } \
  NS_IMETHOD SetDefaultVRDEExtPack(const PRUnichar * aDefaultVRDEExtPack) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDefaultVRDEExtPack(aDefaultVRDEExtPack); } \
  NS_IMETHOD GetLogHistoryCount(PRUint32 *aLogHistoryCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogHistoryCount(aLogHistoryCount); } \
  NS_IMETHOD SetLogHistoryCount(PRUint32 aLogHistoryCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLogHistoryCount(aLogHistoryCount); } \
  NS_IMETHOD GetDefaultAudioDriver(PRUint32 *aDefaultAudioDriver) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDefaultAudioDriver(aDefaultAudioDriver); } \
  NS_IMETHOD GetAutostartDatabasePath(PRUnichar * *aAutostartDatabasePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAutostartDatabasePath(aAutostartDatabasePath); } \
  NS_IMETHOD SetAutostartDatabasePath(const PRUnichar * aAutostartDatabasePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAutostartDatabasePath(aAutostartDatabasePath); } \
  NS_IMETHOD GetDefaultAdditionsISO(PRUnichar * *aDefaultAdditionsISO) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDefaultAdditionsISO(aDefaultAdditionsISO); } \
  NS_IMETHOD SetDefaultAdditionsISO(const PRUnichar * aDefaultAdditionsISO) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDefaultAdditionsISO(aDefaultAdditionsISO); } \
  NS_IMETHOD GetDefaultFrontend(PRUnichar * *aDefaultFrontend) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDefaultFrontend(aDefaultFrontend); } \
  NS_IMETHOD SetDefaultFrontend(const PRUnichar * aDefaultFrontend) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDefaultFrontend(aDefaultFrontend); } \
  NS_IMETHOD GetMaxNetworkAdapters(PRUint32 chipset, PRUint32 *maxNetworkAdapters) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxNetworkAdapters(chipset, maxNetworkAdapters); } \
  NS_IMETHOD GetMaxNetworkAdaptersOfType(PRUint32 chipset, PRUint32 type, PRUint32 *maxNetworkAdapters) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxNetworkAdaptersOfType(chipset, type, maxNetworkAdapters); } \
  NS_IMETHOD GetMaxDevicesPerPortForStorageBus(PRUint32 bus, PRUint32 *maxDevicesPerPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxDevicesPerPortForStorageBus(bus, maxDevicesPerPort); } \
  NS_IMETHOD GetMinPortCountForStorageBus(PRUint32 bus, PRUint32 *minPortCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMinPortCountForStorageBus(bus, minPortCount); } \
  NS_IMETHOD GetMaxPortCountForStorageBus(PRUint32 bus, PRUint32 *maxPortCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxPortCountForStorageBus(bus, maxPortCount); } \
  NS_IMETHOD GetMaxInstancesOfStorageBus(PRUint32 chipset, PRUint32 bus, PRUint32 *maxInstances) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxInstancesOfStorageBus(chipset, bus, maxInstances); } \
  NS_IMETHOD GetDeviceTypesForStorageBus(PRUint32 bus, PRUint32 *deviceTypesSize, PRUint32 **deviceTypes) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDeviceTypesForStorageBus(bus, deviceTypesSize, deviceTypes); } \
  NS_IMETHOD GetDefaultIoCacheSettingForStorageController(PRUint32 controllerType, PRBool *enabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDefaultIoCacheSettingForStorageController(controllerType, enabled); } \
  NS_IMETHOD GetMaxInstancesOfUSBControllerType(PRUint32 chipset, PRUint32 type, PRUint32 *maxInstances) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxInstancesOfUSBControllerType(chipset, type, maxInstances); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ISystemProperties
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISYSTEMPROPERTIES

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ISystemProperties)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute unsigned long minGuestRAM; */
NS_IMETHODIMP _MYCLASS_::GetMinGuestRAM(PRUint32 *aMinGuestRAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long maxGuestRAM; */
NS_IMETHODIMP _MYCLASS_::GetMaxGuestRAM(PRUint32 *aMaxGuestRAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long minGuestVRAM; */
NS_IMETHODIMP _MYCLASS_::GetMinGuestVRAM(PRUint32 *aMinGuestVRAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long maxGuestVRAM; */
NS_IMETHODIMP _MYCLASS_::GetMaxGuestVRAM(PRUint32 *aMaxGuestVRAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long minGuestCPUCount; */
NS_IMETHODIMP _MYCLASS_::GetMinGuestCPUCount(PRUint32 *aMinGuestCPUCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long maxGuestCPUCount; */
NS_IMETHODIMP _MYCLASS_::GetMaxGuestCPUCount(PRUint32 *aMaxGuestCPUCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long maxGuestMonitors; */
NS_IMETHODIMP _MYCLASS_::GetMaxGuestMonitors(PRUint32 *aMaxGuestMonitors)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long infoVDSize; */
NS_IMETHODIMP _MYCLASS_::GetInfoVDSize(PRInt64 *aInfoVDSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long serialPortCount; */
NS_IMETHODIMP _MYCLASS_::GetSerialPortCount(PRUint32 *aSerialPortCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long parallelPortCount; */
NS_IMETHODIMP _MYCLASS_::GetParallelPortCount(PRUint32 *aParallelPortCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long maxBootPosition; */
NS_IMETHODIMP _MYCLASS_::GetMaxBootPosition(PRUint32 *aMaxBootPosition)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean exclusiveHwVirt; */
NS_IMETHODIMP _MYCLASS_::GetExclusiveHwVirt(PRBool *aExclusiveHwVirt)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetExclusiveHwVirt(PRBool aExclusiveHwVirt)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring defaultMachineFolder; */
NS_IMETHODIMP _MYCLASS_::GetDefaultMachineFolder(PRUnichar * *aDefaultMachineFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDefaultMachineFolder(const PRUnichar * aDefaultMachineFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring loggingLevel; */
NS_IMETHODIMP _MYCLASS_::GetLoggingLevel(PRUnichar * *aLoggingLevel)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetLoggingLevel(const PRUnichar * aLoggingLevel)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMediumFormats (out unsigned long mediumFormatsSize, [array, size_is (mediumFormatsSize), retval] out IMediumFormat mediumFormats); */
NS_IMETHODIMP _MYCLASS_::GetMediumFormats(PRUint32 *mediumFormatsSize, IMediumFormat ***mediumFormats)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring defaultHardDiskFormat; */
NS_IMETHODIMP _MYCLASS_::GetDefaultHardDiskFormat(PRUnichar * *aDefaultHardDiskFormat)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDefaultHardDiskFormat(const PRUnichar * aDefaultHardDiskFormat)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute long long freeDiskSpaceWarning; */
NS_IMETHODIMP _MYCLASS_::GetFreeDiskSpaceWarning(PRInt64 *aFreeDiskSpaceWarning)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetFreeDiskSpaceWarning(PRInt64 aFreeDiskSpaceWarning)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long freeDiskSpacePercentWarning; */
NS_IMETHODIMP _MYCLASS_::GetFreeDiskSpacePercentWarning(PRUint32 *aFreeDiskSpacePercentWarning)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetFreeDiskSpacePercentWarning(PRUint32 aFreeDiskSpacePercentWarning)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute long long freeDiskSpaceError; */
NS_IMETHODIMP _MYCLASS_::GetFreeDiskSpaceError(PRInt64 *aFreeDiskSpaceError)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetFreeDiskSpaceError(PRInt64 aFreeDiskSpaceError)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long freeDiskSpacePercentError; */
NS_IMETHODIMP _MYCLASS_::GetFreeDiskSpacePercentError(PRUint32 *aFreeDiskSpacePercentError)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetFreeDiskSpacePercentError(PRUint32 aFreeDiskSpacePercentError)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring VRDEAuthLibrary; */
NS_IMETHODIMP _MYCLASS_::GetVRDEAuthLibrary(PRUnichar * *aVRDEAuthLibrary)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetVRDEAuthLibrary(const PRUnichar * aVRDEAuthLibrary)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring webServiceAuthLibrary; */
NS_IMETHODIMP _MYCLASS_::GetWebServiceAuthLibrary(PRUnichar * *aWebServiceAuthLibrary)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetWebServiceAuthLibrary(const PRUnichar * aWebServiceAuthLibrary)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring defaultVRDEExtPack; */
NS_IMETHODIMP _MYCLASS_::GetDefaultVRDEExtPack(PRUnichar * *aDefaultVRDEExtPack)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDefaultVRDEExtPack(const PRUnichar * aDefaultVRDEExtPack)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long logHistoryCount; */
NS_IMETHODIMP _MYCLASS_::GetLogHistoryCount(PRUint32 *aLogHistoryCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetLogHistoryCount(PRUint32 aLogHistoryCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 defaultAudioDriver; */
NS_IMETHODIMP _MYCLASS_::GetDefaultAudioDriver(PRUint32 *aDefaultAudioDriver)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring autostartDatabasePath; */
NS_IMETHODIMP _MYCLASS_::GetAutostartDatabasePath(PRUnichar * *aAutostartDatabasePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAutostartDatabasePath(const PRUnichar * aAutostartDatabasePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring defaultAdditionsISO; */
NS_IMETHODIMP _MYCLASS_::GetDefaultAdditionsISO(PRUnichar * *aDefaultAdditionsISO)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDefaultAdditionsISO(const PRUnichar * aDefaultAdditionsISO)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring defaultFrontend; */
NS_IMETHODIMP _MYCLASS_::GetDefaultFrontend(PRUnichar * *aDefaultFrontend)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDefaultFrontend(const PRUnichar * aDefaultFrontend)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMaxNetworkAdapters (in PRUint32 chipset, [retval] out unsigned long maxNetworkAdapters); */
NS_IMETHODIMP _MYCLASS_::GetMaxNetworkAdapters(PRUint32 chipset, PRUint32 *maxNetworkAdapters)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMaxNetworkAdaptersOfType (in PRUint32 chipset, in PRUint32 type, [retval] out unsigned long maxNetworkAdapters); */
NS_IMETHODIMP _MYCLASS_::GetMaxNetworkAdaptersOfType(PRUint32 chipset, PRUint32 type, PRUint32 *maxNetworkAdapters)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMaxDevicesPerPortForStorageBus (in PRUint32 bus, [retval] out unsigned long maxDevicesPerPort); */
NS_IMETHODIMP _MYCLASS_::GetMaxDevicesPerPortForStorageBus(PRUint32 bus, PRUint32 *maxDevicesPerPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMinPortCountForStorageBus (in PRUint32 bus, [retval] out unsigned long minPortCount); */
NS_IMETHODIMP _MYCLASS_::GetMinPortCountForStorageBus(PRUint32 bus, PRUint32 *minPortCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMaxPortCountForStorageBus (in PRUint32 bus, [retval] out unsigned long maxPortCount); */
NS_IMETHODIMP _MYCLASS_::GetMaxPortCountForStorageBus(PRUint32 bus, PRUint32 *maxPortCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMaxInstancesOfStorageBus (in PRUint32 chipset, in PRUint32 bus, [retval] out unsigned long maxInstances); */
NS_IMETHODIMP _MYCLASS_::GetMaxInstancesOfStorageBus(PRUint32 chipset, PRUint32 bus, PRUint32 *maxInstances)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getDeviceTypesForStorageBus (in PRUint32 bus, out unsigned long deviceTypesSize, [array, size_is (deviceTypesSize), retval] out PRUint32 deviceTypes); */
NS_IMETHODIMP _MYCLASS_::GetDeviceTypesForStorageBus(PRUint32 bus, PRUint32 *deviceTypesSize, PRUint32 **deviceTypes)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getDefaultIoCacheSettingForStorageController (in PRUint32 controllerType, [retval] out boolean enabled); */
NS_IMETHODIMP _MYCLASS_::GetDefaultIoCacheSettingForStorageController(PRUint32 controllerType, PRBool *enabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMaxInstancesOfUSBControllerType (in PRUint32 chipset, in PRUint32 type, [retval] out unsigned long maxInstances); */
NS_IMETHODIMP _MYCLASS_::GetMaxInstancesOfUSBControllerType(PRUint32 chipset, PRUint32 type, PRUint32 *maxInstances)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_ISystemProperties_GETTER_MinGuestRAM_TO(smth) NS_IMETHOD GetMinGuestRAM (PRUint32 * aMinGuestRAM) { return smth GetMinGuestRAM (aMinGuestRAM); }
#define COM_FORWARD_ISystemProperties_GETTER_MinGuestRAM_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_MinGuestRAM_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_MinGuestRAM_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_MinGuestRAM_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestRAM_TO(smth) NS_IMETHOD GetMaxGuestRAM (PRUint32 * aMaxGuestRAM) { return smth GetMaxGuestRAM (aMaxGuestRAM); }
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestRAM_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_MaxGuestRAM_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestRAM_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_MaxGuestRAM_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_MinGuestVRAM_TO(smth) NS_IMETHOD GetMinGuestVRAM (PRUint32 * aMinGuestVRAM) { return smth GetMinGuestVRAM (aMinGuestVRAM); }
#define COM_FORWARD_ISystemProperties_GETTER_MinGuestVRAM_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_MinGuestVRAM_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_MinGuestVRAM_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_MinGuestVRAM_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestVRAM_TO(smth) NS_IMETHOD GetMaxGuestVRAM (PRUint32 * aMaxGuestVRAM) { return smth GetMaxGuestVRAM (aMaxGuestVRAM); }
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestVRAM_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_MaxGuestVRAM_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestVRAM_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_MaxGuestVRAM_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_MinGuestCPUCount_TO(smth) NS_IMETHOD GetMinGuestCPUCount (PRUint32 * aMinGuestCPUCount) { return smth GetMinGuestCPUCount (aMinGuestCPUCount); }
#define COM_FORWARD_ISystemProperties_GETTER_MinGuestCPUCount_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_MinGuestCPUCount_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_MinGuestCPUCount_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_MinGuestCPUCount_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestCPUCount_TO(smth) NS_IMETHOD GetMaxGuestCPUCount (PRUint32 * aMaxGuestCPUCount) { return smth GetMaxGuestCPUCount (aMaxGuestCPUCount); }
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestCPUCount_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_MaxGuestCPUCount_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestCPUCount_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_MaxGuestCPUCount_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestMonitors_TO(smth) NS_IMETHOD GetMaxGuestMonitors (PRUint32 * aMaxGuestMonitors) { return smth GetMaxGuestMonitors (aMaxGuestMonitors); }
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestMonitors_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_MaxGuestMonitors_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestMonitors_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_MaxGuestMonitors_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_InfoVDSize_TO(smth) NS_IMETHOD GetInfoVDSize (PRInt64 * aInfoVDSize) { return smth GetInfoVDSize (aInfoVDSize); }
#define COM_FORWARD_ISystemProperties_GETTER_InfoVDSize_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_InfoVDSize_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_InfoVDSize_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_InfoVDSize_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_SerialPortCount_TO(smth) NS_IMETHOD GetSerialPortCount (PRUint32 * aSerialPortCount) { return smth GetSerialPortCount (aSerialPortCount); }
#define COM_FORWARD_ISystemProperties_GETTER_SerialPortCount_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_SerialPortCount_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_SerialPortCount_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_SerialPortCount_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_ParallelPortCount_TO(smth) NS_IMETHOD GetParallelPortCount (PRUint32 * aParallelPortCount) { return smth GetParallelPortCount (aParallelPortCount); }
#define COM_FORWARD_ISystemProperties_GETTER_ParallelPortCount_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_ParallelPortCount_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_ParallelPortCount_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_ParallelPortCount_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_MaxBootPosition_TO(smth) NS_IMETHOD GetMaxBootPosition (PRUint32 * aMaxBootPosition) { return smth GetMaxBootPosition (aMaxBootPosition); }
#define COM_FORWARD_ISystemProperties_GETTER_MaxBootPosition_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_MaxBootPosition_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_MaxBootPosition_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_MaxBootPosition_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_ExclusiveHwVirt_TO(smth) NS_IMETHOD GetExclusiveHwVirt (PRBool * aExclusiveHwVirt) { return smth GetExclusiveHwVirt (aExclusiveHwVirt); }
#define COM_FORWARD_ISystemProperties_GETTER_ExclusiveHwVirt_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_ExclusiveHwVirt_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_ExclusiveHwVirt_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_ExclusiveHwVirt_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_ExclusiveHwVirt_TO(smth) NS_IMETHOD SetExclusiveHwVirt (PRBool aExclusiveHwVirt) { return smth SetExclusiveHwVirt (aExclusiveHwVirt); }
#define COM_FORWARD_ISystemProperties_SETTER_ExclusiveHwVirt_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_ExclusiveHwVirt_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_ExclusiveHwVirt_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_ExclusiveHwVirt_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_DefaultMachineFolder_TO(smth) NS_IMETHOD GetDefaultMachineFolder (PRUnichar * * aDefaultMachineFolder) { return smth GetDefaultMachineFolder (aDefaultMachineFolder); }
#define COM_FORWARD_ISystemProperties_GETTER_DefaultMachineFolder_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_DefaultMachineFolder_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_DefaultMachineFolder_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_DefaultMachineFolder_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_DefaultMachineFolder_TO(smth) NS_IMETHOD SetDefaultMachineFolder (const PRUnichar * aDefaultMachineFolder) { return smth SetDefaultMachineFolder (aDefaultMachineFolder); }
#define COM_FORWARD_ISystemProperties_SETTER_DefaultMachineFolder_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_DefaultMachineFolder_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_DefaultMachineFolder_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_DefaultMachineFolder_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_LoggingLevel_TO(smth) NS_IMETHOD GetLoggingLevel (PRUnichar * * aLoggingLevel) { return smth GetLoggingLevel (aLoggingLevel); }
#define COM_FORWARD_ISystemProperties_GETTER_LoggingLevel_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_LoggingLevel_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_LoggingLevel_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_LoggingLevel_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_LoggingLevel_TO(smth) NS_IMETHOD SetLoggingLevel (const PRUnichar * aLoggingLevel) { return smth SetLoggingLevel (aLoggingLevel); }
#define COM_FORWARD_ISystemProperties_SETTER_LoggingLevel_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_LoggingLevel_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_LoggingLevel_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_LoggingLevel_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_MediumFormats_TO(smth) NS_IMETHOD GetMediumFormats (PRUint32 * aMediumFormatsSize, IMediumFormat * * * aMediumFormats) { return smth GetMediumFormats (aMediumFormatsSize, aMediumFormats); }
#define COM_FORWARD_ISystemProperties_GETTER_MediumFormats_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_MediumFormats_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_MediumFormats_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_MediumFormats_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_DefaultHardDiskFormat_TO(smth) NS_IMETHOD GetDefaultHardDiskFormat (PRUnichar * * aDefaultHardDiskFormat) { return smth GetDefaultHardDiskFormat (aDefaultHardDiskFormat); }
#define COM_FORWARD_ISystemProperties_GETTER_DefaultHardDiskFormat_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_DefaultHardDiskFormat_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_DefaultHardDiskFormat_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_DefaultHardDiskFormat_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_DefaultHardDiskFormat_TO(smth) NS_IMETHOD SetDefaultHardDiskFormat (const PRUnichar * aDefaultHardDiskFormat) { return smth SetDefaultHardDiskFormat (aDefaultHardDiskFormat); }
#define COM_FORWARD_ISystemProperties_SETTER_DefaultHardDiskFormat_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_DefaultHardDiskFormat_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_DefaultHardDiskFormat_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_DefaultHardDiskFormat_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpaceWarning_TO(smth) NS_IMETHOD GetFreeDiskSpaceWarning (PRInt64 * aFreeDiskSpaceWarning) { return smth GetFreeDiskSpaceWarning (aFreeDiskSpaceWarning); }
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpaceWarning_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpaceWarning_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpaceWarning_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpaceWarning_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpaceWarning_TO(smth) NS_IMETHOD SetFreeDiskSpaceWarning (PRInt64 aFreeDiskSpaceWarning) { return smth SetFreeDiskSpaceWarning (aFreeDiskSpaceWarning); }
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpaceWarning_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpaceWarning_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpaceWarning_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpaceWarning_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpacePercentWarning_TO(smth) NS_IMETHOD GetFreeDiskSpacePercentWarning (PRUint32 * aFreeDiskSpacePercentWarning) { return smth GetFreeDiskSpacePercentWarning (aFreeDiskSpacePercentWarning); }
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpacePercentWarning_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpacePercentWarning_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpacePercentWarning_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpacePercentWarning_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpacePercentWarning_TO(smth) NS_IMETHOD SetFreeDiskSpacePercentWarning (PRUint32 aFreeDiskSpacePercentWarning) { return smth SetFreeDiskSpacePercentWarning (aFreeDiskSpacePercentWarning); }
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpacePercentWarning_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpacePercentWarning_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpacePercentWarning_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpacePercentWarning_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpaceError_TO(smth) NS_IMETHOD GetFreeDiskSpaceError (PRInt64 * aFreeDiskSpaceError) { return smth GetFreeDiskSpaceError (aFreeDiskSpaceError); }
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpaceError_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpaceError_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpaceError_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpaceError_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpaceError_TO(smth) NS_IMETHOD SetFreeDiskSpaceError (PRInt64 aFreeDiskSpaceError) { return smth SetFreeDiskSpaceError (aFreeDiskSpaceError); }
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpaceError_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpaceError_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpaceError_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpaceError_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpacePercentError_TO(smth) NS_IMETHOD GetFreeDiskSpacePercentError (PRUint32 * aFreeDiskSpacePercentError) { return smth GetFreeDiskSpacePercentError (aFreeDiskSpacePercentError); }
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpacePercentError_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpacePercentError_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpacePercentError_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpacePercentError_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpacePercentError_TO(smth) NS_IMETHOD SetFreeDiskSpacePercentError (PRUint32 aFreeDiskSpacePercentError) { return smth SetFreeDiskSpacePercentError (aFreeDiskSpacePercentError); }
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpacePercentError_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpacePercentError_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpacePercentError_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpacePercentError_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_VRDEAuthLibrary_TO(smth) NS_IMETHOD GetVRDEAuthLibrary (PRUnichar * * aVRDEAuthLibrary) { return smth GetVRDEAuthLibrary (aVRDEAuthLibrary); }
#define COM_FORWARD_ISystemProperties_GETTER_VRDEAuthLibrary_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_VRDEAuthLibrary_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_VRDEAuthLibrary_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_VRDEAuthLibrary_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_VRDEAuthLibrary_TO(smth) NS_IMETHOD SetVRDEAuthLibrary (const PRUnichar * aVRDEAuthLibrary) { return smth SetVRDEAuthLibrary (aVRDEAuthLibrary); }
#define COM_FORWARD_ISystemProperties_SETTER_VRDEAuthLibrary_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_VRDEAuthLibrary_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_VRDEAuthLibrary_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_VRDEAuthLibrary_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_WebServiceAuthLibrary_TO(smth) NS_IMETHOD GetWebServiceAuthLibrary (PRUnichar * * aWebServiceAuthLibrary) { return smth GetWebServiceAuthLibrary (aWebServiceAuthLibrary); }
#define COM_FORWARD_ISystemProperties_GETTER_WebServiceAuthLibrary_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_WebServiceAuthLibrary_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_WebServiceAuthLibrary_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_WebServiceAuthLibrary_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_WebServiceAuthLibrary_TO(smth) NS_IMETHOD SetWebServiceAuthLibrary (const PRUnichar * aWebServiceAuthLibrary) { return smth SetWebServiceAuthLibrary (aWebServiceAuthLibrary); }
#define COM_FORWARD_ISystemProperties_SETTER_WebServiceAuthLibrary_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_WebServiceAuthLibrary_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_WebServiceAuthLibrary_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_WebServiceAuthLibrary_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_DefaultVRDEExtPack_TO(smth) NS_IMETHOD GetDefaultVRDEExtPack (PRUnichar * * aDefaultVRDEExtPack) { return smth GetDefaultVRDEExtPack (aDefaultVRDEExtPack); }
#define COM_FORWARD_ISystemProperties_GETTER_DefaultVRDEExtPack_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_DefaultVRDEExtPack_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_DefaultVRDEExtPack_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_DefaultVRDEExtPack_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_DefaultVRDEExtPack_TO(smth) NS_IMETHOD SetDefaultVRDEExtPack (const PRUnichar * aDefaultVRDEExtPack) { return smth SetDefaultVRDEExtPack (aDefaultVRDEExtPack); }
#define COM_FORWARD_ISystemProperties_SETTER_DefaultVRDEExtPack_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_DefaultVRDEExtPack_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_DefaultVRDEExtPack_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_DefaultVRDEExtPack_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_LogHistoryCount_TO(smth) NS_IMETHOD GetLogHistoryCount (PRUint32 * aLogHistoryCount) { return smth GetLogHistoryCount (aLogHistoryCount); }
#define COM_FORWARD_ISystemProperties_GETTER_LogHistoryCount_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_LogHistoryCount_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_LogHistoryCount_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_LogHistoryCount_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_LogHistoryCount_TO(smth) NS_IMETHOD SetLogHistoryCount (PRUint32 aLogHistoryCount) { return smth SetLogHistoryCount (aLogHistoryCount); }
#define COM_FORWARD_ISystemProperties_SETTER_LogHistoryCount_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_LogHistoryCount_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_LogHistoryCount_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_LogHistoryCount_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_DefaultAudioDriver_TO(smth) NS_IMETHOD GetDefaultAudioDriver (PRUint32 * aDefaultAudioDriver) { return smth GetDefaultAudioDriver (aDefaultAudioDriver); }
#define COM_FORWARD_ISystemProperties_GETTER_DefaultAudioDriver_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_DefaultAudioDriver_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_DefaultAudioDriver_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_DefaultAudioDriver_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_AutostartDatabasePath_TO(smth) NS_IMETHOD GetAutostartDatabasePath (PRUnichar * * aAutostartDatabasePath) { return smth GetAutostartDatabasePath (aAutostartDatabasePath); }
#define COM_FORWARD_ISystemProperties_GETTER_AutostartDatabasePath_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_AutostartDatabasePath_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_AutostartDatabasePath_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_AutostartDatabasePath_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_AutostartDatabasePath_TO(smth) NS_IMETHOD SetAutostartDatabasePath (const PRUnichar * aAutostartDatabasePath) { return smth SetAutostartDatabasePath (aAutostartDatabasePath); }
#define COM_FORWARD_ISystemProperties_SETTER_AutostartDatabasePath_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_AutostartDatabasePath_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_AutostartDatabasePath_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_AutostartDatabasePath_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_DefaultAdditionsISO_TO(smth) NS_IMETHOD GetDefaultAdditionsISO (PRUnichar * * aDefaultAdditionsISO) { return smth GetDefaultAdditionsISO (aDefaultAdditionsISO); }
#define COM_FORWARD_ISystemProperties_GETTER_DefaultAdditionsISO_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_DefaultAdditionsISO_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_DefaultAdditionsISO_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_DefaultAdditionsISO_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_DefaultAdditionsISO_TO(smth) NS_IMETHOD SetDefaultAdditionsISO (const PRUnichar * aDefaultAdditionsISO) { return smth SetDefaultAdditionsISO (aDefaultAdditionsISO); }
#define COM_FORWARD_ISystemProperties_SETTER_DefaultAdditionsISO_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_DefaultAdditionsISO_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_DefaultAdditionsISO_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_DefaultAdditionsISO_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_DefaultFrontend_TO(smth) NS_IMETHOD GetDefaultFrontend (PRUnichar * * aDefaultFrontend) { return smth GetDefaultFrontend (aDefaultFrontend); }
#define COM_FORWARD_ISystemProperties_GETTER_DefaultFrontend_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_DefaultFrontend_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_DefaultFrontend_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_DefaultFrontend_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_DefaultFrontend_TO(smth) NS_IMETHOD SetDefaultFrontend (const PRUnichar * aDefaultFrontend) { return smth SetDefaultFrontend (aDefaultFrontend); }
#define COM_FORWARD_ISystemProperties_SETTER_DefaultFrontend_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_DefaultFrontend_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_DefaultFrontend_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_DefaultFrontend_TO (base::)
#define COM_FORWARD_ISystemProperties_GetMaxNetworkAdapters_TO(smth) NS_IMETHOD GetMaxNetworkAdapters (PRUint32 aChipset, PRUint32 * aMaxNetworkAdapters) { return smth GetMaxNetworkAdapters (aChipset, aMaxNetworkAdapters); }
#define COM_FORWARD_ISystemProperties_GetMaxNetworkAdapters_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GetMaxNetworkAdapters_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GetMaxNetworkAdapters_TO_BASE(base) COM_FORWARD_ISystemProperties_GetMaxNetworkAdapters_TO (base::)
#define COM_FORWARD_ISystemProperties_GetMaxNetworkAdaptersOfType_TO(smth) NS_IMETHOD GetMaxNetworkAdaptersOfType (PRUint32 aChipset, PRUint32 aType, PRUint32 * aMaxNetworkAdapters) { return smth GetMaxNetworkAdaptersOfType (aChipset, aType, aMaxNetworkAdapters); }
#define COM_FORWARD_ISystemProperties_GetMaxNetworkAdaptersOfType_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GetMaxNetworkAdaptersOfType_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GetMaxNetworkAdaptersOfType_TO_BASE(base) COM_FORWARD_ISystemProperties_GetMaxNetworkAdaptersOfType_TO (base::)
#define COM_FORWARD_ISystemProperties_GetMaxDevicesPerPortForStorageBus_TO(smth) NS_IMETHOD GetMaxDevicesPerPortForStorageBus (PRUint32 aBus, PRUint32 * aMaxDevicesPerPort) { return smth GetMaxDevicesPerPortForStorageBus (aBus, aMaxDevicesPerPort); }
#define COM_FORWARD_ISystemProperties_GetMaxDevicesPerPortForStorageBus_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GetMaxDevicesPerPortForStorageBus_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GetMaxDevicesPerPortForStorageBus_TO_BASE(base) COM_FORWARD_ISystemProperties_GetMaxDevicesPerPortForStorageBus_TO (base::)
#define COM_FORWARD_ISystemProperties_GetMinPortCountForStorageBus_TO(smth) NS_IMETHOD GetMinPortCountForStorageBus (PRUint32 aBus, PRUint32 * aMinPortCount) { return smth GetMinPortCountForStorageBus (aBus, aMinPortCount); }
#define COM_FORWARD_ISystemProperties_GetMinPortCountForStorageBus_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GetMinPortCountForStorageBus_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GetMinPortCountForStorageBus_TO_BASE(base) COM_FORWARD_ISystemProperties_GetMinPortCountForStorageBus_TO (base::)
#define COM_FORWARD_ISystemProperties_GetMaxPortCountForStorageBus_TO(smth) NS_IMETHOD GetMaxPortCountForStorageBus (PRUint32 aBus, PRUint32 * aMaxPortCount) { return smth GetMaxPortCountForStorageBus (aBus, aMaxPortCount); }
#define COM_FORWARD_ISystemProperties_GetMaxPortCountForStorageBus_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GetMaxPortCountForStorageBus_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GetMaxPortCountForStorageBus_TO_BASE(base) COM_FORWARD_ISystemProperties_GetMaxPortCountForStorageBus_TO (base::)
#define COM_FORWARD_ISystemProperties_GetMaxInstancesOfStorageBus_TO(smth) NS_IMETHOD GetMaxInstancesOfStorageBus (PRUint32 aChipset, PRUint32 aBus, PRUint32 * aMaxInstances) { return smth GetMaxInstancesOfStorageBus (aChipset, aBus, aMaxInstances); }
#define COM_FORWARD_ISystemProperties_GetMaxInstancesOfStorageBus_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GetMaxInstancesOfStorageBus_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GetMaxInstancesOfStorageBus_TO_BASE(base) COM_FORWARD_ISystemProperties_GetMaxInstancesOfStorageBus_TO (base::)
#define COM_FORWARD_ISystemProperties_GetDeviceTypesForStorageBus_TO(smth) NS_IMETHOD GetDeviceTypesForStorageBus (PRUint32 aBus, PRUint32 * aDeviceTypesSize, PRUint32 * * aDeviceTypes) { return smth GetDeviceTypesForStorageBus (aBus, aDeviceTypesSize, aDeviceTypes); }
#define COM_FORWARD_ISystemProperties_GetDeviceTypesForStorageBus_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GetDeviceTypesForStorageBus_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GetDeviceTypesForStorageBus_TO_BASE(base) COM_FORWARD_ISystemProperties_GetDeviceTypesForStorageBus_TO (base::)
#define COM_FORWARD_ISystemProperties_GetDefaultIoCacheSettingForStorageController_TO(smth) NS_IMETHOD GetDefaultIoCacheSettingForStorageController (PRUint32 aControllerType, PRBool * aEnabled) { return smth GetDefaultIoCacheSettingForStorageController (aControllerType, aEnabled); }
#define COM_FORWARD_ISystemProperties_GetDefaultIoCacheSettingForStorageController_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GetDefaultIoCacheSettingForStorageController_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GetDefaultIoCacheSettingForStorageController_TO_BASE(base) COM_FORWARD_ISystemProperties_GetDefaultIoCacheSettingForStorageController_TO (base::)
#define COM_FORWARD_ISystemProperties_GetMaxInstancesOfUSBControllerType_TO(smth) NS_IMETHOD GetMaxInstancesOfUSBControllerType (PRUint32 aChipset, PRUint32 aType, PRUint32 * aMaxInstances) { return smth GetMaxInstancesOfUSBControllerType (aChipset, aType, aMaxInstances); }
#define COM_FORWARD_ISystemProperties_GetMaxInstancesOfUSBControllerType_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GetMaxInstancesOfUSBControllerType_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GetMaxInstancesOfUSBControllerType_TO_BASE(base) COM_FORWARD_ISystemProperties_GetMaxInstancesOfUSBControllerType_TO (base::)
#define COM_FORWARD_ISystemProperties_TO(smth) NS_FORWARD_ISYSTEMPROPERTIES (smth)
#define COM_FORWARD_ISystemProperties_TO_OBJ(obj) COM_FORWARD_ISystemProperties_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_TO_BASE(base) COM_FORWARD_ISystemProperties_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_ISystemProperties;

/* starting interface:    IGuestOSType */
#define IGUESTOSTYPE_IID_STR "6d968f9a-858b-4c50-bf17-241f069e94c2"

#define IGUESTOSTYPE_IID \
  {0x6d968f9a, 0x858b, 0x4c50, \
    { 0xbf, 0x17, 0x24, 0x1f, 0x06, 0x9e, 0x94, 0xc2 }}

class NS_NO_VTABLE IGuestOSType : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTOSTYPE_IID)

  /* readonly attribute wstring familyId; */
  NS_IMETHOD GetFamilyId(PRUnichar * *aFamilyId) = 0;

  /* readonly attribute wstring familyDescription; */
  NS_IMETHOD GetFamilyDescription(PRUnichar * *aFamilyDescription) = 0;

  /* readonly attribute wstring id; */
  NS_IMETHOD GetId(PRUnichar * *aId) = 0;

  /* readonly attribute wstring description; */
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) = 0;

  /* readonly attribute boolean is64Bit; */
  NS_IMETHOD GetIs64Bit(PRBool *aIs64Bit) = 0;

  /* readonly attribute boolean recommendedIOAPIC; */
  NS_IMETHOD GetRecommendedIOAPIC(PRBool *aRecommendedIOAPIC) = 0;

  /* readonly attribute boolean recommendedVirtEx; */
  NS_IMETHOD GetRecommendedVirtEx(PRBool *aRecommendedVirtEx) = 0;

  /* readonly attribute unsigned long recommendedRAM; */
  NS_IMETHOD GetRecommendedRAM(PRUint32 *aRecommendedRAM) = 0;

  /* readonly attribute unsigned long recommendedVRAM; */
  NS_IMETHOD GetRecommendedVRAM(PRUint32 *aRecommendedVRAM) = 0;

  /* readonly attribute boolean recommended2DVideoAcceleration; */
  NS_IMETHOD GetRecommended2DVideoAcceleration(PRBool *aRecommended2DVideoAcceleration) = 0;

  /* readonly attribute boolean recommended3DAcceleration; */
  NS_IMETHOD GetRecommended3DAcceleration(PRBool *aRecommended3DAcceleration) = 0;

  /* readonly attribute long long recommendedHDD; */
  NS_IMETHOD GetRecommendedHDD(PRInt64 *aRecommendedHDD) = 0;

  /* readonly attribute PRUint32 adapterType; */
  NS_IMETHOD GetAdapterType(PRUint32 *aAdapterType) = 0;

  /* readonly attribute boolean recommendedPAE; */
  NS_IMETHOD GetRecommendedPAE(PRBool *aRecommendedPAE) = 0;

  /* readonly attribute PRUint32 recommendedDVDStorageController; */
  NS_IMETHOD GetRecommendedDVDStorageController(PRUint32 *aRecommendedDVDStorageController) = 0;

  /* readonly attribute PRUint32 recommendedDVDStorageBus; */
  NS_IMETHOD GetRecommendedDVDStorageBus(PRUint32 *aRecommendedDVDStorageBus) = 0;

  /* readonly attribute PRUint32 recommendedHDStorageController; */
  NS_IMETHOD GetRecommendedHDStorageController(PRUint32 *aRecommendedHDStorageController) = 0;

  /* readonly attribute PRUint32 recommendedHDStorageBus; */
  NS_IMETHOD GetRecommendedHDStorageBus(PRUint32 *aRecommendedHDStorageBus) = 0;

  /* readonly attribute PRUint32 recommendedFirmware; */
  NS_IMETHOD GetRecommendedFirmware(PRUint32 *aRecommendedFirmware) = 0;

  /* readonly attribute boolean recommendedUSBHID; */
  NS_IMETHOD GetRecommendedUSBHID(PRBool *aRecommendedUSBHID) = 0;

  /* readonly attribute boolean recommendedHPET; */
  NS_IMETHOD GetRecommendedHPET(PRBool *aRecommendedHPET) = 0;

  /* readonly attribute boolean recommendedUSBTablet; */
  NS_IMETHOD GetRecommendedUSBTablet(PRBool *aRecommendedUSBTablet) = 0;

  /* readonly attribute boolean recommendedRTCUseUTC; */
  NS_IMETHOD GetRecommendedRTCUseUTC(PRBool *aRecommendedRTCUseUTC) = 0;

  /* readonly attribute PRUint32 recommendedChipset; */
  NS_IMETHOD GetRecommendedChipset(PRUint32 *aRecommendedChipset) = 0;

  /* readonly attribute PRUint32 recommendedAudioController; */
  NS_IMETHOD GetRecommendedAudioController(PRUint32 *aRecommendedAudioController) = 0;

  /* readonly attribute boolean recommendedFloppy; */
  NS_IMETHOD GetRecommendedFloppy(PRBool *aRecommendedFloppy) = 0;

  /* readonly attribute boolean recommendedUSB; */
  NS_IMETHOD GetRecommendedUSB(PRBool *aRecommendedUSB) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTOSTYPE \
  NS_IMETHOD GetFamilyId(PRUnichar * *aFamilyId); \
  NS_IMETHOD GetFamilyDescription(PRUnichar * *aFamilyDescription); \
  NS_IMETHOD GetId(PRUnichar * *aId); \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription); \
  NS_IMETHOD GetIs64Bit(PRBool *aIs64Bit); \
  NS_IMETHOD GetRecommendedIOAPIC(PRBool *aRecommendedIOAPIC); \
  NS_IMETHOD GetRecommendedVirtEx(PRBool *aRecommendedVirtEx); \
  NS_IMETHOD GetRecommendedRAM(PRUint32 *aRecommendedRAM); \
  NS_IMETHOD GetRecommendedVRAM(PRUint32 *aRecommendedVRAM); \
  NS_IMETHOD GetRecommended2DVideoAcceleration(PRBool *aRecommended2DVideoAcceleration); \
  NS_IMETHOD GetRecommended3DAcceleration(PRBool *aRecommended3DAcceleration); \
  NS_IMETHOD GetRecommendedHDD(PRInt64 *aRecommendedHDD); \
  NS_IMETHOD GetAdapterType(PRUint32 *aAdapterType); \
  NS_IMETHOD GetRecommendedPAE(PRBool *aRecommendedPAE); \
  NS_IMETHOD GetRecommendedDVDStorageController(PRUint32 *aRecommendedDVDStorageController); \
  NS_IMETHOD GetRecommendedDVDStorageBus(PRUint32 *aRecommendedDVDStorageBus); \
  NS_IMETHOD GetRecommendedHDStorageController(PRUint32 *aRecommendedHDStorageController); \
  NS_IMETHOD GetRecommendedHDStorageBus(PRUint32 *aRecommendedHDStorageBus); \
  NS_IMETHOD GetRecommendedFirmware(PRUint32 *aRecommendedFirmware); \
  NS_IMETHOD GetRecommendedUSBHID(PRBool *aRecommendedUSBHID); \
  NS_IMETHOD GetRecommendedHPET(PRBool *aRecommendedHPET); \
  NS_IMETHOD GetRecommendedUSBTablet(PRBool *aRecommendedUSBTablet); \
  NS_IMETHOD GetRecommendedRTCUseUTC(PRBool *aRecommendedRTCUseUTC); \
  NS_IMETHOD GetRecommendedChipset(PRUint32 *aRecommendedChipset); \
  NS_IMETHOD GetRecommendedAudioController(PRUint32 *aRecommendedAudioController); \
  NS_IMETHOD GetRecommendedFloppy(PRBool *aRecommendedFloppy); \
  NS_IMETHOD GetRecommendedUSB(PRBool *aRecommendedUSB); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTOSTYPE(_to) \
  NS_IMETHOD GetFamilyId(PRUnichar * *aFamilyId) { return _to GetFamilyId(aFamilyId); } \
  NS_IMETHOD GetFamilyDescription(PRUnichar * *aFamilyDescription) { return _to GetFamilyDescription(aFamilyDescription); } \
  NS_IMETHOD GetId(PRUnichar * *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return _to GetDescription(aDescription); } \
  NS_IMETHOD GetIs64Bit(PRBool *aIs64Bit) { return _to GetIs64Bit(aIs64Bit); } \
  NS_IMETHOD GetRecommendedIOAPIC(PRBool *aRecommendedIOAPIC) { return _to GetRecommendedIOAPIC(aRecommendedIOAPIC); } \
  NS_IMETHOD GetRecommendedVirtEx(PRBool *aRecommendedVirtEx) { return _to GetRecommendedVirtEx(aRecommendedVirtEx); } \
  NS_IMETHOD GetRecommendedRAM(PRUint32 *aRecommendedRAM) { return _to GetRecommendedRAM(aRecommendedRAM); } \
  NS_IMETHOD GetRecommendedVRAM(PRUint32 *aRecommendedVRAM) { return _to GetRecommendedVRAM(aRecommendedVRAM); } \
  NS_IMETHOD GetRecommended2DVideoAcceleration(PRBool *aRecommended2DVideoAcceleration) { return _to GetRecommended2DVideoAcceleration(aRecommended2DVideoAcceleration); } \
  NS_IMETHOD GetRecommended3DAcceleration(PRBool *aRecommended3DAcceleration) { return _to GetRecommended3DAcceleration(aRecommended3DAcceleration); } \
  NS_IMETHOD GetRecommendedHDD(PRInt64 *aRecommendedHDD) { return _to GetRecommendedHDD(aRecommendedHDD); } \
  NS_IMETHOD GetAdapterType(PRUint32 *aAdapterType) { return _to GetAdapterType(aAdapterType); } \
  NS_IMETHOD GetRecommendedPAE(PRBool *aRecommendedPAE) { return _to GetRecommendedPAE(aRecommendedPAE); } \
  NS_IMETHOD GetRecommendedDVDStorageController(PRUint32 *aRecommendedDVDStorageController) { return _to GetRecommendedDVDStorageController(aRecommendedDVDStorageController); } \
  NS_IMETHOD GetRecommendedDVDStorageBus(PRUint32 *aRecommendedDVDStorageBus) { return _to GetRecommendedDVDStorageBus(aRecommendedDVDStorageBus); } \
  NS_IMETHOD GetRecommendedHDStorageController(PRUint32 *aRecommendedHDStorageController) { return _to GetRecommendedHDStorageController(aRecommendedHDStorageController); } \
  NS_IMETHOD GetRecommendedHDStorageBus(PRUint32 *aRecommendedHDStorageBus) { return _to GetRecommendedHDStorageBus(aRecommendedHDStorageBus); } \
  NS_IMETHOD GetRecommendedFirmware(PRUint32 *aRecommendedFirmware) { return _to GetRecommendedFirmware(aRecommendedFirmware); } \
  NS_IMETHOD GetRecommendedUSBHID(PRBool *aRecommendedUSBHID) { return _to GetRecommendedUSBHID(aRecommendedUSBHID); } \
  NS_IMETHOD GetRecommendedHPET(PRBool *aRecommendedHPET) { return _to GetRecommendedHPET(aRecommendedHPET); } \
  NS_IMETHOD GetRecommendedUSBTablet(PRBool *aRecommendedUSBTablet) { return _to GetRecommendedUSBTablet(aRecommendedUSBTablet); } \
  NS_IMETHOD GetRecommendedRTCUseUTC(PRBool *aRecommendedRTCUseUTC) { return _to GetRecommendedRTCUseUTC(aRecommendedRTCUseUTC); } \
  NS_IMETHOD GetRecommendedChipset(PRUint32 *aRecommendedChipset) { return _to GetRecommendedChipset(aRecommendedChipset); } \
  NS_IMETHOD GetRecommendedAudioController(PRUint32 *aRecommendedAudioController) { return _to GetRecommendedAudioController(aRecommendedAudioController); } \
  NS_IMETHOD GetRecommendedFloppy(PRBool *aRecommendedFloppy) { return _to GetRecommendedFloppy(aRecommendedFloppy); } \
  NS_IMETHOD GetRecommendedUSB(PRBool *aRecommendedUSB) { return _to GetRecommendedUSB(aRecommendedUSB); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTOSTYPE(_to) \
  NS_IMETHOD GetFamilyId(PRUnichar * *aFamilyId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFamilyId(aFamilyId); } \
  NS_IMETHOD GetFamilyDescription(PRUnichar * *aFamilyDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFamilyDescription(aFamilyDescription); } \
  NS_IMETHOD GetId(PRUnichar * *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } \
  NS_IMETHOD GetIs64Bit(PRBool *aIs64Bit) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIs64Bit(aIs64Bit); } \
  NS_IMETHOD GetRecommendedIOAPIC(PRBool *aRecommendedIOAPIC) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedIOAPIC(aRecommendedIOAPIC); } \
  NS_IMETHOD GetRecommendedVirtEx(PRBool *aRecommendedVirtEx) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedVirtEx(aRecommendedVirtEx); } \
  NS_IMETHOD GetRecommendedRAM(PRUint32 *aRecommendedRAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedRAM(aRecommendedRAM); } \
  NS_IMETHOD GetRecommendedVRAM(PRUint32 *aRecommendedVRAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedVRAM(aRecommendedVRAM); } \
  NS_IMETHOD GetRecommended2DVideoAcceleration(PRBool *aRecommended2DVideoAcceleration) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommended2DVideoAcceleration(aRecommended2DVideoAcceleration); } \
  NS_IMETHOD GetRecommended3DAcceleration(PRBool *aRecommended3DAcceleration) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommended3DAcceleration(aRecommended3DAcceleration); } \
  NS_IMETHOD GetRecommendedHDD(PRInt64 *aRecommendedHDD) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedHDD(aRecommendedHDD); } \
  NS_IMETHOD GetAdapterType(PRUint32 *aAdapterType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAdapterType(aAdapterType); } \
  NS_IMETHOD GetRecommendedPAE(PRBool *aRecommendedPAE) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedPAE(aRecommendedPAE); } \
  NS_IMETHOD GetRecommendedDVDStorageController(PRUint32 *aRecommendedDVDStorageController) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedDVDStorageController(aRecommendedDVDStorageController); } \
  NS_IMETHOD GetRecommendedDVDStorageBus(PRUint32 *aRecommendedDVDStorageBus) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedDVDStorageBus(aRecommendedDVDStorageBus); } \
  NS_IMETHOD GetRecommendedHDStorageController(PRUint32 *aRecommendedHDStorageController) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedHDStorageController(aRecommendedHDStorageController); } \
  NS_IMETHOD GetRecommendedHDStorageBus(PRUint32 *aRecommendedHDStorageBus) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedHDStorageBus(aRecommendedHDStorageBus); } \
  NS_IMETHOD GetRecommendedFirmware(PRUint32 *aRecommendedFirmware) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedFirmware(aRecommendedFirmware); } \
  NS_IMETHOD GetRecommendedUSBHID(PRBool *aRecommendedUSBHID) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedUSBHID(aRecommendedUSBHID); } \
  NS_IMETHOD GetRecommendedHPET(PRBool *aRecommendedHPET) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedHPET(aRecommendedHPET); } \
  NS_IMETHOD GetRecommendedUSBTablet(PRBool *aRecommendedUSBTablet) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedUSBTablet(aRecommendedUSBTablet); } \
  NS_IMETHOD GetRecommendedRTCUseUTC(PRBool *aRecommendedRTCUseUTC) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedRTCUseUTC(aRecommendedRTCUseUTC); } \
  NS_IMETHOD GetRecommendedChipset(PRUint32 *aRecommendedChipset) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedChipset(aRecommendedChipset); } \
  NS_IMETHOD GetRecommendedAudioController(PRUint32 *aRecommendedAudioController) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedAudioController(aRecommendedAudioController); } \
  NS_IMETHOD GetRecommendedFloppy(PRBool *aRecommendedFloppy) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedFloppy(aRecommendedFloppy); } \
  NS_IMETHOD GetRecommendedUSB(PRBool *aRecommendedUSB) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedUSB(aRecommendedUSB); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestOSType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTOSTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestOSType)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring familyId; */
NS_IMETHODIMP _MYCLASS_::GetFamilyId(PRUnichar * *aFamilyId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring familyDescription; */
NS_IMETHODIMP _MYCLASS_::GetFamilyDescription(PRUnichar * *aFamilyDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring id; */
NS_IMETHODIMP _MYCLASS_::GetId(PRUnichar * *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring description; */
NS_IMETHODIMP _MYCLASS_::GetDescription(PRUnichar * *aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean is64Bit; */
NS_IMETHODIMP _MYCLASS_::GetIs64Bit(PRBool *aIs64Bit)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean recommendedIOAPIC; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedIOAPIC(PRBool *aRecommendedIOAPIC)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean recommendedVirtEx; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedVirtEx(PRBool *aRecommendedVirtEx)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long recommendedRAM; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedRAM(PRUint32 *aRecommendedRAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long recommendedVRAM; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedVRAM(PRUint32 *aRecommendedVRAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean recommended2DVideoAcceleration; */
NS_IMETHODIMP _MYCLASS_::GetRecommended2DVideoAcceleration(PRBool *aRecommended2DVideoAcceleration)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean recommended3DAcceleration; */
NS_IMETHODIMP _MYCLASS_::GetRecommended3DAcceleration(PRBool *aRecommended3DAcceleration)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long recommendedHDD; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedHDD(PRInt64 *aRecommendedHDD)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 adapterType; */
NS_IMETHODIMP _MYCLASS_::GetAdapterType(PRUint32 *aAdapterType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean recommendedPAE; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedPAE(PRBool *aRecommendedPAE)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 recommendedDVDStorageController; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedDVDStorageController(PRUint32 *aRecommendedDVDStorageController)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 recommendedDVDStorageBus; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedDVDStorageBus(PRUint32 *aRecommendedDVDStorageBus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 recommendedHDStorageController; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedHDStorageController(PRUint32 *aRecommendedHDStorageController)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 recommendedHDStorageBus; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedHDStorageBus(PRUint32 *aRecommendedHDStorageBus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 recommendedFirmware; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedFirmware(PRUint32 *aRecommendedFirmware)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean recommendedUSBHID; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedUSBHID(PRBool *aRecommendedUSBHID)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean recommendedHPET; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedHPET(PRBool *aRecommendedHPET)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean recommendedUSBTablet; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedUSBTablet(PRBool *aRecommendedUSBTablet)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean recommendedRTCUseUTC; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedRTCUseUTC(PRBool *aRecommendedRTCUseUTC)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 recommendedChipset; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedChipset(PRUint32 *aRecommendedChipset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 recommendedAudioController; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedAudioController(PRUint32 *aRecommendedAudioController)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean recommendedFloppy; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedFloppy(PRBool *aRecommendedFloppy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean recommendedUSB; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedUSB(PRBool *aRecommendedUSB)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestOSType_GETTER_FamilyId_TO(smth) NS_IMETHOD GetFamilyId (PRUnichar * * aFamilyId) { return smth GetFamilyId (aFamilyId); }
#define COM_FORWARD_IGuestOSType_GETTER_FamilyId_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_FamilyId_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_FamilyId_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_FamilyId_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_FamilyDescription_TO(smth) NS_IMETHOD GetFamilyDescription (PRUnichar * * aFamilyDescription) { return smth GetFamilyDescription (aFamilyDescription); }
#define COM_FORWARD_IGuestOSType_GETTER_FamilyDescription_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_FamilyDescription_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_FamilyDescription_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_FamilyDescription_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_Id_TO(smth) NS_IMETHOD GetId (PRUnichar * * aId) { return smth GetId (aId); }
#define COM_FORWARD_IGuestOSType_GETTER_Id_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_Id_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_Id_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_Id_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_Description_TO(smth) NS_IMETHOD GetDescription (PRUnichar * * aDescription) { return smth GetDescription (aDescription); }
#define COM_FORWARD_IGuestOSType_GETTER_Description_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_Description_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_Description_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_Description_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_Is64Bit_TO(smth) NS_IMETHOD GetIs64Bit (PRBool * aIs64Bit) { return smth GetIs64Bit (aIs64Bit); }
#define COM_FORWARD_IGuestOSType_GETTER_Is64Bit_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_Is64Bit_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_Is64Bit_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_Is64Bit_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedIOAPIC_TO(smth) NS_IMETHOD GetRecommendedIOAPIC (PRBool * aRecommendedIOAPIC) { return smth GetRecommendedIOAPIC (aRecommendedIOAPIC); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedIOAPIC_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedIOAPIC_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedIOAPIC_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedIOAPIC_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedVirtEx_TO(smth) NS_IMETHOD GetRecommendedVirtEx (PRBool * aRecommendedVirtEx) { return smth GetRecommendedVirtEx (aRecommendedVirtEx); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedVirtEx_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedVirtEx_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedVirtEx_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedVirtEx_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedRAM_TO(smth) NS_IMETHOD GetRecommendedRAM (PRUint32 * aRecommendedRAM) { return smth GetRecommendedRAM (aRecommendedRAM); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedRAM_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedRAM_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedRAM_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedRAM_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedVRAM_TO(smth) NS_IMETHOD GetRecommendedVRAM (PRUint32 * aRecommendedVRAM) { return smth GetRecommendedVRAM (aRecommendedVRAM); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedVRAM_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedVRAM_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedVRAM_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedVRAM_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_Recommended2DVideoAcceleration_TO(smth) NS_IMETHOD GetRecommended2DVideoAcceleration (PRBool * aRecommended2DVideoAcceleration) { return smth GetRecommended2DVideoAcceleration (aRecommended2DVideoAcceleration); }
#define COM_FORWARD_IGuestOSType_GETTER_Recommended2DVideoAcceleration_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_Recommended2DVideoAcceleration_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_Recommended2DVideoAcceleration_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_Recommended2DVideoAcceleration_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_Recommended3DAcceleration_TO(smth) NS_IMETHOD GetRecommended3DAcceleration (PRBool * aRecommended3DAcceleration) { return smth GetRecommended3DAcceleration (aRecommended3DAcceleration); }
#define COM_FORWARD_IGuestOSType_GETTER_Recommended3DAcceleration_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_Recommended3DAcceleration_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_Recommended3DAcceleration_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_Recommended3DAcceleration_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHDD_TO(smth) NS_IMETHOD GetRecommendedHDD (PRInt64 * aRecommendedHDD) { return smth GetRecommendedHDD (aRecommendedHDD); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHDD_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedHDD_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHDD_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedHDD_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_AdapterType_TO(smth) NS_IMETHOD GetAdapterType (PRUint32 * aAdapterType) { return smth GetAdapterType (aAdapterType); }
#define COM_FORWARD_IGuestOSType_GETTER_AdapterType_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_AdapterType_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_AdapterType_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_AdapterType_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedPAE_TO(smth) NS_IMETHOD GetRecommendedPAE (PRBool * aRecommendedPAE) { return smth GetRecommendedPAE (aRecommendedPAE); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedPAE_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedPAE_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedPAE_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedPAE_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedDVDStorageController_TO(smth) NS_IMETHOD GetRecommendedDVDStorageController (PRUint32 * aRecommendedDVDStorageController) { return smth GetRecommendedDVDStorageController (aRecommendedDVDStorageController); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedDVDStorageController_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedDVDStorageController_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedDVDStorageController_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedDVDStorageController_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedDVDStorageBus_TO(smth) NS_IMETHOD GetRecommendedDVDStorageBus (PRUint32 * aRecommendedDVDStorageBus) { return smth GetRecommendedDVDStorageBus (aRecommendedDVDStorageBus); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedDVDStorageBus_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedDVDStorageBus_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedDVDStorageBus_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedDVDStorageBus_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHDStorageController_TO(smth) NS_IMETHOD GetRecommendedHDStorageController (PRUint32 * aRecommendedHDStorageController) { return smth GetRecommendedHDStorageController (aRecommendedHDStorageController); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHDStorageController_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedHDStorageController_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHDStorageController_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedHDStorageController_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHDStorageBus_TO(smth) NS_IMETHOD GetRecommendedHDStorageBus (PRUint32 * aRecommendedHDStorageBus) { return smth GetRecommendedHDStorageBus (aRecommendedHDStorageBus); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHDStorageBus_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedHDStorageBus_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHDStorageBus_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedHDStorageBus_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedFirmware_TO(smth) NS_IMETHOD GetRecommendedFirmware (PRUint32 * aRecommendedFirmware) { return smth GetRecommendedFirmware (aRecommendedFirmware); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedFirmware_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedFirmware_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedFirmware_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedFirmware_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedUSBHID_TO(smth) NS_IMETHOD GetRecommendedUSBHID (PRBool * aRecommendedUSBHID) { return smth GetRecommendedUSBHID (aRecommendedUSBHID); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedUSBHID_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedUSBHID_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedUSBHID_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedUSBHID_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHPET_TO(smth) NS_IMETHOD GetRecommendedHPET (PRBool * aRecommendedHPET) { return smth GetRecommendedHPET (aRecommendedHPET); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHPET_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedHPET_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHPET_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedHPET_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedUSBTablet_TO(smth) NS_IMETHOD GetRecommendedUSBTablet (PRBool * aRecommendedUSBTablet) { return smth GetRecommendedUSBTablet (aRecommendedUSBTablet); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedUSBTablet_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedUSBTablet_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedUSBTablet_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedUSBTablet_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedRTCUseUTC_TO(smth) NS_IMETHOD GetRecommendedRTCUseUTC (PRBool * aRecommendedRTCUseUTC) { return smth GetRecommendedRTCUseUTC (aRecommendedRTCUseUTC); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedRTCUseUTC_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedRTCUseUTC_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedRTCUseUTC_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedRTCUseUTC_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedChipset_TO(smth) NS_IMETHOD GetRecommendedChipset (PRUint32 * aRecommendedChipset) { return smth GetRecommendedChipset (aRecommendedChipset); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedChipset_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedChipset_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedChipset_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedChipset_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedAudioController_TO(smth) NS_IMETHOD GetRecommendedAudioController (PRUint32 * aRecommendedAudioController) { return smth GetRecommendedAudioController (aRecommendedAudioController); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedAudioController_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedAudioController_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedAudioController_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedAudioController_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedFloppy_TO(smth) NS_IMETHOD GetRecommendedFloppy (PRBool * aRecommendedFloppy) { return smth GetRecommendedFloppy (aRecommendedFloppy); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedFloppy_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedFloppy_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedFloppy_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedFloppy_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedUSB_TO(smth) NS_IMETHOD GetRecommendedUSB (PRBool * aRecommendedUSB) { return smth GetRecommendedUSB (aRecommendedUSB); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedUSB_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedUSB_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedUSB_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedUSB_TO (base::)
#define COM_FORWARD_IGuestOSType_TO(smth) NS_FORWARD_IGUESTOSTYPE (smth)
#define COM_FORWARD_IGuestOSType_TO_OBJ(obj) COM_FORWARD_IGuestOSType_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_TO_BASE(base) COM_FORWARD_IGuestOSType_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestOSType;

/* starting interface:    IAdditionsFacility */
#define IADDITIONSFACILITY_IID_STR "54992946-6af1-4e49-98ec-58b558b7291e"

#define IADDITIONSFACILITY_IID \
  {0x54992946, 0x6af1, 0x4e49, \
    { 0x98, 0xec, 0x58, 0xb5, 0x58, 0xb7, 0x29, 0x1e }}

class NS_NO_VTABLE IAdditionsFacility : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IADDITIONSFACILITY_IID)

  /* readonly attribute PRUint32 classType; */
  NS_IMETHOD GetClassType(PRUint32 *aClassType) = 0;

  /* readonly attribute long long lastUpdated; */
  NS_IMETHOD GetLastUpdated(PRInt64 *aLastUpdated) = 0;

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* readonly attribute PRUint32 status; */
  NS_IMETHOD GetStatus(PRUint32 *aStatus) = 0;

  /* readonly attribute PRUint32 type; */
  NS_IMETHOD GetType(PRUint32 *aType) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IADDITIONSFACILITY \
  NS_IMETHOD GetClassType(PRUint32 *aClassType); \
  NS_IMETHOD GetLastUpdated(PRInt64 *aLastUpdated); \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetStatus(PRUint32 *aStatus); \
  NS_IMETHOD GetType(PRUint32 *aType); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IADDITIONSFACILITY(_to) \
  NS_IMETHOD GetClassType(PRUint32 *aClassType) { return _to GetClassType(aClassType); } \
  NS_IMETHOD GetLastUpdated(PRInt64 *aLastUpdated) { return _to GetLastUpdated(aLastUpdated); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetStatus(PRUint32 *aStatus) { return _to GetStatus(aStatus); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return _to GetType(aType); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IADDITIONSFACILITY(_to) \
  NS_IMETHOD GetClassType(PRUint32 *aClassType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetClassType(aClassType); } \
  NS_IMETHOD GetLastUpdated(PRInt64 *aLastUpdated) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastUpdated(aLastUpdated); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetStatus(PRUint32 *aStatus) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStatus(aStatus); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetType(aType); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IAdditionsFacility
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IADDITIONSFACILITY

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IAdditionsFacility)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute PRUint32 classType; */
NS_IMETHODIMP _MYCLASS_::GetClassType(PRUint32 *aClassType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long lastUpdated; */
NS_IMETHODIMP _MYCLASS_::GetLastUpdated(PRInt64 *aLastUpdated)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 status; */
NS_IMETHODIMP _MYCLASS_::GetStatus(PRUint32 *aStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 type; */
NS_IMETHODIMP _MYCLASS_::GetType(PRUint32 *aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IAdditionsFacility_GETTER_ClassType_TO(smth) NS_IMETHOD GetClassType (PRUint32 * aClassType) { return smth GetClassType (aClassType); }
#define COM_FORWARD_IAdditionsFacility_GETTER_ClassType_TO_OBJ(obj) COM_FORWARD_IAdditionsFacility_GETTER_ClassType_TO ((obj)->)
#define COM_FORWARD_IAdditionsFacility_GETTER_ClassType_TO_BASE(base) COM_FORWARD_IAdditionsFacility_GETTER_ClassType_TO (base::)
#define COM_FORWARD_IAdditionsFacility_GETTER_LastUpdated_TO(smth) NS_IMETHOD GetLastUpdated (PRInt64 * aLastUpdated) { return smth GetLastUpdated (aLastUpdated); }
#define COM_FORWARD_IAdditionsFacility_GETTER_LastUpdated_TO_OBJ(obj) COM_FORWARD_IAdditionsFacility_GETTER_LastUpdated_TO ((obj)->)
#define COM_FORWARD_IAdditionsFacility_GETTER_LastUpdated_TO_BASE(base) COM_FORWARD_IAdditionsFacility_GETTER_LastUpdated_TO (base::)
#define COM_FORWARD_IAdditionsFacility_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IAdditionsFacility_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IAdditionsFacility_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IAdditionsFacility_GETTER_Name_TO_BASE(base) COM_FORWARD_IAdditionsFacility_GETTER_Name_TO (base::)
#define COM_FORWARD_IAdditionsFacility_GETTER_Status_TO(smth) NS_IMETHOD GetStatus (PRUint32 * aStatus) { return smth GetStatus (aStatus); }
#define COM_FORWARD_IAdditionsFacility_GETTER_Status_TO_OBJ(obj) COM_FORWARD_IAdditionsFacility_GETTER_Status_TO ((obj)->)
#define COM_FORWARD_IAdditionsFacility_GETTER_Status_TO_BASE(base) COM_FORWARD_IAdditionsFacility_GETTER_Status_TO (base::)
#define COM_FORWARD_IAdditionsFacility_GETTER_Type_TO(smth) NS_IMETHOD GetType (PRUint32 * aType) { return smth GetType (aType); }
#define COM_FORWARD_IAdditionsFacility_GETTER_Type_TO_OBJ(obj) COM_FORWARD_IAdditionsFacility_GETTER_Type_TO ((obj)->)
#define COM_FORWARD_IAdditionsFacility_GETTER_Type_TO_BASE(base) COM_FORWARD_IAdditionsFacility_GETTER_Type_TO (base::)
#define COM_FORWARD_IAdditionsFacility_TO(smth) NS_FORWARD_IADDITIONSFACILITY (smth)
#define COM_FORWARD_IAdditionsFacility_TO_OBJ(obj) COM_FORWARD_IAdditionsFacility_TO ((obj)->)
#define COM_FORWARD_IAdditionsFacility_TO_BASE(base) COM_FORWARD_IAdditionsFacility_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IAdditionsFacility;

/* starting interface:    IGuestSession */
#define IGUESTSESSION_IID_STR "5b28703c-07b6-4fcb-afba-ac199b309752"

#define IGUESTSESSION_IID \
  {0x5b28703c, 0x07b6, 0x4fcb, \
    { 0xaf, 0xba, 0xac, 0x19, 0x9b, 0x30, 0x97, 0x52 }}

class NS_NO_VTABLE IGuestSession : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTSESSION_IID)

  /* readonly attribute wstring user; */
  NS_IMETHOD GetUser(PRUnichar * *aUser) = 0;

  /* readonly attribute wstring domain; */
  NS_IMETHOD GetDomain(PRUnichar * *aDomain) = 0;

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* readonly attribute unsigned long id; */
  NS_IMETHOD GetId(PRUint32 *aId) = 0;

  /* attribute unsigned long timeout; */
  NS_IMETHOD GetTimeout(PRUint32 *aTimeout) = 0;
  NS_IMETHOD SetTimeout(PRUint32 aTimeout) = 0;

  /* readonly attribute unsigned long protocolVersion; */
  NS_IMETHOD GetProtocolVersion(PRUint32 *aProtocolVersion) = 0;

  /* readonly attribute PRUint32 status; */
  NS_IMETHOD GetStatus(PRUint32 *aStatus) = 0;

  /* void getEnvironment (out unsigned long environmentSize, [array, size_is (environmentSize), retval] out wstring environment); */
  NS_IMETHOD GetEnvironment(PRUint32 *environmentSize, PRUnichar ***environment) = 0;

  /* void setEnvironment (in unsigned long environmentSize, [array, size_is (environmentSize)] in wstring environment); */
  NS_IMETHOD SetEnvironment(PRUint32 environmentSize, const PRUnichar **environment) = 0;

  /* void getProcesses (out unsigned long processesSize, [array, size_is (processesSize), retval] out IGuestProcess processes); */
  NS_IMETHOD GetProcesses(PRUint32 *processesSize, IGuestProcess ***processes) = 0;

  /* void getDirectories (out unsigned long directoriesSize, [array, size_is (directoriesSize), retval] out IGuestDirectory directories); */
  NS_IMETHOD GetDirectories(PRUint32 *directoriesSize, IGuestDirectory ***directories) = 0;

  /* void getFiles (out unsigned long filesSize, [array, size_is (filesSize), retval] out IGuestFile files); */
  NS_IMETHOD GetFiles(PRUint32 *filesSize, IGuestFile ***files) = 0;

  /* readonly attribute IEventSource eventSource; */
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) = 0;

  /* void close (); */
  NS_IMETHOD Close(void) = 0;

  /* void copyFrom (in wstring source, in wstring dest, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags, [retval] out IProgress progress); */
  NS_IMETHOD CopyFrom(const PRUnichar *source, const PRUnichar *dest, PRUint32 flagsSize, PRUint32 *flags, IProgress **progress) = 0;

  /* void copyTo (in wstring source, in wstring dest, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags, [retval] out IProgress progress); */
  NS_IMETHOD CopyTo(const PRUnichar *source, const PRUnichar *dest, PRUint32 flagsSize, PRUint32 *flags, IProgress **progress) = 0;

  /* void directoryCreate (in wstring path, in unsigned long mode, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags); */
  NS_IMETHOD DirectoryCreate(const PRUnichar *path, PRUint32 mode, PRUint32 flagsSize, PRUint32 *flags) = 0;

  /* void directoryCreateTemp (in wstring templateName, in unsigned long mode, in wstring path, in boolean secure, [retval] out wstring directory); */
  NS_IMETHOD DirectoryCreateTemp(const PRUnichar *templateName, PRUint32 mode, const PRUnichar *path, PRBool secure, PRUnichar **directory) = 0;

  /* void directoryExists (in wstring path, [retval] out boolean exists); */
  NS_IMETHOD DirectoryExists(const PRUnichar *path, PRBool *exists) = 0;

  /* void directoryOpen (in wstring path, in wstring filter, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags, [retval] out IGuestDirectory directory); */
  NS_IMETHOD DirectoryOpen(const PRUnichar *path, const PRUnichar *filter, PRUint32 flagsSize, PRUint32 *flags, IGuestDirectory **directory) = 0;

  /* void directoryQueryInfo (in wstring path, [retval] out IGuestFsObjInfo info); */
  NS_IMETHOD DirectoryQueryInfo(const PRUnichar *path, IGuestFsObjInfo **info) = 0;

  /* void directoryRemove (in wstring path); */
  NS_IMETHOD DirectoryRemove(const PRUnichar *path) = 0;

  /* void directoryRemoveRecursive (in wstring path, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags, [retval] out IProgress progress); */
  NS_IMETHOD DirectoryRemoveRecursive(const PRUnichar *path, PRUint32 flagsSize, PRUint32 *flags, IProgress **progress) = 0;

  /* void directoryRename (in wstring source, in wstring dest, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags); */
  NS_IMETHOD DirectoryRename(const PRUnichar *source, const PRUnichar *dest, PRUint32 flagsSize, PRUint32 *flags) = 0;

  /* void directorySetACL (in wstring path, in wstring acl); */
  NS_IMETHOD DirectorySetACL(const PRUnichar *path, const PRUnichar *acl) = 0;

  /* void environmentClear (); */
  NS_IMETHOD EnvironmentClear(void) = 0;

  /* void environmentGet (in wstring name, [retval] out wstring value); */
  NS_IMETHOD EnvironmentGet(const PRUnichar *name, PRUnichar **value) = 0;

  /* void environmentSet (in wstring name, in wstring value); */
  NS_IMETHOD EnvironmentSet(const PRUnichar *name, const PRUnichar *value) = 0;

  /* void environmentUnset (in wstring name); */
  NS_IMETHOD EnvironmentUnset(const PRUnichar *name) = 0;

  /* void fileCreateTemp (in wstring templateName, in unsigned long mode, in wstring path, in boolean secure, [retval] out IGuestFile file); */
  NS_IMETHOD FileCreateTemp(const PRUnichar *templateName, PRUint32 mode, const PRUnichar *path, PRBool secure, IGuestFile **file) = 0;

  /* void fileExists (in wstring path, [retval] out boolean exists); */
  NS_IMETHOD FileExists(const PRUnichar *path, PRBool *exists) = 0;

  /* void fileRemove (in wstring path); */
  NS_IMETHOD FileRemove(const PRUnichar *path) = 0;

  /* void fileOpen (in wstring path, in wstring openMode, in wstring disposition, in unsigned long creationMode, [retval] out IGuestFile file); */
  NS_IMETHOD FileOpen(const PRUnichar *path, const PRUnichar *openMode, const PRUnichar *disposition, PRUint32 creationMode, IGuestFile **file) = 0;

  /* void fileOpenEx (in wstring path, in wstring openMode, in wstring disposition, in wstring sharingMode, in unsigned long creationMode, in long long offset, [retval] out IGuestFile file); */
  NS_IMETHOD FileOpenEx(const PRUnichar *path, const PRUnichar *openMode, const PRUnichar *disposition, const PRUnichar *sharingMode, PRUint32 creationMode, PRInt64 offset, IGuestFile **file) = 0;

  /* void fileQueryInfo (in wstring path, [retval] out IGuestFsObjInfo info); */
  NS_IMETHOD FileQueryInfo(const PRUnichar *path, IGuestFsObjInfo **info) = 0;

  /* void fileQuerySize (in wstring path, [retval] out long long size); */
  NS_IMETHOD FileQuerySize(const PRUnichar *path, PRInt64 *size) = 0;

  /* void fileRename (in wstring source, in wstring dest, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags); */
  NS_IMETHOD FileRename(const PRUnichar *source, const PRUnichar *dest, PRUint32 flagsSize, PRUint32 *flags) = 0;

  /* void fileSetACL (in wstring file, in wstring acl); */
  NS_IMETHOD FileSetACL(const PRUnichar *file, const PRUnichar *acl) = 0;

  /* void processCreate (in wstring command, in unsigned long argumentsSize, [array, size_is (argumentsSize)] in wstring arguments, in unsigned long environmentSize, [array, size_is (environmentSize)] in wstring environment, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags, in unsigned long timeoutMS, [retval] out IGuestProcess guestProcess); */
  NS_IMETHOD ProcessCreate(const PRUnichar *command, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 environmentSize, const PRUnichar **environment, PRUint32 flagsSize, PRUint32 *flags, PRUint32 timeoutMS, IGuestProcess **guestProcess) = 0;

  /* void processCreateEx (in wstring command, in unsigned long argumentsSize, [array, size_is (argumentsSize)] in wstring arguments, in unsigned long environmentSize, [array, size_is (environmentSize)] in wstring environment, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags, in unsigned long timeoutMS, in PRUint32 priority, in unsigned long affinitySize, [array, size_is (affinitySize)] in long affinity, [retval] out IGuestProcess guestProcess); */
  NS_IMETHOD ProcessCreateEx(const PRUnichar *command, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 environmentSize, const PRUnichar **environment, PRUint32 flagsSize, PRUint32 *flags, PRUint32 timeoutMS, PRUint32 priority, PRUint32 affinitySize, PRInt32 *affinity, IGuestProcess **guestProcess) = 0;

  /* void processGet (in unsigned long pid, [retval] out IGuestProcess guestProcess); */
  NS_IMETHOD ProcessGet(PRUint32 pid, IGuestProcess **guestProcess) = 0;

  /* void symlinkCreate (in wstring source, in wstring target, in PRUint32 type); */
  NS_IMETHOD SymlinkCreate(const PRUnichar *source, const PRUnichar *target, PRUint32 type) = 0;

  /* void symlinkExists (in wstring symlink, [retval] out boolean exists); */
  NS_IMETHOD SymlinkExists(const PRUnichar *symlink, PRBool *exists) = 0;

  /* void symlinkRead (in wstring symlink, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags, [retval] out wstring target); */
  NS_IMETHOD SymlinkRead(const PRUnichar *symlink, PRUint32 flagsSize, PRUint32 *flags, PRUnichar **target) = 0;

  /* void symlinkRemoveDirectory (in wstring path); */
  NS_IMETHOD SymlinkRemoveDirectory(const PRUnichar *path) = 0;

  /* void symlinkRemoveFile (in wstring file); */
  NS_IMETHOD SymlinkRemoveFile(const PRUnichar *file) = 0;

  /* void waitFor (in unsigned long waitFor, in unsigned long timeoutMS, [retval] out PRUint32 reason); */
  NS_IMETHOD WaitFor(PRUint32 waitFor, PRUint32 timeoutMS, PRUint32 *reason) = 0;

  /* void waitForArray (in unsigned long waitForSize, [array, size_is (waitForSize)] in PRUint32 waitFor, in unsigned long timeoutMS, [retval] out PRUint32 reason); */
  NS_IMETHOD WaitForArray(PRUint32 waitForSize, PRUint32 *waitFor, PRUint32 timeoutMS, PRUint32 *reason) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTSESSION \
  NS_IMETHOD GetUser(PRUnichar * *aUser); \
  NS_IMETHOD GetDomain(PRUnichar * *aDomain); \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetId(PRUint32 *aId); \
  NS_IMETHOD GetTimeout(PRUint32 *aTimeout); \
  NS_IMETHOD SetTimeout(PRUint32 aTimeout); \
  NS_IMETHOD GetProtocolVersion(PRUint32 *aProtocolVersion); \
  NS_IMETHOD GetStatus(PRUint32 *aStatus); \
  NS_IMETHOD GetEnvironment(PRUint32 *environmentSize, PRUnichar ***environment); \
  NS_IMETHOD SetEnvironment(PRUint32 environmentSize, const PRUnichar **environment); \
  NS_IMETHOD GetProcesses(PRUint32 *processesSize, IGuestProcess ***processes); \
  NS_IMETHOD GetDirectories(PRUint32 *directoriesSize, IGuestDirectory ***directories); \
  NS_IMETHOD GetFiles(PRUint32 *filesSize, IGuestFile ***files); \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource); \
  NS_IMETHOD Close(void); \
  NS_IMETHOD CopyFrom(const PRUnichar *source, const PRUnichar *dest, PRUint32 flagsSize, PRUint32 *flags, IProgress **progress); \
  NS_IMETHOD CopyTo(const PRUnichar *source, const PRUnichar *dest, PRUint32 flagsSize, PRUint32 *flags, IProgress **progress); \
  NS_IMETHOD DirectoryCreate(const PRUnichar *path, PRUint32 mode, PRUint32 flagsSize, PRUint32 *flags); \
  NS_IMETHOD DirectoryCreateTemp(const PRUnichar *templateName, PRUint32 mode, const PRUnichar *path, PRBool secure, PRUnichar **directory); \
  NS_IMETHOD DirectoryExists(const PRUnichar *path, PRBool *exists); \
  NS_IMETHOD DirectoryOpen(const PRUnichar *path, const PRUnichar *filter, PRUint32 flagsSize, PRUint32 *flags, IGuestDirectory **directory); \
  NS_IMETHOD DirectoryQueryInfo(const PRUnichar *path, IGuestFsObjInfo **info); \
  NS_IMETHOD DirectoryRemove(const PRUnichar *path); \
  NS_IMETHOD DirectoryRemoveRecursive(const PRUnichar *path, PRUint32 flagsSize, PRUint32 *flags, IProgress **progress); \
  NS_IMETHOD DirectoryRename(const PRUnichar *source, const PRUnichar *dest, PRUint32 flagsSize, PRUint32 *flags); \
  NS_IMETHOD DirectorySetACL(const PRUnichar *path, const PRUnichar *acl); \
  NS_IMETHOD EnvironmentClear(void); \
  NS_IMETHOD EnvironmentGet(const PRUnichar *name, PRUnichar **value); \
  NS_IMETHOD EnvironmentSet(const PRUnichar *name, const PRUnichar *value); \
  NS_IMETHOD EnvironmentUnset(const PRUnichar *name); \
  NS_IMETHOD FileCreateTemp(const PRUnichar *templateName, PRUint32 mode, const PRUnichar *path, PRBool secure, IGuestFile **file); \
  NS_IMETHOD FileExists(const PRUnichar *path, PRBool *exists); \
  NS_IMETHOD FileRemove(const PRUnichar *path); \
  NS_IMETHOD FileOpen(const PRUnichar *path, const PRUnichar *openMode, const PRUnichar *disposition, PRUint32 creationMode, IGuestFile **file); \
  NS_IMETHOD FileOpenEx(const PRUnichar *path, const PRUnichar *openMode, const PRUnichar *disposition, const PRUnichar *sharingMode, PRUint32 creationMode, PRInt64 offset, IGuestFile **file); \
  NS_IMETHOD FileQueryInfo(const PRUnichar *path, IGuestFsObjInfo **info); \
  NS_IMETHOD FileQuerySize(const PRUnichar *path, PRInt64 *size); \
  NS_IMETHOD FileRename(const PRUnichar *source, const PRUnichar *dest, PRUint32 flagsSize, PRUint32 *flags); \
  NS_IMETHOD FileSetACL(const PRUnichar *file, const PRUnichar *acl); \
  NS_IMETHOD ProcessCreate(const PRUnichar *command, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 environmentSize, const PRUnichar **environment, PRUint32 flagsSize, PRUint32 *flags, PRUint32 timeoutMS, IGuestProcess **guestProcess); \
  NS_IMETHOD ProcessCreateEx(const PRUnichar *command, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 environmentSize, const PRUnichar **environment, PRUint32 flagsSize, PRUint32 *flags, PRUint32 timeoutMS, PRUint32 priority, PRUint32 affinitySize, PRInt32 *affinity, IGuestProcess **guestProcess); \
  NS_IMETHOD ProcessGet(PRUint32 pid, IGuestProcess **guestProcess); \
  NS_IMETHOD SymlinkCreate(const PRUnichar *source, const PRUnichar *target, PRUint32 type); \
  NS_IMETHOD SymlinkExists(const PRUnichar *symlink, PRBool *exists); \
  NS_IMETHOD SymlinkRead(const PRUnichar *symlink, PRUint32 flagsSize, PRUint32 *flags, PRUnichar **target); \
  NS_IMETHOD SymlinkRemoveDirectory(const PRUnichar *path); \
  NS_IMETHOD SymlinkRemoveFile(const PRUnichar *file); \
  NS_IMETHOD WaitFor(PRUint32 waitFor, PRUint32 timeoutMS, PRUint32 *reason); \
  NS_IMETHOD WaitForArray(PRUint32 waitForSize, PRUint32 *waitFor, PRUint32 timeoutMS, PRUint32 *reason); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTSESSION(_to) \
  NS_IMETHOD GetUser(PRUnichar * *aUser) { return _to GetUser(aUser); } \
  NS_IMETHOD GetDomain(PRUnichar * *aDomain) { return _to GetDomain(aDomain); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetId(PRUint32 *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetTimeout(PRUint32 *aTimeout) { return _to GetTimeout(aTimeout); } \
  NS_IMETHOD SetTimeout(PRUint32 aTimeout) { return _to SetTimeout(aTimeout); } \
  NS_IMETHOD GetProtocolVersion(PRUint32 *aProtocolVersion) { return _to GetProtocolVersion(aProtocolVersion); } \
  NS_IMETHOD GetStatus(PRUint32 *aStatus) { return _to GetStatus(aStatus); } \
  NS_IMETHOD GetEnvironment(PRUint32 *environmentSize, PRUnichar ***environment) { return _to GetEnvironment(environmentSize, environment); } \
  NS_IMETHOD SetEnvironment(PRUint32 environmentSize, const PRUnichar **environment) { return _to SetEnvironment(environmentSize, environment); } \
  NS_IMETHOD GetProcesses(PRUint32 *processesSize, IGuestProcess ***processes) { return _to GetProcesses(processesSize, processes); } \
  NS_IMETHOD GetDirectories(PRUint32 *directoriesSize, IGuestDirectory ***directories) { return _to GetDirectories(directoriesSize, directories); } \
  NS_IMETHOD GetFiles(PRUint32 *filesSize, IGuestFile ***files) { return _to GetFiles(filesSize, files); } \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return _to GetEventSource(aEventSource); } \
  NS_IMETHOD Close(void) { return _to Close(); } \
  NS_IMETHOD CopyFrom(const PRUnichar *source, const PRUnichar *dest, PRUint32 flagsSize, PRUint32 *flags, IProgress **progress) { return _to CopyFrom(source, dest, flagsSize, flags, progress); } \
  NS_IMETHOD CopyTo(const PRUnichar *source, const PRUnichar *dest, PRUint32 flagsSize, PRUint32 *flags, IProgress **progress) { return _to CopyTo(source, dest, flagsSize, flags, progress); } \
  NS_IMETHOD DirectoryCreate(const PRUnichar *path, PRUint32 mode, PRUint32 flagsSize, PRUint32 *flags) { return _to DirectoryCreate(path, mode, flagsSize, flags); } \
  NS_IMETHOD DirectoryCreateTemp(const PRUnichar *templateName, PRUint32 mode, const PRUnichar *path, PRBool secure, PRUnichar **directory) { return _to DirectoryCreateTemp(templateName, mode, path, secure, directory); } \
  NS_IMETHOD DirectoryExists(const PRUnichar *path, PRBool *exists) { return _to DirectoryExists(path, exists); } \
  NS_IMETHOD DirectoryOpen(const PRUnichar *path, const PRUnichar *filter, PRUint32 flagsSize, PRUint32 *flags, IGuestDirectory **directory) { return _to DirectoryOpen(path, filter, flagsSize, flags, directory); } \
  NS_IMETHOD DirectoryQueryInfo(const PRUnichar *path, IGuestFsObjInfo **info) { return _to DirectoryQueryInfo(path, info); } \
  NS_IMETHOD DirectoryRemove(const PRUnichar *path) { return _to DirectoryRemove(path); } \
  NS_IMETHOD DirectoryRemoveRecursive(const PRUnichar *path, PRUint32 flagsSize, PRUint32 *flags, IProgress **progress) { return _to DirectoryRemoveRecursive(path, flagsSize, flags, progress); } \
  NS_IMETHOD DirectoryRename(const PRUnichar *source, const PRUnichar *dest, PRUint32 flagsSize, PRUint32 *flags) { return _to DirectoryRename(source, dest, flagsSize, flags); } \
  NS_IMETHOD DirectorySetACL(const PRUnichar *path, const PRUnichar *acl) { return _to DirectorySetACL(path, acl); } \
  NS_IMETHOD EnvironmentClear(void) { return _to EnvironmentClear(); } \
  NS_IMETHOD EnvironmentGet(const PRUnichar *name, PRUnichar **value) { return _to EnvironmentGet(name, value); } \
  NS_IMETHOD EnvironmentSet(const PRUnichar *name, const PRUnichar *value) { return _to EnvironmentSet(name, value); } \
  NS_IMETHOD EnvironmentUnset(const PRUnichar *name) { return _to EnvironmentUnset(name); } \
  NS_IMETHOD FileCreateTemp(const PRUnichar *templateName, PRUint32 mode, const PRUnichar *path, PRBool secure, IGuestFile **file) { return _to FileCreateTemp(templateName, mode, path, secure, file); } \
  NS_IMETHOD FileExists(const PRUnichar *path, PRBool *exists) { return _to FileExists(path, exists); } \
  NS_IMETHOD FileRemove(const PRUnichar *path) { return _to FileRemove(path); } \
  NS_IMETHOD FileOpen(const PRUnichar *path, const PRUnichar *openMode, const PRUnichar *disposition, PRUint32 creationMode, IGuestFile **file) { return _to FileOpen(path, openMode, disposition, creationMode, file); } \
  NS_IMETHOD FileOpenEx(const PRUnichar *path, const PRUnichar *openMode, const PRUnichar *disposition, const PRUnichar *sharingMode, PRUint32 creationMode, PRInt64 offset, IGuestFile **file) { return _to FileOpenEx(path, openMode, disposition, sharingMode, creationMode, offset, file); } \
  NS_IMETHOD FileQueryInfo(const PRUnichar *path, IGuestFsObjInfo **info) { return _to FileQueryInfo(path, info); } \
  NS_IMETHOD FileQuerySize(const PRUnichar *path, PRInt64 *size) { return _to FileQuerySize(path, size); } \
  NS_IMETHOD FileRename(const PRUnichar *source, const PRUnichar *dest, PRUint32 flagsSize, PRUint32 *flags) { return _to FileRename(source, dest, flagsSize, flags); } \
  NS_IMETHOD FileSetACL(const PRUnichar *file, const PRUnichar *acl) { return _to FileSetACL(file, acl); } \
  NS_IMETHOD ProcessCreate(const PRUnichar *command, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 environmentSize, const PRUnichar **environment, PRUint32 flagsSize, PRUint32 *flags, PRUint32 timeoutMS, IGuestProcess **guestProcess) { return _to ProcessCreate(command, argumentsSize, arguments, environmentSize, environment, flagsSize, flags, timeoutMS, guestProcess); } \
  NS_IMETHOD ProcessCreateEx(const PRUnichar *command, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 environmentSize, const PRUnichar **environment, PRUint32 flagsSize, PRUint32 *flags, PRUint32 timeoutMS, PRUint32 priority, PRUint32 affinitySize, PRInt32 *affinity, IGuestProcess **guestProcess) { return _to ProcessCreateEx(command, argumentsSize, arguments, environmentSize, environment, flagsSize, flags, timeoutMS, priority, affinitySize, affinity, guestProcess); } \
  NS_IMETHOD ProcessGet(PRUint32 pid, IGuestProcess **guestProcess) { return _to ProcessGet(pid, guestProcess); } \
  NS_IMETHOD SymlinkCreate(const PRUnichar *source, const PRUnichar *target, PRUint32 type) { return _to SymlinkCreate(source, target, type); } \
  NS_IMETHOD SymlinkExists(const PRUnichar *symlink, PRBool *exists) { return _to SymlinkExists(symlink, exists); } \
  NS_IMETHOD SymlinkRead(const PRUnichar *symlink, PRUint32 flagsSize, PRUint32 *flags, PRUnichar **target) { return _to SymlinkRead(symlink, flagsSize, flags, target); } \
  NS_IMETHOD SymlinkRemoveDirectory(const PRUnichar *path) { return _to SymlinkRemoveDirectory(path); } \
  NS_IMETHOD SymlinkRemoveFile(const PRUnichar *file) { return _to SymlinkRemoveFile(file); } \
  NS_IMETHOD WaitFor(PRUint32 waitFor, PRUint32 timeoutMS, PRUint32 *reason) { return _to WaitFor(waitFor, timeoutMS, reason); } \
  NS_IMETHOD WaitForArray(PRUint32 waitForSize, PRUint32 *waitFor, PRUint32 timeoutMS, PRUint32 *reason) { return _to WaitForArray(waitForSize, waitFor, timeoutMS, reason); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTSESSION(_to) \
  NS_IMETHOD GetUser(PRUnichar * *aUser) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUser(aUser); } \
  NS_IMETHOD GetDomain(PRUnichar * *aDomain) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDomain(aDomain); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetId(PRUint32 *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetTimeout(PRUint32 *aTimeout) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTimeout(aTimeout); } \
  NS_IMETHOD SetTimeout(PRUint32 aTimeout) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTimeout(aTimeout); } \
  NS_IMETHOD GetProtocolVersion(PRUint32 *aProtocolVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProtocolVersion(aProtocolVersion); } \
  NS_IMETHOD GetStatus(PRUint32 *aStatus) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStatus(aStatus); } \
  NS_IMETHOD GetEnvironment(PRUint32 *environmentSize, PRUnichar ***environment) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnvironment(environmentSize, environment); } \
  NS_IMETHOD SetEnvironment(PRUint32 environmentSize, const PRUnichar **environment) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEnvironment(environmentSize, environment); } \
  NS_IMETHOD GetProcesses(PRUint32 *processesSize, IGuestProcess ***processes) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcesses(processesSize, processes); } \
  NS_IMETHOD GetDirectories(PRUint32 *directoriesSize, IGuestDirectory ***directories) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDirectories(directoriesSize, directories); } \
  NS_IMETHOD GetFiles(PRUint32 *filesSize, IGuestFile ***files) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFiles(filesSize, files); } \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEventSource(aEventSource); } \
  NS_IMETHOD Close(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Close(); } \
  NS_IMETHOD CopyFrom(const PRUnichar *source, const PRUnichar *dest, PRUint32 flagsSize, PRUint32 *flags, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyFrom(source, dest, flagsSize, flags, progress); } \
  NS_IMETHOD CopyTo(const PRUnichar *source, const PRUnichar *dest, PRUint32 flagsSize, PRUint32 *flags, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyTo(source, dest, flagsSize, flags, progress); } \
  NS_IMETHOD DirectoryCreate(const PRUnichar *path, PRUint32 mode, PRUint32 flagsSize, PRUint32 *flags) { return !_to ? NS_ERROR_NULL_POINTER : _to->DirectoryCreate(path, mode, flagsSize, flags); } \
  NS_IMETHOD DirectoryCreateTemp(const PRUnichar *templateName, PRUint32 mode, const PRUnichar *path, PRBool secure, PRUnichar **directory) { return !_to ? NS_ERROR_NULL_POINTER : _to->DirectoryCreateTemp(templateName, mode, path, secure, directory); } \
  NS_IMETHOD DirectoryExists(const PRUnichar *path, PRBool *exists) { return !_to ? NS_ERROR_NULL_POINTER : _to->DirectoryExists(path, exists); } \
  NS_IMETHOD DirectoryOpen(const PRUnichar *path, const PRUnichar *filter, PRUint32 flagsSize, PRUint32 *flags, IGuestDirectory **directory) { return !_to ? NS_ERROR_NULL_POINTER : _to->DirectoryOpen(path, filter, flagsSize, flags, directory); } \
  NS_IMETHOD DirectoryQueryInfo(const PRUnichar *path, IGuestFsObjInfo **info) { return !_to ? NS_ERROR_NULL_POINTER : _to->DirectoryQueryInfo(path, info); } \
  NS_IMETHOD DirectoryRemove(const PRUnichar *path) { return !_to ? NS_ERROR_NULL_POINTER : _to->DirectoryRemove(path); } \
  NS_IMETHOD DirectoryRemoveRecursive(const PRUnichar *path, PRUint32 flagsSize, PRUint32 *flags, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->DirectoryRemoveRecursive(path, flagsSize, flags, progress); } \
  NS_IMETHOD DirectoryRename(const PRUnichar *source, const PRUnichar *dest, PRUint32 flagsSize, PRUint32 *flags) { return !_to ? NS_ERROR_NULL_POINTER : _to->DirectoryRename(source, dest, flagsSize, flags); } \
  NS_IMETHOD DirectorySetACL(const PRUnichar *path, const PRUnichar *acl) { return !_to ? NS_ERROR_NULL_POINTER : _to->DirectorySetACL(path, acl); } \
  NS_IMETHOD EnvironmentClear(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnvironmentClear(); } \
  NS_IMETHOD EnvironmentGet(const PRUnichar *name, PRUnichar **value) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnvironmentGet(name, value); } \
  NS_IMETHOD EnvironmentSet(const PRUnichar *name, const PRUnichar *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnvironmentSet(name, value); } \
  NS_IMETHOD EnvironmentUnset(const PRUnichar *name) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnvironmentUnset(name); } \
  NS_IMETHOD FileCreateTemp(const PRUnichar *templateName, PRUint32 mode, const PRUnichar *path, PRBool secure, IGuestFile **file) { return !_to ? NS_ERROR_NULL_POINTER : _to->FileCreateTemp(templateName, mode, path, secure, file); } \
  NS_IMETHOD FileExists(const PRUnichar *path, PRBool *exists) { return !_to ? NS_ERROR_NULL_POINTER : _to->FileExists(path, exists); } \
  NS_IMETHOD FileRemove(const PRUnichar *path) { return !_to ? NS_ERROR_NULL_POINTER : _to->FileRemove(path); } \
  NS_IMETHOD FileOpen(const PRUnichar *path, const PRUnichar *openMode, const PRUnichar *disposition, PRUint32 creationMode, IGuestFile **file) { return !_to ? NS_ERROR_NULL_POINTER : _to->FileOpen(path, openMode, disposition, creationMode, file); } \
  NS_IMETHOD FileOpenEx(const PRUnichar *path, const PRUnichar *openMode, const PRUnichar *disposition, const PRUnichar *sharingMode, PRUint32 creationMode, PRInt64 offset, IGuestFile **file) { return !_to ? NS_ERROR_NULL_POINTER : _to->FileOpenEx(path, openMode, disposition, sharingMode, creationMode, offset, file); } \
  NS_IMETHOD FileQueryInfo(const PRUnichar *path, IGuestFsObjInfo **info) { return !_to ? NS_ERROR_NULL_POINTER : _to->FileQueryInfo(path, info); } \
  NS_IMETHOD FileQuerySize(const PRUnichar *path, PRInt64 *size) { return !_to ? NS_ERROR_NULL_POINTER : _to->FileQuerySize(path, size); } \
  NS_IMETHOD FileRename(const PRUnichar *source, const PRUnichar *dest, PRUint32 flagsSize, PRUint32 *flags) { return !_to ? NS_ERROR_NULL_POINTER : _to->FileRename(source, dest, flagsSize, flags); } \
  NS_IMETHOD FileSetACL(const PRUnichar *file, const PRUnichar *acl) { return !_to ? NS_ERROR_NULL_POINTER : _to->FileSetACL(file, acl); } \
  NS_IMETHOD ProcessCreate(const PRUnichar *command, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 environmentSize, const PRUnichar **environment, PRUint32 flagsSize, PRUint32 *flags, PRUint32 timeoutMS, IGuestProcess **guestProcess) { return !_to ? NS_ERROR_NULL_POINTER : _to->ProcessCreate(command, argumentsSize, arguments, environmentSize, environment, flagsSize, flags, timeoutMS, guestProcess); } \
  NS_IMETHOD ProcessCreateEx(const PRUnichar *command, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 environmentSize, const PRUnichar **environment, PRUint32 flagsSize, PRUint32 *flags, PRUint32 timeoutMS, PRUint32 priority, PRUint32 affinitySize, PRInt32 *affinity, IGuestProcess **guestProcess) { return !_to ? NS_ERROR_NULL_POINTER : _to->ProcessCreateEx(command, argumentsSize, arguments, environmentSize, environment, flagsSize, flags, timeoutMS, priority, affinitySize, affinity, guestProcess); } \
  NS_IMETHOD ProcessGet(PRUint32 pid, IGuestProcess **guestProcess) { return !_to ? NS_ERROR_NULL_POINTER : _to->ProcessGet(pid, guestProcess); } \
  NS_IMETHOD SymlinkCreate(const PRUnichar *source, const PRUnichar *target, PRUint32 type) { return !_to ? NS_ERROR_NULL_POINTER : _to->SymlinkCreate(source, target, type); } \
  NS_IMETHOD SymlinkExists(const PRUnichar *symlink, PRBool *exists) { return !_to ? NS_ERROR_NULL_POINTER : _to->SymlinkExists(symlink, exists); } \
  NS_IMETHOD SymlinkRead(const PRUnichar *symlink, PRUint32 flagsSize, PRUint32 *flags, PRUnichar **target) { return !_to ? NS_ERROR_NULL_POINTER : _to->SymlinkRead(symlink, flagsSize, flags, target); } \
  NS_IMETHOD SymlinkRemoveDirectory(const PRUnichar *path) { return !_to ? NS_ERROR_NULL_POINTER : _to->SymlinkRemoveDirectory(path); } \
  NS_IMETHOD SymlinkRemoveFile(const PRUnichar *file) { return !_to ? NS_ERROR_NULL_POINTER : _to->SymlinkRemoveFile(file); } \
  NS_IMETHOD WaitFor(PRUint32 waitFor, PRUint32 timeoutMS, PRUint32 *reason) { return !_to ? NS_ERROR_NULL_POINTER : _to->WaitFor(waitFor, timeoutMS, reason); } \
  NS_IMETHOD WaitForArray(PRUint32 waitForSize, PRUint32 *waitFor, PRUint32 timeoutMS, PRUint32 *reason) { return !_to ? NS_ERROR_NULL_POINTER : _to->WaitForArray(waitForSize, waitFor, timeoutMS, reason); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestSession
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTSESSION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestSession)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring user; */
NS_IMETHODIMP _MYCLASS_::GetUser(PRUnichar * *aUser)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring domain; */
NS_IMETHODIMP _MYCLASS_::GetDomain(PRUnichar * *aDomain)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long id; */
NS_IMETHODIMP _MYCLASS_::GetId(PRUint32 *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long timeout; */
NS_IMETHODIMP _MYCLASS_::GetTimeout(PRUint32 *aTimeout)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTimeout(PRUint32 aTimeout)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long protocolVersion; */
NS_IMETHODIMP _MYCLASS_::GetProtocolVersion(PRUint32 *aProtocolVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 status; */
NS_IMETHODIMP _MYCLASS_::GetStatus(PRUint32 *aStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getEnvironment (out unsigned long environmentSize, [array, size_is (environmentSize), retval] out wstring environment); */
NS_IMETHODIMP _MYCLASS_::GetEnvironment(PRUint32 *environmentSize, PRUnichar ***environment)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setEnvironment (in unsigned long environmentSize, [array, size_is (environmentSize)] in wstring environment); */
NS_IMETHODIMP _MYCLASS_::SetEnvironment(PRUint32 environmentSize, const PRUnichar **environment)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getProcesses (out unsigned long processesSize, [array, size_is (processesSize), retval] out IGuestProcess processes); */
NS_IMETHODIMP _MYCLASS_::GetProcesses(PRUint32 *processesSize, IGuestProcess ***processes)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getDirectories (out unsigned long directoriesSize, [array, size_is (directoriesSize), retval] out IGuestDirectory directories); */
NS_IMETHODIMP _MYCLASS_::GetDirectories(PRUint32 *directoriesSize, IGuestDirectory ***directories)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getFiles (out unsigned long filesSize, [array, size_is (filesSize), retval] out IGuestFile files); */
NS_IMETHODIMP _MYCLASS_::GetFiles(PRUint32 *filesSize, IGuestFile ***files)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IEventSource eventSource; */
NS_IMETHODIMP _MYCLASS_::GetEventSource(IEventSource * *aEventSource)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void close (); */
NS_IMETHODIMP _MYCLASS_::Close()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void copyFrom (in wstring source, in wstring dest, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CopyFrom(const PRUnichar *source, const PRUnichar *dest, PRUint32 flagsSize, PRUint32 *flags, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void copyTo (in wstring source, in wstring dest, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CopyTo(const PRUnichar *source, const PRUnichar *dest, PRUint32 flagsSize, PRUint32 *flags, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void directoryCreate (in wstring path, in unsigned long mode, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags); */
NS_IMETHODIMP _MYCLASS_::DirectoryCreate(const PRUnichar *path, PRUint32 mode, PRUint32 flagsSize, PRUint32 *flags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void directoryCreateTemp (in wstring templateName, in unsigned long mode, in wstring path, in boolean secure, [retval] out wstring directory); */
NS_IMETHODIMP _MYCLASS_::DirectoryCreateTemp(const PRUnichar *templateName, PRUint32 mode, const PRUnichar *path, PRBool secure, PRUnichar **directory)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void directoryExists (in wstring path, [retval] out boolean exists); */
NS_IMETHODIMP _MYCLASS_::DirectoryExists(const PRUnichar *path, PRBool *exists)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void directoryOpen (in wstring path, in wstring filter, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags, [retval] out IGuestDirectory directory); */
NS_IMETHODIMP _MYCLASS_::DirectoryOpen(const PRUnichar *path, const PRUnichar *filter, PRUint32 flagsSize, PRUint32 *flags, IGuestDirectory **directory)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void directoryQueryInfo (in wstring path, [retval] out IGuestFsObjInfo info); */
NS_IMETHODIMP _MYCLASS_::DirectoryQueryInfo(const PRUnichar *path, IGuestFsObjInfo **info)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void directoryRemove (in wstring path); */
NS_IMETHODIMP _MYCLASS_::DirectoryRemove(const PRUnichar *path)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void directoryRemoveRecursive (in wstring path, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::DirectoryRemoveRecursive(const PRUnichar *path, PRUint32 flagsSize, PRUint32 *flags, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void directoryRename (in wstring source, in wstring dest, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags); */
NS_IMETHODIMP _MYCLASS_::DirectoryRename(const PRUnichar *source, const PRUnichar *dest, PRUint32 flagsSize, PRUint32 *flags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void directorySetACL (in wstring path, in wstring acl); */
NS_IMETHODIMP _MYCLASS_::DirectorySetACL(const PRUnichar *path, const PRUnichar *acl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void environmentClear (); */
NS_IMETHODIMP _MYCLASS_::EnvironmentClear()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void environmentGet (in wstring name, [retval] out wstring value); */
NS_IMETHODIMP _MYCLASS_::EnvironmentGet(const PRUnichar *name, PRUnichar **value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void environmentSet (in wstring name, in wstring value); */
NS_IMETHODIMP _MYCLASS_::EnvironmentSet(const PRUnichar *name, const PRUnichar *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void environmentUnset (in wstring name); */
NS_IMETHODIMP _MYCLASS_::EnvironmentUnset(const PRUnichar *name)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void fileCreateTemp (in wstring templateName, in unsigned long mode, in wstring path, in boolean secure, [retval] out IGuestFile file); */
NS_IMETHODIMP _MYCLASS_::FileCreateTemp(const PRUnichar *templateName, PRUint32 mode, const PRUnichar *path, PRBool secure, IGuestFile **file)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void fileExists (in wstring path, [retval] out boolean exists); */
NS_IMETHODIMP _MYCLASS_::FileExists(const PRUnichar *path, PRBool *exists)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void fileRemove (in wstring path); */
NS_IMETHODIMP _MYCLASS_::FileRemove(const PRUnichar *path)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void fileOpen (in wstring path, in wstring openMode, in wstring disposition, in unsigned long creationMode, [retval] out IGuestFile file); */
NS_IMETHODIMP _MYCLASS_::FileOpen(const PRUnichar *path, const PRUnichar *openMode, const PRUnichar *disposition, PRUint32 creationMode, IGuestFile **file)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void fileOpenEx (in wstring path, in wstring openMode, in wstring disposition, in wstring sharingMode, in unsigned long creationMode, in long long offset, [retval] out IGuestFile file); */
NS_IMETHODIMP _MYCLASS_::FileOpenEx(const PRUnichar *path, const PRUnichar *openMode, const PRUnichar *disposition, const PRUnichar *sharingMode, PRUint32 creationMode, PRInt64 offset, IGuestFile **file)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void fileQueryInfo (in wstring path, [retval] out IGuestFsObjInfo info); */
NS_IMETHODIMP _MYCLASS_::FileQueryInfo(const PRUnichar *path, IGuestFsObjInfo **info)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void fileQuerySize (in wstring path, [retval] out long long size); */
NS_IMETHODIMP _MYCLASS_::FileQuerySize(const PRUnichar *path, PRInt64 *size)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void fileRename (in wstring source, in wstring dest, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags); */
NS_IMETHODIMP _MYCLASS_::FileRename(const PRUnichar *source, const PRUnichar *dest, PRUint32 flagsSize, PRUint32 *flags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void fileSetACL (in wstring file, in wstring acl); */
NS_IMETHODIMP _MYCLASS_::FileSetACL(const PRUnichar *file, const PRUnichar *acl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void processCreate (in wstring command, in unsigned long argumentsSize, [array, size_is (argumentsSize)] in wstring arguments, in unsigned long environmentSize, [array, size_is (environmentSize)] in wstring environment, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags, in unsigned long timeoutMS, [retval] out IGuestProcess guestProcess); */
NS_IMETHODIMP _MYCLASS_::ProcessCreate(const PRUnichar *command, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 environmentSize, const PRUnichar **environment, PRUint32 flagsSize, PRUint32 *flags, PRUint32 timeoutMS, IGuestProcess **guestProcess)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void processCreateEx (in wstring command, in unsigned long argumentsSize, [array, size_is (argumentsSize)] in wstring arguments, in unsigned long environmentSize, [array, size_is (environmentSize)] in wstring environment, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags, in unsigned long timeoutMS, in PRUint32 priority, in unsigned long affinitySize, [array, size_is (affinitySize)] in long affinity, [retval] out IGuestProcess guestProcess); */
NS_IMETHODIMP _MYCLASS_::ProcessCreateEx(const PRUnichar *command, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 environmentSize, const PRUnichar **environment, PRUint32 flagsSize, PRUint32 *flags, PRUint32 timeoutMS, PRUint32 priority, PRUint32 affinitySize, PRInt32 *affinity, IGuestProcess **guestProcess)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void processGet (in unsigned long pid, [retval] out IGuestProcess guestProcess); */
NS_IMETHODIMP _MYCLASS_::ProcessGet(PRUint32 pid, IGuestProcess **guestProcess)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void symlinkCreate (in wstring source, in wstring target, in PRUint32 type); */
NS_IMETHODIMP _MYCLASS_::SymlinkCreate(const PRUnichar *source, const PRUnichar *target, PRUint32 type)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void symlinkExists (in wstring symlink, [retval] out boolean exists); */
NS_IMETHODIMP _MYCLASS_::SymlinkExists(const PRUnichar *symlink, PRBool *exists)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void symlinkRead (in wstring symlink, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags, [retval] out wstring target); */
NS_IMETHODIMP _MYCLASS_::SymlinkRead(const PRUnichar *symlink, PRUint32 flagsSize, PRUint32 *flags, PRUnichar **target)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void symlinkRemoveDirectory (in wstring path); */
NS_IMETHODIMP _MYCLASS_::SymlinkRemoveDirectory(const PRUnichar *path)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void symlinkRemoveFile (in wstring file); */
NS_IMETHODIMP _MYCLASS_::SymlinkRemoveFile(const PRUnichar *file)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void waitFor (in unsigned long waitFor, in unsigned long timeoutMS, [retval] out PRUint32 reason); */
NS_IMETHODIMP _MYCLASS_::WaitFor(PRUint32 waitFor, PRUint32 timeoutMS, PRUint32 *reason)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void waitForArray (in unsigned long waitForSize, [array, size_is (waitForSize)] in PRUint32 waitFor, in unsigned long timeoutMS, [retval] out PRUint32 reason); */
NS_IMETHODIMP _MYCLASS_::WaitForArray(PRUint32 waitForSize, PRUint32 *waitFor, PRUint32 timeoutMS, PRUint32 *reason)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestSession_GETTER_User_TO(smth) NS_IMETHOD GetUser (PRUnichar * * aUser) { return smth GetUser (aUser); }
#define COM_FORWARD_IGuestSession_GETTER_User_TO_OBJ(obj) COM_FORWARD_IGuestSession_GETTER_User_TO ((obj)->)
#define COM_FORWARD_IGuestSession_GETTER_User_TO_BASE(base) COM_FORWARD_IGuestSession_GETTER_User_TO (base::)
#define COM_FORWARD_IGuestSession_GETTER_Domain_TO(smth) NS_IMETHOD GetDomain (PRUnichar * * aDomain) { return smth GetDomain (aDomain); }
#define COM_FORWARD_IGuestSession_GETTER_Domain_TO_OBJ(obj) COM_FORWARD_IGuestSession_GETTER_Domain_TO ((obj)->)
#define COM_FORWARD_IGuestSession_GETTER_Domain_TO_BASE(base) COM_FORWARD_IGuestSession_GETTER_Domain_TO (base::)
#define COM_FORWARD_IGuestSession_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IGuestSession_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IGuestSession_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IGuestSession_GETTER_Name_TO_BASE(base) COM_FORWARD_IGuestSession_GETTER_Name_TO (base::)
#define COM_FORWARD_IGuestSession_GETTER_Id_TO(smth) NS_IMETHOD GetId (PRUint32 * aId) { return smth GetId (aId); }
#define COM_FORWARD_IGuestSession_GETTER_Id_TO_OBJ(obj) COM_FORWARD_IGuestSession_GETTER_Id_TO ((obj)->)
#define COM_FORWARD_IGuestSession_GETTER_Id_TO_BASE(base) COM_FORWARD_IGuestSession_GETTER_Id_TO (base::)
#define COM_FORWARD_IGuestSession_GETTER_Timeout_TO(smth) NS_IMETHOD GetTimeout (PRUint32 * aTimeout) { return smth GetTimeout (aTimeout); }
#define COM_FORWARD_IGuestSession_GETTER_Timeout_TO_OBJ(obj) COM_FORWARD_IGuestSession_GETTER_Timeout_TO ((obj)->)
#define COM_FORWARD_IGuestSession_GETTER_Timeout_TO_BASE(base) COM_FORWARD_IGuestSession_GETTER_Timeout_TO (base::)
#define COM_FORWARD_IGuestSession_SETTER_Timeout_TO(smth) NS_IMETHOD SetTimeout (PRUint32 aTimeout) { return smth SetTimeout (aTimeout); }
#define COM_FORWARD_IGuestSession_SETTER_Timeout_TO_OBJ(obj) COM_FORWARD_IGuestSession_SETTER_Timeout_TO ((obj)->)
#define COM_FORWARD_IGuestSession_SETTER_Timeout_TO_BASE(base) COM_FORWARD_IGuestSession_SETTER_Timeout_TO (base::)
#define COM_FORWARD_IGuestSession_GETTER_ProtocolVersion_TO(smth) NS_IMETHOD GetProtocolVersion (PRUint32 * aProtocolVersion) { return smth GetProtocolVersion (aProtocolVersion); }
#define COM_FORWARD_IGuestSession_GETTER_ProtocolVersion_TO_OBJ(obj) COM_FORWARD_IGuestSession_GETTER_ProtocolVersion_TO ((obj)->)
#define COM_FORWARD_IGuestSession_GETTER_ProtocolVersion_TO_BASE(base) COM_FORWARD_IGuestSession_GETTER_ProtocolVersion_TO (base::)
#define COM_FORWARD_IGuestSession_GETTER_Status_TO(smth) NS_IMETHOD GetStatus (PRUint32 * aStatus) { return smth GetStatus (aStatus); }
#define COM_FORWARD_IGuestSession_GETTER_Status_TO_OBJ(obj) COM_FORWARD_IGuestSession_GETTER_Status_TO ((obj)->)
#define COM_FORWARD_IGuestSession_GETTER_Status_TO_BASE(base) COM_FORWARD_IGuestSession_GETTER_Status_TO (base::)
#define COM_FORWARD_IGuestSession_GETTER_Environment_TO(smth) NS_IMETHOD GetEnvironment (PRUint32 * aEnvironmentSize, PRUnichar * * * aEnvironment) { return smth GetEnvironment (aEnvironmentSize, aEnvironment); }
#define COM_FORWARD_IGuestSession_GETTER_Environment_TO_OBJ(obj) COM_FORWARD_IGuestSession_GETTER_Environment_TO ((obj)->)
#define COM_FORWARD_IGuestSession_GETTER_Environment_TO_BASE(base) COM_FORWARD_IGuestSession_GETTER_Environment_TO (base::)
#define COM_FORWARD_IGuestSession_SETTER_Environment_TO(smth) NS_IMETHOD SetEnvironment (PRUint32 aEnvironmentSize, PRUnichar * * aEnvironment) { return smth SetEnvironment (aEnvironment); }
#define COM_FORWARD_IGuestSession_SETTER_Environment_TO_OBJ(obj) COM_FORWARD_IGuestSession_SETTER_Environment_TO ((obj)->)
#define COM_FORWARD_IGuestSession_SETTER_Environment_TO_BASE(base) COM_FORWARD_IGuestSession_SETTER_Environment_TO (base::)
#define COM_FORWARD_IGuestSession_GETTER_Processes_TO(smth) NS_IMETHOD GetProcesses (PRUint32 * aProcessesSize, IGuestProcess * * * aProcesses) { return smth GetProcesses (aProcessesSize, aProcesses); }
#define COM_FORWARD_IGuestSession_GETTER_Processes_TO_OBJ(obj) COM_FORWARD_IGuestSession_GETTER_Processes_TO ((obj)->)
#define COM_FORWARD_IGuestSession_GETTER_Processes_TO_BASE(base) COM_FORWARD_IGuestSession_GETTER_Processes_TO (base::)
#define COM_FORWARD_IGuestSession_GETTER_Directories_TO(smth) NS_IMETHOD GetDirectories (PRUint32 * aDirectoriesSize, IGuestDirectory * * * aDirectories) { return smth GetDirectories (aDirectoriesSize, aDirectories); }
#define COM_FORWARD_IGuestSession_GETTER_Directories_TO_OBJ(obj) COM_FORWARD_IGuestSession_GETTER_Directories_TO ((obj)->)
#define COM_FORWARD_IGuestSession_GETTER_Directories_TO_BASE(base) COM_FORWARD_IGuestSession_GETTER_Directories_TO (base::)
#define COM_FORWARD_IGuestSession_GETTER_Files_TO(smth) NS_IMETHOD GetFiles (PRUint32 * aFilesSize, IGuestFile * * * aFiles) { return smth GetFiles (aFilesSize, aFiles); }
#define COM_FORWARD_IGuestSession_GETTER_Files_TO_OBJ(obj) COM_FORWARD_IGuestSession_GETTER_Files_TO ((obj)->)
#define COM_FORWARD_IGuestSession_GETTER_Files_TO_BASE(base) COM_FORWARD_IGuestSession_GETTER_Files_TO (base::)
#define COM_FORWARD_IGuestSession_GETTER_EventSource_TO(smth) NS_IMETHOD GetEventSource (IEventSource * * aEventSource) { return smth GetEventSource (aEventSource); }
#define COM_FORWARD_IGuestSession_GETTER_EventSource_TO_OBJ(obj) COM_FORWARD_IGuestSession_GETTER_EventSource_TO ((obj)->)
#define COM_FORWARD_IGuestSession_GETTER_EventSource_TO_BASE(base) COM_FORWARD_IGuestSession_GETTER_EventSource_TO (base::)
#define COM_FORWARD_IGuestSession_Close_TO(smth) NS_IMETHOD Close() { return smth Close(); }
#define COM_FORWARD_IGuestSession_Close_TO_OBJ(obj) COM_FORWARD_IGuestSession_Close_TO ((obj)->)
#define COM_FORWARD_IGuestSession_Close_TO_BASE(base) COM_FORWARD_IGuestSession_Close_TO (base::)
#define COM_FORWARD_IGuestSession_CopyFrom_TO(smth) NS_IMETHOD CopyFrom (PRUnichar * aSource, PRUnichar * aDest, PRUint32 aFlagsSize, PRUint32 * aFlags, IProgress * * aProgress) { return smth CopyFrom (aSource, aDest, aFlagsSize+++, aFlags, aProgress); }
#define COM_FORWARD_IGuestSession_CopyFrom_TO_OBJ(obj) COM_FORWARD_IGuestSession_CopyFrom_TO ((obj)->)
#define COM_FORWARD_IGuestSession_CopyFrom_TO_BASE(base) COM_FORWARD_IGuestSession_CopyFrom_TO (base::)
#define COM_FORWARD_IGuestSession_CopyTo_TO(smth) NS_IMETHOD CopyTo (PRUnichar * aSource, PRUnichar * aDest, PRUint32 aFlagsSize, PRUint32 * aFlags, IProgress * * aProgress) { return smth CopyTo (aSource, aDest, aFlagsSize+++, aFlags, aProgress); }
#define COM_FORWARD_IGuestSession_CopyTo_TO_OBJ(obj) COM_FORWARD_IGuestSession_CopyTo_TO ((obj)->)
#define COM_FORWARD_IGuestSession_CopyTo_TO_BASE(base) COM_FORWARD_IGuestSession_CopyTo_TO (base::)
#define COM_FORWARD_IGuestSession_DirectoryCreate_TO(smth) NS_IMETHOD DirectoryCreate (PRUnichar * aPath, PRUint32 aMode, PRUint32 aFlagsSize, PRUint32 * aFlags) { return smth DirectoryCreate (aPath, aMode, aFlagsSize, aFlags); }
#define COM_FORWARD_IGuestSession_DirectoryCreate_TO_OBJ(obj) COM_FORWARD_IGuestSession_DirectoryCreate_TO ((obj)->)
#define COM_FORWARD_IGuestSession_DirectoryCreate_TO_BASE(base) COM_FORWARD_IGuestSession_DirectoryCreate_TO (base::)
#define COM_FORWARD_IGuestSession_DirectoryCreateTemp_TO(smth) NS_IMETHOD DirectoryCreateTemp (PRUnichar * aTemplateName, PRUint32 aMode, PRUnichar * aPath, PRBool aSecure, PRUnichar * * aDirectory) { return smth DirectoryCreateTemp (aTemplateName, aMode, aPath, aSecure, aDirectory); }
#define COM_FORWARD_IGuestSession_DirectoryCreateTemp_TO_OBJ(obj) COM_FORWARD_IGuestSession_DirectoryCreateTemp_TO ((obj)->)
#define COM_FORWARD_IGuestSession_DirectoryCreateTemp_TO_BASE(base) COM_FORWARD_IGuestSession_DirectoryCreateTemp_TO (base::)
#define COM_FORWARD_IGuestSession_DirectoryExists_TO(smth) NS_IMETHOD DirectoryExists (PRUnichar * aPath, PRBool * aExists) { return smth DirectoryExists (aPath, aExists); }
#define COM_FORWARD_IGuestSession_DirectoryExists_TO_OBJ(obj) COM_FORWARD_IGuestSession_DirectoryExists_TO ((obj)->)
#define COM_FORWARD_IGuestSession_DirectoryExists_TO_BASE(base) COM_FORWARD_IGuestSession_DirectoryExists_TO (base::)
#define COM_FORWARD_IGuestSession_DirectoryOpen_TO(smth) NS_IMETHOD DirectoryOpen (PRUnichar * aPath, PRUnichar * aFilter, PRUint32 aFlagsSize, PRUint32 * aFlags, IGuestDirectory * * aDirectory) { return smth DirectoryOpen (aPath, aFilter, aFlagsSize+++, aFlags, aDirectory); }
#define COM_FORWARD_IGuestSession_DirectoryOpen_TO_OBJ(obj) COM_FORWARD_IGuestSession_DirectoryOpen_TO ((obj)->)
#define COM_FORWARD_IGuestSession_DirectoryOpen_TO_BASE(base) COM_FORWARD_IGuestSession_DirectoryOpen_TO (base::)
#define COM_FORWARD_IGuestSession_DirectoryQueryInfo_TO(smth) NS_IMETHOD DirectoryQueryInfo (PRUnichar * aPath, IGuestFsObjInfo * * aInfo) { return smth DirectoryQueryInfo (aPath, aInfo); }
#define COM_FORWARD_IGuestSession_DirectoryQueryInfo_TO_OBJ(obj) COM_FORWARD_IGuestSession_DirectoryQueryInfo_TO ((obj)->)
#define COM_FORWARD_IGuestSession_DirectoryQueryInfo_TO_BASE(base) COM_FORWARD_IGuestSession_DirectoryQueryInfo_TO (base::)
#define COM_FORWARD_IGuestSession_DirectoryRemove_TO(smth) NS_IMETHOD DirectoryRemove (PRUnichar * aPath) { return smth DirectoryRemove (aPath); }
#define COM_FORWARD_IGuestSession_DirectoryRemove_TO_OBJ(obj) COM_FORWARD_IGuestSession_DirectoryRemove_TO ((obj)->)
#define COM_FORWARD_IGuestSession_DirectoryRemove_TO_BASE(base) COM_FORWARD_IGuestSession_DirectoryRemove_TO (base::)
#define COM_FORWARD_IGuestSession_DirectoryRemoveRecursive_TO(smth) NS_IMETHOD DirectoryRemoveRecursive (PRUnichar * aPath, PRUint32 aFlagsSize, PRUint32 * aFlags, IProgress * * aProgress) { return smth DirectoryRemoveRecursive (aPath, aFlagsSize+++, aFlags, aProgress); }
#define COM_FORWARD_IGuestSession_DirectoryRemoveRecursive_TO_OBJ(obj) COM_FORWARD_IGuestSession_DirectoryRemoveRecursive_TO ((obj)->)
#define COM_FORWARD_IGuestSession_DirectoryRemoveRecursive_TO_BASE(base) COM_FORWARD_IGuestSession_DirectoryRemoveRecursive_TO (base::)
#define COM_FORWARD_IGuestSession_DirectoryRename_TO(smth) NS_IMETHOD DirectoryRename (PRUnichar * aSource, PRUnichar * aDest, PRUint32 aFlagsSize, PRUint32 * aFlags) { return smth DirectoryRename (aSource, aDest, aFlagsSize, aFlags); }
#define COM_FORWARD_IGuestSession_DirectoryRename_TO_OBJ(obj) COM_FORWARD_IGuestSession_DirectoryRename_TO ((obj)->)
#define COM_FORWARD_IGuestSession_DirectoryRename_TO_BASE(base) COM_FORWARD_IGuestSession_DirectoryRename_TO (base::)
#define COM_FORWARD_IGuestSession_DirectorySetACL_TO(smth) NS_IMETHOD DirectorySetACL (PRUnichar * aPath, PRUnichar * aAcl) { return smth DirectorySetACL (aPath, aAcl); }
#define COM_FORWARD_IGuestSession_DirectorySetACL_TO_OBJ(obj) COM_FORWARD_IGuestSession_DirectorySetACL_TO ((obj)->)
#define COM_FORWARD_IGuestSession_DirectorySetACL_TO_BASE(base) COM_FORWARD_IGuestSession_DirectorySetACL_TO (base::)
#define COM_FORWARD_IGuestSession_EnvironmentClear_TO(smth) NS_IMETHOD EnvironmentClear() { return smth EnvironmentClear(); }
#define COM_FORWARD_IGuestSession_EnvironmentClear_TO_OBJ(obj) COM_FORWARD_IGuestSession_EnvironmentClear_TO ((obj)->)
#define COM_FORWARD_IGuestSession_EnvironmentClear_TO_BASE(base) COM_FORWARD_IGuestSession_EnvironmentClear_TO (base::)
#define COM_FORWARD_IGuestSession_EnvironmentGet_TO(smth) NS_IMETHOD EnvironmentGet (PRUnichar * aName, PRUnichar * * aValue) { return smth EnvironmentGet (aName, aValue); }
#define COM_FORWARD_IGuestSession_EnvironmentGet_TO_OBJ(obj) COM_FORWARD_IGuestSession_EnvironmentGet_TO ((obj)->)
#define COM_FORWARD_IGuestSession_EnvironmentGet_TO_BASE(base) COM_FORWARD_IGuestSession_EnvironmentGet_TO (base::)
#define COM_FORWARD_IGuestSession_EnvironmentSet_TO(smth) NS_IMETHOD EnvironmentSet (PRUnichar * aName, PRUnichar * aValue) { return smth EnvironmentSet (aName, aValue); }
#define COM_FORWARD_IGuestSession_EnvironmentSet_TO_OBJ(obj) COM_FORWARD_IGuestSession_EnvironmentSet_TO ((obj)->)
#define COM_FORWARD_IGuestSession_EnvironmentSet_TO_BASE(base) COM_FORWARD_IGuestSession_EnvironmentSet_TO (base::)
#define COM_FORWARD_IGuestSession_EnvironmentUnset_TO(smth) NS_IMETHOD EnvironmentUnset (PRUnichar * aName) { return smth EnvironmentUnset (aName); }
#define COM_FORWARD_IGuestSession_EnvironmentUnset_TO_OBJ(obj) COM_FORWARD_IGuestSession_EnvironmentUnset_TO ((obj)->)
#define COM_FORWARD_IGuestSession_EnvironmentUnset_TO_BASE(base) COM_FORWARD_IGuestSession_EnvironmentUnset_TO (base::)
#define COM_FORWARD_IGuestSession_FileCreateTemp_TO(smth) NS_IMETHOD FileCreateTemp (PRUnichar * aTemplateName, PRUint32 aMode, PRUnichar * aPath, PRBool aSecure, IGuestFile * * aFile) { return smth FileCreateTemp (aTemplateName, aMode, aPath, aSecure, aFile); }
#define COM_FORWARD_IGuestSession_FileCreateTemp_TO_OBJ(obj) COM_FORWARD_IGuestSession_FileCreateTemp_TO ((obj)->)
#define COM_FORWARD_IGuestSession_FileCreateTemp_TO_BASE(base) COM_FORWARD_IGuestSession_FileCreateTemp_TO (base::)
#define COM_FORWARD_IGuestSession_FileExists_TO(smth) NS_IMETHOD FileExists (PRUnichar * aPath, PRBool * aExists) { return smth FileExists (aPath, aExists); }
#define COM_FORWARD_IGuestSession_FileExists_TO_OBJ(obj) COM_FORWARD_IGuestSession_FileExists_TO ((obj)->)
#define COM_FORWARD_IGuestSession_FileExists_TO_BASE(base) COM_FORWARD_IGuestSession_FileExists_TO (base::)
#define COM_FORWARD_IGuestSession_FileRemove_TO(smth) NS_IMETHOD FileRemove (PRUnichar * aPath) { return smth FileRemove (aPath); }
#define COM_FORWARD_IGuestSession_FileRemove_TO_OBJ(obj) COM_FORWARD_IGuestSession_FileRemove_TO ((obj)->)
#define COM_FORWARD_IGuestSession_FileRemove_TO_BASE(base) COM_FORWARD_IGuestSession_FileRemove_TO (base::)
#define COM_FORWARD_IGuestSession_FileOpen_TO(smth) NS_IMETHOD FileOpen (PRUnichar * aPath, PRUnichar * aOpenMode, PRUnichar * aDisposition, PRUint32 aCreationMode, IGuestFile * * aFile) { return smth FileOpen (aPath, aOpenMode, aDisposition, aCreationMode, aFile); }
#define COM_FORWARD_IGuestSession_FileOpen_TO_OBJ(obj) COM_FORWARD_IGuestSession_FileOpen_TO ((obj)->)
#define COM_FORWARD_IGuestSession_FileOpen_TO_BASE(base) COM_FORWARD_IGuestSession_FileOpen_TO (base::)
#define COM_FORWARD_IGuestSession_FileOpenEx_TO(smth) NS_IMETHOD FileOpenEx (PRUnichar * aPath, PRUnichar * aOpenMode, PRUnichar * aDisposition, PRUnichar * aSharingMode, PRUint32 aCreationMode, PRInt64 aOffset, IGuestFile * * aFile) { return smth FileOpenEx (aPath, aOpenMode, aDisposition, aSharingMode, aCreationMode, aOffset, aFile); }
#define COM_FORWARD_IGuestSession_FileOpenEx_TO_OBJ(obj) COM_FORWARD_IGuestSession_FileOpenEx_TO ((obj)->)
#define COM_FORWARD_IGuestSession_FileOpenEx_TO_BASE(base) COM_FORWARD_IGuestSession_FileOpenEx_TO (base::)
#define COM_FORWARD_IGuestSession_FileQueryInfo_TO(smth) NS_IMETHOD FileQueryInfo (PRUnichar * aPath, IGuestFsObjInfo * * aInfo) { return smth FileQueryInfo (aPath, aInfo); }
#define COM_FORWARD_IGuestSession_FileQueryInfo_TO_OBJ(obj) COM_FORWARD_IGuestSession_FileQueryInfo_TO ((obj)->)
#define COM_FORWARD_IGuestSession_FileQueryInfo_TO_BASE(base) COM_FORWARD_IGuestSession_FileQueryInfo_TO (base::)
#define COM_FORWARD_IGuestSession_FileQuerySize_TO(smth) NS_IMETHOD FileQuerySize (PRUnichar * aPath, PRInt64 * aSize) { return smth FileQuerySize (aPath, aSize); }
#define COM_FORWARD_IGuestSession_FileQuerySize_TO_OBJ(obj) COM_FORWARD_IGuestSession_FileQuerySize_TO ((obj)->)
#define COM_FORWARD_IGuestSession_FileQuerySize_TO_BASE(base) COM_FORWARD_IGuestSession_FileQuerySize_TO (base::)
#define COM_FORWARD_IGuestSession_FileRename_TO(smth) NS_IMETHOD FileRename (PRUnichar * aSource, PRUnichar * aDest, PRUint32 aFlagsSize, PRUint32 * aFlags) { return smth FileRename (aSource, aDest, aFlagsSize, aFlags); }
#define COM_FORWARD_IGuestSession_FileRename_TO_OBJ(obj) COM_FORWARD_IGuestSession_FileRename_TO ((obj)->)
#define COM_FORWARD_IGuestSession_FileRename_TO_BASE(base) COM_FORWARD_IGuestSession_FileRename_TO (base::)
#define COM_FORWARD_IGuestSession_FileSetACL_TO(smth) NS_IMETHOD FileSetACL (PRUnichar * aFile, PRUnichar * aAcl) { return smth FileSetACL (aFile, aAcl); }
#define COM_FORWARD_IGuestSession_FileSetACL_TO_OBJ(obj) COM_FORWARD_IGuestSession_FileSetACL_TO ((obj)->)
#define COM_FORWARD_IGuestSession_FileSetACL_TO_BASE(base) COM_FORWARD_IGuestSession_FileSetACL_TO (base::)
#define COM_FORWARD_IGuestSession_ProcessCreate_TO(smth) NS_IMETHOD ProcessCreate (PRUnichar * aCommand, PRUint32 aArgumentsSize, PRUnichar * * aArguments, PRUint32 aEnvironmentSize, PRUnichar * * aEnvironment, PRUint32 aFlagsSize, PRUint32 * aFlags, PRUint32 aTimeoutMS, IGuestProcess * * aGuestProcess) { return smth ProcessCreate (aCommand, aArgumentsSize+++, aArguments, aEnvironmentSize+++, aEnvironment, aFlagsSize+++, aFlags, aTimeoutMS, aGuestProcess); }
#define COM_FORWARD_IGuestSession_ProcessCreate_TO_OBJ(obj) COM_FORWARD_IGuestSession_ProcessCreate_TO ((obj)->)
#define COM_FORWARD_IGuestSession_ProcessCreate_TO_BASE(base) COM_FORWARD_IGuestSession_ProcessCreate_TO (base::)
#define COM_FORWARD_IGuestSession_ProcessCreateEx_TO(smth) NS_IMETHOD ProcessCreateEx (PRUnichar * aCommand, PRUint32 aArgumentsSize, PRUnichar * * aArguments, PRUint32 aEnvironmentSize, PRUnichar * * aEnvironment, PRUint32 aFlagsSize, PRUint32 * aFlags, PRUint32 aTimeoutMS, PRUint32 aPriority, PRUint32 aAffinitySize, PRInt32 * aAffinity, IGuestProcess * * aGuestProcess) { return smth ProcessCreateEx (aCommand, aArgumentsSize+++, aArguments, aEnvironmentSize+++, aEnvironment, aFlagsSize+++, aFlags, aTimeoutMS, aPriority, aAffinitySize+++, aAffinity, aGuestProcess); }
#define COM_FORWARD_IGuestSession_ProcessCreateEx_TO_OBJ(obj) COM_FORWARD_IGuestSession_ProcessCreateEx_TO ((obj)->)
#define COM_FORWARD_IGuestSession_ProcessCreateEx_TO_BASE(base) COM_FORWARD_IGuestSession_ProcessCreateEx_TO (base::)
#define COM_FORWARD_IGuestSession_ProcessGet_TO(smth) NS_IMETHOD ProcessGet (PRUint32 aPid, IGuestProcess * * aGuestProcess) { return smth ProcessGet (aPid, aGuestProcess); }
#define COM_FORWARD_IGuestSession_ProcessGet_TO_OBJ(obj) COM_FORWARD_IGuestSession_ProcessGet_TO ((obj)->)
#define COM_FORWARD_IGuestSession_ProcessGet_TO_BASE(base) COM_FORWARD_IGuestSession_ProcessGet_TO (base::)
#define COM_FORWARD_IGuestSession_SymlinkCreate_TO(smth) NS_IMETHOD SymlinkCreate (PRUnichar * aSource, PRUnichar * aTarget, PRUint32 aType) { return smth SymlinkCreate (aSource, aTarget, aType); }
#define COM_FORWARD_IGuestSession_SymlinkCreate_TO_OBJ(obj) COM_FORWARD_IGuestSession_SymlinkCreate_TO ((obj)->)
#define COM_FORWARD_IGuestSession_SymlinkCreate_TO_BASE(base) COM_FORWARD_IGuestSession_SymlinkCreate_TO (base::)
#define COM_FORWARD_IGuestSession_SymlinkExists_TO(smth) NS_IMETHOD SymlinkExists (PRUnichar * aSymlink, PRBool * aExists) { return smth SymlinkExists (aSymlink, aExists); }
#define COM_FORWARD_IGuestSession_SymlinkExists_TO_OBJ(obj) COM_FORWARD_IGuestSession_SymlinkExists_TO ((obj)->)
#define COM_FORWARD_IGuestSession_SymlinkExists_TO_BASE(base) COM_FORWARD_IGuestSession_SymlinkExists_TO (base::)
#define COM_FORWARD_IGuestSession_SymlinkRead_TO(smth) NS_IMETHOD SymlinkRead (PRUnichar * aSymlink, PRUint32 aFlagsSize, PRUint32 * aFlags, PRUnichar * * aTarget) { return smth SymlinkRead (aSymlink, aFlagsSize+++, aFlags, aTarget); }
#define COM_FORWARD_IGuestSession_SymlinkRead_TO_OBJ(obj) COM_FORWARD_IGuestSession_SymlinkRead_TO ((obj)->)
#define COM_FORWARD_IGuestSession_SymlinkRead_TO_BASE(base) COM_FORWARD_IGuestSession_SymlinkRead_TO (base::)
#define COM_FORWARD_IGuestSession_SymlinkRemoveDirectory_TO(smth) NS_IMETHOD SymlinkRemoveDirectory (PRUnichar * aPath) { return smth SymlinkRemoveDirectory (aPath); }
#define COM_FORWARD_IGuestSession_SymlinkRemoveDirectory_TO_OBJ(obj) COM_FORWARD_IGuestSession_SymlinkRemoveDirectory_TO ((obj)->)
#define COM_FORWARD_IGuestSession_SymlinkRemoveDirectory_TO_BASE(base) COM_FORWARD_IGuestSession_SymlinkRemoveDirectory_TO (base::)
#define COM_FORWARD_IGuestSession_SymlinkRemoveFile_TO(smth) NS_IMETHOD SymlinkRemoveFile (PRUnichar * aFile) { return smth SymlinkRemoveFile (aFile); }
#define COM_FORWARD_IGuestSession_SymlinkRemoveFile_TO_OBJ(obj) COM_FORWARD_IGuestSession_SymlinkRemoveFile_TO ((obj)->)
#define COM_FORWARD_IGuestSession_SymlinkRemoveFile_TO_BASE(base) COM_FORWARD_IGuestSession_SymlinkRemoveFile_TO (base::)
#define COM_FORWARD_IGuestSession_WaitFor_TO(smth) NS_IMETHOD WaitFor (PRUint32 aWaitFor, PRUint32 aTimeoutMS, PRUint32 * aReason) { return smth WaitFor (aWaitFor, aTimeoutMS, aReason); }
#define COM_FORWARD_IGuestSession_WaitFor_TO_OBJ(obj) COM_FORWARD_IGuestSession_WaitFor_TO ((obj)->)
#define COM_FORWARD_IGuestSession_WaitFor_TO_BASE(base) COM_FORWARD_IGuestSession_WaitFor_TO (base::)
#define COM_FORWARD_IGuestSession_WaitForArray_TO(smth) NS_IMETHOD WaitForArray (PRUint32 aWaitForSize, PRUint32 * aWaitFor, PRUint32 aTimeoutMS, PRUint32 * aReason) { return smth WaitForArray (aWaitForSize+++, aWaitFor, aTimeoutMS, aReason); }
#define COM_FORWARD_IGuestSession_WaitForArray_TO_OBJ(obj) COM_FORWARD_IGuestSession_WaitForArray_TO ((obj)->)
#define COM_FORWARD_IGuestSession_WaitForArray_TO_BASE(base) COM_FORWARD_IGuestSession_WaitForArray_TO (base::)
#define COM_FORWARD_IGuestSession_TO(smth) NS_FORWARD_IGUESTSESSION (smth)
#define COM_FORWARD_IGuestSession_TO_OBJ(obj) COM_FORWARD_IGuestSession_TO ((obj)->)
#define COM_FORWARD_IGuestSession_TO_BASE(base) COM_FORWARD_IGuestSession_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestSession;

/* starting interface:    IProcess */
#define IPROCESS_IID_STR "5a4fe06d-8cb1-40ff-ac9e-9676e32f706e"

#define IPROCESS_IID \
  {0x5a4fe06d, 0x8cb1, 0x40ff, \
    { 0xac, 0x9e, 0x96, 0x76, 0xe3, 0x2f, 0x70, 0x6e }}

class NS_NO_VTABLE IProcess : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IPROCESS_IID)

  /* void getArguments (out unsigned long argumentsSize, [array, size_is (argumentsSize), retval] out wstring arguments); */
  NS_IMETHOD GetArguments(PRUint32 *argumentsSize, PRUnichar ***arguments) = 0;

  /* void getEnvironment (out unsigned long environmentSize, [array, size_is (environmentSize), retval] out wstring environment); */
  NS_IMETHOD GetEnvironment(PRUint32 *environmentSize, PRUnichar ***environment) = 0;

  /* readonly attribute IEventSource eventSource; */
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) = 0;

  /* readonly attribute wstring executablePath; */
  NS_IMETHOD GetExecutablePath(PRUnichar * *aExecutablePath) = 0;

  /* readonly attribute long exitCode; */
  NS_IMETHOD GetExitCode(PRInt32 *aExitCode) = 0;

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* readonly attribute unsigned long PID; */
  NS_IMETHOD GetPID(PRUint32 *aPID) = 0;

  /* readonly attribute PRUint32 status; */
  NS_IMETHOD GetStatus(PRUint32 *aStatus) = 0;

  /* void waitFor (in unsigned long waitFor, in unsigned long timeoutMS, [retval] out PRUint32 reason); */
  NS_IMETHOD WaitFor(PRUint32 waitFor, PRUint32 timeoutMS, PRUint32 *reason) = 0;

  /* void waitForArray (in unsigned long waitForSize, [array, size_is (waitForSize)] in PRUint32 waitFor, in unsigned long timeoutMS, [retval] out PRUint32 reason); */
  NS_IMETHOD WaitForArray(PRUint32 waitForSize, PRUint32 *waitFor, PRUint32 timeoutMS, PRUint32 *reason) = 0;

  /* void read (in unsigned long handle, in unsigned long toRead, in unsigned long timeoutMS, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
  NS_IMETHOD Read(PRUint32 handle, PRUint32 toRead, PRUint32 timeoutMS, PRUint32 *dataSize, PRUint8 **data) = 0;

  /* void write (in unsigned long handle, in unsigned long flags, in unsigned long dataSize, [array, size_is (dataSize)] in octet data, in unsigned long timeoutMS, [retval] out unsigned long written); */
  NS_IMETHOD Write(PRUint32 handle, PRUint32 flags, PRUint32 dataSize, PRUint8 *data, PRUint32 timeoutMS, PRUint32 *written) = 0;

  /* void writeArray (in unsigned long handle, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags, in unsigned long dataSize, [array, size_is (dataSize)] in octet data, in unsigned long timeoutMS, [retval] out unsigned long written); */
  NS_IMETHOD WriteArray(PRUint32 handle, PRUint32 flagsSize, PRUint32 *flags, PRUint32 dataSize, PRUint8 *data, PRUint32 timeoutMS, PRUint32 *written) = 0;

  /* void terminate (); */
  NS_IMETHOD Terminate(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IPROCESS \
  NS_IMETHOD GetArguments(PRUint32 *argumentsSize, PRUnichar ***arguments); \
  NS_IMETHOD GetEnvironment(PRUint32 *environmentSize, PRUnichar ***environment); \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource); \
  NS_IMETHOD GetExecutablePath(PRUnichar * *aExecutablePath); \
  NS_IMETHOD GetExitCode(PRInt32 *aExitCode); \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetPID(PRUint32 *aPID); \
  NS_IMETHOD GetStatus(PRUint32 *aStatus); \
  NS_IMETHOD WaitFor(PRUint32 waitFor, PRUint32 timeoutMS, PRUint32 *reason); \
  NS_IMETHOD WaitForArray(PRUint32 waitForSize, PRUint32 *waitFor, PRUint32 timeoutMS, PRUint32 *reason); \
  NS_IMETHOD Read(PRUint32 handle, PRUint32 toRead, PRUint32 timeoutMS, PRUint32 *dataSize, PRUint8 **data); \
  NS_IMETHOD Write(PRUint32 handle, PRUint32 flags, PRUint32 dataSize, PRUint8 *data, PRUint32 timeoutMS, PRUint32 *written); \
  NS_IMETHOD WriteArray(PRUint32 handle, PRUint32 flagsSize, PRUint32 *flags, PRUint32 dataSize, PRUint8 *data, PRUint32 timeoutMS, PRUint32 *written); \
  NS_IMETHOD Terminate(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IPROCESS(_to) \
  NS_IMETHOD GetArguments(PRUint32 *argumentsSize, PRUnichar ***arguments) { return _to GetArguments(argumentsSize, arguments); } \
  NS_IMETHOD GetEnvironment(PRUint32 *environmentSize, PRUnichar ***environment) { return _to GetEnvironment(environmentSize, environment); } \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return _to GetEventSource(aEventSource); } \
  NS_IMETHOD GetExecutablePath(PRUnichar * *aExecutablePath) { return _to GetExecutablePath(aExecutablePath); } \
  NS_IMETHOD GetExitCode(PRInt32 *aExitCode) { return _to GetExitCode(aExitCode); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetPID(PRUint32 *aPID) { return _to GetPID(aPID); } \
  NS_IMETHOD GetStatus(PRUint32 *aStatus) { return _to GetStatus(aStatus); } \
  NS_IMETHOD WaitFor(PRUint32 waitFor, PRUint32 timeoutMS, PRUint32 *reason) { return _to WaitFor(waitFor, timeoutMS, reason); } \
  NS_IMETHOD WaitForArray(PRUint32 waitForSize, PRUint32 *waitFor, PRUint32 timeoutMS, PRUint32 *reason) { return _to WaitForArray(waitForSize, waitFor, timeoutMS, reason); } \
  NS_IMETHOD Read(PRUint32 handle, PRUint32 toRead, PRUint32 timeoutMS, PRUint32 *dataSize, PRUint8 **data) { return _to Read(handle, toRead, timeoutMS, dataSize, data); } \
  NS_IMETHOD Write(PRUint32 handle, PRUint32 flags, PRUint32 dataSize, PRUint8 *data, PRUint32 timeoutMS, PRUint32 *written) { return _to Write(handle, flags, dataSize, data, timeoutMS, written); } \
  NS_IMETHOD WriteArray(PRUint32 handle, PRUint32 flagsSize, PRUint32 *flags, PRUint32 dataSize, PRUint8 *data, PRUint32 timeoutMS, PRUint32 *written) { return _to WriteArray(handle, flagsSize, flags, dataSize, data, timeoutMS, written); } \
  NS_IMETHOD Terminate(void) { return _to Terminate(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IPROCESS(_to) \
  NS_IMETHOD GetArguments(PRUint32 *argumentsSize, PRUnichar ***arguments) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetArguments(argumentsSize, arguments); } \
  NS_IMETHOD GetEnvironment(PRUint32 *environmentSize, PRUnichar ***environment) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnvironment(environmentSize, environment); } \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEventSource(aEventSource); } \
  NS_IMETHOD GetExecutablePath(PRUnichar * *aExecutablePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExecutablePath(aExecutablePath); } \
  NS_IMETHOD GetExitCode(PRInt32 *aExitCode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExitCode(aExitCode); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetPID(PRUint32 *aPID) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPID(aPID); } \
  NS_IMETHOD GetStatus(PRUint32 *aStatus) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStatus(aStatus); } \
  NS_IMETHOD WaitFor(PRUint32 waitFor, PRUint32 timeoutMS, PRUint32 *reason) { return !_to ? NS_ERROR_NULL_POINTER : _to->WaitFor(waitFor, timeoutMS, reason); } \
  NS_IMETHOD WaitForArray(PRUint32 waitForSize, PRUint32 *waitFor, PRUint32 timeoutMS, PRUint32 *reason) { return !_to ? NS_ERROR_NULL_POINTER : _to->WaitForArray(waitForSize, waitFor, timeoutMS, reason); } \
  NS_IMETHOD Read(PRUint32 handle, PRUint32 toRead, PRUint32 timeoutMS, PRUint32 *dataSize, PRUint8 **data) { return !_to ? NS_ERROR_NULL_POINTER : _to->Read(handle, toRead, timeoutMS, dataSize, data); } \
  NS_IMETHOD Write(PRUint32 handle, PRUint32 flags, PRUint32 dataSize, PRUint8 *data, PRUint32 timeoutMS, PRUint32 *written) { return !_to ? NS_ERROR_NULL_POINTER : _to->Write(handle, flags, dataSize, data, timeoutMS, written); } \
  NS_IMETHOD WriteArray(PRUint32 handle, PRUint32 flagsSize, PRUint32 *flags, PRUint32 dataSize, PRUint8 *data, PRUint32 timeoutMS, PRUint32 *written) { return !_to ? NS_ERROR_NULL_POINTER : _to->WriteArray(handle, flagsSize, flags, dataSize, data, timeoutMS, written); } \
  NS_IMETHOD Terminate(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Terminate(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IProcess
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IPROCESS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IProcess)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* void getArguments (out unsigned long argumentsSize, [array, size_is (argumentsSize), retval] out wstring arguments); */
NS_IMETHODIMP _MYCLASS_::GetArguments(PRUint32 *argumentsSize, PRUnichar ***arguments)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getEnvironment (out unsigned long environmentSize, [array, size_is (environmentSize), retval] out wstring environment); */
NS_IMETHODIMP _MYCLASS_::GetEnvironment(PRUint32 *environmentSize, PRUnichar ***environment)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IEventSource eventSource; */
NS_IMETHODIMP _MYCLASS_::GetEventSource(IEventSource * *aEventSource)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring executablePath; */
NS_IMETHODIMP _MYCLASS_::GetExecutablePath(PRUnichar * *aExecutablePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long exitCode; */
NS_IMETHODIMP _MYCLASS_::GetExitCode(PRInt32 *aExitCode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long PID; */
NS_IMETHODIMP _MYCLASS_::GetPID(PRUint32 *aPID)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 status; */
NS_IMETHODIMP _MYCLASS_::GetStatus(PRUint32 *aStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void waitFor (in unsigned long waitFor, in unsigned long timeoutMS, [retval] out PRUint32 reason); */
NS_IMETHODIMP _MYCLASS_::WaitFor(PRUint32 waitFor, PRUint32 timeoutMS, PRUint32 *reason)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void waitForArray (in unsigned long waitForSize, [array, size_is (waitForSize)] in PRUint32 waitFor, in unsigned long timeoutMS, [retval] out PRUint32 reason); */
NS_IMETHODIMP _MYCLASS_::WaitForArray(PRUint32 waitForSize, PRUint32 *waitFor, PRUint32 timeoutMS, PRUint32 *reason)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void read (in unsigned long handle, in unsigned long toRead, in unsigned long timeoutMS, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
NS_IMETHODIMP _MYCLASS_::Read(PRUint32 handle, PRUint32 toRead, PRUint32 timeoutMS, PRUint32 *dataSize, PRUint8 **data)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void write (in unsigned long handle, in unsigned long flags, in unsigned long dataSize, [array, size_is (dataSize)] in octet data, in unsigned long timeoutMS, [retval] out unsigned long written); */
NS_IMETHODIMP _MYCLASS_::Write(PRUint32 handle, PRUint32 flags, PRUint32 dataSize, PRUint8 *data, PRUint32 timeoutMS, PRUint32 *written)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void writeArray (in unsigned long handle, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags, in unsigned long dataSize, [array, size_is (dataSize)] in octet data, in unsigned long timeoutMS, [retval] out unsigned long written); */
NS_IMETHODIMP _MYCLASS_::WriteArray(PRUint32 handle, PRUint32 flagsSize, PRUint32 *flags, PRUint32 dataSize, PRUint8 *data, PRUint32 timeoutMS, PRUint32 *written)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void terminate (); */
NS_IMETHODIMP _MYCLASS_::Terminate()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IProcess_GETTER_Arguments_TO(smth) NS_IMETHOD GetArguments (PRUint32 * aArgumentsSize, PRUnichar * * * aArguments) { return smth GetArguments (aArgumentsSize, aArguments); }
#define COM_FORWARD_IProcess_GETTER_Arguments_TO_OBJ(obj) COM_FORWARD_IProcess_GETTER_Arguments_TO ((obj)->)
#define COM_FORWARD_IProcess_GETTER_Arguments_TO_BASE(base) COM_FORWARD_IProcess_GETTER_Arguments_TO (base::)
#define COM_FORWARD_IProcess_GETTER_Environment_TO(smth) NS_IMETHOD GetEnvironment (PRUint32 * aEnvironmentSize, PRUnichar * * * aEnvironment) { return smth GetEnvironment (aEnvironmentSize, aEnvironment); }
#define COM_FORWARD_IProcess_GETTER_Environment_TO_OBJ(obj) COM_FORWARD_IProcess_GETTER_Environment_TO ((obj)->)
#define COM_FORWARD_IProcess_GETTER_Environment_TO_BASE(base) COM_FORWARD_IProcess_GETTER_Environment_TO (base::)
#define COM_FORWARD_IProcess_GETTER_EventSource_TO(smth) NS_IMETHOD GetEventSource (IEventSource * * aEventSource) { return smth GetEventSource (aEventSource); }
#define COM_FORWARD_IProcess_GETTER_EventSource_TO_OBJ(obj) COM_FORWARD_IProcess_GETTER_EventSource_TO ((obj)->)
#define COM_FORWARD_IProcess_GETTER_EventSource_TO_BASE(base) COM_FORWARD_IProcess_GETTER_EventSource_TO (base::)
#define COM_FORWARD_IProcess_GETTER_ExecutablePath_TO(smth) NS_IMETHOD GetExecutablePath (PRUnichar * * aExecutablePath) { return smth GetExecutablePath (aExecutablePath); }
#define COM_FORWARD_IProcess_GETTER_ExecutablePath_TO_OBJ(obj) COM_FORWARD_IProcess_GETTER_ExecutablePath_TO ((obj)->)
#define COM_FORWARD_IProcess_GETTER_ExecutablePath_TO_BASE(base) COM_FORWARD_IProcess_GETTER_ExecutablePath_TO (base::)
#define COM_FORWARD_IProcess_GETTER_ExitCode_TO(smth) NS_IMETHOD GetExitCode (PRInt32 * aExitCode) { return smth GetExitCode (aExitCode); }
#define COM_FORWARD_IProcess_GETTER_ExitCode_TO_OBJ(obj) COM_FORWARD_IProcess_GETTER_ExitCode_TO ((obj)->)
#define COM_FORWARD_IProcess_GETTER_ExitCode_TO_BASE(base) COM_FORWARD_IProcess_GETTER_ExitCode_TO (base::)
#define COM_FORWARD_IProcess_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IProcess_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IProcess_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IProcess_GETTER_Name_TO_BASE(base) COM_FORWARD_IProcess_GETTER_Name_TO (base::)
#define COM_FORWARD_IProcess_GETTER_PID_TO(smth) NS_IMETHOD GetPID (PRUint32 * aPID) { return smth GetPID (aPID); }
#define COM_FORWARD_IProcess_GETTER_PID_TO_OBJ(obj) COM_FORWARD_IProcess_GETTER_PID_TO ((obj)->)
#define COM_FORWARD_IProcess_GETTER_PID_TO_BASE(base) COM_FORWARD_IProcess_GETTER_PID_TO (base::)
#define COM_FORWARD_IProcess_GETTER_Status_TO(smth) NS_IMETHOD GetStatus (PRUint32 * aStatus) { return smth GetStatus (aStatus); }
#define COM_FORWARD_IProcess_GETTER_Status_TO_OBJ(obj) COM_FORWARD_IProcess_GETTER_Status_TO ((obj)->)
#define COM_FORWARD_IProcess_GETTER_Status_TO_BASE(base) COM_FORWARD_IProcess_GETTER_Status_TO (base::)
#define COM_FORWARD_IProcess_WaitFor_TO(smth) NS_IMETHOD WaitFor (PRUint32 aWaitFor, PRUint32 aTimeoutMS, PRUint32 * aReason) { return smth WaitFor (aWaitFor, aTimeoutMS, aReason); }
#define COM_FORWARD_IProcess_WaitFor_TO_OBJ(obj) COM_FORWARD_IProcess_WaitFor_TO ((obj)->)
#define COM_FORWARD_IProcess_WaitFor_TO_BASE(base) COM_FORWARD_IProcess_WaitFor_TO (base::)
#define COM_FORWARD_IProcess_WaitForArray_TO(smth) NS_IMETHOD WaitForArray (PRUint32 aWaitForSize, PRUint32 * aWaitFor, PRUint32 aTimeoutMS, PRUint32 * aReason) { return smth WaitForArray (aWaitForSize+++, aWaitFor, aTimeoutMS, aReason); }
#define COM_FORWARD_IProcess_WaitForArray_TO_OBJ(obj) COM_FORWARD_IProcess_WaitForArray_TO ((obj)->)
#define COM_FORWARD_IProcess_WaitForArray_TO_BASE(base) COM_FORWARD_IProcess_WaitForArray_TO (base::)
#define COM_FORWARD_IProcess_Read_TO(smth) NS_IMETHOD Read (PRUint32 aHandle, PRUint32 aToRead, PRUint32 aTimeoutMS, PRUint32 * aDataSize, PRUint8 * * aData) { return smth Read (aHandle, aToRead, aTimeoutMS, aDataSize, aData); }
#define COM_FORWARD_IProcess_Read_TO_OBJ(obj) COM_FORWARD_IProcess_Read_TO ((obj)->)
#define COM_FORWARD_IProcess_Read_TO_BASE(base) COM_FORWARD_IProcess_Read_TO (base::)
#define COM_FORWARD_IProcess_Write_TO(smth) NS_IMETHOD Write (PRUint32 aHandle, PRUint32 aFlags, PRUint32 aDataSize, PRUint8 * aData, PRUint32 aTimeoutMS, PRUint32 * aWritten) { return smth Write (aHandle, aFlags, aDataSize+++, aData, aTimeoutMS, aWritten); }
#define COM_FORWARD_IProcess_Write_TO_OBJ(obj) COM_FORWARD_IProcess_Write_TO ((obj)->)
#define COM_FORWARD_IProcess_Write_TO_BASE(base) COM_FORWARD_IProcess_Write_TO (base::)
#define COM_FORWARD_IProcess_WriteArray_TO(smth) NS_IMETHOD WriteArray (PRUint32 aHandle, PRUint32 aFlagsSize, PRUint32 * aFlags, PRUint32 aDataSize, PRUint8 * aData, PRUint32 aTimeoutMS, PRUint32 * aWritten) { return smth WriteArray (aHandle, aFlagsSize+++, aFlags, aDataSize+++, aData, aTimeoutMS, aWritten); }
#define COM_FORWARD_IProcess_WriteArray_TO_OBJ(obj) COM_FORWARD_IProcess_WriteArray_TO ((obj)->)
#define COM_FORWARD_IProcess_WriteArray_TO_BASE(base) COM_FORWARD_IProcess_WriteArray_TO (base::)
#define COM_FORWARD_IProcess_Terminate_TO(smth) NS_IMETHOD Terminate() { return smth Terminate(); }
#define COM_FORWARD_IProcess_Terminate_TO_OBJ(obj) COM_FORWARD_IProcess_Terminate_TO ((obj)->)
#define COM_FORWARD_IProcess_Terminate_TO_BASE(base) COM_FORWARD_IProcess_Terminate_TO (base::)
#define COM_FORWARD_IProcess_TO(smth) NS_FORWARD_IPROCESS (smth)
#define COM_FORWARD_IProcess_TO_OBJ(obj) COM_FORWARD_IProcess_TO ((obj)->)
#define COM_FORWARD_IProcess_TO_BASE(base) COM_FORWARD_IProcess_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IProcess;

/* starting interface:    IGuestProcess */
#define IGUESTPROCESS_IID_STR "dfa39a36-5d43-4840-a025-67ea956b3111"

#define IGUESTPROCESS_IID \
  {0xdfa39a36, 0x5d43, 0x4840, \
    { 0xa0, 0x25, 0x67, 0xea, 0x95, 0x6b, 0x31, 0x11 }}

class NS_NO_VTABLE IGuestProcess : public IProcess {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTPROCESS_IID)

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTPROCESS \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTPROCESS(_to) \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTPROCESS(_to) \
  /* no methods! */

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestProcess
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTPROCESS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestProcess)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestProcess_TO(smth) NS_FORWARD_IGUESTPROCESS (smth)
#define COM_FORWARD_IGuestProcess_TO_OBJ(obj) COM_FORWARD_IGuestProcess_TO ((obj)->)
#define COM_FORWARD_IGuestProcess_TO_BASE(base) COM_FORWARD_IGuestProcess_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestProcess;

/* starting interface:    IDirectory */
#define IDIRECTORY_IID_STR "1b70dd03-26d7-483a-8877-89bbb0f87b70"

#define IDIRECTORY_IID \
  {0x1b70dd03, 0x26d7, 0x483a, \
    { 0x88, 0x77, 0x89, 0xbb, 0xb0, 0xf8, 0x7b, 0x70 }}

class NS_NO_VTABLE IDirectory : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IDIRECTORY_IID)

  /* readonly attribute wstring directoryName; */
  NS_IMETHOD GetDirectoryName(PRUnichar * *aDirectoryName) = 0;

  /* readonly attribute wstring filter; */
  NS_IMETHOD GetFilter(PRUnichar * *aFilter) = 0;

  /* void close (); */
  NS_IMETHOD Close(void) = 0;

  /* void read ([retval] out IFsObjInfo objInfo); */
  NS_IMETHOD Read(IFsObjInfo **objInfo) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IDIRECTORY \
  NS_IMETHOD GetDirectoryName(PRUnichar * *aDirectoryName); \
  NS_IMETHOD GetFilter(PRUnichar * *aFilter); \
  NS_IMETHOD Close(void); \
  NS_IMETHOD Read(IFsObjInfo **objInfo); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IDIRECTORY(_to) \
  NS_IMETHOD GetDirectoryName(PRUnichar * *aDirectoryName) { return _to GetDirectoryName(aDirectoryName); } \
  NS_IMETHOD GetFilter(PRUnichar * *aFilter) { return _to GetFilter(aFilter); } \
  NS_IMETHOD Close(void) { return _to Close(); } \
  NS_IMETHOD Read(IFsObjInfo **objInfo) { return _to Read(objInfo); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IDIRECTORY(_to) \
  NS_IMETHOD GetDirectoryName(PRUnichar * *aDirectoryName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDirectoryName(aDirectoryName); } \
  NS_IMETHOD GetFilter(PRUnichar * *aFilter) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilter(aFilter); } \
  NS_IMETHOD Close(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Close(); } \
  NS_IMETHOD Read(IFsObjInfo **objInfo) { return !_to ? NS_ERROR_NULL_POINTER : _to->Read(objInfo); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IDirectory
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IDIRECTORY

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IDirectory)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring directoryName; */
NS_IMETHODIMP _MYCLASS_::GetDirectoryName(PRUnichar * *aDirectoryName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring filter; */
NS_IMETHODIMP _MYCLASS_::GetFilter(PRUnichar * *aFilter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void close (); */
NS_IMETHODIMP _MYCLASS_::Close()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void read ([retval] out IFsObjInfo objInfo); */
NS_IMETHODIMP _MYCLASS_::Read(IFsObjInfo **objInfo)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IDirectory_GETTER_DirectoryName_TO(smth) NS_IMETHOD GetDirectoryName (PRUnichar * * aDirectoryName) { return smth GetDirectoryName (aDirectoryName); }
#define COM_FORWARD_IDirectory_GETTER_DirectoryName_TO_OBJ(obj) COM_FORWARD_IDirectory_GETTER_DirectoryName_TO ((obj)->)
#define COM_FORWARD_IDirectory_GETTER_DirectoryName_TO_BASE(base) COM_FORWARD_IDirectory_GETTER_DirectoryName_TO (base::)
#define COM_FORWARD_IDirectory_GETTER_Filter_TO(smth) NS_IMETHOD GetFilter (PRUnichar * * aFilter) { return smth GetFilter (aFilter); }
#define COM_FORWARD_IDirectory_GETTER_Filter_TO_OBJ(obj) COM_FORWARD_IDirectory_GETTER_Filter_TO ((obj)->)
#define COM_FORWARD_IDirectory_GETTER_Filter_TO_BASE(base) COM_FORWARD_IDirectory_GETTER_Filter_TO (base::)
#define COM_FORWARD_IDirectory_Close_TO(smth) NS_IMETHOD Close() { return smth Close(); }
#define COM_FORWARD_IDirectory_Close_TO_OBJ(obj) COM_FORWARD_IDirectory_Close_TO ((obj)->)
#define COM_FORWARD_IDirectory_Close_TO_BASE(base) COM_FORWARD_IDirectory_Close_TO (base::)
#define COM_FORWARD_IDirectory_Read_TO(smth) NS_IMETHOD Read (IFsObjInfo * * aObjInfo) { return smth Read (aObjInfo); }
#define COM_FORWARD_IDirectory_Read_TO_OBJ(obj) COM_FORWARD_IDirectory_Read_TO ((obj)->)
#define COM_FORWARD_IDirectory_Read_TO_BASE(base) COM_FORWARD_IDirectory_Read_TO (base::)
#define COM_FORWARD_IDirectory_TO(smth) NS_FORWARD_IDIRECTORY (smth)
#define COM_FORWARD_IDirectory_TO_OBJ(obj) COM_FORWARD_IDirectory_TO ((obj)->)
#define COM_FORWARD_IDirectory_TO_BASE(base) COM_FORWARD_IDirectory_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IDirectory;

/* starting interface:    IGuestDirectory */
#define IGUESTDIRECTORY_IID_STR "af4a8ce0-0725-42b7-8826-46e3c7ba7357"

#define IGUESTDIRECTORY_IID \
  {0xaf4a8ce0, 0x0725, 0x42b7, \
    { 0x88, 0x26, 0x46, 0xe3, 0xc7, 0xba, 0x73, 0x57 }}

class NS_NO_VTABLE IGuestDirectory : public IDirectory {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTDIRECTORY_IID)

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTDIRECTORY \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTDIRECTORY(_to) \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTDIRECTORY(_to) \
  /* no methods! */

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestDirectory
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTDIRECTORY

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestDirectory)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestDirectory_TO(smth) NS_FORWARD_IGUESTDIRECTORY (smth)
#define COM_FORWARD_IGuestDirectory_TO_OBJ(obj) COM_FORWARD_IGuestDirectory_TO ((obj)->)
#define COM_FORWARD_IGuestDirectory_TO_BASE(base) COM_FORWARD_IGuestDirectory_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestDirectory;

/* starting interface:    IFile */
#define IFILE_IID_STR "5ec56ea3-b55d-4bdb-8c4f-5f9fb26b894b"

#define IFILE_IID \
  {0x5ec56ea3, 0xb55d, 0x4bdb, \
    { 0x8c, 0x4f, 0x5f, 0x9f, 0xb2, 0x6b, 0x89, 0x4b }}

class NS_NO_VTABLE IFile : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IFILE_IID)

  /* readonly attribute unsigned long creationMode; */
  NS_IMETHOD GetCreationMode(PRUint32 *aCreationMode) = 0;

  /* readonly attribute wstring disposition; */
  NS_IMETHOD GetDisposition(PRUnichar * *aDisposition) = 0;

  /* readonly attribute IEventSource eventSource; */
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) = 0;

  /* readonly attribute wstring fileName; */
  NS_IMETHOD GetFileName(PRUnichar * *aFileName) = 0;

  /* readonly attribute unsigned long id; */
  NS_IMETHOD GetId(PRUint32 *aId) = 0;

  /* readonly attribute long long initialSize; */
  NS_IMETHOD GetInitialSize(PRInt64 *aInitialSize) = 0;

  /* readonly attribute wstring openMode; */
  NS_IMETHOD GetOpenMode(PRUnichar * *aOpenMode) = 0;

  /* readonly attribute long long offset; */
  NS_IMETHOD GetOffset(PRInt64 *aOffset) = 0;

  /* readonly attribute PRUint32 status; */
  NS_IMETHOD GetStatus(PRUint32 *aStatus) = 0;

  /* void close (); */
  NS_IMETHOD Close(void) = 0;

  /* void queryInfo ([retval] out IFsObjInfo objInfo); */
  NS_IMETHOD QueryInfo(IFsObjInfo **objInfo) = 0;

  /* void read (in unsigned long toRead, in unsigned long timeoutMS, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
  NS_IMETHOD Read(PRUint32 toRead, PRUint32 timeoutMS, PRUint32 *dataSize, PRUint8 **data) = 0;

  /* void readAt (in long long offset, in unsigned long toRead, in unsigned long timeoutMS, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
  NS_IMETHOD ReadAt(PRInt64 offset, PRUint32 toRead, PRUint32 timeoutMS, PRUint32 *dataSize, PRUint8 **data) = 0;

  /* void seek (in long long offset, in PRUint32 whence); */
  NS_IMETHOD Seek(PRInt64 offset, PRUint32 whence) = 0;

  /* void setACL (in wstring acl); */
  NS_IMETHOD SetACL(const PRUnichar *acl) = 0;

  /* void write (in unsigned long dataSize, [array, size_is (dataSize)] in octet data, in unsigned long timeoutMS, [retval] out unsigned long written); */
  NS_IMETHOD Write(PRUint32 dataSize, PRUint8 *data, PRUint32 timeoutMS, PRUint32 *written) = 0;

  /* void writeAt (in long long offset, in unsigned long dataSize, [array, size_is (dataSize)] in octet data, in unsigned long timeoutMS, [retval] out unsigned long written); */
  NS_IMETHOD WriteAt(PRInt64 offset, PRUint32 dataSize, PRUint8 *data, PRUint32 timeoutMS, PRUint32 *written) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IFILE \
  NS_IMETHOD GetCreationMode(PRUint32 *aCreationMode); \
  NS_IMETHOD GetDisposition(PRUnichar * *aDisposition); \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource); \
  NS_IMETHOD GetFileName(PRUnichar * *aFileName); \
  NS_IMETHOD GetId(PRUint32 *aId); \
  NS_IMETHOD GetInitialSize(PRInt64 *aInitialSize); \
  NS_IMETHOD GetOpenMode(PRUnichar * *aOpenMode); \
  NS_IMETHOD GetOffset(PRInt64 *aOffset); \
  NS_IMETHOD GetStatus(PRUint32 *aStatus); \
  NS_IMETHOD Close(void); \
  NS_IMETHOD QueryInfo(IFsObjInfo **objInfo); \
  NS_IMETHOD Read(PRUint32 toRead, PRUint32 timeoutMS, PRUint32 *dataSize, PRUint8 **data); \
  NS_IMETHOD ReadAt(PRInt64 offset, PRUint32 toRead, PRUint32 timeoutMS, PRUint32 *dataSize, PRUint8 **data); \
  NS_IMETHOD Seek(PRInt64 offset, PRUint32 whence); \
  NS_IMETHOD SetACL(const PRUnichar *acl); \
  NS_IMETHOD Write(PRUint32 dataSize, PRUint8 *data, PRUint32 timeoutMS, PRUint32 *written); \
  NS_IMETHOD WriteAt(PRInt64 offset, PRUint32 dataSize, PRUint8 *data, PRUint32 timeoutMS, PRUint32 *written); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IFILE(_to) \
  NS_IMETHOD GetCreationMode(PRUint32 *aCreationMode) { return _to GetCreationMode(aCreationMode); } \
  NS_IMETHOD GetDisposition(PRUnichar * *aDisposition) { return _to GetDisposition(aDisposition); } \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return _to GetEventSource(aEventSource); } \
  NS_IMETHOD GetFileName(PRUnichar * *aFileName) { return _to GetFileName(aFileName); } \
  NS_IMETHOD GetId(PRUint32 *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetInitialSize(PRInt64 *aInitialSize) { return _to GetInitialSize(aInitialSize); } \
  NS_IMETHOD GetOpenMode(PRUnichar * *aOpenMode) { return _to GetOpenMode(aOpenMode); } \
  NS_IMETHOD GetOffset(PRInt64 *aOffset) { return _to GetOffset(aOffset); } \
  NS_IMETHOD GetStatus(PRUint32 *aStatus) { return _to GetStatus(aStatus); } \
  NS_IMETHOD Close(void) { return _to Close(); } \
  NS_IMETHOD QueryInfo(IFsObjInfo **objInfo) { return _to QueryInfo(objInfo); } \
  NS_IMETHOD Read(PRUint32 toRead, PRUint32 timeoutMS, PRUint32 *dataSize, PRUint8 **data) { return _to Read(toRead, timeoutMS, dataSize, data); } \
  NS_IMETHOD ReadAt(PRInt64 offset, PRUint32 toRead, PRUint32 timeoutMS, PRUint32 *dataSize, PRUint8 **data) { return _to ReadAt(offset, toRead, timeoutMS, dataSize, data); } \
  NS_IMETHOD Seek(PRInt64 offset, PRUint32 whence) { return _to Seek(offset, whence); } \
  NS_IMETHOD SetACL(const PRUnichar *acl) { return _to SetACL(acl); } \
  NS_IMETHOD Write(PRUint32 dataSize, PRUint8 *data, PRUint32 timeoutMS, PRUint32 *written) { return _to Write(dataSize, data, timeoutMS, written); } \
  NS_IMETHOD WriteAt(PRInt64 offset, PRUint32 dataSize, PRUint8 *data, PRUint32 timeoutMS, PRUint32 *written) { return _to WriteAt(offset, dataSize, data, timeoutMS, written); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IFILE(_to) \
  NS_IMETHOD GetCreationMode(PRUint32 *aCreationMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCreationMode(aCreationMode); } \
  NS_IMETHOD GetDisposition(PRUnichar * *aDisposition) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDisposition(aDisposition); } \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEventSource(aEventSource); } \
  NS_IMETHOD GetFileName(PRUnichar * *aFileName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFileName(aFileName); } \
  NS_IMETHOD GetId(PRUint32 *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetInitialSize(PRInt64 *aInitialSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInitialSize(aInitialSize); } \
  NS_IMETHOD GetOpenMode(PRUnichar * *aOpenMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOpenMode(aOpenMode); } \
  NS_IMETHOD GetOffset(PRInt64 *aOffset) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOffset(aOffset); } \
  NS_IMETHOD GetStatus(PRUint32 *aStatus) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStatus(aStatus); } \
  NS_IMETHOD Close(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Close(); } \
  NS_IMETHOD QueryInfo(IFsObjInfo **objInfo) { return !_to ? NS_ERROR_NULL_POINTER : _to->QueryInfo(objInfo); } \
  NS_IMETHOD Read(PRUint32 toRead, PRUint32 timeoutMS, PRUint32 *dataSize, PRUint8 **data) { return !_to ? NS_ERROR_NULL_POINTER : _to->Read(toRead, timeoutMS, dataSize, data); } \
  NS_IMETHOD ReadAt(PRInt64 offset, PRUint32 toRead, PRUint32 timeoutMS, PRUint32 *dataSize, PRUint8 **data) { return !_to ? NS_ERROR_NULL_POINTER : _to->ReadAt(offset, toRead, timeoutMS, dataSize, data); } \
  NS_IMETHOD Seek(PRInt64 offset, PRUint32 whence) { return !_to ? NS_ERROR_NULL_POINTER : _to->Seek(offset, whence); } \
  NS_IMETHOD SetACL(const PRUnichar *acl) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetACL(acl); } \
  NS_IMETHOD Write(PRUint32 dataSize, PRUint8 *data, PRUint32 timeoutMS, PRUint32 *written) { return !_to ? NS_ERROR_NULL_POINTER : _to->Write(dataSize, data, timeoutMS, written); } \
  NS_IMETHOD WriteAt(PRInt64 offset, PRUint32 dataSize, PRUint8 *data, PRUint32 timeoutMS, PRUint32 *written) { return !_to ? NS_ERROR_NULL_POINTER : _to->WriteAt(offset, dataSize, data, timeoutMS, written); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IFile
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IFILE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IFile)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute unsigned long creationMode; */
NS_IMETHODIMP _MYCLASS_::GetCreationMode(PRUint32 *aCreationMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring disposition; */
NS_IMETHODIMP _MYCLASS_::GetDisposition(PRUnichar * *aDisposition)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IEventSource eventSource; */
NS_IMETHODIMP _MYCLASS_::GetEventSource(IEventSource * *aEventSource)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring fileName; */
NS_IMETHODIMP _MYCLASS_::GetFileName(PRUnichar * *aFileName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long id; */
NS_IMETHODIMP _MYCLASS_::GetId(PRUint32 *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long initialSize; */
NS_IMETHODIMP _MYCLASS_::GetInitialSize(PRInt64 *aInitialSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring openMode; */
NS_IMETHODIMP _MYCLASS_::GetOpenMode(PRUnichar * *aOpenMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long offset; */
NS_IMETHODIMP _MYCLASS_::GetOffset(PRInt64 *aOffset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 status; */
NS_IMETHODIMP _MYCLASS_::GetStatus(PRUint32 *aStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void close (); */
NS_IMETHODIMP _MYCLASS_::Close()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void queryInfo ([retval] out IFsObjInfo objInfo); */
NS_IMETHODIMP _MYCLASS_::QueryInfo(IFsObjInfo **objInfo)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void read (in unsigned long toRead, in unsigned long timeoutMS, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
NS_IMETHODIMP _MYCLASS_::Read(PRUint32 toRead, PRUint32 timeoutMS, PRUint32 *dataSize, PRUint8 **data)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void readAt (in long long offset, in unsigned long toRead, in unsigned long timeoutMS, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
NS_IMETHODIMP _MYCLASS_::ReadAt(PRInt64 offset, PRUint32 toRead, PRUint32 timeoutMS, PRUint32 *dataSize, PRUint8 **data)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void seek (in long long offset, in PRUint32 whence); */
NS_IMETHODIMP _MYCLASS_::Seek(PRInt64 offset, PRUint32 whence)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setACL (in wstring acl); */
NS_IMETHODIMP _MYCLASS_::SetACL(const PRUnichar *acl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void write (in unsigned long dataSize, [array, size_is (dataSize)] in octet data, in unsigned long timeoutMS, [retval] out unsigned long written); */
NS_IMETHODIMP _MYCLASS_::Write(PRUint32 dataSize, PRUint8 *data, PRUint32 timeoutMS, PRUint32 *written)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void writeAt (in long long offset, in unsigned long dataSize, [array, size_is (dataSize)] in octet data, in unsigned long timeoutMS, [retval] out unsigned long written); */
NS_IMETHODIMP _MYCLASS_::WriteAt(PRInt64 offset, PRUint32 dataSize, PRUint8 *data, PRUint32 timeoutMS, PRUint32 *written)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IFile_GETTER_CreationMode_TO(smth) NS_IMETHOD GetCreationMode (PRUint32 * aCreationMode) { return smth GetCreationMode (aCreationMode); }
#define COM_FORWARD_IFile_GETTER_CreationMode_TO_OBJ(obj) COM_FORWARD_IFile_GETTER_CreationMode_TO ((obj)->)
#define COM_FORWARD_IFile_GETTER_CreationMode_TO_BASE(base) COM_FORWARD_IFile_GETTER_CreationMode_TO (base::)
#define COM_FORWARD_IFile_GETTER_Disposition_TO(smth) NS_IMETHOD GetDisposition (PRUnichar * * aDisposition) { return smth GetDisposition (aDisposition); }
#define COM_FORWARD_IFile_GETTER_Disposition_TO_OBJ(obj) COM_FORWARD_IFile_GETTER_Disposition_TO ((obj)->)
#define COM_FORWARD_IFile_GETTER_Disposition_TO_BASE(base) COM_FORWARD_IFile_GETTER_Disposition_TO (base::)
#define COM_FORWARD_IFile_GETTER_EventSource_TO(smth) NS_IMETHOD GetEventSource (IEventSource * * aEventSource) { return smth GetEventSource (aEventSource); }
#define COM_FORWARD_IFile_GETTER_EventSource_TO_OBJ(obj) COM_FORWARD_IFile_GETTER_EventSource_TO ((obj)->)
#define COM_FORWARD_IFile_GETTER_EventSource_TO_BASE(base) COM_FORWARD_IFile_GETTER_EventSource_TO (base::)
#define COM_FORWARD_IFile_GETTER_FileName_TO(smth) NS_IMETHOD GetFileName (PRUnichar * * aFileName) { return smth GetFileName (aFileName); }
#define COM_FORWARD_IFile_GETTER_FileName_TO_OBJ(obj) COM_FORWARD_IFile_GETTER_FileName_TO ((obj)->)
#define COM_FORWARD_IFile_GETTER_FileName_TO_BASE(base) COM_FORWARD_IFile_GETTER_FileName_TO (base::)
#define COM_FORWARD_IFile_GETTER_Id_TO(smth) NS_IMETHOD GetId (PRUint32 * aId) { return smth GetId (aId); }
#define COM_FORWARD_IFile_GETTER_Id_TO_OBJ(obj) COM_FORWARD_IFile_GETTER_Id_TO ((obj)->)
#define COM_FORWARD_IFile_GETTER_Id_TO_BASE(base) COM_FORWARD_IFile_GETTER_Id_TO (base::)
#define COM_FORWARD_IFile_GETTER_InitialSize_TO(smth) NS_IMETHOD GetInitialSize (PRInt64 * aInitialSize) { return smth GetInitialSize (aInitialSize); }
#define COM_FORWARD_IFile_GETTER_InitialSize_TO_OBJ(obj) COM_FORWARD_IFile_GETTER_InitialSize_TO ((obj)->)
#define COM_FORWARD_IFile_GETTER_InitialSize_TO_BASE(base) COM_FORWARD_IFile_GETTER_InitialSize_TO (base::)
#define COM_FORWARD_IFile_GETTER_OpenMode_TO(smth) NS_IMETHOD GetOpenMode (PRUnichar * * aOpenMode) { return smth GetOpenMode (aOpenMode); }
#define COM_FORWARD_IFile_GETTER_OpenMode_TO_OBJ(obj) COM_FORWARD_IFile_GETTER_OpenMode_TO ((obj)->)
#define COM_FORWARD_IFile_GETTER_OpenMode_TO_BASE(base) COM_FORWARD_IFile_GETTER_OpenMode_TO (base::)
#define COM_FORWARD_IFile_GETTER_Offset_TO(smth) NS_IMETHOD GetOffset (PRInt64 * aOffset) { return smth GetOffset (aOffset); }
#define COM_FORWARD_IFile_GETTER_Offset_TO_OBJ(obj) COM_FORWARD_IFile_GETTER_Offset_TO ((obj)->)
#define COM_FORWARD_IFile_GETTER_Offset_TO_BASE(base) COM_FORWARD_IFile_GETTER_Offset_TO (base::)
#define COM_FORWARD_IFile_GETTER_Status_TO(smth) NS_IMETHOD GetStatus (PRUint32 * aStatus) { return smth GetStatus (aStatus); }
#define COM_FORWARD_IFile_GETTER_Status_TO_OBJ(obj) COM_FORWARD_IFile_GETTER_Status_TO ((obj)->)
#define COM_FORWARD_IFile_GETTER_Status_TO_BASE(base) COM_FORWARD_IFile_GETTER_Status_TO (base::)
#define COM_FORWARD_IFile_Close_TO(smth) NS_IMETHOD Close() { return smth Close(); }
#define COM_FORWARD_IFile_Close_TO_OBJ(obj) COM_FORWARD_IFile_Close_TO ((obj)->)
#define COM_FORWARD_IFile_Close_TO_BASE(base) COM_FORWARD_IFile_Close_TO (base::)
#define COM_FORWARD_IFile_QueryInfo_TO(smth) NS_IMETHOD QueryInfo (IFsObjInfo * * aObjInfo) { return smth QueryInfo (aObjInfo); }
#define COM_FORWARD_IFile_QueryInfo_TO_OBJ(obj) COM_FORWARD_IFile_QueryInfo_TO ((obj)->)
#define COM_FORWARD_IFile_QueryInfo_TO_BASE(base) COM_FORWARD_IFile_QueryInfo_TO (base::)
#define COM_FORWARD_IFile_Read_TO(smth) NS_IMETHOD Read (PRUint32 aToRead, PRUint32 aTimeoutMS, PRUint32 * aDataSize, PRUint8 * * aData) { return smth Read (aToRead, aTimeoutMS, aDataSize, aData); }
#define COM_FORWARD_IFile_Read_TO_OBJ(obj) COM_FORWARD_IFile_Read_TO ((obj)->)
#define COM_FORWARD_IFile_Read_TO_BASE(base) COM_FORWARD_IFile_Read_TO (base::)
#define COM_FORWARD_IFile_ReadAt_TO(smth) NS_IMETHOD ReadAt (PRInt64 aOffset, PRUint32 aToRead, PRUint32 aTimeoutMS, PRUint32 * aDataSize, PRUint8 * * aData) { return smth ReadAt (aOffset, aToRead, aTimeoutMS, aDataSize, aData); }
#define COM_FORWARD_IFile_ReadAt_TO_OBJ(obj) COM_FORWARD_IFile_ReadAt_TO ((obj)->)
#define COM_FORWARD_IFile_ReadAt_TO_BASE(base) COM_FORWARD_IFile_ReadAt_TO (base::)
#define COM_FORWARD_IFile_Seek_TO(smth) NS_IMETHOD Seek (PRInt64 aOffset, PRUint32 aWhence) { return smth Seek (aOffset, aWhence); }
#define COM_FORWARD_IFile_Seek_TO_OBJ(obj) COM_FORWARD_IFile_Seek_TO ((obj)->)
#define COM_FORWARD_IFile_Seek_TO_BASE(base) COM_FORWARD_IFile_Seek_TO (base::)
#define COM_FORWARD_IFile_SetACL_TO(smth) NS_IMETHOD SetACL (PRUnichar * aAcl) { return smth SetACL (aAcl); }
#define COM_FORWARD_IFile_SetACL_TO_OBJ(obj) COM_FORWARD_IFile_SetACL_TO ((obj)->)
#define COM_FORWARD_IFile_SetACL_TO_BASE(base) COM_FORWARD_IFile_SetACL_TO (base::)
#define COM_FORWARD_IFile_Write_TO(smth) NS_IMETHOD Write (PRUint32 aDataSize, PRUint8 * aData, PRUint32 aTimeoutMS, PRUint32 * aWritten) { return smth Write (aDataSize+++, aData, aTimeoutMS, aWritten); }
#define COM_FORWARD_IFile_Write_TO_OBJ(obj) COM_FORWARD_IFile_Write_TO ((obj)->)
#define COM_FORWARD_IFile_Write_TO_BASE(base) COM_FORWARD_IFile_Write_TO (base::)
#define COM_FORWARD_IFile_WriteAt_TO(smth) NS_IMETHOD WriteAt (PRInt64 aOffset, PRUint32 aDataSize, PRUint8 * aData, PRUint32 aTimeoutMS, PRUint32 * aWritten) { return smth WriteAt (aOffset, aDataSize+++, aData, aTimeoutMS, aWritten); }
#define COM_FORWARD_IFile_WriteAt_TO_OBJ(obj) COM_FORWARD_IFile_WriteAt_TO ((obj)->)
#define COM_FORWARD_IFile_WriteAt_TO_BASE(base) COM_FORWARD_IFile_WriteAt_TO (base::)
#define COM_FORWARD_IFile_TO(smth) NS_FORWARD_IFILE (smth)
#define COM_FORWARD_IFile_TO_OBJ(obj) COM_FORWARD_IFile_TO ((obj)->)
#define COM_FORWARD_IFile_TO_BASE(base) COM_FORWARD_IFile_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IFile;

/* starting interface:    IGuestFile */
#define IGUESTFILE_IID_STR "60661aec-145f-4d11-b80e-8ea151598093"

#define IGUESTFILE_IID \
  {0x60661aec, 0x145f, 0x4d11, \
    { 0xb8, 0x0e, 0x8e, 0xa1, 0x51, 0x59, 0x80, 0x93 }}

class NS_NO_VTABLE IGuestFile : public IFile {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTFILE_IID)

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTFILE \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTFILE(_to) \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTFILE(_to) \
  /* no methods! */

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestFile
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTFILE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestFile)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestFile_TO(smth) NS_FORWARD_IGUESTFILE (smth)
#define COM_FORWARD_IGuestFile_TO_OBJ(obj) COM_FORWARD_IGuestFile_TO ((obj)->)
#define COM_FORWARD_IGuestFile_TO_BASE(base) COM_FORWARD_IGuestFile_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestFile;

/* starting interface:    IFsObjInfo */
#define IFSOBJINFO_IID_STR "4047ba30-7006-4966-ae86-94164e5e20eb"

#define IFSOBJINFO_IID \
  {0x4047ba30, 0x7006, 0x4966, \
    { 0xae, 0x86, 0x94, 0x16, 0x4e, 0x5e, 0x20, 0xeb }}

class NS_NO_VTABLE IFsObjInfo : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IFSOBJINFO_IID)

  /* readonly attribute long long accessTime; */
  NS_IMETHOD GetAccessTime(PRInt64 *aAccessTime) = 0;

  /* readonly attribute long long allocatedSize; */
  NS_IMETHOD GetAllocatedSize(PRInt64 *aAllocatedSize) = 0;

  /* readonly attribute long long birthTime; */
  NS_IMETHOD GetBirthTime(PRInt64 *aBirthTime) = 0;

  /* readonly attribute long long changeTime; */
  NS_IMETHOD GetChangeTime(PRInt64 *aChangeTime) = 0;

  /* readonly attribute unsigned long deviceNumber; */
  NS_IMETHOD GetDeviceNumber(PRUint32 *aDeviceNumber) = 0;

  /* readonly attribute wstring fileAttributes; */
  NS_IMETHOD GetFileAttributes(PRUnichar * *aFileAttributes) = 0;

  /* readonly attribute unsigned long generationId; */
  NS_IMETHOD GetGenerationId(PRUint32 *aGenerationId) = 0;

  /* readonly attribute unsigned long GID; */
  NS_IMETHOD GetGID(PRUint32 *aGID) = 0;

  /* readonly attribute wstring groupName; */
  NS_IMETHOD GetGroupName(PRUnichar * *aGroupName) = 0;

  /* readonly attribute unsigned long hardLinks; */
  NS_IMETHOD GetHardLinks(PRUint32 *aHardLinks) = 0;

  /* readonly attribute long long modificationTime; */
  NS_IMETHOD GetModificationTime(PRInt64 *aModificationTime) = 0;

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* readonly attribute long long nodeId; */
  NS_IMETHOD GetNodeId(PRInt64 *aNodeId) = 0;

  /* readonly attribute unsigned long nodeIdDevice; */
  NS_IMETHOD GetNodeIdDevice(PRUint32 *aNodeIdDevice) = 0;

  /* readonly attribute long long objectSize; */
  NS_IMETHOD GetObjectSize(PRInt64 *aObjectSize) = 0;

  /* readonly attribute PRUint32 type; */
  NS_IMETHOD GetType(PRUint32 *aType) = 0;

  /* readonly attribute unsigned long UID; */
  NS_IMETHOD GetUID(PRUint32 *aUID) = 0;

  /* readonly attribute unsigned long userFlags; */
  NS_IMETHOD GetUserFlags(PRUint32 *aUserFlags) = 0;

  /* readonly attribute wstring userName; */
  NS_IMETHOD GetUserName(PRUnichar * *aUserName) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IFSOBJINFO \
  NS_IMETHOD GetAccessTime(PRInt64 *aAccessTime); \
  NS_IMETHOD GetAllocatedSize(PRInt64 *aAllocatedSize); \
  NS_IMETHOD GetBirthTime(PRInt64 *aBirthTime); \
  NS_IMETHOD GetChangeTime(PRInt64 *aChangeTime); \
  NS_IMETHOD GetDeviceNumber(PRUint32 *aDeviceNumber); \
  NS_IMETHOD GetFileAttributes(PRUnichar * *aFileAttributes); \
  NS_IMETHOD GetGenerationId(PRUint32 *aGenerationId); \
  NS_IMETHOD GetGID(PRUint32 *aGID); \
  NS_IMETHOD GetGroupName(PRUnichar * *aGroupName); \
  NS_IMETHOD GetHardLinks(PRUint32 *aHardLinks); \
  NS_IMETHOD GetModificationTime(PRInt64 *aModificationTime); \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetNodeId(PRInt64 *aNodeId); \
  NS_IMETHOD GetNodeIdDevice(PRUint32 *aNodeIdDevice); \
  NS_IMETHOD GetObjectSize(PRInt64 *aObjectSize); \
  NS_IMETHOD GetType(PRUint32 *aType); \
  NS_IMETHOD GetUID(PRUint32 *aUID); \
  NS_IMETHOD GetUserFlags(PRUint32 *aUserFlags); \
  NS_IMETHOD GetUserName(PRUnichar * *aUserName); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IFSOBJINFO(_to) \
  NS_IMETHOD GetAccessTime(PRInt64 *aAccessTime) { return _to GetAccessTime(aAccessTime); } \
  NS_IMETHOD GetAllocatedSize(PRInt64 *aAllocatedSize) { return _to GetAllocatedSize(aAllocatedSize); } \
  NS_IMETHOD GetBirthTime(PRInt64 *aBirthTime) { return _to GetBirthTime(aBirthTime); } \
  NS_IMETHOD GetChangeTime(PRInt64 *aChangeTime) { return _to GetChangeTime(aChangeTime); } \
  NS_IMETHOD GetDeviceNumber(PRUint32 *aDeviceNumber) { return _to GetDeviceNumber(aDeviceNumber); } \
  NS_IMETHOD GetFileAttributes(PRUnichar * *aFileAttributes) { return _to GetFileAttributes(aFileAttributes); } \
  NS_IMETHOD GetGenerationId(PRUint32 *aGenerationId) { return _to GetGenerationId(aGenerationId); } \
  NS_IMETHOD GetGID(PRUint32 *aGID) { return _to GetGID(aGID); } \
  NS_IMETHOD GetGroupName(PRUnichar * *aGroupName) { return _to GetGroupName(aGroupName); } \
  NS_IMETHOD GetHardLinks(PRUint32 *aHardLinks) { return _to GetHardLinks(aHardLinks); } \
  NS_IMETHOD GetModificationTime(PRInt64 *aModificationTime) { return _to GetModificationTime(aModificationTime); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetNodeId(PRInt64 *aNodeId) { return _to GetNodeId(aNodeId); } \
  NS_IMETHOD GetNodeIdDevice(PRUint32 *aNodeIdDevice) { return _to GetNodeIdDevice(aNodeIdDevice); } \
  NS_IMETHOD GetObjectSize(PRInt64 *aObjectSize) { return _to GetObjectSize(aObjectSize); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return _to GetType(aType); } \
  NS_IMETHOD GetUID(PRUint32 *aUID) { return _to GetUID(aUID); } \
  NS_IMETHOD GetUserFlags(PRUint32 *aUserFlags) { return _to GetUserFlags(aUserFlags); } \
  NS_IMETHOD GetUserName(PRUnichar * *aUserName) { return _to GetUserName(aUserName); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IFSOBJINFO(_to) \
  NS_IMETHOD GetAccessTime(PRInt64 *aAccessTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAccessTime(aAccessTime); } \
  NS_IMETHOD GetAllocatedSize(PRInt64 *aAllocatedSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllocatedSize(aAllocatedSize); } \
  NS_IMETHOD GetBirthTime(PRInt64 *aBirthTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBirthTime(aBirthTime); } \
  NS_IMETHOD GetChangeTime(PRInt64 *aChangeTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChangeTime(aChangeTime); } \
  NS_IMETHOD GetDeviceNumber(PRUint32 *aDeviceNumber) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDeviceNumber(aDeviceNumber); } \
  NS_IMETHOD GetFileAttributes(PRUnichar * *aFileAttributes) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFileAttributes(aFileAttributes); } \
  NS_IMETHOD GetGenerationId(PRUint32 *aGenerationId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGenerationId(aGenerationId); } \
  NS_IMETHOD GetGID(PRUint32 *aGID) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGID(aGID); } \
  NS_IMETHOD GetGroupName(PRUnichar * *aGroupName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGroupName(aGroupName); } \
  NS_IMETHOD GetHardLinks(PRUint32 *aHardLinks) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHardLinks(aHardLinks); } \
  NS_IMETHOD GetModificationTime(PRInt64 *aModificationTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetModificationTime(aModificationTime); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetNodeId(PRInt64 *aNodeId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNodeId(aNodeId); } \
  NS_IMETHOD GetNodeIdDevice(PRUint32 *aNodeIdDevice) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNodeIdDevice(aNodeIdDevice); } \
  NS_IMETHOD GetObjectSize(PRInt64 *aObjectSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetObjectSize(aObjectSize); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetType(aType); } \
  NS_IMETHOD GetUID(PRUint32 *aUID) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUID(aUID); } \
  NS_IMETHOD GetUserFlags(PRUint32 *aUserFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUserFlags(aUserFlags); } \
  NS_IMETHOD GetUserName(PRUnichar * *aUserName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUserName(aUserName); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IFsObjInfo
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IFSOBJINFO

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IFsObjInfo)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute long long accessTime; */
NS_IMETHODIMP _MYCLASS_::GetAccessTime(PRInt64 *aAccessTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long allocatedSize; */
NS_IMETHODIMP _MYCLASS_::GetAllocatedSize(PRInt64 *aAllocatedSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long birthTime; */
NS_IMETHODIMP _MYCLASS_::GetBirthTime(PRInt64 *aBirthTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long changeTime; */
NS_IMETHODIMP _MYCLASS_::GetChangeTime(PRInt64 *aChangeTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long deviceNumber; */
NS_IMETHODIMP _MYCLASS_::GetDeviceNumber(PRUint32 *aDeviceNumber)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring fileAttributes; */
NS_IMETHODIMP _MYCLASS_::GetFileAttributes(PRUnichar * *aFileAttributes)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long generationId; */
NS_IMETHODIMP _MYCLASS_::GetGenerationId(PRUint32 *aGenerationId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long GID; */
NS_IMETHODIMP _MYCLASS_::GetGID(PRUint32 *aGID)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring groupName; */
NS_IMETHODIMP _MYCLASS_::GetGroupName(PRUnichar * *aGroupName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long hardLinks; */
NS_IMETHODIMP _MYCLASS_::GetHardLinks(PRUint32 *aHardLinks)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long modificationTime; */
NS_IMETHODIMP _MYCLASS_::GetModificationTime(PRInt64 *aModificationTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long nodeId; */
NS_IMETHODIMP _MYCLASS_::GetNodeId(PRInt64 *aNodeId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long nodeIdDevice; */
NS_IMETHODIMP _MYCLASS_::GetNodeIdDevice(PRUint32 *aNodeIdDevice)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long objectSize; */
NS_IMETHODIMP _MYCLASS_::GetObjectSize(PRInt64 *aObjectSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 type; */
NS_IMETHODIMP _MYCLASS_::GetType(PRUint32 *aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long UID; */
NS_IMETHODIMP _MYCLASS_::GetUID(PRUint32 *aUID)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long userFlags; */
NS_IMETHODIMP _MYCLASS_::GetUserFlags(PRUint32 *aUserFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring userName; */
NS_IMETHODIMP _MYCLASS_::GetUserName(PRUnichar * *aUserName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IFsObjInfo_GETTER_AccessTime_TO(smth) NS_IMETHOD GetAccessTime (PRInt64 * aAccessTime) { return smth GetAccessTime (aAccessTime); }
#define COM_FORWARD_IFsObjInfo_GETTER_AccessTime_TO_OBJ(obj) COM_FORWARD_IFsObjInfo_GETTER_AccessTime_TO ((obj)->)
#define COM_FORWARD_IFsObjInfo_GETTER_AccessTime_TO_BASE(base) COM_FORWARD_IFsObjInfo_GETTER_AccessTime_TO (base::)
#define COM_FORWARD_IFsObjInfo_GETTER_AllocatedSize_TO(smth) NS_IMETHOD GetAllocatedSize (PRInt64 * aAllocatedSize) { return smth GetAllocatedSize (aAllocatedSize); }
#define COM_FORWARD_IFsObjInfo_GETTER_AllocatedSize_TO_OBJ(obj) COM_FORWARD_IFsObjInfo_GETTER_AllocatedSize_TO ((obj)->)
#define COM_FORWARD_IFsObjInfo_GETTER_AllocatedSize_TO_BASE(base) COM_FORWARD_IFsObjInfo_GETTER_AllocatedSize_TO (base::)
#define COM_FORWARD_IFsObjInfo_GETTER_BirthTime_TO(smth) NS_IMETHOD GetBirthTime (PRInt64 * aBirthTime) { return smth GetBirthTime (aBirthTime); }
#define COM_FORWARD_IFsObjInfo_GETTER_BirthTime_TO_OBJ(obj) COM_FORWARD_IFsObjInfo_GETTER_BirthTime_TO ((obj)->)
#define COM_FORWARD_IFsObjInfo_GETTER_BirthTime_TO_BASE(base) COM_FORWARD_IFsObjInfo_GETTER_BirthTime_TO (base::)
#define COM_FORWARD_IFsObjInfo_GETTER_ChangeTime_TO(smth) NS_IMETHOD GetChangeTime (PRInt64 * aChangeTime) { return smth GetChangeTime (aChangeTime); }
#define COM_FORWARD_IFsObjInfo_GETTER_ChangeTime_TO_OBJ(obj) COM_FORWARD_IFsObjInfo_GETTER_ChangeTime_TO ((obj)->)
#define COM_FORWARD_IFsObjInfo_GETTER_ChangeTime_TO_BASE(base) COM_FORWARD_IFsObjInfo_GETTER_ChangeTime_TO (base::)
#define COM_FORWARD_IFsObjInfo_GETTER_DeviceNumber_TO(smth) NS_IMETHOD GetDeviceNumber (PRUint32 * aDeviceNumber) { return smth GetDeviceNumber (aDeviceNumber); }
#define COM_FORWARD_IFsObjInfo_GETTER_DeviceNumber_TO_OBJ(obj) COM_FORWARD_IFsObjInfo_GETTER_DeviceNumber_TO ((obj)->)
#define COM_FORWARD_IFsObjInfo_GETTER_DeviceNumber_TO_BASE(base) COM_FORWARD_IFsObjInfo_GETTER_DeviceNumber_TO (base::)
#define COM_FORWARD_IFsObjInfo_GETTER_FileAttributes_TO(smth) NS_IMETHOD GetFileAttributes (PRUnichar * * aFileAttributes) { return smth GetFileAttributes (aFileAttributes); }
#define COM_FORWARD_IFsObjInfo_GETTER_FileAttributes_TO_OBJ(obj) COM_FORWARD_IFsObjInfo_GETTER_FileAttributes_TO ((obj)->)
#define COM_FORWARD_IFsObjInfo_GETTER_FileAttributes_TO_BASE(base) COM_FORWARD_IFsObjInfo_GETTER_FileAttributes_TO (base::)
#define COM_FORWARD_IFsObjInfo_GETTER_GenerationId_TO(smth) NS_IMETHOD GetGenerationId (PRUint32 * aGenerationId) { return smth GetGenerationId (aGenerationId); }
#define COM_FORWARD_IFsObjInfo_GETTER_GenerationId_TO_OBJ(obj) COM_FORWARD_IFsObjInfo_GETTER_GenerationId_TO ((obj)->)
#define COM_FORWARD_IFsObjInfo_GETTER_GenerationId_TO_BASE(base) COM_FORWARD_IFsObjInfo_GETTER_GenerationId_TO (base::)
#define COM_FORWARD_IFsObjInfo_GETTER_GID_TO(smth) NS_IMETHOD GetGID (PRUint32 * aGID) { return smth GetGID (aGID); }
#define COM_FORWARD_IFsObjInfo_GETTER_GID_TO_OBJ(obj) COM_FORWARD_IFsObjInfo_GETTER_GID_TO ((obj)->)
#define COM_FORWARD_IFsObjInfo_GETTER_GID_TO_BASE(base) COM_FORWARD_IFsObjInfo_GETTER_GID_TO (base::)
#define COM_FORWARD_IFsObjInfo_GETTER_GroupName_TO(smth) NS_IMETHOD GetGroupName (PRUnichar * * aGroupName) { return smth GetGroupName (aGroupName); }
#define COM_FORWARD_IFsObjInfo_GETTER_GroupName_TO_OBJ(obj) COM_FORWARD_IFsObjInfo_GETTER_GroupName_TO ((obj)->)
#define COM_FORWARD_IFsObjInfo_GETTER_GroupName_TO_BASE(base) COM_FORWARD_IFsObjInfo_GETTER_GroupName_TO (base::)
#define COM_FORWARD_IFsObjInfo_GETTER_HardLinks_TO(smth) NS_IMETHOD GetHardLinks (PRUint32 * aHardLinks) { return smth GetHardLinks (aHardLinks); }
#define COM_FORWARD_IFsObjInfo_GETTER_HardLinks_TO_OBJ(obj) COM_FORWARD_IFsObjInfo_GETTER_HardLinks_TO ((obj)->)
#define COM_FORWARD_IFsObjInfo_GETTER_HardLinks_TO_BASE(base) COM_FORWARD_IFsObjInfo_GETTER_HardLinks_TO (base::)
#define COM_FORWARD_IFsObjInfo_GETTER_ModificationTime_TO(smth) NS_IMETHOD GetModificationTime (PRInt64 * aModificationTime) { return smth GetModificationTime (aModificationTime); }
#define COM_FORWARD_IFsObjInfo_GETTER_ModificationTime_TO_OBJ(obj) COM_FORWARD_IFsObjInfo_GETTER_ModificationTime_TO ((obj)->)
#define COM_FORWARD_IFsObjInfo_GETTER_ModificationTime_TO_BASE(base) COM_FORWARD_IFsObjInfo_GETTER_ModificationTime_TO (base::)
#define COM_FORWARD_IFsObjInfo_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IFsObjInfo_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IFsObjInfo_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IFsObjInfo_GETTER_Name_TO_BASE(base) COM_FORWARD_IFsObjInfo_GETTER_Name_TO (base::)
#define COM_FORWARD_IFsObjInfo_GETTER_NodeId_TO(smth) NS_IMETHOD GetNodeId (PRInt64 * aNodeId) { return smth GetNodeId (aNodeId); }
#define COM_FORWARD_IFsObjInfo_GETTER_NodeId_TO_OBJ(obj) COM_FORWARD_IFsObjInfo_GETTER_NodeId_TO ((obj)->)
#define COM_FORWARD_IFsObjInfo_GETTER_NodeId_TO_BASE(base) COM_FORWARD_IFsObjInfo_GETTER_NodeId_TO (base::)
#define COM_FORWARD_IFsObjInfo_GETTER_NodeIdDevice_TO(smth) NS_IMETHOD GetNodeIdDevice (PRUint32 * aNodeIdDevice) { return smth GetNodeIdDevice (aNodeIdDevice); }
#define COM_FORWARD_IFsObjInfo_GETTER_NodeIdDevice_TO_OBJ(obj) COM_FORWARD_IFsObjInfo_GETTER_NodeIdDevice_TO ((obj)->)
#define COM_FORWARD_IFsObjInfo_GETTER_NodeIdDevice_TO_BASE(base) COM_FORWARD_IFsObjInfo_GETTER_NodeIdDevice_TO (base::)
#define COM_FORWARD_IFsObjInfo_GETTER_ObjectSize_TO(smth) NS_IMETHOD GetObjectSize (PRInt64 * aObjectSize) { return smth GetObjectSize (aObjectSize); }
#define COM_FORWARD_IFsObjInfo_GETTER_ObjectSize_TO_OBJ(obj) COM_FORWARD_IFsObjInfo_GETTER_ObjectSize_TO ((obj)->)
#define COM_FORWARD_IFsObjInfo_GETTER_ObjectSize_TO_BASE(base) COM_FORWARD_IFsObjInfo_GETTER_ObjectSize_TO (base::)
#define COM_FORWARD_IFsObjInfo_GETTER_Type_TO(smth) NS_IMETHOD GetType (PRUint32 * aType) { return smth GetType (aType); }
#define COM_FORWARD_IFsObjInfo_GETTER_Type_TO_OBJ(obj) COM_FORWARD_IFsObjInfo_GETTER_Type_TO ((obj)->)
#define COM_FORWARD_IFsObjInfo_GETTER_Type_TO_BASE(base) COM_FORWARD_IFsObjInfo_GETTER_Type_TO (base::)
#define COM_FORWARD_IFsObjInfo_GETTER_UID_TO(smth) NS_IMETHOD GetUID (PRUint32 * aUID) { return smth GetUID (aUID); }
#define COM_FORWARD_IFsObjInfo_GETTER_UID_TO_OBJ(obj) COM_FORWARD_IFsObjInfo_GETTER_UID_TO ((obj)->)
#define COM_FORWARD_IFsObjInfo_GETTER_UID_TO_BASE(base) COM_FORWARD_IFsObjInfo_GETTER_UID_TO (base::)
#define COM_FORWARD_IFsObjInfo_GETTER_UserFlags_TO(smth) NS_IMETHOD GetUserFlags (PRUint32 * aUserFlags) { return smth GetUserFlags (aUserFlags); }
#define COM_FORWARD_IFsObjInfo_GETTER_UserFlags_TO_OBJ(obj) COM_FORWARD_IFsObjInfo_GETTER_UserFlags_TO ((obj)->)
#define COM_FORWARD_IFsObjInfo_GETTER_UserFlags_TO_BASE(base) COM_FORWARD_IFsObjInfo_GETTER_UserFlags_TO (base::)
#define COM_FORWARD_IFsObjInfo_GETTER_UserName_TO(smth) NS_IMETHOD GetUserName (PRUnichar * * aUserName) { return smth GetUserName (aUserName); }
#define COM_FORWARD_IFsObjInfo_GETTER_UserName_TO_OBJ(obj) COM_FORWARD_IFsObjInfo_GETTER_UserName_TO ((obj)->)
#define COM_FORWARD_IFsObjInfo_GETTER_UserName_TO_BASE(base) COM_FORWARD_IFsObjInfo_GETTER_UserName_TO (base::)
#define COM_FORWARD_IFsObjInfo_TO(smth) NS_FORWARD_IFSOBJINFO (smth)
#define COM_FORWARD_IFsObjInfo_TO_OBJ(obj) COM_FORWARD_IFsObjInfo_TO ((obj)->)
#define COM_FORWARD_IFsObjInfo_TO_BASE(base) COM_FORWARD_IFsObjInfo_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IFsObjInfo;

/* starting interface:    IGuestFsObjInfo */
#define IGUESTFSOBJINFO_IID_STR "d5cf678e-3484-4e4a-ac55-329e15462e18"

#define IGUESTFSOBJINFO_IID \
  {0xd5cf678e, 0x3484, 0x4e4a, \
    { 0xac, 0x55, 0x32, 0x9e, 0x15, 0x46, 0x2e, 0x18 }}

class NS_NO_VTABLE IGuestFsObjInfo : public IFsObjInfo {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTFSOBJINFO_IID)

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTFSOBJINFO \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTFSOBJINFO(_to) \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTFSOBJINFO(_to) \
  /* no methods! */

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestFsObjInfo
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTFSOBJINFO

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestFsObjInfo)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestFsObjInfo_TO(smth) NS_FORWARD_IGUESTFSOBJINFO (smth)
#define COM_FORWARD_IGuestFsObjInfo_TO_OBJ(obj) COM_FORWARD_IGuestFsObjInfo_TO ((obj)->)
#define COM_FORWARD_IGuestFsObjInfo_TO_BASE(base) COM_FORWARD_IGuestFsObjInfo_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestFsObjInfo;

/* starting interface:    IGuest */
#define IGUEST_IID_STR "8011a1b1-6adb-4ffb-a37e-20abdaee4650"

#define IGUEST_IID \
  {0x8011a1b1, 0x6adb, 0x4ffb, \
    { 0xa3, 0x7e, 0x20, 0xab, 0xda, 0xee, 0x46, 0x50 }}

class NS_NO_VTABLE IGuest : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUEST_IID)

  /* readonly attribute wstring OSTypeId; */
  NS_IMETHOD GetOSTypeId(PRUnichar * *aOSTypeId) = 0;

  /* readonly attribute PRUint32 additionsRunLevel; */
  NS_IMETHOD GetAdditionsRunLevel(PRUint32 *aAdditionsRunLevel) = 0;

  /* readonly attribute wstring additionsVersion; */
  NS_IMETHOD GetAdditionsVersion(PRUnichar * *aAdditionsVersion) = 0;

  /* readonly attribute unsigned long additionsRevision; */
  NS_IMETHOD GetAdditionsRevision(PRUint32 *aAdditionsRevision) = 0;

  /* readonly attribute IEventSource eventSource; */
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) = 0;

  /* void getFacilities (out unsigned long facilitiesSize, [array, size_is (facilitiesSize), retval] out IAdditionsFacility facilities); */
  NS_IMETHOD GetFacilities(PRUint32 *facilitiesSize, IAdditionsFacility ***facilities) = 0;

  /* void getSessions (out unsigned long sessionsSize, [array, size_is (sessionsSize), retval] out IGuestSession sessions); */
  NS_IMETHOD GetSessions(PRUint32 *sessionsSize, IGuestSession ***sessions) = 0;

  /* attribute unsigned long memoryBalloonSize; */
  NS_IMETHOD GetMemoryBalloonSize(PRUint32 *aMemoryBalloonSize) = 0;
  NS_IMETHOD SetMemoryBalloonSize(PRUint32 aMemoryBalloonSize) = 0;

  /* attribute unsigned long statisticsUpdateInterval; */
  NS_IMETHOD GetStatisticsUpdateInterval(PRUint32 *aStatisticsUpdateInterval) = 0;
  NS_IMETHOD SetStatisticsUpdateInterval(PRUint32 aStatisticsUpdateInterval) = 0;

  /* void internalGetStatistics (out unsigned long cpuUser, out unsigned long cpuKernel, out unsigned long cpuIdle, out unsigned long memTotal, out unsigned long memFree, out unsigned long memBalloon, out unsigned long memShared, out unsigned long memCache, out unsigned long pagedTotal, out unsigned long memAllocTotal, out unsigned long memFreeTotal, out unsigned long memBalloonTotal, out unsigned long memSharedTotal); */
  NS_IMETHOD InternalGetStatistics(PRUint32 *cpuUser, PRUint32 *cpuKernel, PRUint32 *cpuIdle, PRUint32 *memTotal, PRUint32 *memFree, PRUint32 *memBalloon, PRUint32 *memShared, PRUint32 *memCache, PRUint32 *pagedTotal, PRUint32 *memAllocTotal, PRUint32 *memFreeTotal, PRUint32 *memBalloonTotal, PRUint32 *memSharedTotal) = 0;

  /* void getFacilityStatus (in PRUint32 facility, out long long timestamp, [retval] out PRUint32 status); */
  NS_IMETHOD GetFacilityStatus(PRUint32 facility, PRInt64 *timestamp, PRUint32 *status) = 0;

  /* void getAdditionsStatus (in PRUint32 level, [retval] out boolean active); */
  NS_IMETHOD GetAdditionsStatus(PRUint32 level, PRBool *active) = 0;

  /* void setCredentials (in wstring userName, in wstring password, in wstring domain, in boolean allowInteractiveLogon); */
  NS_IMETHOD SetCredentials(const PRUnichar *userName, const PRUnichar *password, const PRUnichar *domain, PRBool allowInteractiveLogon) = 0;

  /* void dragHGEnter (in unsigned long screenId, in unsigned long y, in unsigned long x, in PRUint32 defaultAction, in unsigned long allowedActionsSize, [array, size_is (allowedActionsSize)] in PRUint32 allowedActions, in unsigned long formatsSize, [array, size_is (formatsSize)] in wstring formats, [retval] out PRUint32 resultAction); */
  NS_IMETHOD DragHGEnter(PRUint32 screenId, PRUint32 y, PRUint32 x, PRUint32 defaultAction, PRUint32 allowedActionsSize, PRUint32 *allowedActions, PRUint32 formatsSize, const PRUnichar **formats, PRUint32 *resultAction) = 0;

  /* void dragHGMove (in unsigned long screenId, in unsigned long x, in unsigned long y, in PRUint32 defaultAction, in unsigned long allowedActionsSize, [array, size_is (allowedActionsSize)] in PRUint32 allowedActions, in unsigned long formatsSize, [array, size_is (formatsSize)] in wstring formats, [retval] out PRUint32 resultAction); */
  NS_IMETHOD DragHGMove(PRUint32 screenId, PRUint32 x, PRUint32 y, PRUint32 defaultAction, PRUint32 allowedActionsSize, PRUint32 *allowedActions, PRUint32 formatsSize, const PRUnichar **formats, PRUint32 *resultAction) = 0;

  /* void dragHGLeave (in unsigned long screenId); */
  NS_IMETHOD DragHGLeave(PRUint32 screenId) = 0;

  /* void dragHGDrop (in unsigned long screenId, in unsigned long x, in unsigned long y, in PRUint32 defaultAction, in unsigned long allowedActionsSize, [array, size_is (allowedActionsSize)] in PRUint32 allowedActions, in unsigned long formatsSize, [array, size_is (formatsSize)] in wstring formats, out wstring format, [retval] out PRUint32 resultAction); */
  NS_IMETHOD DragHGDrop(PRUint32 screenId, PRUint32 x, PRUint32 y, PRUint32 defaultAction, PRUint32 allowedActionsSize, PRUint32 *allowedActions, PRUint32 formatsSize, const PRUnichar **formats, PRUnichar **format, PRUint32 *resultAction) = 0;

  /* void dragHGPutData (in unsigned long screenId, in wstring format, in unsigned long dataSize, [array, size_is (dataSize)] in octet data, [retval] out IProgress progress); */
  NS_IMETHOD DragHGPutData(PRUint32 screenId, const PRUnichar *format, PRUint32 dataSize, PRUint8 *data, IProgress **progress) = 0;

  /* void dragGHPending (in unsigned long screenId, out unsigned long formatsSize, [array, size_is (formatsSize)] out wstring formats, out unsigned long allowedActionsSize, [array, size_is (allowedActionsSize)] out PRUint32 allowedActions, [retval] out PRUint32 defaultAction); */
  NS_IMETHOD DragGHPending(PRUint32 screenId, PRUint32 *formatsSize, PRUnichar ***formats, PRUint32 *allowedActionsSize, PRUint32 **allowedActions, PRUint32 *defaultAction) = 0;

  /* void dragGHDropped (in wstring format, in PRUint32 action, [retval] out IProgress progress); */
  NS_IMETHOD DragGHDropped(const PRUnichar *format, PRUint32 action, IProgress **progress) = 0;

  /* void dragGHGetData (out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
  NS_IMETHOD DragGHGetData(PRUint32 *dataSize, PRUint8 **data) = 0;

  /* void createSession (in wstring user, in wstring password, in wstring domain, in wstring sessionName, [retval] out IGuestSession guestSession); */
  NS_IMETHOD CreateSession(const PRUnichar *user, const PRUnichar *password, const PRUnichar *domain, const PRUnichar *sessionName, IGuestSession **guestSession) = 0;

  /* void findSession (in wstring sessionName, out unsigned long sessionsSize, [array, size_is (sessionsSize), retval] out IGuestSession sessions); */
  NS_IMETHOD FindSession(const PRUnichar *sessionName, PRUint32 *sessionsSize, IGuestSession ***sessions) = 0;

  /* void updateGuestAdditions (in wstring source, in unsigned long argumentsSize, [array, size_is (argumentsSize)] in wstring arguments, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags, [retval] out IProgress progress); */
  NS_IMETHOD UpdateGuestAdditions(const PRUnichar *source, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 flagsSize, PRUint32 *flags, IProgress **progress) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUEST \
  NS_IMETHOD GetOSTypeId(PRUnichar * *aOSTypeId); \
  NS_IMETHOD GetAdditionsRunLevel(PRUint32 *aAdditionsRunLevel); \
  NS_IMETHOD GetAdditionsVersion(PRUnichar * *aAdditionsVersion); \
  NS_IMETHOD GetAdditionsRevision(PRUint32 *aAdditionsRevision); \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource); \
  NS_IMETHOD GetFacilities(PRUint32 *facilitiesSize, IAdditionsFacility ***facilities); \
  NS_IMETHOD GetSessions(PRUint32 *sessionsSize, IGuestSession ***sessions); \
  NS_IMETHOD GetMemoryBalloonSize(PRUint32 *aMemoryBalloonSize); \
  NS_IMETHOD SetMemoryBalloonSize(PRUint32 aMemoryBalloonSize); \
  NS_IMETHOD GetStatisticsUpdateInterval(PRUint32 *aStatisticsUpdateInterval); \
  NS_IMETHOD SetStatisticsUpdateInterval(PRUint32 aStatisticsUpdateInterval); \
  NS_IMETHOD InternalGetStatistics(PRUint32 *cpuUser, PRUint32 *cpuKernel, PRUint32 *cpuIdle, PRUint32 *memTotal, PRUint32 *memFree, PRUint32 *memBalloon, PRUint32 *memShared, PRUint32 *memCache, PRUint32 *pagedTotal, PRUint32 *memAllocTotal, PRUint32 *memFreeTotal, PRUint32 *memBalloonTotal, PRUint32 *memSharedTotal); \
  NS_IMETHOD GetFacilityStatus(PRUint32 facility, PRInt64 *timestamp, PRUint32 *status); \
  NS_IMETHOD GetAdditionsStatus(PRUint32 level, PRBool *active); \
  NS_IMETHOD SetCredentials(const PRUnichar *userName, const PRUnichar *password, const PRUnichar *domain, PRBool allowInteractiveLogon); \
  NS_IMETHOD DragHGEnter(PRUint32 screenId, PRUint32 y, PRUint32 x, PRUint32 defaultAction, PRUint32 allowedActionsSize, PRUint32 *allowedActions, PRUint32 formatsSize, const PRUnichar **formats, PRUint32 *resultAction); \
  NS_IMETHOD DragHGMove(PRUint32 screenId, PRUint32 x, PRUint32 y, PRUint32 defaultAction, PRUint32 allowedActionsSize, PRUint32 *allowedActions, PRUint32 formatsSize, const PRUnichar **formats, PRUint32 *resultAction); \
  NS_IMETHOD DragHGLeave(PRUint32 screenId); \
  NS_IMETHOD DragHGDrop(PRUint32 screenId, PRUint32 x, PRUint32 y, PRUint32 defaultAction, PRUint32 allowedActionsSize, PRUint32 *allowedActions, PRUint32 formatsSize, const PRUnichar **formats, PRUnichar **format, PRUint32 *resultAction); \
  NS_IMETHOD DragHGPutData(PRUint32 screenId, const PRUnichar *format, PRUint32 dataSize, PRUint8 *data, IProgress **progress); \
  NS_IMETHOD DragGHPending(PRUint32 screenId, PRUint32 *formatsSize, PRUnichar ***formats, PRUint32 *allowedActionsSize, PRUint32 **allowedActions, PRUint32 *defaultAction); \
  NS_IMETHOD DragGHDropped(const PRUnichar *format, PRUint32 action, IProgress **progress); \
  NS_IMETHOD DragGHGetData(PRUint32 *dataSize, PRUint8 **data); \
  NS_IMETHOD CreateSession(const PRUnichar *user, const PRUnichar *password, const PRUnichar *domain, const PRUnichar *sessionName, IGuestSession **guestSession); \
  NS_IMETHOD FindSession(const PRUnichar *sessionName, PRUint32 *sessionsSize, IGuestSession ***sessions); \
  NS_IMETHOD UpdateGuestAdditions(const PRUnichar *source, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 flagsSize, PRUint32 *flags, IProgress **progress); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUEST(_to) \
  NS_IMETHOD GetOSTypeId(PRUnichar * *aOSTypeId) { return _to GetOSTypeId(aOSTypeId); } \
  NS_IMETHOD GetAdditionsRunLevel(PRUint32 *aAdditionsRunLevel) { return _to GetAdditionsRunLevel(aAdditionsRunLevel); } \
  NS_IMETHOD GetAdditionsVersion(PRUnichar * *aAdditionsVersion) { return _to GetAdditionsVersion(aAdditionsVersion); } \
  NS_IMETHOD GetAdditionsRevision(PRUint32 *aAdditionsRevision) { return _to GetAdditionsRevision(aAdditionsRevision); } \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return _to GetEventSource(aEventSource); } \
  NS_IMETHOD GetFacilities(PRUint32 *facilitiesSize, IAdditionsFacility ***facilities) { return _to GetFacilities(facilitiesSize, facilities); } \
  NS_IMETHOD GetSessions(PRUint32 *sessionsSize, IGuestSession ***sessions) { return _to GetSessions(sessionsSize, sessions); } \
  NS_IMETHOD GetMemoryBalloonSize(PRUint32 *aMemoryBalloonSize) { return _to GetMemoryBalloonSize(aMemoryBalloonSize); } \
  NS_IMETHOD SetMemoryBalloonSize(PRUint32 aMemoryBalloonSize) { return _to SetMemoryBalloonSize(aMemoryBalloonSize); } \
  NS_IMETHOD GetStatisticsUpdateInterval(PRUint32 *aStatisticsUpdateInterval) { return _to GetStatisticsUpdateInterval(aStatisticsUpdateInterval); } \
  NS_IMETHOD SetStatisticsUpdateInterval(PRUint32 aStatisticsUpdateInterval) { return _to SetStatisticsUpdateInterval(aStatisticsUpdateInterval); } \
  NS_IMETHOD InternalGetStatistics(PRUint32 *cpuUser, PRUint32 *cpuKernel, PRUint32 *cpuIdle, PRUint32 *memTotal, PRUint32 *memFree, PRUint32 *memBalloon, PRUint32 *memShared, PRUint32 *memCache, PRUint32 *pagedTotal, PRUint32 *memAllocTotal, PRUint32 *memFreeTotal, PRUint32 *memBalloonTotal, PRUint32 *memSharedTotal) { return _to InternalGetStatistics(cpuUser, cpuKernel, cpuIdle, memTotal, memFree, memBalloon, memShared, memCache, pagedTotal, memAllocTotal, memFreeTotal, memBalloonTotal, memSharedTotal); } \
  NS_IMETHOD GetFacilityStatus(PRUint32 facility, PRInt64 *timestamp, PRUint32 *status) { return _to GetFacilityStatus(facility, timestamp, status); } \
  NS_IMETHOD GetAdditionsStatus(PRUint32 level, PRBool *active) { return _to GetAdditionsStatus(level, active); } \
  NS_IMETHOD SetCredentials(const PRUnichar *userName, const PRUnichar *password, const PRUnichar *domain, PRBool allowInteractiveLogon) { return _to SetCredentials(userName, password, domain, allowInteractiveLogon); } \
  NS_IMETHOD DragHGEnter(PRUint32 screenId, PRUint32 y, PRUint32 x, PRUint32 defaultAction, PRUint32 allowedActionsSize, PRUint32 *allowedActions, PRUint32 formatsSize, const PRUnichar **formats, PRUint32 *resultAction) { return _to DragHGEnter(screenId, y, x, defaultAction, allowedActionsSize, allowedActions, formatsSize, formats, resultAction); } \
  NS_IMETHOD DragHGMove(PRUint32 screenId, PRUint32 x, PRUint32 y, PRUint32 defaultAction, PRUint32 allowedActionsSize, PRUint32 *allowedActions, PRUint32 formatsSize, const PRUnichar **formats, PRUint32 *resultAction) { return _to DragHGMove(screenId, x, y, defaultAction, allowedActionsSize, allowedActions, formatsSize, formats, resultAction); } \
  NS_IMETHOD DragHGLeave(PRUint32 screenId) { return _to DragHGLeave(screenId); } \
  NS_IMETHOD DragHGDrop(PRUint32 screenId, PRUint32 x, PRUint32 y, PRUint32 defaultAction, PRUint32 allowedActionsSize, PRUint32 *allowedActions, PRUint32 formatsSize, const PRUnichar **formats, PRUnichar **format, PRUint32 *resultAction) { return _to DragHGDrop(screenId, x, y, defaultAction, allowedActionsSize, allowedActions, formatsSize, formats, format, resultAction); } \
  NS_IMETHOD DragHGPutData(PRUint32 screenId, const PRUnichar *format, PRUint32 dataSize, PRUint8 *data, IProgress **progress) { return _to DragHGPutData(screenId, format, dataSize, data, progress); } \
  NS_IMETHOD DragGHPending(PRUint32 screenId, PRUint32 *formatsSize, PRUnichar ***formats, PRUint32 *allowedActionsSize, PRUint32 **allowedActions, PRUint32 *defaultAction) { return _to DragGHPending(screenId, formatsSize, formats, allowedActionsSize, allowedActions, defaultAction); } \
  NS_IMETHOD DragGHDropped(const PRUnichar *format, PRUint32 action, IProgress **progress) { return _to DragGHDropped(format, action, progress); } \
  NS_IMETHOD DragGHGetData(PRUint32 *dataSize, PRUint8 **data) { return _to DragGHGetData(dataSize, data); } \
  NS_IMETHOD CreateSession(const PRUnichar *user, const PRUnichar *password, const PRUnichar *domain, const PRUnichar *sessionName, IGuestSession **guestSession) { return _to CreateSession(user, password, domain, sessionName, guestSession); } \
  NS_IMETHOD FindSession(const PRUnichar *sessionName, PRUint32 *sessionsSize, IGuestSession ***sessions) { return _to FindSession(sessionName, sessionsSize, sessions); } \
  NS_IMETHOD UpdateGuestAdditions(const PRUnichar *source, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 flagsSize, PRUint32 *flags, IProgress **progress) { return _to UpdateGuestAdditions(source, argumentsSize, arguments, flagsSize, flags, progress); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUEST(_to) \
  NS_IMETHOD GetOSTypeId(PRUnichar * *aOSTypeId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOSTypeId(aOSTypeId); } \
  NS_IMETHOD GetAdditionsRunLevel(PRUint32 *aAdditionsRunLevel) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAdditionsRunLevel(aAdditionsRunLevel); } \
  NS_IMETHOD GetAdditionsVersion(PRUnichar * *aAdditionsVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAdditionsVersion(aAdditionsVersion); } \
  NS_IMETHOD GetAdditionsRevision(PRUint32 *aAdditionsRevision) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAdditionsRevision(aAdditionsRevision); } \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEventSource(aEventSource); } \
  NS_IMETHOD GetFacilities(PRUint32 *facilitiesSize, IAdditionsFacility ***facilities) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFacilities(facilitiesSize, facilities); } \
  NS_IMETHOD GetSessions(PRUint32 *sessionsSize, IGuestSession ***sessions) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSessions(sessionsSize, sessions); } \
  NS_IMETHOD GetMemoryBalloonSize(PRUint32 *aMemoryBalloonSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMemoryBalloonSize(aMemoryBalloonSize); } \
  NS_IMETHOD SetMemoryBalloonSize(PRUint32 aMemoryBalloonSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMemoryBalloonSize(aMemoryBalloonSize); } \
  NS_IMETHOD GetStatisticsUpdateInterval(PRUint32 *aStatisticsUpdateInterval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStatisticsUpdateInterval(aStatisticsUpdateInterval); } \
  NS_IMETHOD SetStatisticsUpdateInterval(PRUint32 aStatisticsUpdateInterval) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetStatisticsUpdateInterval(aStatisticsUpdateInterval); } \
  NS_IMETHOD InternalGetStatistics(PRUint32 *cpuUser, PRUint32 *cpuKernel, PRUint32 *cpuIdle, PRUint32 *memTotal, PRUint32 *memFree, PRUint32 *memBalloon, PRUint32 *memShared, PRUint32 *memCache, PRUint32 *pagedTotal, PRUint32 *memAllocTotal, PRUint32 *memFreeTotal, PRUint32 *memBalloonTotal, PRUint32 *memSharedTotal) { return !_to ? NS_ERROR_NULL_POINTER : _to->InternalGetStatistics(cpuUser, cpuKernel, cpuIdle, memTotal, memFree, memBalloon, memShared, memCache, pagedTotal, memAllocTotal, memFreeTotal, memBalloonTotal, memSharedTotal); } \
  NS_IMETHOD GetFacilityStatus(PRUint32 facility, PRInt64 *timestamp, PRUint32 *status) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFacilityStatus(facility, timestamp, status); } \
  NS_IMETHOD GetAdditionsStatus(PRUint32 level, PRBool *active) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAdditionsStatus(level, active); } \
  NS_IMETHOD SetCredentials(const PRUnichar *userName, const PRUnichar *password, const PRUnichar *domain, PRBool allowInteractiveLogon) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCredentials(userName, password, domain, allowInteractiveLogon); } \
  NS_IMETHOD DragHGEnter(PRUint32 screenId, PRUint32 y, PRUint32 x, PRUint32 defaultAction, PRUint32 allowedActionsSize, PRUint32 *allowedActions, PRUint32 formatsSize, const PRUnichar **formats, PRUint32 *resultAction) { return !_to ? NS_ERROR_NULL_POINTER : _to->DragHGEnter(screenId, y, x, defaultAction, allowedActionsSize, allowedActions, formatsSize, formats, resultAction); } \
  NS_IMETHOD DragHGMove(PRUint32 screenId, PRUint32 x, PRUint32 y, PRUint32 defaultAction, PRUint32 allowedActionsSize, PRUint32 *allowedActions, PRUint32 formatsSize, const PRUnichar **formats, PRUint32 *resultAction) { return !_to ? NS_ERROR_NULL_POINTER : _to->DragHGMove(screenId, x, y, defaultAction, allowedActionsSize, allowedActions, formatsSize, formats, resultAction); } \
  NS_IMETHOD DragHGLeave(PRUint32 screenId) { return !_to ? NS_ERROR_NULL_POINTER : _to->DragHGLeave(screenId); } \
  NS_IMETHOD DragHGDrop(PRUint32 screenId, PRUint32 x, PRUint32 y, PRUint32 defaultAction, PRUint32 allowedActionsSize, PRUint32 *allowedActions, PRUint32 formatsSize, const PRUnichar **formats, PRUnichar **format, PRUint32 *resultAction) { return !_to ? NS_ERROR_NULL_POINTER : _to->DragHGDrop(screenId, x, y, defaultAction, allowedActionsSize, allowedActions, formatsSize, formats, format, resultAction); } \
  NS_IMETHOD DragHGPutData(PRUint32 screenId, const PRUnichar *format, PRUint32 dataSize, PRUint8 *data, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->DragHGPutData(screenId, format, dataSize, data, progress); } \
  NS_IMETHOD DragGHPending(PRUint32 screenId, PRUint32 *formatsSize, PRUnichar ***formats, PRUint32 *allowedActionsSize, PRUint32 **allowedActions, PRUint32 *defaultAction) { return !_to ? NS_ERROR_NULL_POINTER : _to->DragGHPending(screenId, formatsSize, formats, allowedActionsSize, allowedActions, defaultAction); } \
  NS_IMETHOD DragGHDropped(const PRUnichar *format, PRUint32 action, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->DragGHDropped(format, action, progress); } \
  NS_IMETHOD DragGHGetData(PRUint32 *dataSize, PRUint8 **data) { return !_to ? NS_ERROR_NULL_POINTER : _to->DragGHGetData(dataSize, data); } \
  NS_IMETHOD CreateSession(const PRUnichar *user, const PRUnichar *password, const PRUnichar *domain, const PRUnichar *sessionName, IGuestSession **guestSession) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateSession(user, password, domain, sessionName, guestSession); } \
  NS_IMETHOD FindSession(const PRUnichar *sessionName, PRUint32 *sessionsSize, IGuestSession ***sessions) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindSession(sessionName, sessionsSize, sessions); } \
  NS_IMETHOD UpdateGuestAdditions(const PRUnichar *source, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 flagsSize, PRUint32 *flags, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateGuestAdditions(source, argumentsSize, arguments, flagsSize, flags, progress); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuest
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUEST

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuest)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring OSTypeId; */
NS_IMETHODIMP _MYCLASS_::GetOSTypeId(PRUnichar * *aOSTypeId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 additionsRunLevel; */
NS_IMETHODIMP _MYCLASS_::GetAdditionsRunLevel(PRUint32 *aAdditionsRunLevel)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring additionsVersion; */
NS_IMETHODIMP _MYCLASS_::GetAdditionsVersion(PRUnichar * *aAdditionsVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long additionsRevision; */
NS_IMETHODIMP _MYCLASS_::GetAdditionsRevision(PRUint32 *aAdditionsRevision)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IEventSource eventSource; */
NS_IMETHODIMP _MYCLASS_::GetEventSource(IEventSource * *aEventSource)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getFacilities (out unsigned long facilitiesSize, [array, size_is (facilitiesSize), retval] out IAdditionsFacility facilities); */
NS_IMETHODIMP _MYCLASS_::GetFacilities(PRUint32 *facilitiesSize, IAdditionsFacility ***facilities)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getSessions (out unsigned long sessionsSize, [array, size_is (sessionsSize), retval] out IGuestSession sessions); */
NS_IMETHODIMP _MYCLASS_::GetSessions(PRUint32 *sessionsSize, IGuestSession ***sessions)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long memoryBalloonSize; */
NS_IMETHODIMP _MYCLASS_::GetMemoryBalloonSize(PRUint32 *aMemoryBalloonSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetMemoryBalloonSize(PRUint32 aMemoryBalloonSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long statisticsUpdateInterval; */
NS_IMETHODIMP _MYCLASS_::GetStatisticsUpdateInterval(PRUint32 *aStatisticsUpdateInterval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetStatisticsUpdateInterval(PRUint32 aStatisticsUpdateInterval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void internalGetStatistics (out unsigned long cpuUser, out unsigned long cpuKernel, out unsigned long cpuIdle, out unsigned long memTotal, out unsigned long memFree, out unsigned long memBalloon, out unsigned long memShared, out unsigned long memCache, out unsigned long pagedTotal, out unsigned long memAllocTotal, out unsigned long memFreeTotal, out unsigned long memBalloonTotal, out unsigned long memSharedTotal); */
NS_IMETHODIMP _MYCLASS_::InternalGetStatistics(PRUint32 *cpuUser, PRUint32 *cpuKernel, PRUint32 *cpuIdle, PRUint32 *memTotal, PRUint32 *memFree, PRUint32 *memBalloon, PRUint32 *memShared, PRUint32 *memCache, PRUint32 *pagedTotal, PRUint32 *memAllocTotal, PRUint32 *memFreeTotal, PRUint32 *memBalloonTotal, PRUint32 *memSharedTotal)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getFacilityStatus (in PRUint32 facility, out long long timestamp, [retval] out PRUint32 status); */
NS_IMETHODIMP _MYCLASS_::GetFacilityStatus(PRUint32 facility, PRInt64 *timestamp, PRUint32 *status)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getAdditionsStatus (in PRUint32 level, [retval] out boolean active); */
NS_IMETHODIMP _MYCLASS_::GetAdditionsStatus(PRUint32 level, PRBool *active)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setCredentials (in wstring userName, in wstring password, in wstring domain, in boolean allowInteractiveLogon); */
NS_IMETHODIMP _MYCLASS_::SetCredentials(const PRUnichar *userName, const PRUnichar *password, const PRUnichar *domain, PRBool allowInteractiveLogon)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void dragHGEnter (in unsigned long screenId, in unsigned long y, in unsigned long x, in PRUint32 defaultAction, in unsigned long allowedActionsSize, [array, size_is (allowedActionsSize)] in PRUint32 allowedActions, in unsigned long formatsSize, [array, size_is (formatsSize)] in wstring formats, [retval] out PRUint32 resultAction); */
NS_IMETHODIMP _MYCLASS_::DragHGEnter(PRUint32 screenId, PRUint32 y, PRUint32 x, PRUint32 defaultAction, PRUint32 allowedActionsSize, PRUint32 *allowedActions, PRUint32 formatsSize, const PRUnichar **formats, PRUint32 *resultAction)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void dragHGMove (in unsigned long screenId, in unsigned long x, in unsigned long y, in PRUint32 defaultAction, in unsigned long allowedActionsSize, [array, size_is (allowedActionsSize)] in PRUint32 allowedActions, in unsigned long formatsSize, [array, size_is (formatsSize)] in wstring formats, [retval] out PRUint32 resultAction); */
NS_IMETHODIMP _MYCLASS_::DragHGMove(PRUint32 screenId, PRUint32 x, PRUint32 y, PRUint32 defaultAction, PRUint32 allowedActionsSize, PRUint32 *allowedActions, PRUint32 formatsSize, const PRUnichar **formats, PRUint32 *resultAction)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void dragHGLeave (in unsigned long screenId); */
NS_IMETHODIMP _MYCLASS_::DragHGLeave(PRUint32 screenId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void dragHGDrop (in unsigned long screenId, in unsigned long x, in unsigned long y, in PRUint32 defaultAction, in unsigned long allowedActionsSize, [array, size_is (allowedActionsSize)] in PRUint32 allowedActions, in unsigned long formatsSize, [array, size_is (formatsSize)] in wstring formats, out wstring format, [retval] out PRUint32 resultAction); */
NS_IMETHODIMP _MYCLASS_::DragHGDrop(PRUint32 screenId, PRUint32 x, PRUint32 y, PRUint32 defaultAction, PRUint32 allowedActionsSize, PRUint32 *allowedActions, PRUint32 formatsSize, const PRUnichar **formats, PRUnichar **format, PRUint32 *resultAction)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void dragHGPutData (in unsigned long screenId, in wstring format, in unsigned long dataSize, [array, size_is (dataSize)] in octet data, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::DragHGPutData(PRUint32 screenId, const PRUnichar *format, PRUint32 dataSize, PRUint8 *data, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void dragGHPending (in unsigned long screenId, out unsigned long formatsSize, [array, size_is (formatsSize)] out wstring formats, out unsigned long allowedActionsSize, [array, size_is (allowedActionsSize)] out PRUint32 allowedActions, [retval] out PRUint32 defaultAction); */
NS_IMETHODIMP _MYCLASS_::DragGHPending(PRUint32 screenId, PRUint32 *formatsSize, PRUnichar ***formats, PRUint32 *allowedActionsSize, PRUint32 **allowedActions, PRUint32 *defaultAction)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void dragGHDropped (in wstring format, in PRUint32 action, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::DragGHDropped(const PRUnichar *format, PRUint32 action, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void dragGHGetData (out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
NS_IMETHODIMP _MYCLASS_::DragGHGetData(PRUint32 *dataSize, PRUint8 **data)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createSession (in wstring user, in wstring password, in wstring domain, in wstring sessionName, [retval] out IGuestSession guestSession); */
NS_IMETHODIMP _MYCLASS_::CreateSession(const PRUnichar *user, const PRUnichar *password, const PRUnichar *domain, const PRUnichar *sessionName, IGuestSession **guestSession)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findSession (in wstring sessionName, out unsigned long sessionsSize, [array, size_is (sessionsSize), retval] out IGuestSession sessions); */
NS_IMETHODIMP _MYCLASS_::FindSession(const PRUnichar *sessionName, PRUint32 *sessionsSize, IGuestSession ***sessions)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void updateGuestAdditions (in wstring source, in unsigned long argumentsSize, [array, size_is (argumentsSize)] in wstring arguments, in unsigned long flagsSize, [array, size_is (flagsSize)] in PRUint32 flags, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::UpdateGuestAdditions(const PRUnichar *source, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 flagsSize, PRUint32 *flags, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuest_GETTER_OSTypeId_TO(smth) NS_IMETHOD GetOSTypeId (PRUnichar * * aOSTypeId) { return smth GetOSTypeId (aOSTypeId); }
#define COM_FORWARD_IGuest_GETTER_OSTypeId_TO_OBJ(obj) COM_FORWARD_IGuest_GETTER_OSTypeId_TO ((obj)->)
#define COM_FORWARD_IGuest_GETTER_OSTypeId_TO_BASE(base) COM_FORWARD_IGuest_GETTER_OSTypeId_TO (base::)
#define COM_FORWARD_IGuest_GETTER_AdditionsRunLevel_TO(smth) NS_IMETHOD GetAdditionsRunLevel (PRUint32 * aAdditionsRunLevel) { return smth GetAdditionsRunLevel (aAdditionsRunLevel); }
#define COM_FORWARD_IGuest_GETTER_AdditionsRunLevel_TO_OBJ(obj) COM_FORWARD_IGuest_GETTER_AdditionsRunLevel_TO ((obj)->)
#define COM_FORWARD_IGuest_GETTER_AdditionsRunLevel_TO_BASE(base) COM_FORWARD_IGuest_GETTER_AdditionsRunLevel_TO (base::)
#define COM_FORWARD_IGuest_GETTER_AdditionsVersion_TO(smth) NS_IMETHOD GetAdditionsVersion (PRUnichar * * aAdditionsVersion) { return smth GetAdditionsVersion (aAdditionsVersion); }
#define COM_FORWARD_IGuest_GETTER_AdditionsVersion_TO_OBJ(obj) COM_FORWARD_IGuest_GETTER_AdditionsVersion_TO ((obj)->)
#define COM_FORWARD_IGuest_GETTER_AdditionsVersion_TO_BASE(base) COM_FORWARD_IGuest_GETTER_AdditionsVersion_TO (base::)
#define COM_FORWARD_IGuest_GETTER_AdditionsRevision_TO(smth) NS_IMETHOD GetAdditionsRevision (PRUint32 * aAdditionsRevision) { return smth GetAdditionsRevision (aAdditionsRevision); }
#define COM_FORWARD_IGuest_GETTER_AdditionsRevision_TO_OBJ(obj) COM_FORWARD_IGuest_GETTER_AdditionsRevision_TO ((obj)->)
#define COM_FORWARD_IGuest_GETTER_AdditionsRevision_TO_BASE(base) COM_FORWARD_IGuest_GETTER_AdditionsRevision_TO (base::)
#define COM_FORWARD_IGuest_GETTER_EventSource_TO(smth) NS_IMETHOD GetEventSource (IEventSource * * aEventSource) { return smth GetEventSource (aEventSource); }
#define COM_FORWARD_IGuest_GETTER_EventSource_TO_OBJ(obj) COM_FORWARD_IGuest_GETTER_EventSource_TO ((obj)->)
#define COM_FORWARD_IGuest_GETTER_EventSource_TO_BASE(base) COM_FORWARD_IGuest_GETTER_EventSource_TO (base::)
#define COM_FORWARD_IGuest_GETTER_Facilities_TO(smth) NS_IMETHOD GetFacilities (PRUint32 * aFacilitiesSize, IAdditionsFacility * * * aFacilities) { return smth GetFacilities (aFacilitiesSize, aFacilities); }
#define COM_FORWARD_IGuest_GETTER_Facilities_TO_OBJ(obj) COM_FORWARD_IGuest_GETTER_Facilities_TO ((obj)->)
#define COM_FORWARD_IGuest_GETTER_Facilities_TO_BASE(base) COM_FORWARD_IGuest_GETTER_Facilities_TO (base::)
#define COM_FORWARD_IGuest_GETTER_Sessions_TO(smth) NS_IMETHOD GetSessions (PRUint32 * aSessionsSize, IGuestSession * * * aSessions) { return smth GetSessions (aSessionsSize, aSessions); }
#define COM_FORWARD_IGuest_GETTER_Sessions_TO_OBJ(obj) COM_FORWARD_IGuest_GETTER_Sessions_TO ((obj)->)
#define COM_FORWARD_IGuest_GETTER_Sessions_TO_BASE(base) COM_FORWARD_IGuest_GETTER_Sessions_TO (base::)
#define COM_FORWARD_IGuest_GETTER_MemoryBalloonSize_TO(smth) NS_IMETHOD GetMemoryBalloonSize (PRUint32 * aMemoryBalloonSize) { return smth GetMemoryBalloonSize (aMemoryBalloonSize); }
#define COM_FORWARD_IGuest_GETTER_MemoryBalloonSize_TO_OBJ(obj) COM_FORWARD_IGuest_GETTER_MemoryBalloonSize_TO ((obj)->)
#define COM_FORWARD_IGuest_GETTER_MemoryBalloonSize_TO_BASE(base) COM_FORWARD_IGuest_GETTER_MemoryBalloonSize_TO (base::)
#define COM_FORWARD_IGuest_SETTER_MemoryBalloonSize_TO(smth) NS_IMETHOD SetMemoryBalloonSize (PRUint32 aMemoryBalloonSize) { return smth SetMemoryBalloonSize (aMemoryBalloonSize); }
#define COM_FORWARD_IGuest_SETTER_MemoryBalloonSize_TO_OBJ(obj) COM_FORWARD_IGuest_SETTER_MemoryBalloonSize_TO ((obj)->)
#define COM_FORWARD_IGuest_SETTER_MemoryBalloonSize_TO_BASE(base) COM_FORWARD_IGuest_SETTER_MemoryBalloonSize_TO (base::)
#define COM_FORWARD_IGuest_GETTER_StatisticsUpdateInterval_TO(smth) NS_IMETHOD GetStatisticsUpdateInterval (PRUint32 * aStatisticsUpdateInterval) { return smth GetStatisticsUpdateInterval (aStatisticsUpdateInterval); }
#define COM_FORWARD_IGuest_GETTER_StatisticsUpdateInterval_TO_OBJ(obj) COM_FORWARD_IGuest_GETTER_StatisticsUpdateInterval_TO ((obj)->)
#define COM_FORWARD_IGuest_GETTER_StatisticsUpdateInterval_TO_BASE(base) COM_FORWARD_IGuest_GETTER_StatisticsUpdateInterval_TO (base::)
#define COM_FORWARD_IGuest_SETTER_StatisticsUpdateInterval_TO(smth) NS_IMETHOD SetStatisticsUpdateInterval (PRUint32 aStatisticsUpdateInterval) { return smth SetStatisticsUpdateInterval (aStatisticsUpdateInterval); }
#define COM_FORWARD_IGuest_SETTER_StatisticsUpdateInterval_TO_OBJ(obj) COM_FORWARD_IGuest_SETTER_StatisticsUpdateInterval_TO ((obj)->)
#define COM_FORWARD_IGuest_SETTER_StatisticsUpdateInterval_TO_BASE(base) COM_FORWARD_IGuest_SETTER_StatisticsUpdateInterval_TO (base::)
#define COM_FORWARD_IGuest_InternalGetStatistics_TO(smth) NS_IMETHOD InternalGetStatistics (PRUint32 * aCpuUser, PRUint32 * aCpuKernel, PRUint32 * aCpuIdle, PRUint32 * aMemTotal, PRUint32 * aMemFree, PRUint32 * aMemBalloon, PRUint32 * aMemShared, PRUint32 * aMemCache, PRUint32 * aPagedTotal, PRUint32 * aMemAllocTotal, PRUint32 * aMemFreeTotal, PRUint32 * aMemBalloonTotal, PRUint32 * aMemSharedTotal) { return smth InternalGetStatistics (aCpuUser, aCpuKernel, aCpuIdle, aMemTotal, aMemFree, aMemBalloon, aMemShared, aMemCache, aPagedTotal, aMemAllocTotal, aMemFreeTotal, aMemBalloonTotal, aMemSharedTotal); }
#define COM_FORWARD_IGuest_InternalGetStatistics_TO_OBJ(obj) COM_FORWARD_IGuest_InternalGetStatistics_TO ((obj)->)
#define COM_FORWARD_IGuest_InternalGetStatistics_TO_BASE(base) COM_FORWARD_IGuest_InternalGetStatistics_TO (base::)
#define COM_FORWARD_IGuest_GetFacilityStatus_TO(smth) NS_IMETHOD GetFacilityStatus (PRUint32 aFacility, PRInt64 * aTimestamp, PRUint32 * aStatus) { return smth GetFacilityStatus (aFacility, aTimestamp, aStatus); }
#define COM_FORWARD_IGuest_GetFacilityStatus_TO_OBJ(obj) COM_FORWARD_IGuest_GetFacilityStatus_TO ((obj)->)
#define COM_FORWARD_IGuest_GetFacilityStatus_TO_BASE(base) COM_FORWARD_IGuest_GetFacilityStatus_TO (base::)
#define COM_FORWARD_IGuest_GetAdditionsStatus_TO(smth) NS_IMETHOD GetAdditionsStatus (PRUint32 aLevel, PRBool * aActive) { return smth GetAdditionsStatus (aLevel, aActive); }
#define COM_FORWARD_IGuest_GetAdditionsStatus_TO_OBJ(obj) COM_FORWARD_IGuest_GetAdditionsStatus_TO ((obj)->)
#define COM_FORWARD_IGuest_GetAdditionsStatus_TO_BASE(base) COM_FORWARD_IGuest_GetAdditionsStatus_TO (base::)
#define COM_FORWARD_IGuest_SetCredentials_TO(smth) NS_IMETHOD SetCredentials (PRUnichar * aUserName, PRUnichar * aPassword, PRUnichar * aDomain, PRBool aAllowInteractiveLogon) { return smth SetCredentials (aUserName, aPassword, aDomain, aAllowInteractiveLogon); }
#define COM_FORWARD_IGuest_SetCredentials_TO_OBJ(obj) COM_FORWARD_IGuest_SetCredentials_TO ((obj)->)
#define COM_FORWARD_IGuest_SetCredentials_TO_BASE(base) COM_FORWARD_IGuest_SetCredentials_TO (base::)
#define COM_FORWARD_IGuest_DragHGEnter_TO(smth) NS_IMETHOD DragHGEnter (PRUint32 aScreenId, PRUint32 aY, PRUint32 aX, PRUint32 aDefaultAction, PRUint32 aAllowedActionsSize, PRUint32 * aAllowedActions, PRUint32 aFormatsSize, PRUnichar * * aFormats, PRUint32 * aResultAction) { return smth DragHGEnter (aScreenId, aY, aX, aDefaultAction, aAllowedActionsSize+++, aAllowedActions, aFormatsSize+++, aFormats, aResultAction); }
#define COM_FORWARD_IGuest_DragHGEnter_TO_OBJ(obj) COM_FORWARD_IGuest_DragHGEnter_TO ((obj)->)
#define COM_FORWARD_IGuest_DragHGEnter_TO_BASE(base) COM_FORWARD_IGuest_DragHGEnter_TO (base::)
#define COM_FORWARD_IGuest_DragHGMove_TO(smth) NS_IMETHOD DragHGMove (PRUint32 aScreenId, PRUint32 aX, PRUint32 aY, PRUint32 aDefaultAction, PRUint32 aAllowedActionsSize, PRUint32 * aAllowedActions, PRUint32 aFormatsSize, PRUnichar * * aFormats, PRUint32 * aResultAction) { return smth DragHGMove (aScreenId, aX, aY, aDefaultAction, aAllowedActionsSize+++, aAllowedActions, aFormatsSize+++, aFormats, aResultAction); }
#define COM_FORWARD_IGuest_DragHGMove_TO_OBJ(obj) COM_FORWARD_IGuest_DragHGMove_TO ((obj)->)
#define COM_FORWARD_IGuest_DragHGMove_TO_BASE(base) COM_FORWARD_IGuest_DragHGMove_TO (base::)
#define COM_FORWARD_IGuest_DragHGLeave_TO(smth) NS_IMETHOD DragHGLeave (PRUint32 aScreenId) { return smth DragHGLeave (aScreenId); }
#define COM_FORWARD_IGuest_DragHGLeave_TO_OBJ(obj) COM_FORWARD_IGuest_DragHGLeave_TO ((obj)->)
#define COM_FORWARD_IGuest_DragHGLeave_TO_BASE(base) COM_FORWARD_IGuest_DragHGLeave_TO (base::)
#define COM_FORWARD_IGuest_DragHGDrop_TO(smth) NS_IMETHOD DragHGDrop (PRUint32 aScreenId, PRUint32 aX, PRUint32 aY, PRUint32 aDefaultAction, PRUint32 aAllowedActionsSize, PRUint32 * aAllowedActions, PRUint32 aFormatsSize, PRUnichar * * aFormats, PRUnichar * * aFormat, PRUint32 * aResultAction) { return smth DragHGDrop (aScreenId, aX, aY, aDefaultAction, aAllowedActionsSize+++, aAllowedActions, aFormatsSize+++, aFormats, aFormat, aResultAction); }
#define COM_FORWARD_IGuest_DragHGDrop_TO_OBJ(obj) COM_FORWARD_IGuest_DragHGDrop_TO ((obj)->)
#define COM_FORWARD_IGuest_DragHGDrop_TO_BASE(base) COM_FORWARD_IGuest_DragHGDrop_TO (base::)
#define COM_FORWARD_IGuest_DragHGPutData_TO(smth) NS_IMETHOD DragHGPutData (PRUint32 aScreenId, PRUnichar * aFormat, PRUint32 aDataSize, PRUint8 * aData, IProgress * * aProgress) { return smth DragHGPutData (aScreenId, aFormat, aDataSize+++, aData, aProgress); }
#define COM_FORWARD_IGuest_DragHGPutData_TO_OBJ(obj) COM_FORWARD_IGuest_DragHGPutData_TO ((obj)->)
#define COM_FORWARD_IGuest_DragHGPutData_TO_BASE(base) COM_FORWARD_IGuest_DragHGPutData_TO (base::)
#define COM_FORWARD_IGuest_DragGHPending_TO(smth) NS_IMETHOD DragGHPending (PRUint32 aScreenId, PRUint32 * aFormatsSize, PRUnichar * * * aFormats, PRUint32 * aAllowedActionsSize, PRUint32 * * aAllowedActions, PRUint32 * aDefaultAction) { return smth DragGHPending (aScreenId, aFormatsSize+++, aFormats, aAllowedActionsSize+++, aAllowedActions, aDefaultAction); }
#define COM_FORWARD_IGuest_DragGHPending_TO_OBJ(obj) COM_FORWARD_IGuest_DragGHPending_TO ((obj)->)
#define COM_FORWARD_IGuest_DragGHPending_TO_BASE(base) COM_FORWARD_IGuest_DragGHPending_TO (base::)
#define COM_FORWARD_IGuest_DragGHDropped_TO(smth) NS_IMETHOD DragGHDropped (PRUnichar * aFormat, PRUint32 aAction, IProgress * * aProgress) { return smth DragGHDropped (aFormat, aAction, aProgress); }
#define COM_FORWARD_IGuest_DragGHDropped_TO_OBJ(obj) COM_FORWARD_IGuest_DragGHDropped_TO ((obj)->)
#define COM_FORWARD_IGuest_DragGHDropped_TO_BASE(base) COM_FORWARD_IGuest_DragGHDropped_TO (base::)
#define COM_FORWARD_IGuest_DragGHGetData_TO(smth) NS_IMETHOD DragGHGetData (PRUint32 * aDataSize, PRUint8 * * aData) { return smth DragGHGetData (aDataSize, aData); }
#define COM_FORWARD_IGuest_DragGHGetData_TO_OBJ(obj) COM_FORWARD_IGuest_DragGHGetData_TO ((obj)->)
#define COM_FORWARD_IGuest_DragGHGetData_TO_BASE(base) COM_FORWARD_IGuest_DragGHGetData_TO (base::)
#define COM_FORWARD_IGuest_CreateSession_TO(smth) NS_IMETHOD CreateSession (PRUnichar * aUser, PRUnichar * aPassword, PRUnichar * aDomain, PRUnichar * aSessionName, IGuestSession * * aGuestSession) { return smth CreateSession (aUser, aPassword, aDomain, aSessionName, aGuestSession); }
#define COM_FORWARD_IGuest_CreateSession_TO_OBJ(obj) COM_FORWARD_IGuest_CreateSession_TO ((obj)->)
#define COM_FORWARD_IGuest_CreateSession_TO_BASE(base) COM_FORWARD_IGuest_CreateSession_TO (base::)
#define COM_FORWARD_IGuest_FindSession_TO(smth) NS_IMETHOD FindSession (PRUnichar * aSessionName, PRUint32 * aSessionsSize, IGuestSession * * * aSessions) { return smth FindSession (aSessionName, aSessionsSize, aSessions); }
#define COM_FORWARD_IGuest_FindSession_TO_OBJ(obj) COM_FORWARD_IGuest_FindSession_TO ((obj)->)
#define COM_FORWARD_IGuest_FindSession_TO_BASE(base) COM_FORWARD_IGuest_FindSession_TO (base::)
#define COM_FORWARD_IGuest_UpdateGuestAdditions_TO(smth) NS_IMETHOD UpdateGuestAdditions (PRUnichar * aSource, PRUint32 aArgumentsSize, PRUnichar * * aArguments, PRUint32 aFlagsSize, PRUint32 * aFlags, IProgress * * aProgress) { return smth UpdateGuestAdditions (aSource, aArgumentsSize+++, aArguments, aFlagsSize+++, aFlags, aProgress); }
#define COM_FORWARD_IGuest_UpdateGuestAdditions_TO_OBJ(obj) COM_FORWARD_IGuest_UpdateGuestAdditions_TO ((obj)->)
#define COM_FORWARD_IGuest_UpdateGuestAdditions_TO_BASE(base) COM_FORWARD_IGuest_UpdateGuestAdditions_TO (base::)
#define COM_FORWARD_IGuest_TO(smth) NS_FORWARD_IGUEST (smth)
#define COM_FORWARD_IGuest_TO_OBJ(obj) COM_FORWARD_IGuest_TO ((obj)->)
#define COM_FORWARD_IGuest_TO_BASE(base) COM_FORWARD_IGuest_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuest;

/* starting interface:    IProgress */
#define IPROGRESS_IID_STR "c20238e4-3221-4d3f-8891-81ce92d9f913"

#define IPROGRESS_IID \
  {0xc20238e4, 0x3221, 0x4d3f, \
    { 0x88, 0x91, 0x81, 0xce, 0x92, 0xd9, 0xf9, 0x13 }}

class NS_NO_VTABLE IProgress : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IPROGRESS_IID)

  /* readonly attribute wstring id; */
  NS_IMETHOD GetId(PRUnichar * *aId) = 0;

  /* readonly attribute wstring description; */
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) = 0;

  /* readonly attribute nsISupports initiator; */
  NS_IMETHOD GetInitiator(nsISupports * *aInitiator) = 0;

  /* readonly attribute boolean cancelable; */
  NS_IMETHOD GetCancelable(PRBool *aCancelable) = 0;

  /* readonly attribute unsigned long percent; */
  NS_IMETHOD GetPercent(PRUint32 *aPercent) = 0;

  /* readonly attribute long timeRemaining; */
  NS_IMETHOD GetTimeRemaining(PRInt32 *aTimeRemaining) = 0;

  /* readonly attribute boolean completed; */
  NS_IMETHOD GetCompleted(PRBool *aCompleted) = 0;

  /* readonly attribute boolean canceled; */
  NS_IMETHOD GetCanceled(PRBool *aCanceled) = 0;

  /* readonly attribute long resultCode; */
  NS_IMETHOD GetResultCode(PRInt32 *aResultCode) = 0;

  /* readonly attribute IVirtualBoxErrorInfo errorInfo; */
  NS_IMETHOD GetErrorInfo(IVirtualBoxErrorInfo * *aErrorInfo) = 0;

  /* readonly attribute unsigned long operationCount; */
  NS_IMETHOD GetOperationCount(PRUint32 *aOperationCount) = 0;

  /* readonly attribute unsigned long operation; */
  NS_IMETHOD GetOperation(PRUint32 *aOperation) = 0;

  /* readonly attribute wstring operationDescription; */
  NS_IMETHOD GetOperationDescription(PRUnichar * *aOperationDescription) = 0;

  /* readonly attribute unsigned long operationPercent; */
  NS_IMETHOD GetOperationPercent(PRUint32 *aOperationPercent) = 0;

  /* readonly attribute unsigned long operationWeight; */
  NS_IMETHOD GetOperationWeight(PRUint32 *aOperationWeight) = 0;

  /* attribute unsigned long timeout; */
  NS_IMETHOD GetTimeout(PRUint32 *aTimeout) = 0;
  NS_IMETHOD SetTimeout(PRUint32 aTimeout) = 0;

  /* void setCurrentOperationProgress (in unsigned long percent); */
  NS_IMETHOD SetCurrentOperationProgress(PRUint32 percent) = 0;

  /* void setNextOperation (in wstring nextOperationDescription, in unsigned long nextOperationsWeight); */
  NS_IMETHOD SetNextOperation(const PRUnichar *nextOperationDescription, PRUint32 nextOperationsWeight) = 0;

  /* void waitForCompletion (in long timeout); */
  NS_IMETHOD WaitForCompletion(PRInt32 timeout) = 0;

  /* void waitForOperationCompletion (in unsigned long operation, in long timeout); */
  NS_IMETHOD WaitForOperationCompletion(PRUint32 operation, PRInt32 timeout) = 0;

  /* void waitForAsyncProgressCompletion (in IProgress pProgressAsync); */
  NS_IMETHOD WaitForAsyncProgressCompletion(IProgress *pProgressAsync) = 0;

  /* void cancel (); */
  NS_IMETHOD Cancel(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IPROGRESS \
  NS_IMETHOD GetId(PRUnichar * *aId); \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription); \
  NS_IMETHOD GetInitiator(nsISupports * *aInitiator); \
  NS_IMETHOD GetCancelable(PRBool *aCancelable); \
  NS_IMETHOD GetPercent(PRUint32 *aPercent); \
  NS_IMETHOD GetTimeRemaining(PRInt32 *aTimeRemaining); \
  NS_IMETHOD GetCompleted(PRBool *aCompleted); \
  NS_IMETHOD GetCanceled(PRBool *aCanceled); \
  NS_IMETHOD GetResultCode(PRInt32 *aResultCode); \
  NS_IMETHOD GetErrorInfo(IVirtualBoxErrorInfo * *aErrorInfo); \
  NS_IMETHOD GetOperationCount(PRUint32 *aOperationCount); \
  NS_IMETHOD GetOperation(PRUint32 *aOperation); \
  NS_IMETHOD GetOperationDescription(PRUnichar * *aOperationDescription); \
  NS_IMETHOD GetOperationPercent(PRUint32 *aOperationPercent); \
  NS_IMETHOD GetOperationWeight(PRUint32 *aOperationWeight); \
  NS_IMETHOD GetTimeout(PRUint32 *aTimeout); \
  NS_IMETHOD SetTimeout(PRUint32 aTimeout); \
  NS_IMETHOD SetCurrentOperationProgress(PRUint32 percent); \
  NS_IMETHOD SetNextOperation(const PRUnichar *nextOperationDescription, PRUint32 nextOperationsWeight); \
  NS_IMETHOD WaitForCompletion(PRInt32 timeout); \
  NS_IMETHOD WaitForOperationCompletion(PRUint32 operation, PRInt32 timeout); \
  NS_IMETHOD WaitForAsyncProgressCompletion(IProgress *pProgressAsync); \
  NS_IMETHOD Cancel(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IPROGRESS(_to) \
  NS_IMETHOD GetId(PRUnichar * *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return _to GetDescription(aDescription); } \
  NS_IMETHOD GetInitiator(nsISupports * *aInitiator) { return _to GetInitiator(aInitiator); } \
  NS_IMETHOD GetCancelable(PRBool *aCancelable) { return _to GetCancelable(aCancelable); } \
  NS_IMETHOD GetPercent(PRUint32 *aPercent) { return _to GetPercent(aPercent); } \
  NS_IMETHOD GetTimeRemaining(PRInt32 *aTimeRemaining) { return _to GetTimeRemaining(aTimeRemaining); } \
  NS_IMETHOD GetCompleted(PRBool *aCompleted) { return _to GetCompleted(aCompleted); } \
  NS_IMETHOD GetCanceled(PRBool *aCanceled) { return _to GetCanceled(aCanceled); } \
  NS_IMETHOD GetResultCode(PRInt32 *aResultCode) { return _to GetResultCode(aResultCode); } \
  NS_IMETHOD GetErrorInfo(IVirtualBoxErrorInfo * *aErrorInfo) { return _to GetErrorInfo(aErrorInfo); } \
  NS_IMETHOD GetOperationCount(PRUint32 *aOperationCount) { return _to GetOperationCount(aOperationCount); } \
  NS_IMETHOD GetOperation(PRUint32 *aOperation) { return _to GetOperation(aOperation); } \
  NS_IMETHOD GetOperationDescription(PRUnichar * *aOperationDescription) { return _to GetOperationDescription(aOperationDescription); } \
  NS_IMETHOD GetOperationPercent(PRUint32 *aOperationPercent) { return _to GetOperationPercent(aOperationPercent); } \
  NS_IMETHOD GetOperationWeight(PRUint32 *aOperationWeight) { return _to GetOperationWeight(aOperationWeight); } \
  NS_IMETHOD GetTimeout(PRUint32 *aTimeout) { return _to GetTimeout(aTimeout); } \
  NS_IMETHOD SetTimeout(PRUint32 aTimeout) { return _to SetTimeout(aTimeout); } \
  NS_IMETHOD SetCurrentOperationProgress(PRUint32 percent) { return _to SetCurrentOperationProgress(percent); } \
  NS_IMETHOD SetNextOperation(const PRUnichar *nextOperationDescription, PRUint32 nextOperationsWeight) { return _to SetNextOperation(nextOperationDescription, nextOperationsWeight); } \
  NS_IMETHOD WaitForCompletion(PRInt32 timeout) { return _to WaitForCompletion(timeout); } \
  NS_IMETHOD WaitForOperationCompletion(PRUint32 operation, PRInt32 timeout) { return _to WaitForOperationCompletion(operation, timeout); } \
  NS_IMETHOD WaitForAsyncProgressCompletion(IProgress *pProgressAsync) { return _to WaitForAsyncProgressCompletion(pProgressAsync); } \
  NS_IMETHOD Cancel(void) { return _to Cancel(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IPROGRESS(_to) \
  NS_IMETHOD GetId(PRUnichar * *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } \
  NS_IMETHOD GetInitiator(nsISupports * *aInitiator) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInitiator(aInitiator); } \
  NS_IMETHOD GetCancelable(PRBool *aCancelable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCancelable(aCancelable); } \
  NS_IMETHOD GetPercent(PRUint32 *aPercent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPercent(aPercent); } \
  NS_IMETHOD GetTimeRemaining(PRInt32 *aTimeRemaining) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTimeRemaining(aTimeRemaining); } \
  NS_IMETHOD GetCompleted(PRBool *aCompleted) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCompleted(aCompleted); } \
  NS_IMETHOD GetCanceled(PRBool *aCanceled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCanceled(aCanceled); } \
  NS_IMETHOD GetResultCode(PRInt32 *aResultCode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetResultCode(aResultCode); } \
  NS_IMETHOD GetErrorInfo(IVirtualBoxErrorInfo * *aErrorInfo) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetErrorInfo(aErrorInfo); } \
  NS_IMETHOD GetOperationCount(PRUint32 *aOperationCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOperationCount(aOperationCount); } \
  NS_IMETHOD GetOperation(PRUint32 *aOperation) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOperation(aOperation); } \
  NS_IMETHOD GetOperationDescription(PRUnichar * *aOperationDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOperationDescription(aOperationDescription); } \
  NS_IMETHOD GetOperationPercent(PRUint32 *aOperationPercent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOperationPercent(aOperationPercent); } \
  NS_IMETHOD GetOperationWeight(PRUint32 *aOperationWeight) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOperationWeight(aOperationWeight); } \
  NS_IMETHOD GetTimeout(PRUint32 *aTimeout) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTimeout(aTimeout); } \
  NS_IMETHOD SetTimeout(PRUint32 aTimeout) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTimeout(aTimeout); } \
  NS_IMETHOD SetCurrentOperationProgress(PRUint32 percent) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCurrentOperationProgress(percent); } \
  NS_IMETHOD SetNextOperation(const PRUnichar *nextOperationDescription, PRUint32 nextOperationsWeight) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNextOperation(nextOperationDescription, nextOperationsWeight); } \
  NS_IMETHOD WaitForCompletion(PRInt32 timeout) { return !_to ? NS_ERROR_NULL_POINTER : _to->WaitForCompletion(timeout); } \
  NS_IMETHOD WaitForOperationCompletion(PRUint32 operation, PRInt32 timeout) { return !_to ? NS_ERROR_NULL_POINTER : _to->WaitForOperationCompletion(operation, timeout); } \
  NS_IMETHOD WaitForAsyncProgressCompletion(IProgress *pProgressAsync) { return !_to ? NS_ERROR_NULL_POINTER : _to->WaitForAsyncProgressCompletion(pProgressAsync); } \
  NS_IMETHOD Cancel(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Cancel(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IProgress
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IPROGRESS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IProgress)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring id; */
NS_IMETHODIMP _MYCLASS_::GetId(PRUnichar * *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring description; */
NS_IMETHODIMP _MYCLASS_::GetDescription(PRUnichar * *aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsISupports initiator; */
NS_IMETHODIMP _MYCLASS_::GetInitiator(nsISupports * *aInitiator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean cancelable; */
NS_IMETHODIMP _MYCLASS_::GetCancelable(PRBool *aCancelable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long percent; */
NS_IMETHODIMP _MYCLASS_::GetPercent(PRUint32 *aPercent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long timeRemaining; */
NS_IMETHODIMP _MYCLASS_::GetTimeRemaining(PRInt32 *aTimeRemaining)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean completed; */
NS_IMETHODIMP _MYCLASS_::GetCompleted(PRBool *aCompleted)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean canceled; */
NS_IMETHODIMP _MYCLASS_::GetCanceled(PRBool *aCanceled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long resultCode; */
NS_IMETHODIMP _MYCLASS_::GetResultCode(PRInt32 *aResultCode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IVirtualBoxErrorInfo errorInfo; */
NS_IMETHODIMP _MYCLASS_::GetErrorInfo(IVirtualBoxErrorInfo * *aErrorInfo)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long operationCount; */
NS_IMETHODIMP _MYCLASS_::GetOperationCount(PRUint32 *aOperationCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long operation; */
NS_IMETHODIMP _MYCLASS_::GetOperation(PRUint32 *aOperation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring operationDescription; */
NS_IMETHODIMP _MYCLASS_::GetOperationDescription(PRUnichar * *aOperationDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long operationPercent; */
NS_IMETHODIMP _MYCLASS_::GetOperationPercent(PRUint32 *aOperationPercent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long operationWeight; */
NS_IMETHODIMP _MYCLASS_::GetOperationWeight(PRUint32 *aOperationWeight)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long timeout; */
NS_IMETHODIMP _MYCLASS_::GetTimeout(PRUint32 *aTimeout)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTimeout(PRUint32 aTimeout)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setCurrentOperationProgress (in unsigned long percent); */
NS_IMETHODIMP _MYCLASS_::SetCurrentOperationProgress(PRUint32 percent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setNextOperation (in wstring nextOperationDescription, in unsigned long nextOperationsWeight); */
NS_IMETHODIMP _MYCLASS_::SetNextOperation(const PRUnichar *nextOperationDescription, PRUint32 nextOperationsWeight)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void waitForCompletion (in long timeout); */
NS_IMETHODIMP _MYCLASS_::WaitForCompletion(PRInt32 timeout)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void waitForOperationCompletion (in unsigned long operation, in long timeout); */
NS_IMETHODIMP _MYCLASS_::WaitForOperationCompletion(PRUint32 operation, PRInt32 timeout)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void waitForAsyncProgressCompletion (in IProgress pProgressAsync); */
NS_IMETHODIMP _MYCLASS_::WaitForAsyncProgressCompletion(IProgress *pProgressAsync)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void cancel (); */
NS_IMETHODIMP _MYCLASS_::Cancel()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IProgress_GETTER_Id_TO(smth) NS_IMETHOD GetId (PRUnichar * * aId) { return smth GetId (aId); }
#define COM_FORWARD_IProgress_GETTER_Id_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_Id_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_Id_TO_BASE(base) COM_FORWARD_IProgress_GETTER_Id_TO (base::)
#define COM_FORWARD_IProgress_GETTER_Description_TO(smth) NS_IMETHOD GetDescription (PRUnichar * * aDescription) { return smth GetDescription (aDescription); }
#define COM_FORWARD_IProgress_GETTER_Description_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_Description_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_Description_TO_BASE(base) COM_FORWARD_IProgress_GETTER_Description_TO (base::)
#define COM_FORWARD_IProgress_GETTER_Initiator_TO(smth) NS_IMETHOD GetInitiator (nsISupports * * aInitiator) { return smth GetInitiator (aInitiator); }
#define COM_FORWARD_IProgress_GETTER_Initiator_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_Initiator_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_Initiator_TO_BASE(base) COM_FORWARD_IProgress_GETTER_Initiator_TO (base::)
#define COM_FORWARD_IProgress_GETTER_Cancelable_TO(smth) NS_IMETHOD GetCancelable (PRBool * aCancelable) { return smth GetCancelable (aCancelable); }
#define COM_FORWARD_IProgress_GETTER_Cancelable_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_Cancelable_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_Cancelable_TO_BASE(base) COM_FORWARD_IProgress_GETTER_Cancelable_TO (base::)
#define COM_FORWARD_IProgress_GETTER_Percent_TO(smth) NS_IMETHOD GetPercent (PRUint32 * aPercent) { return smth GetPercent (aPercent); }
#define COM_FORWARD_IProgress_GETTER_Percent_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_Percent_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_Percent_TO_BASE(base) COM_FORWARD_IProgress_GETTER_Percent_TO (base::)
#define COM_FORWARD_IProgress_GETTER_TimeRemaining_TO(smth) NS_IMETHOD GetTimeRemaining (PRInt32 * aTimeRemaining) { return smth GetTimeRemaining (aTimeRemaining); }
#define COM_FORWARD_IProgress_GETTER_TimeRemaining_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_TimeRemaining_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_TimeRemaining_TO_BASE(base) COM_FORWARD_IProgress_GETTER_TimeRemaining_TO (base::)
#define COM_FORWARD_IProgress_GETTER_Completed_TO(smth) NS_IMETHOD GetCompleted (PRBool * aCompleted) { return smth GetCompleted (aCompleted); }
#define COM_FORWARD_IProgress_GETTER_Completed_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_Completed_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_Completed_TO_BASE(base) COM_FORWARD_IProgress_GETTER_Completed_TO (base::)
#define COM_FORWARD_IProgress_GETTER_Canceled_TO(smth) NS_IMETHOD GetCanceled (PRBool * aCanceled) { return smth GetCanceled (aCanceled); }
#define COM_FORWARD_IProgress_GETTER_Canceled_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_Canceled_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_Canceled_TO_BASE(base) COM_FORWARD_IProgress_GETTER_Canceled_TO (base::)
#define COM_FORWARD_IProgress_GETTER_ResultCode_TO(smth) NS_IMETHOD GetResultCode (PRInt32 * aResultCode) { return smth GetResultCode (aResultCode); }
#define COM_FORWARD_IProgress_GETTER_ResultCode_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_ResultCode_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_ResultCode_TO_BASE(base) COM_FORWARD_IProgress_GETTER_ResultCode_TO (base::)
#define COM_FORWARD_IProgress_GETTER_ErrorInfo_TO(smth) NS_IMETHOD GetErrorInfo (IVirtualBoxErrorInfo * * aErrorInfo) { return smth GetErrorInfo (aErrorInfo); }
#define COM_FORWARD_IProgress_GETTER_ErrorInfo_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_ErrorInfo_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_ErrorInfo_TO_BASE(base) COM_FORWARD_IProgress_GETTER_ErrorInfo_TO (base::)
#define COM_FORWARD_IProgress_GETTER_OperationCount_TO(smth) NS_IMETHOD GetOperationCount (PRUint32 * aOperationCount) { return smth GetOperationCount (aOperationCount); }
#define COM_FORWARD_IProgress_GETTER_OperationCount_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_OperationCount_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_OperationCount_TO_BASE(base) COM_FORWARD_IProgress_GETTER_OperationCount_TO (base::)
#define COM_FORWARD_IProgress_GETTER_Operation_TO(smth) NS_IMETHOD GetOperation (PRUint32 * aOperation) { return smth GetOperation (aOperation); }
#define COM_FORWARD_IProgress_GETTER_Operation_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_Operation_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_Operation_TO_BASE(base) COM_FORWARD_IProgress_GETTER_Operation_TO (base::)
#define COM_FORWARD_IProgress_GETTER_OperationDescription_TO(smth) NS_IMETHOD GetOperationDescription (PRUnichar * * aOperationDescription) { return smth GetOperationDescription (aOperationDescription); }
#define COM_FORWARD_IProgress_GETTER_OperationDescription_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_OperationDescription_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_OperationDescription_TO_BASE(base) COM_FORWARD_IProgress_GETTER_OperationDescription_TO (base::)
#define COM_FORWARD_IProgress_GETTER_OperationPercent_TO(smth) NS_IMETHOD GetOperationPercent (PRUint32 * aOperationPercent) { return smth GetOperationPercent (aOperationPercent); }
#define COM_FORWARD_IProgress_GETTER_OperationPercent_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_OperationPercent_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_OperationPercent_TO_BASE(base) COM_FORWARD_IProgress_GETTER_OperationPercent_TO (base::)
#define COM_FORWARD_IProgress_GETTER_OperationWeight_TO(smth) NS_IMETHOD GetOperationWeight (PRUint32 * aOperationWeight) { return smth GetOperationWeight (aOperationWeight); }
#define COM_FORWARD_IProgress_GETTER_OperationWeight_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_OperationWeight_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_OperationWeight_TO_BASE(base) COM_FORWARD_IProgress_GETTER_OperationWeight_TO (base::)
#define COM_FORWARD_IProgress_GETTER_Timeout_TO(smth) NS_IMETHOD GetTimeout (PRUint32 * aTimeout) { return smth GetTimeout (aTimeout); }
#define COM_FORWARD_IProgress_GETTER_Timeout_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_Timeout_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_Timeout_TO_BASE(base) COM_FORWARD_IProgress_GETTER_Timeout_TO (base::)
#define COM_FORWARD_IProgress_SETTER_Timeout_TO(smth) NS_IMETHOD SetTimeout (PRUint32 aTimeout) { return smth SetTimeout (aTimeout); }
#define COM_FORWARD_IProgress_SETTER_Timeout_TO_OBJ(obj) COM_FORWARD_IProgress_SETTER_Timeout_TO ((obj)->)
#define COM_FORWARD_IProgress_SETTER_Timeout_TO_BASE(base) COM_FORWARD_IProgress_SETTER_Timeout_TO (base::)
#define COM_FORWARD_IProgress_SetCurrentOperationProgress_TO(smth) NS_IMETHOD SetCurrentOperationProgress (PRUint32 aPercent) { return smth SetCurrentOperationProgress (aPercent); }
#define COM_FORWARD_IProgress_SetCurrentOperationProgress_TO_OBJ(obj) COM_FORWARD_IProgress_SetCurrentOperationProgress_TO ((obj)->)
#define COM_FORWARD_IProgress_SetCurrentOperationProgress_TO_BASE(base) COM_FORWARD_IProgress_SetCurrentOperationProgress_TO (base::)
#define COM_FORWARD_IProgress_SetNextOperation_TO(smth) NS_IMETHOD SetNextOperation (PRUnichar * aNextOperationDescription, PRUint32 aNextOperationsWeight) { return smth SetNextOperation (aNextOperationDescription, aNextOperationsWeight); }
#define COM_FORWARD_IProgress_SetNextOperation_TO_OBJ(obj) COM_FORWARD_IProgress_SetNextOperation_TO ((obj)->)
#define COM_FORWARD_IProgress_SetNextOperation_TO_BASE(base) COM_FORWARD_IProgress_SetNextOperation_TO (base::)
#define COM_FORWARD_IProgress_WaitForCompletion_TO(smth) NS_IMETHOD WaitForCompletion (PRInt32 aTimeout) { return smth WaitForCompletion (aTimeout); }
#define COM_FORWARD_IProgress_WaitForCompletion_TO_OBJ(obj) COM_FORWARD_IProgress_WaitForCompletion_TO ((obj)->)
#define COM_FORWARD_IProgress_WaitForCompletion_TO_BASE(base) COM_FORWARD_IProgress_WaitForCompletion_TO (base::)
#define COM_FORWARD_IProgress_WaitForOperationCompletion_TO(smth) NS_IMETHOD WaitForOperationCompletion (PRUint32 aOperation, PRInt32 aTimeout) { return smth WaitForOperationCompletion (aOperation, aTimeout); }
#define COM_FORWARD_IProgress_WaitForOperationCompletion_TO_OBJ(obj) COM_FORWARD_IProgress_WaitForOperationCompletion_TO ((obj)->)
#define COM_FORWARD_IProgress_WaitForOperationCompletion_TO_BASE(base) COM_FORWARD_IProgress_WaitForOperationCompletion_TO (base::)
#define COM_FORWARD_IProgress_WaitForAsyncProgressCompletion_TO(smth) NS_IMETHOD WaitForAsyncProgressCompletion (IProgress * aPProgressAsync) { return smth WaitForAsyncProgressCompletion (aPProgressAsync); }
#define COM_FORWARD_IProgress_WaitForAsyncProgressCompletion_TO_OBJ(obj) COM_FORWARD_IProgress_WaitForAsyncProgressCompletion_TO ((obj)->)
#define COM_FORWARD_IProgress_WaitForAsyncProgressCompletion_TO_BASE(base) COM_FORWARD_IProgress_WaitForAsyncProgressCompletion_TO (base::)
#define COM_FORWARD_IProgress_Cancel_TO(smth) NS_IMETHOD Cancel() { return smth Cancel(); }
#define COM_FORWARD_IProgress_Cancel_TO_OBJ(obj) COM_FORWARD_IProgress_Cancel_TO ((obj)->)
#define COM_FORWARD_IProgress_Cancel_TO_BASE(base) COM_FORWARD_IProgress_Cancel_TO (base::)
#define COM_FORWARD_IProgress_TO(smth) NS_FORWARD_IPROGRESS (smth)
#define COM_FORWARD_IProgress_TO_OBJ(obj) COM_FORWARD_IProgress_TO ((obj)->)
#define COM_FORWARD_IProgress_TO_BASE(base) COM_FORWARD_IProgress_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IProgress;

/* starting interface:    ISnapshot */
#define ISNAPSHOT_IID_STR "0472823b-c6e7-472a-8e9f-d732e86b8463"

#define ISNAPSHOT_IID \
  {0x0472823b, 0xc6e7, 0x472a, \
    { 0x8e, 0x9f, 0xd7, 0x32, 0xe8, 0x6b, 0x84, 0x63 }}

class NS_NO_VTABLE ISnapshot : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISNAPSHOT_IID)

  /* readonly attribute wstring id; */
  NS_IMETHOD GetId(PRUnichar * *aId) = 0;

  /* attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;
  NS_IMETHOD SetName(const PRUnichar * aName) = 0;

  /* attribute wstring description; */
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) = 0;
  NS_IMETHOD SetDescription(const PRUnichar * aDescription) = 0;

  /* readonly attribute long long timeStamp; */
  NS_IMETHOD GetTimeStamp(PRInt64 *aTimeStamp) = 0;

  /* readonly attribute boolean online; */
  NS_IMETHOD GetOnline(PRBool *aOnline) = 0;

  /* readonly attribute IMachine machine; */
  NS_IMETHOD GetMachine(IMachine * *aMachine) = 0;

  /* readonly attribute ISnapshot parent; */
  NS_IMETHOD GetParent(ISnapshot * *aParent) = 0;

  /* void getChildren (out unsigned long childrenSize, [array, size_is (childrenSize), retval] out ISnapshot children); */
  NS_IMETHOD GetChildren(PRUint32 *childrenSize, ISnapshot ***children) = 0;

  /* void getChildrenCount ([retval] out unsigned long childrenCount); */
  NS_IMETHOD GetChildrenCount(PRUint32 *childrenCount) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISNAPSHOT \
  NS_IMETHOD GetId(PRUnichar * *aId); \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD SetName(const PRUnichar * aName); \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription); \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription); \
  NS_IMETHOD GetTimeStamp(PRInt64 *aTimeStamp); \
  NS_IMETHOD GetOnline(PRBool *aOnline); \
  NS_IMETHOD GetMachine(IMachine * *aMachine); \
  NS_IMETHOD GetParent(ISnapshot * *aParent); \
  NS_IMETHOD GetChildren(PRUint32 *childrenSize, ISnapshot ***children); \
  NS_IMETHOD GetChildrenCount(PRUint32 *childrenCount); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISNAPSHOT(_to) \
  NS_IMETHOD GetId(PRUnichar * *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD SetName(const PRUnichar * aName) { return _to SetName(aName); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return _to GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription) { return _to SetDescription(aDescription); } \
  NS_IMETHOD GetTimeStamp(PRInt64 *aTimeStamp) { return _to GetTimeStamp(aTimeStamp); } \
  NS_IMETHOD GetOnline(PRBool *aOnline) { return _to GetOnline(aOnline); } \
  NS_IMETHOD GetMachine(IMachine * *aMachine) { return _to GetMachine(aMachine); } \
  NS_IMETHOD GetParent(ISnapshot * *aParent) { return _to GetParent(aParent); } \
  NS_IMETHOD GetChildren(PRUint32 *childrenSize, ISnapshot ***children) { return _to GetChildren(childrenSize, children); } \
  NS_IMETHOD GetChildrenCount(PRUint32 *childrenCount) { return _to GetChildrenCount(childrenCount); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISNAPSHOT(_to) \
  NS_IMETHOD GetId(PRUnichar * *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(const PRUnichar * aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetName(aName); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDescription(aDescription); } \
  NS_IMETHOD GetTimeStamp(PRInt64 *aTimeStamp) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTimeStamp(aTimeStamp); } \
  NS_IMETHOD GetOnline(PRBool *aOnline) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOnline(aOnline); } \
  NS_IMETHOD GetMachine(IMachine * *aMachine) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMachine(aMachine); } \
  NS_IMETHOD GetParent(ISnapshot * *aParent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParent(aParent); } \
  NS_IMETHOD GetChildren(PRUint32 *childrenSize, ISnapshot ***children) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChildren(childrenSize, children); } \
  NS_IMETHOD GetChildrenCount(PRUint32 *childrenCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChildrenCount(childrenCount); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ISnapshot
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISNAPSHOT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ISnapshot)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring id; */
NS_IMETHODIMP _MYCLASS_::GetId(PRUnichar * *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetName(const PRUnichar * aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring description; */
NS_IMETHODIMP _MYCLASS_::GetDescription(PRUnichar * *aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDescription(const PRUnichar * aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long timeStamp; */
NS_IMETHODIMP _MYCLASS_::GetTimeStamp(PRInt64 *aTimeStamp)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean online; */
NS_IMETHODIMP _MYCLASS_::GetOnline(PRBool *aOnline)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IMachine machine; */
NS_IMETHODIMP _MYCLASS_::GetMachine(IMachine * *aMachine)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute ISnapshot parent; */
NS_IMETHODIMP _MYCLASS_::GetParent(ISnapshot * *aParent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getChildren (out unsigned long childrenSize, [array, size_is (childrenSize), retval] out ISnapshot children); */
NS_IMETHODIMP _MYCLASS_::GetChildren(PRUint32 *childrenSize, ISnapshot ***children)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getChildrenCount ([retval] out unsigned long childrenCount); */
NS_IMETHODIMP _MYCLASS_::GetChildrenCount(PRUint32 *childrenCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_ISnapshot_GETTER_Id_TO(smth) NS_IMETHOD GetId (PRUnichar * * aId) { return smth GetId (aId); }
#define COM_FORWARD_ISnapshot_GETTER_Id_TO_OBJ(obj) COM_FORWARD_ISnapshot_GETTER_Id_TO ((obj)->)
#define COM_FORWARD_ISnapshot_GETTER_Id_TO_BASE(base) COM_FORWARD_ISnapshot_GETTER_Id_TO (base::)
#define COM_FORWARD_ISnapshot_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_ISnapshot_GETTER_Name_TO_OBJ(obj) COM_FORWARD_ISnapshot_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_ISnapshot_GETTER_Name_TO_BASE(base) COM_FORWARD_ISnapshot_GETTER_Name_TO (base::)
#define COM_FORWARD_ISnapshot_SETTER_Name_TO(smth) NS_IMETHOD SetName (const PRUnichar * aName) { return smth SetName (aName); }
#define COM_FORWARD_ISnapshot_SETTER_Name_TO_OBJ(obj) COM_FORWARD_ISnapshot_SETTER_Name_TO ((obj)->)
#define COM_FORWARD_ISnapshot_SETTER_Name_TO_BASE(base) COM_FORWARD_ISnapshot_SETTER_Name_TO (base::)
#define COM_FORWARD_ISnapshot_GETTER_Description_TO(smth) NS_IMETHOD GetDescription (PRUnichar * * aDescription) { return smth GetDescription (aDescription); }
#define COM_FORWARD_ISnapshot_GETTER_Description_TO_OBJ(obj) COM_FORWARD_ISnapshot_GETTER_Description_TO ((obj)->)
#define COM_FORWARD_ISnapshot_GETTER_Description_TO_BASE(base) COM_FORWARD_ISnapshot_GETTER_Description_TO (base::)
#define COM_FORWARD_ISnapshot_SETTER_Description_TO(smth) NS_IMETHOD SetDescription (const PRUnichar * aDescription) { return smth SetDescription (aDescription); }
#define COM_FORWARD_ISnapshot_SETTER_Description_TO_OBJ(obj) COM_FORWARD_ISnapshot_SETTER_Description_TO ((obj)->)
#define COM_FORWARD_ISnapshot_SETTER_Description_TO_BASE(base) COM_FORWARD_ISnapshot_SETTER_Description_TO (base::)
#define COM_FORWARD_ISnapshot_GETTER_TimeStamp_TO(smth) NS_IMETHOD GetTimeStamp (PRInt64 * aTimeStamp) { return smth GetTimeStamp (aTimeStamp); }
#define COM_FORWARD_ISnapshot_GETTER_TimeStamp_TO_OBJ(obj) COM_FORWARD_ISnapshot_GETTER_TimeStamp_TO ((obj)->)
#define COM_FORWARD_ISnapshot_GETTER_TimeStamp_TO_BASE(base) COM_FORWARD_ISnapshot_GETTER_TimeStamp_TO (base::)
#define COM_FORWARD_ISnapshot_GETTER_Online_TO(smth) NS_IMETHOD GetOnline (PRBool * aOnline) { return smth GetOnline (aOnline); }
#define COM_FORWARD_ISnapshot_GETTER_Online_TO_OBJ(obj) COM_FORWARD_ISnapshot_GETTER_Online_TO ((obj)->)
#define COM_FORWARD_ISnapshot_GETTER_Online_TO_BASE(base) COM_FORWARD_ISnapshot_GETTER_Online_TO (base::)
#define COM_FORWARD_ISnapshot_GETTER_Machine_TO(smth) NS_IMETHOD GetMachine (IMachine * * aMachine) { return smth GetMachine (aMachine); }
#define COM_FORWARD_ISnapshot_GETTER_Machine_TO_OBJ(obj) COM_FORWARD_ISnapshot_GETTER_Machine_TO ((obj)->)
#define COM_FORWARD_ISnapshot_GETTER_Machine_TO_BASE(base) COM_FORWARD_ISnapshot_GETTER_Machine_TO (base::)
#define COM_FORWARD_ISnapshot_GETTER_Parent_TO(smth) NS_IMETHOD GetParent (ISnapshot * * aParent) { return smth GetParent (aParent); }
#define COM_FORWARD_ISnapshot_GETTER_Parent_TO_OBJ(obj) COM_FORWARD_ISnapshot_GETTER_Parent_TO ((obj)->)
#define COM_FORWARD_ISnapshot_GETTER_Parent_TO_BASE(base) COM_FORWARD_ISnapshot_GETTER_Parent_TO (base::)
#define COM_FORWARD_ISnapshot_GETTER_Children_TO(smth) NS_IMETHOD GetChildren (PRUint32 * aChildrenSize, ISnapshot * * * aChildren) { return smth GetChildren (aChildrenSize, aChildren); }
#define COM_FORWARD_ISnapshot_GETTER_Children_TO_OBJ(obj) COM_FORWARD_ISnapshot_GETTER_Children_TO ((obj)->)
#define COM_FORWARD_ISnapshot_GETTER_Children_TO_BASE(base) COM_FORWARD_ISnapshot_GETTER_Children_TO (base::)
#define COM_FORWARD_ISnapshot_GetChildrenCount_TO(smth) NS_IMETHOD GetChildrenCount (PRUint32 * aChildrenCount) { return smth GetChildrenCount (aChildrenCount); }
#define COM_FORWARD_ISnapshot_GetChildrenCount_TO_OBJ(obj) COM_FORWARD_ISnapshot_GetChildrenCount_TO ((obj)->)
#define COM_FORWARD_ISnapshot_GetChildrenCount_TO_BASE(base) COM_FORWARD_ISnapshot_GetChildrenCount_TO (base::)
#define COM_FORWARD_ISnapshot_TO(smth) NS_FORWARD_ISNAPSHOT (smth)
#define COM_FORWARD_ISnapshot_TO_OBJ(obj) COM_FORWARD_ISnapshot_TO ((obj)->)
#define COM_FORWARD_ISnapshot_TO_BASE(base) COM_FORWARD_ISnapshot_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_ISnapshot;

/* starting interface:    IMediumAttachment */
#define IMEDIUMATTACHMENT_IID_STR "4b252567-5d4e-4db8-b3c8-569ec1c9236c"

#define IMEDIUMATTACHMENT_IID \
  {0x4b252567, 0x5d4e, 0x4db8, \
    { 0xb3, 0xc8, 0x56, 0x9e, 0xc1, 0xc9, 0x23, 0x6c }}

class NS_NO_VTABLE IMediumAttachment : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMEDIUMATTACHMENT_IID)

  /* readonly attribute IMedium medium; */
  NS_IMETHOD GetMedium(IMedium * *aMedium) = 0;

  /* readonly attribute wstring controller; */
  NS_IMETHOD GetController(PRUnichar * *aController) = 0;

  /* readonly attribute long port; */
  NS_IMETHOD GetPort(PRInt32 *aPort) = 0;

  /* readonly attribute long device; */
  NS_IMETHOD GetDevice(PRInt32 *aDevice) = 0;

  /* readonly attribute PRUint32 type; */
  NS_IMETHOD GetType(PRUint32 *aType) = 0;

  /* readonly attribute boolean passthrough; */
  NS_IMETHOD GetPassthrough(PRBool *aPassthrough) = 0;

  /* readonly attribute boolean temporaryEject; */
  NS_IMETHOD GetTemporaryEject(PRBool *aTemporaryEject) = 0;

  /* readonly attribute boolean isEjected; */
  NS_IMETHOD GetIsEjected(PRBool *aIsEjected) = 0;

  /* readonly attribute boolean nonRotational; */
  NS_IMETHOD GetNonRotational(PRBool *aNonRotational) = 0;

  /* readonly attribute boolean discard; */
  NS_IMETHOD GetDiscard(PRBool *aDiscard) = 0;

  /* readonly attribute boolean hotPluggable; */
  NS_IMETHOD GetHotPluggable(PRBool *aHotPluggable) = 0;

  /* readonly attribute IBandwidthGroup bandwidthGroup; */
  NS_IMETHOD GetBandwidthGroup(IBandwidthGroup * *aBandwidthGroup) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMEDIUMATTACHMENT \
  NS_IMETHOD GetMedium(IMedium * *aMedium); \
  NS_IMETHOD GetController(PRUnichar * *aController); \
  NS_IMETHOD GetPort(PRInt32 *aPort); \
  NS_IMETHOD GetDevice(PRInt32 *aDevice); \
  NS_IMETHOD GetType(PRUint32 *aType); \
  NS_IMETHOD GetPassthrough(PRBool *aPassthrough); \
  NS_IMETHOD GetTemporaryEject(PRBool *aTemporaryEject); \
  NS_IMETHOD GetIsEjected(PRBool *aIsEjected); \
  NS_IMETHOD GetNonRotational(PRBool *aNonRotational); \
  NS_IMETHOD GetDiscard(PRBool *aDiscard); \
  NS_IMETHOD GetHotPluggable(PRBool *aHotPluggable); \
  NS_IMETHOD GetBandwidthGroup(IBandwidthGroup * *aBandwidthGroup); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMEDIUMATTACHMENT(_to) \
  NS_IMETHOD GetMedium(IMedium * *aMedium) { return _to GetMedium(aMedium); } \
  NS_IMETHOD GetController(PRUnichar * *aController) { return _to GetController(aController); } \
  NS_IMETHOD GetPort(PRInt32 *aPort) { return _to GetPort(aPort); } \
  NS_IMETHOD GetDevice(PRInt32 *aDevice) { return _to GetDevice(aDevice); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return _to GetType(aType); } \
  NS_IMETHOD GetPassthrough(PRBool *aPassthrough) { return _to GetPassthrough(aPassthrough); } \
  NS_IMETHOD GetTemporaryEject(PRBool *aTemporaryEject) { return _to GetTemporaryEject(aTemporaryEject); } \
  NS_IMETHOD GetIsEjected(PRBool *aIsEjected) { return _to GetIsEjected(aIsEjected); } \
  NS_IMETHOD GetNonRotational(PRBool *aNonRotational) { return _to GetNonRotational(aNonRotational); } \
  NS_IMETHOD GetDiscard(PRBool *aDiscard) { return _to GetDiscard(aDiscard); } \
  NS_IMETHOD GetHotPluggable(PRBool *aHotPluggable) { return _to GetHotPluggable(aHotPluggable); } \
  NS_IMETHOD GetBandwidthGroup(IBandwidthGroup * *aBandwidthGroup) { return _to GetBandwidthGroup(aBandwidthGroup); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMEDIUMATTACHMENT(_to) \
  NS_IMETHOD GetMedium(IMedium * *aMedium) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMedium(aMedium); } \
  NS_IMETHOD GetController(PRUnichar * *aController) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetController(aController); } \
  NS_IMETHOD GetPort(PRInt32 *aPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPort(aPort); } \
  NS_IMETHOD GetDevice(PRInt32 *aDevice) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDevice(aDevice); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetType(aType); } \
  NS_IMETHOD GetPassthrough(PRBool *aPassthrough) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPassthrough(aPassthrough); } \
  NS_IMETHOD GetTemporaryEject(PRBool *aTemporaryEject) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTemporaryEject(aTemporaryEject); } \
  NS_IMETHOD GetIsEjected(PRBool *aIsEjected) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsEjected(aIsEjected); } \
  NS_IMETHOD GetNonRotational(PRBool *aNonRotational) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNonRotational(aNonRotational); } \
  NS_IMETHOD GetDiscard(PRBool *aDiscard) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDiscard(aDiscard); } \
  NS_IMETHOD GetHotPluggable(PRBool *aHotPluggable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHotPluggable(aHotPluggable); } \
  NS_IMETHOD GetBandwidthGroup(IBandwidthGroup * *aBandwidthGroup) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBandwidthGroup(aBandwidthGroup); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IMediumAttachment
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMEDIUMATTACHMENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IMediumAttachment)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute IMedium medium; */
NS_IMETHODIMP _MYCLASS_::GetMedium(IMedium * *aMedium)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring controller; */
NS_IMETHODIMP _MYCLASS_::GetController(PRUnichar * *aController)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long port; */
NS_IMETHODIMP _MYCLASS_::GetPort(PRInt32 *aPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long device; */
NS_IMETHODIMP _MYCLASS_::GetDevice(PRInt32 *aDevice)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 type; */
NS_IMETHODIMP _MYCLASS_::GetType(PRUint32 *aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean passthrough; */
NS_IMETHODIMP _MYCLASS_::GetPassthrough(PRBool *aPassthrough)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean temporaryEject; */
NS_IMETHODIMP _MYCLASS_::GetTemporaryEject(PRBool *aTemporaryEject)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean isEjected; */
NS_IMETHODIMP _MYCLASS_::GetIsEjected(PRBool *aIsEjected)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean nonRotational; */
NS_IMETHODIMP _MYCLASS_::GetNonRotational(PRBool *aNonRotational)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean discard; */
NS_IMETHODIMP _MYCLASS_::GetDiscard(PRBool *aDiscard)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean hotPluggable; */
NS_IMETHODIMP _MYCLASS_::GetHotPluggable(PRBool *aHotPluggable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IBandwidthGroup bandwidthGroup; */
NS_IMETHODIMP _MYCLASS_::GetBandwidthGroup(IBandwidthGroup * *aBandwidthGroup)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IMediumAttachment_GETTER_Medium_TO(smth) NS_IMETHOD GetMedium (IMedium * * aMedium) { return smth GetMedium (aMedium); }
#define COM_FORWARD_IMediumAttachment_GETTER_Medium_TO_OBJ(obj) COM_FORWARD_IMediumAttachment_GETTER_Medium_TO ((obj)->)
#define COM_FORWARD_IMediumAttachment_GETTER_Medium_TO_BASE(base) COM_FORWARD_IMediumAttachment_GETTER_Medium_TO (base::)
#define COM_FORWARD_IMediumAttachment_GETTER_Controller_TO(smth) NS_IMETHOD GetController (PRUnichar * * aController) { return smth GetController (aController); }
#define COM_FORWARD_IMediumAttachment_GETTER_Controller_TO_OBJ(obj) COM_FORWARD_IMediumAttachment_GETTER_Controller_TO ((obj)->)
#define COM_FORWARD_IMediumAttachment_GETTER_Controller_TO_BASE(base) COM_FORWARD_IMediumAttachment_GETTER_Controller_TO (base::)
#define COM_FORWARD_IMediumAttachment_GETTER_Port_TO(smth) NS_IMETHOD GetPort (PRInt32 * aPort) { return smth GetPort (aPort); }
#define COM_FORWARD_IMediumAttachment_GETTER_Port_TO_OBJ(obj) COM_FORWARD_IMediumAttachment_GETTER_Port_TO ((obj)->)
#define COM_FORWARD_IMediumAttachment_GETTER_Port_TO_BASE(base) COM_FORWARD_IMediumAttachment_GETTER_Port_TO (base::)
#define COM_FORWARD_IMediumAttachment_GETTER_Device_TO(smth) NS_IMETHOD GetDevice (PRInt32 * aDevice) { return smth GetDevice (aDevice); }
#define COM_FORWARD_IMediumAttachment_GETTER_Device_TO_OBJ(obj) COM_FORWARD_IMediumAttachment_GETTER_Device_TO ((obj)->)
#define COM_FORWARD_IMediumAttachment_GETTER_Device_TO_BASE(base) COM_FORWARD_IMediumAttachment_GETTER_Device_TO (base::)
#define COM_FORWARD_IMediumAttachment_GETTER_Type_TO(smth) NS_IMETHOD GetType (PRUint32 * aType) { return smth GetType (aType); }
#define COM_FORWARD_IMediumAttachment_GETTER_Type_TO_OBJ(obj) COM_FORWARD_IMediumAttachment_GETTER_Type_TO ((obj)->)
#define COM_FORWARD_IMediumAttachment_GETTER_Type_TO_BASE(base) COM_FORWARD_IMediumAttachment_GETTER_Type_TO (base::)
#define COM_FORWARD_IMediumAttachment_GETTER_Passthrough_TO(smth) NS_IMETHOD GetPassthrough (PRBool * aPassthrough) { return smth GetPassthrough (aPassthrough); }
#define COM_FORWARD_IMediumAttachment_GETTER_Passthrough_TO_OBJ(obj) COM_FORWARD_IMediumAttachment_GETTER_Passthrough_TO ((obj)->)
#define COM_FORWARD_IMediumAttachment_GETTER_Passthrough_TO_BASE(base) COM_FORWARD_IMediumAttachment_GETTER_Passthrough_TO (base::)
#define COM_FORWARD_IMediumAttachment_GETTER_TemporaryEject_TO(smth) NS_IMETHOD GetTemporaryEject (PRBool * aTemporaryEject) { return smth GetTemporaryEject (aTemporaryEject); }
#define COM_FORWARD_IMediumAttachment_GETTER_TemporaryEject_TO_OBJ(obj) COM_FORWARD_IMediumAttachment_GETTER_TemporaryEject_TO ((obj)->)
#define COM_FORWARD_IMediumAttachment_GETTER_TemporaryEject_TO_BASE(base) COM_FORWARD_IMediumAttachment_GETTER_TemporaryEject_TO (base::)
#define COM_FORWARD_IMediumAttachment_GETTER_IsEjected_TO(smth) NS_IMETHOD GetIsEjected (PRBool * aIsEjected) { return smth GetIsEjected (aIsEjected); }
#define COM_FORWARD_IMediumAttachment_GETTER_IsEjected_TO_OBJ(obj) COM_FORWARD_IMediumAttachment_GETTER_IsEjected_TO ((obj)->)
#define COM_FORWARD_IMediumAttachment_GETTER_IsEjected_TO_BASE(base) COM_FORWARD_IMediumAttachment_GETTER_IsEjected_TO (base::)
#define COM_FORWARD_IMediumAttachment_GETTER_NonRotational_TO(smth) NS_IMETHOD GetNonRotational (PRBool * aNonRotational) { return smth GetNonRotational (aNonRotational); }
#define COM_FORWARD_IMediumAttachment_GETTER_NonRotational_TO_OBJ(obj) COM_FORWARD_IMediumAttachment_GETTER_NonRotational_TO ((obj)->)
#define COM_FORWARD_IMediumAttachment_GETTER_NonRotational_TO_BASE(base) COM_FORWARD_IMediumAttachment_GETTER_NonRotational_TO (base::)
#define COM_FORWARD_IMediumAttachment_GETTER_Discard_TO(smth) NS_IMETHOD GetDiscard (PRBool * aDiscard) { return smth GetDiscard (aDiscard); }
#define COM_FORWARD_IMediumAttachment_GETTER_Discard_TO_OBJ(obj) COM_FORWARD_IMediumAttachment_GETTER_Discard_TO ((obj)->)
#define COM_FORWARD_IMediumAttachment_GETTER_Discard_TO_BASE(base) COM_FORWARD_IMediumAttachment_GETTER_Discard_TO (base::)
#define COM_FORWARD_IMediumAttachment_GETTER_HotPluggable_TO(smth) NS_IMETHOD GetHotPluggable (PRBool * aHotPluggable) { return smth GetHotPluggable (aHotPluggable); }
#define COM_FORWARD_IMediumAttachment_GETTER_HotPluggable_TO_OBJ(obj) COM_FORWARD_IMediumAttachment_GETTER_HotPluggable_TO ((obj)->)
#define COM_FORWARD_IMediumAttachment_GETTER_HotPluggable_TO_BASE(base) COM_FORWARD_IMediumAttachment_GETTER_HotPluggable_TO (base::)
#define COM_FORWARD_IMediumAttachment_GETTER_BandwidthGroup_TO(smth) NS_IMETHOD GetBandwidthGroup (IBandwidthGroup * * aBandwidthGroup) { return smth GetBandwidthGroup (aBandwidthGroup); }
#define COM_FORWARD_IMediumAttachment_GETTER_BandwidthGroup_TO_OBJ(obj) COM_FORWARD_IMediumAttachment_GETTER_BandwidthGroup_TO ((obj)->)
#define COM_FORWARD_IMediumAttachment_GETTER_BandwidthGroup_TO_BASE(base) COM_FORWARD_IMediumAttachment_GETTER_BandwidthGroup_TO (base::)
#define COM_FORWARD_IMediumAttachment_TO(smth) NS_FORWARD_IMEDIUMATTACHMENT (smth)
#define COM_FORWARD_IMediumAttachment_TO_OBJ(obj) COM_FORWARD_IMediumAttachment_TO ((obj)->)
#define COM_FORWARD_IMediumAttachment_TO_BASE(base) COM_FORWARD_IMediumAttachment_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IMediumAttachment;

/* starting interface:    IMedium */
#define IMEDIUM_IID_STR "05f2bbb6-a3a6-4fb9-9b49-6d0dda7142ac"

#define IMEDIUM_IID \
  {0x05f2bbb6, 0xa3a6, 0x4fb9, \
    { 0x9b, 0x49, 0x6d, 0x0d, 0xda, 0x71, 0x42, 0xac }}

class NS_NO_VTABLE IMedium : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMEDIUM_IID)

  /* readonly attribute wstring id; */
  NS_IMETHOD GetId(PRUnichar * *aId) = 0;

  /* attribute wstring description; */
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) = 0;
  NS_IMETHOD SetDescription(const PRUnichar * aDescription) = 0;

  /* readonly attribute PRUint32 state; */
  NS_IMETHOD GetState(PRUint32 *aState) = 0;

  /* void getVariant (out unsigned long variantSize, [array, size_is (variantSize), retval] out PRUint32 variant); */
  NS_IMETHOD GetVariant(PRUint32 *variantSize, PRUint32 **variant) = 0;

  /* readonly attribute wstring location; */
  NS_IMETHOD GetLocation(PRUnichar * *aLocation) = 0;

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* readonly attribute PRUint32 deviceType; */
  NS_IMETHOD GetDeviceType(PRUint32 *aDeviceType) = 0;

  /* readonly attribute boolean hostDrive; */
  NS_IMETHOD GetHostDrive(PRBool *aHostDrive) = 0;

  /* readonly attribute long long size; */
  NS_IMETHOD GetSize(PRInt64 *aSize) = 0;

  /* readonly attribute wstring format; */
  NS_IMETHOD GetFormat(PRUnichar * *aFormat) = 0;

  /* readonly attribute IMediumFormat mediumFormat; */
  NS_IMETHOD GetMediumFormat(IMediumFormat * *aMediumFormat) = 0;

  /* attribute PRUint32 type; */
  NS_IMETHOD GetType(PRUint32 *aType) = 0;
  NS_IMETHOD SetType(PRUint32 aType) = 0;

  /* void getAllowedTypes (out unsigned long allowedTypesSize, [array, size_is (allowedTypesSize), retval] out PRUint32 allowedTypes); */
  NS_IMETHOD GetAllowedTypes(PRUint32 *allowedTypesSize, PRUint32 **allowedTypes) = 0;

  /* readonly attribute IMedium parent; */
  NS_IMETHOD GetParent(IMedium * *aParent) = 0;

  /* void getChildren (out unsigned long childrenSize, [array, size_is (childrenSize), retval] out IMedium children); */
  NS_IMETHOD GetChildren(PRUint32 *childrenSize, IMedium ***children) = 0;

  /* readonly attribute IMedium base; */
  NS_IMETHOD GetBase(IMedium * *aBase) = 0;

  /* readonly attribute boolean readOnly; */
  NS_IMETHOD GetReadOnly(PRBool *aReadOnly) = 0;

  /* readonly attribute long long logicalSize; */
  NS_IMETHOD GetLogicalSize(PRInt64 *aLogicalSize) = 0;

  /* attribute boolean autoReset; */
  NS_IMETHOD GetAutoReset(PRBool *aAutoReset) = 0;
  NS_IMETHOD SetAutoReset(PRBool aAutoReset) = 0;

  /* readonly attribute wstring lastAccessError; */
  NS_IMETHOD GetLastAccessError(PRUnichar * *aLastAccessError) = 0;

  /* void getMachineIds (out unsigned long machineIdsSize, [array, size_is (machineIdsSize), retval] out wstring machineIds); */
  NS_IMETHOD GetMachineIds(PRUint32 *machineIdsSize, PRUnichar ***machineIds) = 0;

  /* void setIds (in boolean setImageId, in wstring imageId, in boolean setParentId, in wstring parentId); */
  NS_IMETHOD SetIds(PRBool setImageId, const PRUnichar *imageId, PRBool setParentId, const PRUnichar *parentId) = 0;

  /* void refreshState ([retval] out PRUint32 state); */
  NS_IMETHOD RefreshState(PRUint32 *state) = 0;

  /* void getSnapshotIds (in wstring machineId, out unsigned long snapshotIdsSize, [array, size_is (snapshotIdsSize), retval] out wstring snapshotIds); */
  NS_IMETHOD GetSnapshotIds(const PRUnichar *machineId, PRUint32 *snapshotIdsSize, PRUnichar ***snapshotIds) = 0;

  /* void lockRead ([retval] out IToken token); */
  NS_IMETHOD LockRead(IToken **token) = 0;

  /* void lockWrite ([retval] out IToken token); */
  NS_IMETHOD LockWrite(IToken **token) = 0;

  /* void close (); */
  NS_IMETHOD Close(void) = 0;

  /* void getProperty (in wstring name, [retval] out wstring value); */
  NS_IMETHOD GetProperty(const PRUnichar *name, PRUnichar **value) = 0;

  /* void setProperty (in wstring name, in wstring value); */
  NS_IMETHOD SetProperty(const PRUnichar *name, const PRUnichar *value) = 0;

  /* void getProperties (in wstring names, out unsigned long returnNamesSize, [array, size_is (returnNamesSize)] out wstring returnNames, out unsigned long returnValuesSize, [array, size_is (returnValuesSize), retval] out wstring returnValues); */
  NS_IMETHOD GetProperties(const PRUnichar *names, PRUint32 *returnNamesSize, PRUnichar ***returnNames, PRUint32 *returnValuesSize, PRUnichar ***returnValues) = 0;

  /* void setProperties (in unsigned long namesSize, [array, size_is (namesSize)] in wstring names, in unsigned long valuesSize, [array, size_is (valuesSize)] in wstring values); */
  NS_IMETHOD SetProperties(PRUint32 namesSize, const PRUnichar **names, PRUint32 valuesSize, const PRUnichar **values) = 0;

  /* void createBaseStorage (in long long logicalSize, in unsigned long variantSize, [array, size_is (variantSize)] in PRUint32 variant, [retval] out IProgress progress); */
  NS_IMETHOD CreateBaseStorage(PRInt64 logicalSize, PRUint32 variantSize, PRUint32 *variant, IProgress **progress) = 0;

  /* void deleteStorage ([retval] out IProgress progress); */
  NS_IMETHOD DeleteStorage(IProgress **progress) = 0;

  /* void createDiffStorage (in IMedium target, in unsigned long variantSize, [array, size_is (variantSize)] in PRUint32 variant, [retval] out IProgress progress); */
  NS_IMETHOD CreateDiffStorage(IMedium *target, PRUint32 variantSize, PRUint32 *variant, IProgress **progress) = 0;

  /* void mergeTo (in IMedium target, [retval] out IProgress progress); */
  NS_IMETHOD MergeTo(IMedium *target, IProgress **progress) = 0;

  /* void cloneTo (in IMedium target, in unsigned long variantSize, [array, size_is (variantSize)] in PRUint32 variant, in IMedium parent, [retval] out IProgress progress); */
  NS_IMETHOD CloneTo(IMedium *target, PRUint32 variantSize, PRUint32 *variant, IMedium *parent, IProgress **progress) = 0;

  /* void cloneToBase (in IMedium target, in unsigned long variantSize, [array, size_is (variantSize)] in PRUint32 variant, [retval] out IProgress progress); */
  NS_IMETHOD CloneToBase(IMedium *target, PRUint32 variantSize, PRUint32 *variant, IProgress **progress) = 0;

  /* void setLocation (in wstring location, [retval] out IProgress progress); */
  NS_IMETHOD SetLocation(const PRUnichar *location, IProgress **progress) = 0;

  /* void compact ([retval] out IProgress progress); */
  NS_IMETHOD Compact(IProgress **progress) = 0;

  /* void resize (in long long logicalSize, [retval] out IProgress progress); */
  NS_IMETHOD Resize(PRInt64 logicalSize, IProgress **progress) = 0;

  /* void reset ([retval] out IProgress progress); */
  NS_IMETHOD Reset(IProgress **progress) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMEDIUM \
  NS_IMETHOD GetId(PRUnichar * *aId); \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription); \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription); \
  NS_IMETHOD GetState(PRUint32 *aState); \
  NS_IMETHOD GetVariant(PRUint32 *variantSize, PRUint32 **variant); \
  NS_IMETHOD GetLocation(PRUnichar * *aLocation); \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetDeviceType(PRUint32 *aDeviceType); \
  NS_IMETHOD GetHostDrive(PRBool *aHostDrive); \
  NS_IMETHOD GetSize(PRInt64 *aSize); \
  NS_IMETHOD GetFormat(PRUnichar * *aFormat); \
  NS_IMETHOD GetMediumFormat(IMediumFormat * *aMediumFormat); \
  NS_IMETHOD GetType(PRUint32 *aType); \
  NS_IMETHOD SetType(PRUint32 aType); \
  NS_IMETHOD GetAllowedTypes(PRUint32 *allowedTypesSize, PRUint32 **allowedTypes); \
  NS_IMETHOD GetParent(IMedium * *aParent); \
  NS_IMETHOD GetChildren(PRUint32 *childrenSize, IMedium ***children); \
  NS_IMETHOD GetBase(IMedium * *aBase); \
  NS_IMETHOD GetReadOnly(PRBool *aReadOnly); \
  NS_IMETHOD GetLogicalSize(PRInt64 *aLogicalSize); \
  NS_IMETHOD GetAutoReset(PRBool *aAutoReset); \
  NS_IMETHOD SetAutoReset(PRBool aAutoReset); \
  NS_IMETHOD GetLastAccessError(PRUnichar * *aLastAccessError); \
  NS_IMETHOD GetMachineIds(PRUint32 *machineIdsSize, PRUnichar ***machineIds); \
  NS_IMETHOD SetIds(PRBool setImageId, const PRUnichar *imageId, PRBool setParentId, const PRUnichar *parentId); \
  NS_IMETHOD RefreshState(PRUint32 *state); \
  NS_IMETHOD GetSnapshotIds(const PRUnichar *machineId, PRUint32 *snapshotIdsSize, PRUnichar ***snapshotIds); \
  NS_IMETHOD LockRead(IToken **token); \
  NS_IMETHOD LockWrite(IToken **token); \
  NS_IMETHOD Close(void); \
  NS_IMETHOD GetProperty(const PRUnichar *name, PRUnichar **value); \
  NS_IMETHOD SetProperty(const PRUnichar *name, const PRUnichar *value); \
  NS_IMETHOD GetProperties(const PRUnichar *names, PRUint32 *returnNamesSize, PRUnichar ***returnNames, PRUint32 *returnValuesSize, PRUnichar ***returnValues); \
  NS_IMETHOD SetProperties(PRUint32 namesSize, const PRUnichar **names, PRUint32 valuesSize, const PRUnichar **values); \
  NS_IMETHOD CreateBaseStorage(PRInt64 logicalSize, PRUint32 variantSize, PRUint32 *variant, IProgress **progress); \
  NS_IMETHOD DeleteStorage(IProgress **progress); \
  NS_IMETHOD CreateDiffStorage(IMedium *target, PRUint32 variantSize, PRUint32 *variant, IProgress **progress); \
  NS_IMETHOD MergeTo(IMedium *target, IProgress **progress); \
  NS_IMETHOD CloneTo(IMedium *target, PRUint32 variantSize, PRUint32 *variant, IMedium *parent, IProgress **progress); \
  NS_IMETHOD CloneToBase(IMedium *target, PRUint32 variantSize, PRUint32 *variant, IProgress **progress); \
  NS_IMETHOD SetLocation(const PRUnichar *location, IProgress **progress); \
  NS_IMETHOD Compact(IProgress **progress); \
  NS_IMETHOD Resize(PRInt64 logicalSize, IProgress **progress); \
  NS_IMETHOD Reset(IProgress **progress); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMEDIUM(_to) \
  NS_IMETHOD GetId(PRUnichar * *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return _to GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription) { return _to SetDescription(aDescription); } \
  NS_IMETHOD GetState(PRUint32 *aState) { return _to GetState(aState); } \
  NS_IMETHOD GetVariant(PRUint32 *variantSize, PRUint32 **variant) { return _to GetVariant(variantSize, variant); } \
  NS_IMETHOD GetLocation(PRUnichar * *aLocation) { return _to GetLocation(aLocation); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetDeviceType(PRUint32 *aDeviceType) { return _to GetDeviceType(aDeviceType); } \
  NS_IMETHOD GetHostDrive(PRBool *aHostDrive) { return _to GetHostDrive(aHostDrive); } \
  NS_IMETHOD GetSize(PRInt64 *aSize) { return _to GetSize(aSize); } \
  NS_IMETHOD GetFormat(PRUnichar * *aFormat) { return _to GetFormat(aFormat); } \
  NS_IMETHOD GetMediumFormat(IMediumFormat * *aMediumFormat) { return _to GetMediumFormat(aMediumFormat); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return _to GetType(aType); } \
  NS_IMETHOD SetType(PRUint32 aType) { return _to SetType(aType); } \
  NS_IMETHOD GetAllowedTypes(PRUint32 *allowedTypesSize, PRUint32 **allowedTypes) { return _to GetAllowedTypes(allowedTypesSize, allowedTypes); } \
  NS_IMETHOD GetParent(IMedium * *aParent) { return _to GetParent(aParent); } \
  NS_IMETHOD GetChildren(PRUint32 *childrenSize, IMedium ***children) { return _to GetChildren(childrenSize, children); } \
  NS_IMETHOD GetBase(IMedium * *aBase) { return _to GetBase(aBase); } \
  NS_IMETHOD GetReadOnly(PRBool *aReadOnly) { return _to GetReadOnly(aReadOnly); } \
  NS_IMETHOD GetLogicalSize(PRInt64 *aLogicalSize) { return _to GetLogicalSize(aLogicalSize); } \
  NS_IMETHOD GetAutoReset(PRBool *aAutoReset) { return _to GetAutoReset(aAutoReset); } \
  NS_IMETHOD SetAutoReset(PRBool aAutoReset) { return _to SetAutoReset(aAutoReset); } \
  NS_IMETHOD GetLastAccessError(PRUnichar * *aLastAccessError) { return _to GetLastAccessError(aLastAccessError); } \
  NS_IMETHOD GetMachineIds(PRUint32 *machineIdsSize, PRUnichar ***machineIds) { return _to GetMachineIds(machineIdsSize, machineIds); } \
  NS_IMETHOD SetIds(PRBool setImageId, const PRUnichar *imageId, PRBool setParentId, const PRUnichar *parentId) { return _to SetIds(setImageId, imageId, setParentId, parentId); } \
  NS_IMETHOD RefreshState(PRUint32 *state) { return _to RefreshState(state); } \
  NS_IMETHOD GetSnapshotIds(const PRUnichar *machineId, PRUint32 *snapshotIdsSize, PRUnichar ***snapshotIds) { return _to GetSnapshotIds(machineId, snapshotIdsSize, snapshotIds); } \
  NS_IMETHOD LockRead(IToken **token) { return _to LockRead(token); } \
  NS_IMETHOD LockWrite(IToken **token) { return _to LockWrite(token); } \
  NS_IMETHOD Close(void) { return _to Close(); } \
  NS_IMETHOD GetProperty(const PRUnichar *name, PRUnichar **value) { return _to GetProperty(name, value); } \
  NS_IMETHOD SetProperty(const PRUnichar *name, const PRUnichar *value) { return _to SetProperty(name, value); } \
  NS_IMETHOD GetProperties(const PRUnichar *names, PRUint32 *returnNamesSize, PRUnichar ***returnNames, PRUint32 *returnValuesSize, PRUnichar ***returnValues) { return _to GetProperties(names, returnNamesSize, returnNames, returnValuesSize, returnValues); } \
  NS_IMETHOD SetProperties(PRUint32 namesSize, const PRUnichar **names, PRUint32 valuesSize, const PRUnichar **values) { return _to SetProperties(namesSize, names, valuesSize, values); } \
  NS_IMETHOD CreateBaseStorage(PRInt64 logicalSize, PRUint32 variantSize, PRUint32 *variant, IProgress **progress) { return _to CreateBaseStorage(logicalSize, variantSize, variant, progress); } \
  NS_IMETHOD DeleteStorage(IProgress **progress) { return _to DeleteStorage(progress); } \
  NS_IMETHOD CreateDiffStorage(IMedium *target, PRUint32 variantSize, PRUint32 *variant, IProgress **progress) { return _to CreateDiffStorage(target, variantSize, variant, progress); } \
  NS_IMETHOD MergeTo(IMedium *target, IProgress **progress) { return _to MergeTo(target, progress); } \
  NS_IMETHOD CloneTo(IMedium *target, PRUint32 variantSize, PRUint32 *variant, IMedium *parent, IProgress **progress) { return _to CloneTo(target, variantSize, variant, parent, progress); } \
  NS_IMETHOD CloneToBase(IMedium *target, PRUint32 variantSize, PRUint32 *variant, IProgress **progress) { return _to CloneToBase(target, variantSize, variant, progress); } \
  NS_IMETHOD SetLocation(const PRUnichar *location, IProgress **progress) { return _to SetLocation(location, progress); } \
  NS_IMETHOD Compact(IProgress **progress) { return _to Compact(progress); } \
  NS_IMETHOD Resize(PRInt64 logicalSize, IProgress **progress) { return _to Resize(logicalSize, progress); } \
  NS_IMETHOD Reset(IProgress **progress) { return _to Reset(progress); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMEDIUM(_to) \
  NS_IMETHOD GetId(PRUnichar * *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDescription(aDescription); } \
  NS_IMETHOD GetState(PRUint32 *aState) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetState(aState); } \
  NS_IMETHOD GetVariant(PRUint32 *variantSize, PRUint32 **variant) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVariant(variantSize, variant); } \
  NS_IMETHOD GetLocation(PRUnichar * *aLocation) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLocation(aLocation); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetDeviceType(PRUint32 *aDeviceType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDeviceType(aDeviceType); } \
  NS_IMETHOD GetHostDrive(PRBool *aHostDrive) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHostDrive(aHostDrive); } \
  NS_IMETHOD GetSize(PRInt64 *aSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSize(aSize); } \
  NS_IMETHOD GetFormat(PRUnichar * *aFormat) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFormat(aFormat); } \
  NS_IMETHOD GetMediumFormat(IMediumFormat * *aMediumFormat) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMediumFormat(aMediumFormat); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetType(aType); } \
  NS_IMETHOD SetType(PRUint32 aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetType(aType); } \
  NS_IMETHOD GetAllowedTypes(PRUint32 *allowedTypesSize, PRUint32 **allowedTypes) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllowedTypes(allowedTypesSize, allowedTypes); } \
  NS_IMETHOD GetParent(IMedium * *aParent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParent(aParent); } \
  NS_IMETHOD GetChildren(PRUint32 *childrenSize, IMedium ***children) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChildren(childrenSize, children); } \
  NS_IMETHOD GetBase(IMedium * *aBase) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBase(aBase); } \
  NS_IMETHOD GetReadOnly(PRBool *aReadOnly) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetReadOnly(aReadOnly); } \
  NS_IMETHOD GetLogicalSize(PRInt64 *aLogicalSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogicalSize(aLogicalSize); } \
  NS_IMETHOD GetAutoReset(PRBool *aAutoReset) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAutoReset(aAutoReset); } \
  NS_IMETHOD SetAutoReset(PRBool aAutoReset) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAutoReset(aAutoReset); } \
  NS_IMETHOD GetLastAccessError(PRUnichar * *aLastAccessError) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastAccessError(aLastAccessError); } \
  NS_IMETHOD GetMachineIds(PRUint32 *machineIdsSize, PRUnichar ***machineIds) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMachineIds(machineIdsSize, machineIds); } \
  NS_IMETHOD SetIds(PRBool setImageId, const PRUnichar *imageId, PRBool setParentId, const PRUnichar *parentId) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIds(setImageId, imageId, setParentId, parentId); } \
  NS_IMETHOD RefreshState(PRUint32 *state) { return !_to ? NS_ERROR_NULL_POINTER : _to->RefreshState(state); } \
  NS_IMETHOD GetSnapshotIds(const PRUnichar *machineId, PRUint32 *snapshotIdsSize, PRUnichar ***snapshotIds) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSnapshotIds(machineId, snapshotIdsSize, snapshotIds); } \
  NS_IMETHOD LockRead(IToken **token) { return !_to ? NS_ERROR_NULL_POINTER : _to->LockRead(token); } \
  NS_IMETHOD LockWrite(IToken **token) { return !_to ? NS_ERROR_NULL_POINTER : _to->LockWrite(token); } \
  NS_IMETHOD Close(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Close(); } \
  NS_IMETHOD GetProperty(const PRUnichar *name, PRUnichar **value) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProperty(name, value); } \
  NS_IMETHOD SetProperty(const PRUnichar *name, const PRUnichar *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetProperty(name, value); } \
  NS_IMETHOD GetProperties(const PRUnichar *names, PRUint32 *returnNamesSize, PRUnichar ***returnNames, PRUint32 *returnValuesSize, PRUnichar ***returnValues) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProperties(names, returnNamesSize, returnNames, returnValuesSize, returnValues); } \
  NS_IMETHOD SetProperties(PRUint32 namesSize, const PRUnichar **names, PRUint32 valuesSize, const PRUnichar **values) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetProperties(namesSize, names, valuesSize, values); } \
  NS_IMETHOD CreateBaseStorage(PRInt64 logicalSize, PRUint32 variantSize, PRUint32 *variant, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateBaseStorage(logicalSize, variantSize, variant, progress); } \
  NS_IMETHOD DeleteStorage(IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteStorage(progress); } \
  NS_IMETHOD CreateDiffStorage(IMedium *target, PRUint32 variantSize, PRUint32 *variant, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateDiffStorage(target, variantSize, variant, progress); } \
  NS_IMETHOD MergeTo(IMedium *target, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->MergeTo(target, progress); } \
  NS_IMETHOD CloneTo(IMedium *target, PRUint32 variantSize, PRUint32 *variant, IMedium *parent, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CloneTo(target, variantSize, variant, parent, progress); } \
  NS_IMETHOD CloneToBase(IMedium *target, PRUint32 variantSize, PRUint32 *variant, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CloneToBase(target, variantSize, variant, progress); } \
  NS_IMETHOD SetLocation(const PRUnichar *location, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLocation(location, progress); } \
  NS_IMETHOD Compact(IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Compact(progress); } \
  NS_IMETHOD Resize(PRInt64 logicalSize, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Resize(logicalSize, progress); } \
  NS_IMETHOD Reset(IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Reset(progress); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IMedium
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMEDIUM

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IMedium)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring id; */
NS_IMETHODIMP _MYCLASS_::GetId(PRUnichar * *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring description; */
NS_IMETHODIMP _MYCLASS_::GetDescription(PRUnichar * *aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDescription(const PRUnichar * aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 state; */
NS_IMETHODIMP _MYCLASS_::GetState(PRUint32 *aState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getVariant (out unsigned long variantSize, [array, size_is (variantSize), retval] out PRUint32 variant); */
NS_IMETHODIMP _MYCLASS_::GetVariant(PRUint32 *variantSize, PRUint32 **variant)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring location; */
NS_IMETHODIMP _MYCLASS_::GetLocation(PRUnichar * *aLocation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 deviceType; */
NS_IMETHODIMP _MYCLASS_::GetDeviceType(PRUint32 *aDeviceType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean hostDrive; */
NS_IMETHODIMP _MYCLASS_::GetHostDrive(PRBool *aHostDrive)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long size; */
NS_IMETHODIMP _MYCLASS_::GetSize(PRInt64 *aSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring format; */
NS_IMETHODIMP _MYCLASS_::GetFormat(PRUnichar * *aFormat)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IMediumFormat mediumFormat; */
NS_IMETHODIMP _MYCLASS_::GetMediumFormat(IMediumFormat * *aMediumFormat)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 type; */
NS_IMETHODIMP _MYCLASS_::GetType(PRUint32 *aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetType(PRUint32 aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getAllowedTypes (out unsigned long allowedTypesSize, [array, size_is (allowedTypesSize), retval] out PRUint32 allowedTypes); */
NS_IMETHODIMP _MYCLASS_::GetAllowedTypes(PRUint32 *allowedTypesSize, PRUint32 **allowedTypes)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IMedium parent; */
NS_IMETHODIMP _MYCLASS_::GetParent(IMedium * *aParent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getChildren (out unsigned long childrenSize, [array, size_is (childrenSize), retval] out IMedium children); */
NS_IMETHODIMP _MYCLASS_::GetChildren(PRUint32 *childrenSize, IMedium ***children)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IMedium base; */
NS_IMETHODIMP _MYCLASS_::GetBase(IMedium * *aBase)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean readOnly; */
NS_IMETHODIMP _MYCLASS_::GetReadOnly(PRBool *aReadOnly)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long logicalSize; */
NS_IMETHODIMP _MYCLASS_::GetLogicalSize(PRInt64 *aLogicalSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean autoReset; */
NS_IMETHODIMP _MYCLASS_::GetAutoReset(PRBool *aAutoReset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAutoReset(PRBool aAutoReset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring lastAccessError; */
NS_IMETHODIMP _MYCLASS_::GetLastAccessError(PRUnichar * *aLastAccessError)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMachineIds (out unsigned long machineIdsSize, [array, size_is (machineIdsSize), retval] out wstring machineIds); */
NS_IMETHODIMP _MYCLASS_::GetMachineIds(PRUint32 *machineIdsSize, PRUnichar ***machineIds)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setIds (in boolean setImageId, in wstring imageId, in boolean setParentId, in wstring parentId); */
NS_IMETHODIMP _MYCLASS_::SetIds(PRBool setImageId, const PRUnichar *imageId, PRBool setParentId, const PRUnichar *parentId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void refreshState ([retval] out PRUint32 state); */
NS_IMETHODIMP _MYCLASS_::RefreshState(PRUint32 *state)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getSnapshotIds (in wstring machineId, out unsigned long snapshotIdsSize, [array, size_is (snapshotIdsSize), retval] out wstring snapshotIds); */
NS_IMETHODIMP _MYCLASS_::GetSnapshotIds(const PRUnichar *machineId, PRUint32 *snapshotIdsSize, PRUnichar ***snapshotIds)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void lockRead ([retval] out IToken token); */
NS_IMETHODIMP _MYCLASS_::LockRead(IToken **token)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void lockWrite ([retval] out IToken token); */
NS_IMETHODIMP _MYCLASS_::LockWrite(IToken **token)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void close (); */
NS_IMETHODIMP _MYCLASS_::Close()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getProperty (in wstring name, [retval] out wstring value); */
NS_IMETHODIMP _MYCLASS_::GetProperty(const PRUnichar *name, PRUnichar **value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setProperty (in wstring name, in wstring value); */
NS_IMETHODIMP _MYCLASS_::SetProperty(const PRUnichar *name, const PRUnichar *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getProperties (in wstring names, out unsigned long returnNamesSize, [array, size_is (returnNamesSize)] out wstring returnNames, out unsigned long returnValuesSize, [array, size_is (returnValuesSize), retval] out wstring returnValues); */
NS_IMETHODIMP _MYCLASS_::GetProperties(const PRUnichar *names, PRUint32 *returnNamesSize, PRUnichar ***returnNames, PRUint32 *returnValuesSize, PRUnichar ***returnValues)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setProperties (in unsigned long namesSize, [array, size_is (namesSize)] in wstring names, in unsigned long valuesSize, [array, size_is (valuesSize)] in wstring values); */
NS_IMETHODIMP _MYCLASS_::SetProperties(PRUint32 namesSize, const PRUnichar **names, PRUint32 valuesSize, const PRUnichar **values)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createBaseStorage (in long long logicalSize, in unsigned long variantSize, [array, size_is (variantSize)] in PRUint32 variant, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CreateBaseStorage(PRInt64 logicalSize, PRUint32 variantSize, PRUint32 *variant, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteStorage ([retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::DeleteStorage(IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createDiffStorage (in IMedium target, in unsigned long variantSize, [array, size_is (variantSize)] in PRUint32 variant, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CreateDiffStorage(IMedium *target, PRUint32 variantSize, PRUint32 *variant, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void mergeTo (in IMedium target, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::MergeTo(IMedium *target, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void cloneTo (in IMedium target, in unsigned long variantSize, [array, size_is (variantSize)] in PRUint32 variant, in IMedium parent, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CloneTo(IMedium *target, PRUint32 variantSize, PRUint32 *variant, IMedium *parent, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void cloneToBase (in IMedium target, in unsigned long variantSize, [array, size_is (variantSize)] in PRUint32 variant, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CloneToBase(IMedium *target, PRUint32 variantSize, PRUint32 *variant, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setLocation (in wstring location, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::SetLocation(const PRUnichar *location, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void compact ([retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::Compact(IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void resize (in long long logicalSize, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::Resize(PRInt64 logicalSize, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void reset ([retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::Reset(IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IMedium_GETTER_Id_TO(smth) NS_IMETHOD GetId (PRUnichar * * aId) { return smth GetId (aId); }
#define COM_FORWARD_IMedium_GETTER_Id_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_Id_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_Id_TO_BASE(base) COM_FORWARD_IMedium_GETTER_Id_TO (base::)
#define COM_FORWARD_IMedium_GETTER_Description_TO(smth) NS_IMETHOD GetDescription (PRUnichar * * aDescription) { return smth GetDescription (aDescription); }
#define COM_FORWARD_IMedium_GETTER_Description_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_Description_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_Description_TO_BASE(base) COM_FORWARD_IMedium_GETTER_Description_TO (base::)
#define COM_FORWARD_IMedium_SETTER_Description_TO(smth) NS_IMETHOD SetDescription (const PRUnichar * aDescription) { return smth SetDescription (aDescription); }
#define COM_FORWARD_IMedium_SETTER_Description_TO_OBJ(obj) COM_FORWARD_IMedium_SETTER_Description_TO ((obj)->)
#define COM_FORWARD_IMedium_SETTER_Description_TO_BASE(base) COM_FORWARD_IMedium_SETTER_Description_TO (base::)
#define COM_FORWARD_IMedium_GETTER_State_TO(smth) NS_IMETHOD GetState (PRUint32 * aState) { return smth GetState (aState); }
#define COM_FORWARD_IMedium_GETTER_State_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_State_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_State_TO_BASE(base) COM_FORWARD_IMedium_GETTER_State_TO (base::)
#define COM_FORWARD_IMedium_GETTER_Variant_TO(smth) NS_IMETHOD GetVariant (PRUint32 * aVariantSize, PRUint32 * * aVariant) { return smth GetVariant (aVariantSize, aVariant); }
#define COM_FORWARD_IMedium_GETTER_Variant_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_Variant_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_Variant_TO_BASE(base) COM_FORWARD_IMedium_GETTER_Variant_TO (base::)
#define COM_FORWARD_IMedium_GETTER_Location_TO(smth) NS_IMETHOD GetLocation (PRUnichar * * aLocation) { return smth GetLocation (aLocation); }
#define COM_FORWARD_IMedium_GETTER_Location_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_Location_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_Location_TO_BASE(base) COM_FORWARD_IMedium_GETTER_Location_TO (base::)
#define COM_FORWARD_IMedium_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IMedium_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_Name_TO_BASE(base) COM_FORWARD_IMedium_GETTER_Name_TO (base::)
#define COM_FORWARD_IMedium_GETTER_DeviceType_TO(smth) NS_IMETHOD GetDeviceType (PRUint32 * aDeviceType) { return smth GetDeviceType (aDeviceType); }
#define COM_FORWARD_IMedium_GETTER_DeviceType_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_DeviceType_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_DeviceType_TO_BASE(base) COM_FORWARD_IMedium_GETTER_DeviceType_TO (base::)
#define COM_FORWARD_IMedium_GETTER_HostDrive_TO(smth) NS_IMETHOD GetHostDrive (PRBool * aHostDrive) { return smth GetHostDrive (aHostDrive); }
#define COM_FORWARD_IMedium_GETTER_HostDrive_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_HostDrive_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_HostDrive_TO_BASE(base) COM_FORWARD_IMedium_GETTER_HostDrive_TO (base::)
#define COM_FORWARD_IMedium_GETTER_Size_TO(smth) NS_IMETHOD GetSize (PRInt64 * aSize) { return smth GetSize (aSize); }
#define COM_FORWARD_IMedium_GETTER_Size_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_Size_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_Size_TO_BASE(base) COM_FORWARD_IMedium_GETTER_Size_TO (base::)
#define COM_FORWARD_IMedium_GETTER_Format_TO(smth) NS_IMETHOD GetFormat (PRUnichar * * aFormat) { return smth GetFormat (aFormat); }
#define COM_FORWARD_IMedium_GETTER_Format_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_Format_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_Format_TO_BASE(base) COM_FORWARD_IMedium_GETTER_Format_TO (base::)
#define COM_FORWARD_IMedium_GETTER_MediumFormat_TO(smth) NS_IMETHOD GetMediumFormat (IMediumFormat * * aMediumFormat) { return smth GetMediumFormat (aMediumFormat); }
#define COM_FORWARD_IMedium_GETTER_MediumFormat_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_MediumFormat_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_MediumFormat_TO_BASE(base) COM_FORWARD_IMedium_GETTER_MediumFormat_TO (base::)
#define COM_FORWARD_IMedium_GETTER_Type_TO(smth) NS_IMETHOD GetType (PRUint32 * aType) { return smth GetType (aType); }
#define COM_FORWARD_IMedium_GETTER_Type_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_Type_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_Type_TO_BASE(base) COM_FORWARD_IMedium_GETTER_Type_TO (base::)
#define COM_FORWARD_IMedium_SETTER_Type_TO(smth) NS_IMETHOD SetType (PRUint32 aType) { return smth SetType (aType); }
#define COM_FORWARD_IMedium_SETTER_Type_TO_OBJ(obj) COM_FORWARD_IMedium_SETTER_Type_TO ((obj)->)
#define COM_FORWARD_IMedium_SETTER_Type_TO_BASE(base) COM_FORWARD_IMedium_SETTER_Type_TO (base::)
#define COM_FORWARD_IMedium_GETTER_AllowedTypes_TO(smth) NS_IMETHOD GetAllowedTypes (PRUint32 * aAllowedTypesSize, PRUint32 * * aAllowedTypes) { return smth GetAllowedTypes (aAllowedTypesSize, aAllowedTypes); }
#define COM_FORWARD_IMedium_GETTER_AllowedTypes_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_AllowedTypes_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_AllowedTypes_TO_BASE(base) COM_FORWARD_IMedium_GETTER_AllowedTypes_TO (base::)
#define COM_FORWARD_IMedium_GETTER_Parent_TO(smth) NS_IMETHOD GetParent (IMedium * * aParent) { return smth GetParent (aParent); }
#define COM_FORWARD_IMedium_GETTER_Parent_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_Parent_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_Parent_TO_BASE(base) COM_FORWARD_IMedium_GETTER_Parent_TO (base::)
#define COM_FORWARD_IMedium_GETTER_Children_TO(smth) NS_IMETHOD GetChildren (PRUint32 * aChildrenSize, IMedium * * * aChildren) { return smth GetChildren (aChildrenSize, aChildren); }
#define COM_FORWARD_IMedium_GETTER_Children_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_Children_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_Children_TO_BASE(base) COM_FORWARD_IMedium_GETTER_Children_TO (base::)
#define COM_FORWARD_IMedium_GETTER_Base_TO(smth) NS_IMETHOD GetBase (IMedium * * aBase) { return smth GetBase (aBase); }
#define COM_FORWARD_IMedium_GETTER_Base_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_Base_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_Base_TO_BASE(base) COM_FORWARD_IMedium_GETTER_Base_TO (base::)
#define COM_FORWARD_IMedium_GETTER_ReadOnly_TO(smth) NS_IMETHOD GetReadOnly (PRBool * aReadOnly) { return smth GetReadOnly (aReadOnly); }
#define COM_FORWARD_IMedium_GETTER_ReadOnly_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_ReadOnly_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_ReadOnly_TO_BASE(base) COM_FORWARD_IMedium_GETTER_ReadOnly_TO (base::)
#define COM_FORWARD_IMedium_GETTER_LogicalSize_TO(smth) NS_IMETHOD GetLogicalSize (PRInt64 * aLogicalSize) { return smth GetLogicalSize (aLogicalSize); }
#define COM_FORWARD_IMedium_GETTER_LogicalSize_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_LogicalSize_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_LogicalSize_TO_BASE(base) COM_FORWARD_IMedium_GETTER_LogicalSize_TO (base::)
#define COM_FORWARD_IMedium_GETTER_AutoReset_TO(smth) NS_IMETHOD GetAutoReset (PRBool * aAutoReset) { return smth GetAutoReset (aAutoReset); }
#define COM_FORWARD_IMedium_GETTER_AutoReset_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_AutoReset_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_AutoReset_TO_BASE(base) COM_FORWARD_IMedium_GETTER_AutoReset_TO (base::)
#define COM_FORWARD_IMedium_SETTER_AutoReset_TO(smth) NS_IMETHOD SetAutoReset (PRBool aAutoReset) { return smth SetAutoReset (aAutoReset); }
#define COM_FORWARD_IMedium_SETTER_AutoReset_TO_OBJ(obj) COM_FORWARD_IMedium_SETTER_AutoReset_TO ((obj)->)
#define COM_FORWARD_IMedium_SETTER_AutoReset_TO_BASE(base) COM_FORWARD_IMedium_SETTER_AutoReset_TO (base::)
#define COM_FORWARD_IMedium_GETTER_LastAccessError_TO(smth) NS_IMETHOD GetLastAccessError (PRUnichar * * aLastAccessError) { return smth GetLastAccessError (aLastAccessError); }
#define COM_FORWARD_IMedium_GETTER_LastAccessError_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_LastAccessError_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_LastAccessError_TO_BASE(base) COM_FORWARD_IMedium_GETTER_LastAccessError_TO (base::)
#define COM_FORWARD_IMedium_GETTER_MachineIds_TO(smth) NS_IMETHOD GetMachineIds (PRUint32 * aMachineIdsSize, PRUnichar * * * aMachineIds) { return smth GetMachineIds (aMachineIdsSize, aMachineIds); }
#define COM_FORWARD_IMedium_GETTER_MachineIds_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_MachineIds_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_MachineIds_TO_BASE(base) COM_FORWARD_IMedium_GETTER_MachineIds_TO (base::)
#define COM_FORWARD_IMedium_SetIds_TO(smth) NS_IMETHOD SetIds (PRBool aSetImageId, PRUnichar * aImageId, PRBool aSetParentId, PRUnichar * aParentId) { return smth SetIds (aSetImageId, aImageId, aSetParentId, aParentId); }
#define COM_FORWARD_IMedium_SetIds_TO_OBJ(obj) COM_FORWARD_IMedium_SetIds_TO ((obj)->)
#define COM_FORWARD_IMedium_SetIds_TO_BASE(base) COM_FORWARD_IMedium_SetIds_TO (base::)
#define COM_FORWARD_IMedium_RefreshState_TO(smth) NS_IMETHOD RefreshState (PRUint32 * aState) { return smth RefreshState (aState); }
#define COM_FORWARD_IMedium_RefreshState_TO_OBJ(obj) COM_FORWARD_IMedium_RefreshState_TO ((obj)->)
#define COM_FORWARD_IMedium_RefreshState_TO_BASE(base) COM_FORWARD_IMedium_RefreshState_TO (base::)
#define COM_FORWARD_IMedium_GetSnapshotIds_TO(smth) NS_IMETHOD GetSnapshotIds (PRUnichar * aMachineId, PRUint32 * aSnapshotIdsSize, PRUnichar * * * aSnapshotIds) { return smth GetSnapshotIds (aMachineId, aSnapshotIdsSize, aSnapshotIds); }
#define COM_FORWARD_IMedium_GetSnapshotIds_TO_OBJ(obj) COM_FORWARD_IMedium_GetSnapshotIds_TO ((obj)->)
#define COM_FORWARD_IMedium_GetSnapshotIds_TO_BASE(base) COM_FORWARD_IMedium_GetSnapshotIds_TO (base::)
#define COM_FORWARD_IMedium_LockRead_TO(smth) NS_IMETHOD LockRead (IToken * * aToken) { return smth LockRead (aToken); }
#define COM_FORWARD_IMedium_LockRead_TO_OBJ(obj) COM_FORWARD_IMedium_LockRead_TO ((obj)->)
#define COM_FORWARD_IMedium_LockRead_TO_BASE(base) COM_FORWARD_IMedium_LockRead_TO (base::)
#define COM_FORWARD_IMedium_LockWrite_TO(smth) NS_IMETHOD LockWrite (IToken * * aToken) { return smth LockWrite (aToken); }
#define COM_FORWARD_IMedium_LockWrite_TO_OBJ(obj) COM_FORWARD_IMedium_LockWrite_TO ((obj)->)
#define COM_FORWARD_IMedium_LockWrite_TO_BASE(base) COM_FORWARD_IMedium_LockWrite_TO (base::)
#define COM_FORWARD_IMedium_Close_TO(smth) NS_IMETHOD Close() { return smth Close(); }
#define COM_FORWARD_IMedium_Close_TO_OBJ(obj) COM_FORWARD_IMedium_Close_TO ((obj)->)
#define COM_FORWARD_IMedium_Close_TO_BASE(base) COM_FORWARD_IMedium_Close_TO (base::)
#define COM_FORWARD_IMedium_GetProperty_TO(smth) NS_IMETHOD GetProperty (PRUnichar * aName, PRUnichar * * aValue) { return smth GetProperty (aName, aValue); }
#define COM_FORWARD_IMedium_GetProperty_TO_OBJ(obj) COM_FORWARD_IMedium_GetProperty_TO ((obj)->)
#define COM_FORWARD_IMedium_GetProperty_TO_BASE(base) COM_FORWARD_IMedium_GetProperty_TO (base::)
#define COM_FORWARD_IMedium_SetProperty_TO(smth) NS_IMETHOD SetProperty (PRUnichar * aName, PRUnichar * aValue) { return smth SetProperty (aName, aValue); }
#define COM_FORWARD_IMedium_SetProperty_TO_OBJ(obj) COM_FORWARD_IMedium_SetProperty_TO ((obj)->)
#define COM_FORWARD_IMedium_SetProperty_TO_BASE(base) COM_FORWARD_IMedium_SetProperty_TO (base::)
#define COM_FORWARD_IMedium_GetProperties_TO(smth) NS_IMETHOD GetProperties (PRUnichar * aNames, PRUint32 * aReturnNamesSize, PRUnichar * * * aReturnNames, PRUint32 * aReturnValuesSize, PRUnichar * * * aReturnValues) { return smth GetProperties (aNames, aReturnNamesSize+++, aReturnNames, aReturnValuesSize, aReturnValues); }
#define COM_FORWARD_IMedium_GetProperties_TO_OBJ(obj) COM_FORWARD_IMedium_GetProperties_TO ((obj)->)
#define COM_FORWARD_IMedium_GetProperties_TO_BASE(base) COM_FORWARD_IMedium_GetProperties_TO (base::)
#define COM_FORWARD_IMedium_SetProperties_TO(smth) NS_IMETHOD SetProperties (PRUint32 aNamesSize, PRUnichar * * aNames, PRUint32 aValuesSize, PRUnichar * * aValues) { return smth SetProperties (aNamesSize+++, aNames, aValuesSize, aValues); }
#define COM_FORWARD_IMedium_SetProperties_TO_OBJ(obj) COM_FORWARD_IMedium_SetProperties_TO ((obj)->)
#define COM_FORWARD_IMedium_SetProperties_TO_BASE(base) COM_FORWARD_IMedium_SetProperties_TO (base::)
#define COM_FORWARD_IMedium_CreateBaseStorage_TO(smth) NS_IMETHOD CreateBaseStorage (PRInt64 aLogicalSize, PRUint32 aVariantSize, PRUint32 * aVariant, IProgress * * aProgress) { return smth CreateBaseStorage (aLogicalSize, aVariantSize+++, aVariant, aProgress); }
#define COM_FORWARD_IMedium_CreateBaseStorage_TO_OBJ(obj) COM_FORWARD_IMedium_CreateBaseStorage_TO ((obj)->)
#define COM_FORWARD_IMedium_CreateBaseStorage_TO_BASE(base) COM_FORWARD_IMedium_CreateBaseStorage_TO (base::)
#define COM_FORWARD_IMedium_DeleteStorage_TO(smth) NS_IMETHOD DeleteStorage (IProgress * * aProgress) { return smth DeleteStorage (aProgress); }
#define COM_FORWARD_IMedium_DeleteStorage_TO_OBJ(obj) COM_FORWARD_IMedium_DeleteStorage_TO ((obj)->)
#define COM_FORWARD_IMedium_DeleteStorage_TO_BASE(base) COM_FORWARD_IMedium_DeleteStorage_TO (base::)
#define COM_FORWARD_IMedium_CreateDiffStorage_TO(smth) NS_IMETHOD CreateDiffStorage (IMedium * aTarget, PRUint32 aVariantSize, PRUint32 * aVariant, IProgress * * aProgress) { return smth CreateDiffStorage (aTarget, aVariantSize+++, aVariant, aProgress); }
#define COM_FORWARD_IMedium_CreateDiffStorage_TO_OBJ(obj) COM_FORWARD_IMedium_CreateDiffStorage_TO ((obj)->)
#define COM_FORWARD_IMedium_CreateDiffStorage_TO_BASE(base) COM_FORWARD_IMedium_CreateDiffStorage_TO (base::)
#define COM_FORWARD_IMedium_MergeTo_TO(smth) NS_IMETHOD MergeTo (IMedium * aTarget, IProgress * * aProgress) { return smth MergeTo (aTarget, aProgress); }
#define COM_FORWARD_IMedium_MergeTo_TO_OBJ(obj) COM_FORWARD_IMedium_MergeTo_TO ((obj)->)
#define COM_FORWARD_IMedium_MergeTo_TO_BASE(base) COM_FORWARD_IMedium_MergeTo_TO (base::)
#define COM_FORWARD_IMedium_CloneTo_TO(smth) NS_IMETHOD CloneTo (IMedium * aTarget, PRUint32 aVariantSize, PRUint32 * aVariant, IMedium * aParent, IProgress * * aProgress) { return smth CloneTo (aTarget, aVariantSize+++, aVariant, aParent, aProgress); }
#define COM_FORWARD_IMedium_CloneTo_TO_OBJ(obj) COM_FORWARD_IMedium_CloneTo_TO ((obj)->)
#define COM_FORWARD_IMedium_CloneTo_TO_BASE(base) COM_FORWARD_IMedium_CloneTo_TO (base::)
#define COM_FORWARD_IMedium_CloneToBase_TO(smth) NS_IMETHOD CloneToBase (IMedium * aTarget, PRUint32 aVariantSize, PRUint32 * aVariant, IProgress * * aProgress) { return smth CloneToBase (aTarget, aVariantSize+++, aVariant, aProgress); }
#define COM_FORWARD_IMedium_CloneToBase_TO_OBJ(obj) COM_FORWARD_IMedium_CloneToBase_TO ((obj)->)
#define COM_FORWARD_IMedium_CloneToBase_TO_BASE(base) COM_FORWARD_IMedium_CloneToBase_TO (base::)
#define COM_FORWARD_IMedium_SetLocation_TO(smth) NS_IMETHOD SetLocation (PRUnichar * aLocation, IProgress * * aProgress) { return smth SetLocation (aLocation, aProgress); }
#define COM_FORWARD_IMedium_SetLocation_TO_OBJ(obj) COM_FORWARD_IMedium_SetLocation_TO ((obj)->)
#define COM_FORWARD_IMedium_SetLocation_TO_BASE(base) COM_FORWARD_IMedium_SetLocation_TO (base::)
#define COM_FORWARD_IMedium_Compact_TO(smth) NS_IMETHOD Compact (IProgress * * aProgress) { return smth Compact (aProgress); }
#define COM_FORWARD_IMedium_Compact_TO_OBJ(obj) COM_FORWARD_IMedium_Compact_TO ((obj)->)
#define COM_FORWARD_IMedium_Compact_TO_BASE(base) COM_FORWARD_IMedium_Compact_TO (base::)
#define COM_FORWARD_IMedium_Resize_TO(smth) NS_IMETHOD Resize (PRInt64 aLogicalSize, IProgress * * aProgress) { return smth Resize (aLogicalSize, aProgress); }
#define COM_FORWARD_IMedium_Resize_TO_OBJ(obj) COM_FORWARD_IMedium_Resize_TO ((obj)->)
#define COM_FORWARD_IMedium_Resize_TO_BASE(base) COM_FORWARD_IMedium_Resize_TO (base::)
#define COM_FORWARD_IMedium_Reset_TO(smth) NS_IMETHOD Reset (IProgress * * aProgress) { return smth Reset (aProgress); }
#define COM_FORWARD_IMedium_Reset_TO_OBJ(obj) COM_FORWARD_IMedium_Reset_TO ((obj)->)
#define COM_FORWARD_IMedium_Reset_TO_BASE(base) COM_FORWARD_IMedium_Reset_TO (base::)
#define COM_FORWARD_IMedium_TO(smth) NS_FORWARD_IMEDIUM (smth)
#define COM_FORWARD_IMedium_TO_OBJ(obj) COM_FORWARD_IMedium_TO ((obj)->)
#define COM_FORWARD_IMedium_TO_BASE(base) COM_FORWARD_IMedium_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IMedium;

/* starting interface:    IMediumFormat */
#define IMEDIUMFORMAT_IID_STR "6238e1cf-a17d-4ec1-8172-418bfb22b93a"

#define IMEDIUMFORMAT_IID \
  {0x6238e1cf, 0xa17d, 0x4ec1, \
    { 0x81, 0x72, 0x41, 0x8b, 0xfb, 0x22, 0xb9, 0x3a }}

class NS_NO_VTABLE IMediumFormat : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMEDIUMFORMAT_IID)

  /* readonly attribute wstring id; */
  NS_IMETHOD GetId(PRUnichar * *aId) = 0;

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* void getCapabilities (out unsigned long capabilitiesSize, [array, size_is (capabilitiesSize), retval] out PRUint32 capabilities); */
  NS_IMETHOD GetCapabilities(PRUint32 *capabilitiesSize, PRUint32 **capabilities) = 0;

  /* void describeFileExtensions (out unsigned long extensionsSize, [array, size_is (extensionsSize)] out wstring extensions, out unsigned long typesSize, [array, size_is (typesSize)] out PRUint32 types); */
  NS_IMETHOD DescribeFileExtensions(PRUint32 *extensionsSize, PRUnichar ***extensions, PRUint32 *typesSize, PRUint32 **types) = 0;

  /* void describeProperties (out unsigned long namesSize, [array, size_is (namesSize)] out wstring names, out unsigned long descriptionsSize, [array, size_is (descriptionsSize)] out wstring descriptions, out unsigned long typesSize, [array, size_is (typesSize)] out PRUint32 types, out unsigned long flagsSize, [array, size_is (flagsSize)] out unsigned long flags, out unsigned long defaultsSize, [array, size_is (defaultsSize)] out wstring defaults); */
  NS_IMETHOD DescribeProperties(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *descriptionsSize, PRUnichar ***descriptions, PRUint32 *typesSize, PRUint32 **types, PRUint32 *flagsSize, PRUint32 **flags, PRUint32 *defaultsSize, PRUnichar ***defaults) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMEDIUMFORMAT \
  NS_IMETHOD GetId(PRUnichar * *aId); \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetCapabilities(PRUint32 *capabilitiesSize, PRUint32 **capabilities); \
  NS_IMETHOD DescribeFileExtensions(PRUint32 *extensionsSize, PRUnichar ***extensions, PRUint32 *typesSize, PRUint32 **types); \
  NS_IMETHOD DescribeProperties(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *descriptionsSize, PRUnichar ***descriptions, PRUint32 *typesSize, PRUint32 **types, PRUint32 *flagsSize, PRUint32 **flags, PRUint32 *defaultsSize, PRUnichar ***defaults); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMEDIUMFORMAT(_to) \
  NS_IMETHOD GetId(PRUnichar * *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetCapabilities(PRUint32 *capabilitiesSize, PRUint32 **capabilities) { return _to GetCapabilities(capabilitiesSize, capabilities); } \
  NS_IMETHOD DescribeFileExtensions(PRUint32 *extensionsSize, PRUnichar ***extensions, PRUint32 *typesSize, PRUint32 **types) { return _to DescribeFileExtensions(extensionsSize, extensions, typesSize, types); } \
  NS_IMETHOD DescribeProperties(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *descriptionsSize, PRUnichar ***descriptions, PRUint32 *typesSize, PRUint32 **types, PRUint32 *flagsSize, PRUint32 **flags, PRUint32 *defaultsSize, PRUnichar ***defaults) { return _to DescribeProperties(namesSize, names, descriptionsSize, descriptions, typesSize, types, flagsSize, flags, defaultsSize, defaults); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMEDIUMFORMAT(_to) \
  NS_IMETHOD GetId(PRUnichar * *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetCapabilities(PRUint32 *capabilitiesSize, PRUint32 **capabilities) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCapabilities(capabilitiesSize, capabilities); } \
  NS_IMETHOD DescribeFileExtensions(PRUint32 *extensionsSize, PRUnichar ***extensions, PRUint32 *typesSize, PRUint32 **types) { return !_to ? NS_ERROR_NULL_POINTER : _to->DescribeFileExtensions(extensionsSize, extensions, typesSize, types); } \
  NS_IMETHOD DescribeProperties(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *descriptionsSize, PRUnichar ***descriptions, PRUint32 *typesSize, PRUint32 **types, PRUint32 *flagsSize, PRUint32 **flags, PRUint32 *defaultsSize, PRUnichar ***defaults) { return !_to ? NS_ERROR_NULL_POINTER : _to->DescribeProperties(namesSize, names, descriptionsSize, descriptions, typesSize, types, flagsSize, flags, defaultsSize, defaults); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IMediumFormat
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMEDIUMFORMAT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IMediumFormat)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring id; */
NS_IMETHODIMP _MYCLASS_::GetId(PRUnichar * *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getCapabilities (out unsigned long capabilitiesSize, [array, size_is (capabilitiesSize), retval] out PRUint32 capabilities); */
NS_IMETHODIMP _MYCLASS_::GetCapabilities(PRUint32 *capabilitiesSize, PRUint32 **capabilities)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void describeFileExtensions (out unsigned long extensionsSize, [array, size_is (extensionsSize)] out wstring extensions, out unsigned long typesSize, [array, size_is (typesSize)] out PRUint32 types); */
NS_IMETHODIMP _MYCLASS_::DescribeFileExtensions(PRUint32 *extensionsSize, PRUnichar ***extensions, PRUint32 *typesSize, PRUint32 **types)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void describeProperties (out unsigned long namesSize, [array, size_is (namesSize)] out wstring names, out unsigned long descriptionsSize, [array, size_is (descriptionsSize)] out wstring descriptions, out unsigned long typesSize, [array, size_is (typesSize)] out PRUint32 types, out unsigned long flagsSize, [array, size_is (flagsSize)] out unsigned long flags, out unsigned long defaultsSize, [array, size_is (defaultsSize)] out wstring defaults); */
NS_IMETHODIMP _MYCLASS_::DescribeProperties(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *descriptionsSize, PRUnichar ***descriptions, PRUint32 *typesSize, PRUint32 **types, PRUint32 *flagsSize, PRUint32 **flags, PRUint32 *defaultsSize, PRUnichar ***defaults)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IMediumFormat_GETTER_Id_TO(smth) NS_IMETHOD GetId (PRUnichar * * aId) { return smth GetId (aId); }
#define COM_FORWARD_IMediumFormat_GETTER_Id_TO_OBJ(obj) COM_FORWARD_IMediumFormat_GETTER_Id_TO ((obj)->)
#define COM_FORWARD_IMediumFormat_GETTER_Id_TO_BASE(base) COM_FORWARD_IMediumFormat_GETTER_Id_TO (base::)
#define COM_FORWARD_IMediumFormat_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IMediumFormat_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IMediumFormat_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IMediumFormat_GETTER_Name_TO_BASE(base) COM_FORWARD_IMediumFormat_GETTER_Name_TO (base::)
#define COM_FORWARD_IMediumFormat_GETTER_Capabilities_TO(smth) NS_IMETHOD GetCapabilities (PRUint32 * aCapabilitiesSize, PRUint32 * * aCapabilities) { return smth GetCapabilities (aCapabilitiesSize, aCapabilities); }
#define COM_FORWARD_IMediumFormat_GETTER_Capabilities_TO_OBJ(obj) COM_FORWARD_IMediumFormat_GETTER_Capabilities_TO ((obj)->)
#define COM_FORWARD_IMediumFormat_GETTER_Capabilities_TO_BASE(base) COM_FORWARD_IMediumFormat_GETTER_Capabilities_TO (base::)
#define COM_FORWARD_IMediumFormat_DescribeFileExtensions_TO(smth) NS_IMETHOD DescribeFileExtensions (PRUint32 * aExtensionsSize, PRUnichar * * * aExtensions, PRUint32 * aTypesSize, PRUint32 * * aTypes) { return smth DescribeFileExtensions (aExtensionsSize+++, aExtensions, aTypesSize, aTypes); }
#define COM_FORWARD_IMediumFormat_DescribeFileExtensions_TO_OBJ(obj) COM_FORWARD_IMediumFormat_DescribeFileExtensions_TO ((obj)->)
#define COM_FORWARD_IMediumFormat_DescribeFileExtensions_TO_BASE(base) COM_FORWARD_IMediumFormat_DescribeFileExtensions_TO (base::)
#define COM_FORWARD_IMediumFormat_DescribeProperties_TO(smth) NS_IMETHOD DescribeProperties (PRUint32 * aNamesSize, PRUnichar * * * aNames, PRUint32 * aDescriptionsSize, PRUnichar * * * aDescriptions, PRUint32 * aTypesSize, PRUint32 * * aTypes, PRUint32 * aFlagsSize, PRUint32 * * aFlags, PRUint32 * aDefaultsSize, PRUnichar * * * aDefaults) { return smth DescribeProperties (aNamesSize+++, aNames, aDescriptionsSize+++, aDescriptions, aTypesSize+++, aTypes, aFlagsSize+++, aFlags, aDefaultsSize, aDefaults); }
#define COM_FORWARD_IMediumFormat_DescribeProperties_TO_OBJ(obj) COM_FORWARD_IMediumFormat_DescribeProperties_TO ((obj)->)
#define COM_FORWARD_IMediumFormat_DescribeProperties_TO_BASE(base) COM_FORWARD_IMediumFormat_DescribeProperties_TO (base::)
#define COM_FORWARD_IMediumFormat_TO(smth) NS_FORWARD_IMEDIUMFORMAT (smth)
#define COM_FORWARD_IMediumFormat_TO_OBJ(obj) COM_FORWARD_IMediumFormat_TO ((obj)->)
#define COM_FORWARD_IMediumFormat_TO_BASE(base) COM_FORWARD_IMediumFormat_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IMediumFormat;

/* starting interface:    IToken */
#define ITOKEN_IID_STR "3b1c4797-e289-4d4c-b74c-50c9b86a36f8"

#define ITOKEN_IID \
  {0x3b1c4797, 0xe289, 0x4d4c, \
    { 0xb7, 0x4c, 0x50, 0xc9, 0xb8, 0x6a, 0x36, 0xf8 }}

class NS_NO_VTABLE IToken : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ITOKEN_IID)

  /* void abandon (); */
  NS_IMETHOD Abandon(void) = 0;

  /* void dummy (); */
  NS_IMETHOD Dummy(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ITOKEN \
  NS_IMETHOD Abandon(void); \
  NS_IMETHOD Dummy(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ITOKEN(_to) \
  NS_IMETHOD Abandon(void) { return _to Abandon(); } \
  NS_IMETHOD Dummy(void) { return _to Dummy(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ITOKEN(_to) \
  NS_IMETHOD Abandon(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Abandon(); } \
  NS_IMETHOD Dummy(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Dummy(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IToken
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ITOKEN

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IToken)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* void abandon (); */
NS_IMETHODIMP _MYCLASS_::Abandon()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void dummy (); */
NS_IMETHODIMP _MYCLASS_::Dummy()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IToken_Abandon_TO(smth) NS_IMETHOD Abandon() { return smth Abandon(); }
#define COM_FORWARD_IToken_Abandon_TO_OBJ(obj) COM_FORWARD_IToken_Abandon_TO ((obj)->)
#define COM_FORWARD_IToken_Abandon_TO_BASE(base) COM_FORWARD_IToken_Abandon_TO (base::)
#define COM_FORWARD_IToken_Dummy_TO(smth) NS_IMETHOD Dummy() { return smth Dummy(); }
#define COM_FORWARD_IToken_Dummy_TO_OBJ(obj) COM_FORWARD_IToken_Dummy_TO ((obj)->)
#define COM_FORWARD_IToken_Dummy_TO_BASE(base) COM_FORWARD_IToken_Dummy_TO (base::)
#define COM_FORWARD_IToken_TO(smth) NS_FORWARD_ITOKEN (smth)
#define COM_FORWARD_IToken_TO_OBJ(obj) COM_FORWARD_IToken_TO ((obj)->)
#define COM_FORWARD_IToken_TO_BASE(base) COM_FORWARD_IToken_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IToken;

/* starting interface:    IKeyboard */
#define IKEYBOARD_IID_STR "f6916ec5-a881-4237-898f-7de58cf88672"

#define IKEYBOARD_IID \
  {0xf6916ec5, 0xa881, 0x4237, \
    { 0x89, 0x8f, 0x7d, 0xe5, 0x8c, 0xf8, 0x86, 0x72 }}

class NS_NO_VTABLE IKeyboard : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IKEYBOARD_IID)

  /* readonly attribute IEventSource eventSource; */
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) = 0;

  /* void putScancode (in long scancode); */
  NS_IMETHOD PutScancode(PRInt32 scancode) = 0;

  /* void putScancodes (in unsigned long scancodesSize, [array, size_is (scancodesSize)] in long scancodes, [retval] out unsigned long codesStored); */
  NS_IMETHOD PutScancodes(PRUint32 scancodesSize, PRInt32 *scancodes, PRUint32 *codesStored) = 0;

  /* void putCAD (); */
  NS_IMETHOD PutCAD(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IKEYBOARD \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource); \
  NS_IMETHOD PutScancode(PRInt32 scancode); \
  NS_IMETHOD PutScancodes(PRUint32 scancodesSize, PRInt32 *scancodes, PRUint32 *codesStored); \
  NS_IMETHOD PutCAD(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IKEYBOARD(_to) \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return _to GetEventSource(aEventSource); } \
  NS_IMETHOD PutScancode(PRInt32 scancode) { return _to PutScancode(scancode); } \
  NS_IMETHOD PutScancodes(PRUint32 scancodesSize, PRInt32 *scancodes, PRUint32 *codesStored) { return _to PutScancodes(scancodesSize, scancodes, codesStored); } \
  NS_IMETHOD PutCAD(void) { return _to PutCAD(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IKEYBOARD(_to) \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEventSource(aEventSource); } \
  NS_IMETHOD PutScancode(PRInt32 scancode) { return !_to ? NS_ERROR_NULL_POINTER : _to->PutScancode(scancode); } \
  NS_IMETHOD PutScancodes(PRUint32 scancodesSize, PRInt32 *scancodes, PRUint32 *codesStored) { return !_to ? NS_ERROR_NULL_POINTER : _to->PutScancodes(scancodesSize, scancodes, codesStored); } \
  NS_IMETHOD PutCAD(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->PutCAD(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IKeyboard
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IKEYBOARD

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IKeyboard)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute IEventSource eventSource; */
NS_IMETHODIMP _MYCLASS_::GetEventSource(IEventSource * *aEventSource)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void putScancode (in long scancode); */
NS_IMETHODIMP _MYCLASS_::PutScancode(PRInt32 scancode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void putScancodes (in unsigned long scancodesSize, [array, size_is (scancodesSize)] in long scancodes, [retval] out unsigned long codesStored); */
NS_IMETHODIMP _MYCLASS_::PutScancodes(PRUint32 scancodesSize, PRInt32 *scancodes, PRUint32 *codesStored)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void putCAD (); */
NS_IMETHODIMP _MYCLASS_::PutCAD()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IKeyboard_GETTER_EventSource_TO(smth) NS_IMETHOD GetEventSource (IEventSource * * aEventSource) { return smth GetEventSource (aEventSource); }
#define COM_FORWARD_IKeyboard_GETTER_EventSource_TO_OBJ(obj) COM_FORWARD_IKeyboard_GETTER_EventSource_TO ((obj)->)
#define COM_FORWARD_IKeyboard_GETTER_EventSource_TO_BASE(base) COM_FORWARD_IKeyboard_GETTER_EventSource_TO (base::)
#define COM_FORWARD_IKeyboard_PutScancode_TO(smth) NS_IMETHOD PutScancode (PRInt32 aScancode) { return smth PutScancode (aScancode); }
#define COM_FORWARD_IKeyboard_PutScancode_TO_OBJ(obj) COM_FORWARD_IKeyboard_PutScancode_TO ((obj)->)
#define COM_FORWARD_IKeyboard_PutScancode_TO_BASE(base) COM_FORWARD_IKeyboard_PutScancode_TO (base::)
#define COM_FORWARD_IKeyboard_PutScancodes_TO(smth) NS_IMETHOD PutScancodes (PRUint32 aScancodesSize, PRInt32 * aScancodes, PRUint32 * aCodesStored) { return smth PutScancodes (aScancodesSize+++, aScancodes, aCodesStored); }
#define COM_FORWARD_IKeyboard_PutScancodes_TO_OBJ(obj) COM_FORWARD_IKeyboard_PutScancodes_TO ((obj)->)
#define COM_FORWARD_IKeyboard_PutScancodes_TO_BASE(base) COM_FORWARD_IKeyboard_PutScancodes_TO (base::)
#define COM_FORWARD_IKeyboard_PutCAD_TO(smth) NS_IMETHOD PutCAD() { return smth PutCAD(); }
#define COM_FORWARD_IKeyboard_PutCAD_TO_OBJ(obj) COM_FORWARD_IKeyboard_PutCAD_TO ((obj)->)
#define COM_FORWARD_IKeyboard_PutCAD_TO_BASE(base) COM_FORWARD_IKeyboard_PutCAD_TO (base::)
#define COM_FORWARD_IKeyboard_TO(smth) NS_FORWARD_IKEYBOARD (smth)
#define COM_FORWARD_IKeyboard_TO_OBJ(obj) COM_FORWARD_IKeyboard_TO ((obj)->)
#define COM_FORWARD_IKeyboard_TO_BASE(base) COM_FORWARD_IKeyboard_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IKeyboard;

/* starting interface:    IMouse */
#define IMOUSE_IID_STR "ee770393-415f-4421-b2d5-28b73cacf86a"

#define IMOUSE_IID \
  {0xee770393, 0x415f, 0x4421, \
    { 0xb2, 0xd5, 0x28, 0xb7, 0x3c, 0xac, 0xf8, 0x6a }}

class NS_NO_VTABLE IMouse : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMOUSE_IID)

  /* readonly attribute boolean absoluteSupported; */
  NS_IMETHOD GetAbsoluteSupported(PRBool *aAbsoluteSupported) = 0;

  /* readonly attribute boolean relativeSupported; */
  NS_IMETHOD GetRelativeSupported(PRBool *aRelativeSupported) = 0;

  /* readonly attribute boolean multiTouchSupported; */
  NS_IMETHOD GetMultiTouchSupported(PRBool *aMultiTouchSupported) = 0;

  /* readonly attribute boolean needsHostCursor; */
  NS_IMETHOD GetNeedsHostCursor(PRBool *aNeedsHostCursor) = 0;

  /* readonly attribute IEventSource eventSource; */
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) = 0;

  /* void putMouseEvent (in long dx, in long dy, in long dz, in long dw, in long buttonState); */
  NS_IMETHOD PutMouseEvent(PRInt32 dx, PRInt32 dy, PRInt32 dz, PRInt32 dw, PRInt32 buttonState) = 0;

  /* void putMouseEventAbsolute (in long x, in long y, in long dz, in long dw, in long buttonState); */
  NS_IMETHOD PutMouseEventAbsolute(PRInt32 x, PRInt32 y, PRInt32 dz, PRInt32 dw, PRInt32 buttonState) = 0;

  /* void putEventMultiTouch (in long count, in unsigned long contactsSize, [array, size_is (contactsSize)] in long long contacts, in unsigned long scanTime); */
  NS_IMETHOD PutEventMultiTouch(PRInt32 count, PRUint32 contactsSize, PRInt64 *contacts, PRUint32 scanTime) = 0;

  /* void putEventMultiTouchString (in long count, in wstring contacts, in unsigned long scanTime); */
  NS_IMETHOD PutEventMultiTouchString(PRInt32 count, const PRUnichar *contacts, PRUint32 scanTime) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMOUSE \
  NS_IMETHOD GetAbsoluteSupported(PRBool *aAbsoluteSupported); \
  NS_IMETHOD GetRelativeSupported(PRBool *aRelativeSupported); \
  NS_IMETHOD GetMultiTouchSupported(PRBool *aMultiTouchSupported); \
  NS_IMETHOD GetNeedsHostCursor(PRBool *aNeedsHostCursor); \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource); \
  NS_IMETHOD PutMouseEvent(PRInt32 dx, PRInt32 dy, PRInt32 dz, PRInt32 dw, PRInt32 buttonState); \
  NS_IMETHOD PutMouseEventAbsolute(PRInt32 x, PRInt32 y, PRInt32 dz, PRInt32 dw, PRInt32 buttonState); \
  NS_IMETHOD PutEventMultiTouch(PRInt32 count, PRUint32 contactsSize, PRInt64 *contacts, PRUint32 scanTime); \
  NS_IMETHOD PutEventMultiTouchString(PRInt32 count, const PRUnichar *contacts, PRUint32 scanTime); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMOUSE(_to) \
  NS_IMETHOD GetAbsoluteSupported(PRBool *aAbsoluteSupported) { return _to GetAbsoluteSupported(aAbsoluteSupported); } \
  NS_IMETHOD GetRelativeSupported(PRBool *aRelativeSupported) { return _to GetRelativeSupported(aRelativeSupported); } \
  NS_IMETHOD GetMultiTouchSupported(PRBool *aMultiTouchSupported) { return _to GetMultiTouchSupported(aMultiTouchSupported); } \
  NS_IMETHOD GetNeedsHostCursor(PRBool *aNeedsHostCursor) { return _to GetNeedsHostCursor(aNeedsHostCursor); } \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return _to GetEventSource(aEventSource); } \
  NS_IMETHOD PutMouseEvent(PRInt32 dx, PRInt32 dy, PRInt32 dz, PRInt32 dw, PRInt32 buttonState) { return _to PutMouseEvent(dx, dy, dz, dw, buttonState); } \
  NS_IMETHOD PutMouseEventAbsolute(PRInt32 x, PRInt32 y, PRInt32 dz, PRInt32 dw, PRInt32 buttonState) { return _to PutMouseEventAbsolute(x, y, dz, dw, buttonState); } \
  NS_IMETHOD PutEventMultiTouch(PRInt32 count, PRUint32 contactsSize, PRInt64 *contacts, PRUint32 scanTime) { return _to PutEventMultiTouch(count, contactsSize, contacts, scanTime); } \
  NS_IMETHOD PutEventMultiTouchString(PRInt32 count, const PRUnichar *contacts, PRUint32 scanTime) { return _to PutEventMultiTouchString(count, contacts, scanTime); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMOUSE(_to) \
  NS_IMETHOD GetAbsoluteSupported(PRBool *aAbsoluteSupported) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAbsoluteSupported(aAbsoluteSupported); } \
  NS_IMETHOD GetRelativeSupported(PRBool *aRelativeSupported) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRelativeSupported(aRelativeSupported); } \
  NS_IMETHOD GetMultiTouchSupported(PRBool *aMultiTouchSupported) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMultiTouchSupported(aMultiTouchSupported); } \
  NS_IMETHOD GetNeedsHostCursor(PRBool *aNeedsHostCursor) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNeedsHostCursor(aNeedsHostCursor); } \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEventSource(aEventSource); } \
  NS_IMETHOD PutMouseEvent(PRInt32 dx, PRInt32 dy, PRInt32 dz, PRInt32 dw, PRInt32 buttonState) { return !_to ? NS_ERROR_NULL_POINTER : _to->PutMouseEvent(dx, dy, dz, dw, buttonState); } \
  NS_IMETHOD PutMouseEventAbsolute(PRInt32 x, PRInt32 y, PRInt32 dz, PRInt32 dw, PRInt32 buttonState) { return !_to ? NS_ERROR_NULL_POINTER : _to->PutMouseEventAbsolute(x, y, dz, dw, buttonState); } \
  NS_IMETHOD PutEventMultiTouch(PRInt32 count, PRUint32 contactsSize, PRInt64 *contacts, PRUint32 scanTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->PutEventMultiTouch(count, contactsSize, contacts, scanTime); } \
  NS_IMETHOD PutEventMultiTouchString(PRInt32 count, const PRUnichar *contacts, PRUint32 scanTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->PutEventMultiTouchString(count, contacts, scanTime); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IMouse
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMOUSE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IMouse)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute boolean absoluteSupported; */
NS_IMETHODIMP _MYCLASS_::GetAbsoluteSupported(PRBool *aAbsoluteSupported)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean relativeSupported; */
NS_IMETHODIMP _MYCLASS_::GetRelativeSupported(PRBool *aRelativeSupported)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean multiTouchSupported; */
NS_IMETHODIMP _MYCLASS_::GetMultiTouchSupported(PRBool *aMultiTouchSupported)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean needsHostCursor; */
NS_IMETHODIMP _MYCLASS_::GetNeedsHostCursor(PRBool *aNeedsHostCursor)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IEventSource eventSource; */
NS_IMETHODIMP _MYCLASS_::GetEventSource(IEventSource * *aEventSource)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void putMouseEvent (in long dx, in long dy, in long dz, in long dw, in long buttonState); */
NS_IMETHODIMP _MYCLASS_::PutMouseEvent(PRInt32 dx, PRInt32 dy, PRInt32 dz, PRInt32 dw, PRInt32 buttonState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void putMouseEventAbsolute (in long x, in long y, in long dz, in long dw, in long buttonState); */
NS_IMETHODIMP _MYCLASS_::PutMouseEventAbsolute(PRInt32 x, PRInt32 y, PRInt32 dz, PRInt32 dw, PRInt32 buttonState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void putEventMultiTouch (in long count, in unsigned long contactsSize, [array, size_is (contactsSize)] in long long contacts, in unsigned long scanTime); */
NS_IMETHODIMP _MYCLASS_::PutEventMultiTouch(PRInt32 count, PRUint32 contactsSize, PRInt64 *contacts, PRUint32 scanTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void putEventMultiTouchString (in long count, in wstring contacts, in unsigned long scanTime); */
NS_IMETHODIMP _MYCLASS_::PutEventMultiTouchString(PRInt32 count, const PRUnichar *contacts, PRUint32 scanTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IMouse_GETTER_AbsoluteSupported_TO(smth) NS_IMETHOD GetAbsoluteSupported (PRBool * aAbsoluteSupported) { return smth GetAbsoluteSupported (aAbsoluteSupported); }
#define COM_FORWARD_IMouse_GETTER_AbsoluteSupported_TO_OBJ(obj) COM_FORWARD_IMouse_GETTER_AbsoluteSupported_TO ((obj)->)
#define COM_FORWARD_IMouse_GETTER_AbsoluteSupported_TO_BASE(base) COM_FORWARD_IMouse_GETTER_AbsoluteSupported_TO (base::)
#define COM_FORWARD_IMouse_GETTER_RelativeSupported_TO(smth) NS_IMETHOD GetRelativeSupported (PRBool * aRelativeSupported) { return smth GetRelativeSupported (aRelativeSupported); }
#define COM_FORWARD_IMouse_GETTER_RelativeSupported_TO_OBJ(obj) COM_FORWARD_IMouse_GETTER_RelativeSupported_TO ((obj)->)
#define COM_FORWARD_IMouse_GETTER_RelativeSupported_TO_BASE(base) COM_FORWARD_IMouse_GETTER_RelativeSupported_TO (base::)
#define COM_FORWARD_IMouse_GETTER_MultiTouchSupported_TO(smth) NS_IMETHOD GetMultiTouchSupported (PRBool * aMultiTouchSupported) { return smth GetMultiTouchSupported (aMultiTouchSupported); }
#define COM_FORWARD_IMouse_GETTER_MultiTouchSupported_TO_OBJ(obj) COM_FORWARD_IMouse_GETTER_MultiTouchSupported_TO ((obj)->)
#define COM_FORWARD_IMouse_GETTER_MultiTouchSupported_TO_BASE(base) COM_FORWARD_IMouse_GETTER_MultiTouchSupported_TO (base::)
#define COM_FORWARD_IMouse_GETTER_NeedsHostCursor_TO(smth) NS_IMETHOD GetNeedsHostCursor (PRBool * aNeedsHostCursor) { return smth GetNeedsHostCursor (aNeedsHostCursor); }
#define COM_FORWARD_IMouse_GETTER_NeedsHostCursor_TO_OBJ(obj) COM_FORWARD_IMouse_GETTER_NeedsHostCursor_TO ((obj)->)
#define COM_FORWARD_IMouse_GETTER_NeedsHostCursor_TO_BASE(base) COM_FORWARD_IMouse_GETTER_NeedsHostCursor_TO (base::)
#define COM_FORWARD_IMouse_GETTER_EventSource_TO(smth) NS_IMETHOD GetEventSource (IEventSource * * aEventSource) { return smth GetEventSource (aEventSource); }
#define COM_FORWARD_IMouse_GETTER_EventSource_TO_OBJ(obj) COM_FORWARD_IMouse_GETTER_EventSource_TO ((obj)->)
#define COM_FORWARD_IMouse_GETTER_EventSource_TO_BASE(base) COM_FORWARD_IMouse_GETTER_EventSource_TO (base::)
#define COM_FORWARD_IMouse_PutMouseEvent_TO(smth) NS_IMETHOD PutMouseEvent (PRInt32 aDx, PRInt32 aDy, PRInt32 aDz, PRInt32 aDw, PRInt32 aButtonState) { return smth PutMouseEvent (aDx, aDy, aDz, aDw, aButtonState); }
#define COM_FORWARD_IMouse_PutMouseEvent_TO_OBJ(obj) COM_FORWARD_IMouse_PutMouseEvent_TO ((obj)->)
#define COM_FORWARD_IMouse_PutMouseEvent_TO_BASE(base) COM_FORWARD_IMouse_PutMouseEvent_TO (base::)
#define COM_FORWARD_IMouse_PutMouseEventAbsolute_TO(smth) NS_IMETHOD PutMouseEventAbsolute (PRInt32 aX, PRInt32 aY, PRInt32 aDz, PRInt32 aDw, PRInt32 aButtonState) { return smth PutMouseEventAbsolute (aX, aY, aDz, aDw, aButtonState); }
#define COM_FORWARD_IMouse_PutMouseEventAbsolute_TO_OBJ(obj) COM_FORWARD_IMouse_PutMouseEventAbsolute_TO ((obj)->)
#define COM_FORWARD_IMouse_PutMouseEventAbsolute_TO_BASE(base) COM_FORWARD_IMouse_PutMouseEventAbsolute_TO (base::)
#define COM_FORWARD_IMouse_PutEventMultiTouch_TO(smth) NS_IMETHOD PutEventMultiTouch (PRInt32 aCount, PRUint32 aContactsSize, PRInt64 * aContacts, PRUint32 aScanTime) { return smth PutEventMultiTouch (aCount, aContactsSize+++, aContacts, aScanTime); }
#define COM_FORWARD_IMouse_PutEventMultiTouch_TO_OBJ(obj) COM_FORWARD_IMouse_PutEventMultiTouch_TO ((obj)->)
#define COM_FORWARD_IMouse_PutEventMultiTouch_TO_BASE(base) COM_FORWARD_IMouse_PutEventMultiTouch_TO (base::)
#define COM_FORWARD_IMouse_PutEventMultiTouchString_TO(smth) NS_IMETHOD PutEventMultiTouchString (PRInt32 aCount, PRUnichar * aContacts, PRUint32 aScanTime) { return smth PutEventMultiTouchString (aCount, aContacts, aScanTime); }
#define COM_FORWARD_IMouse_PutEventMultiTouchString_TO_OBJ(obj) COM_FORWARD_IMouse_PutEventMultiTouchString_TO ((obj)->)
#define COM_FORWARD_IMouse_PutEventMultiTouchString_TO_BASE(base) COM_FORWARD_IMouse_PutEventMultiTouchString_TO (base::)
#define COM_FORWARD_IMouse_TO(smth) NS_FORWARD_IMOUSE (smth)
#define COM_FORWARD_IMouse_TO_OBJ(obj) COM_FORWARD_IMouse_TO ((obj)->)
#define COM_FORWARD_IMouse_TO_BASE(base) COM_FORWARD_IMouse_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IMouse;

/* starting interface:    IFramebuffer */
#define IFRAMEBUFFER_IID_STR "e3f122c0-adab-4fc9-a8dc-da112fb48428"

#define IFRAMEBUFFER_IID \
  {0xe3f122c0, 0xadab, 0x4fc9, \
    { 0xa8, 0xdc, 0xda, 0x11, 0x2f, 0xb4, 0x84, 0x28 }}

class NS_NO_VTABLE IFramebuffer : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IFRAMEBUFFER_IID)

  /* [noscript] readonly attribute octetPtr address; */
  NS_IMETHOD GetAddress(PRUint8 * *aAddress) = 0;

  /* readonly attribute unsigned long width; */
  NS_IMETHOD GetWidth(PRUint32 *aWidth) = 0;

  /* readonly attribute unsigned long height; */
  NS_IMETHOD GetHeight(PRUint32 *aHeight) = 0;

  /* readonly attribute unsigned long bitsPerPixel; */
  NS_IMETHOD GetBitsPerPixel(PRUint32 *aBitsPerPixel) = 0;

  /* readonly attribute unsigned long bytesPerLine; */
  NS_IMETHOD GetBytesPerLine(PRUint32 *aBytesPerLine) = 0;

  /* readonly attribute unsigned long pixelFormat; */
  NS_IMETHOD GetPixelFormat(PRUint32 *aPixelFormat) = 0;

  /* readonly attribute boolean usesGuestVRAM; */
  NS_IMETHOD GetUsesGuestVRAM(PRBool *aUsesGuestVRAM) = 0;

  /* readonly attribute unsigned long heightReduction; */
  NS_IMETHOD GetHeightReduction(PRUint32 *aHeightReduction) = 0;

  /* readonly attribute IFramebufferOverlay overlay; */
  NS_IMETHOD GetOverlay(IFramebufferOverlay * *aOverlay) = 0;

  /* readonly attribute long long winId; */
  NS_IMETHOD GetWinId(PRInt64 *aWinId) = 0;

  /* void lock (); */
  NS_IMETHOD Lock(void) = 0;

  /* void unlock (); */
  NS_IMETHOD Unlock(void) = 0;

  /* void notifyUpdate (in unsigned long x, in unsigned long y, in unsigned long width, in unsigned long height); */
  NS_IMETHOD NotifyUpdate(PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height) = 0;

  /* [noscript] void requestResize (in unsigned long screenId, in unsigned long pixelFormat, in octetPtr VRAM, in unsigned long bitsPerPixel, in unsigned long bytesPerLine, in unsigned long width, in unsigned long height, [retval] out boolean finished); */
  NS_IMETHOD RequestResize(PRUint32 screenId, PRUint32 pixelFormat, PRUint8 * VRAM, PRUint32 bitsPerPixel, PRUint32 bytesPerLine, PRUint32 width, PRUint32 height, PRBool *finished) = 0;

  /* void videoModeSupported (in unsigned long width, in unsigned long height, in unsigned long bpp, [retval] out boolean supported); */
  NS_IMETHOD VideoModeSupported(PRUint32 width, PRUint32 height, PRUint32 bpp, PRBool *supported) = 0;

  /* [noscript] void getVisibleRegion (in octetPtr rectangles, in unsigned long count, [retval] out unsigned long countCopied); */
  NS_IMETHOD GetVisibleRegion(PRUint8 * rectangles, PRUint32 count, PRUint32 *countCopied) = 0;

  /* [noscript] void setVisibleRegion (in octetPtr rectangles, in unsigned long count); */
  NS_IMETHOD SetVisibleRegion(PRUint8 * rectangles, PRUint32 count) = 0;

  /* [noscript] void processVHWACommand (in octetPtr command); */
  NS_IMETHOD ProcessVHWACommand(PRUint8 * command) = 0;

  /* [noscript] void notify3DEvent (in unsigned long type, in octetPtr data); */
  NS_IMETHOD Notify3DEvent(PRUint32 type, PRUint8 * data) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IFRAMEBUFFER \
  NS_IMETHOD GetAddress(PRUint8 * *aAddress); \
  NS_IMETHOD GetWidth(PRUint32 *aWidth); \
  NS_IMETHOD GetHeight(PRUint32 *aHeight); \
  NS_IMETHOD GetBitsPerPixel(PRUint32 *aBitsPerPixel); \
  NS_IMETHOD GetBytesPerLine(PRUint32 *aBytesPerLine); \
  NS_IMETHOD GetPixelFormat(PRUint32 *aPixelFormat); \
  NS_IMETHOD GetUsesGuestVRAM(PRBool *aUsesGuestVRAM); \
  NS_IMETHOD GetHeightReduction(PRUint32 *aHeightReduction); \
  NS_IMETHOD GetOverlay(IFramebufferOverlay * *aOverlay); \
  NS_IMETHOD GetWinId(PRInt64 *aWinId); \
  NS_IMETHOD Lock(void); \
  NS_IMETHOD Unlock(void); \
  NS_IMETHOD NotifyUpdate(PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height); \
  NS_IMETHOD RequestResize(PRUint32 screenId, PRUint32 pixelFormat, PRUint8 * VRAM, PRUint32 bitsPerPixel, PRUint32 bytesPerLine, PRUint32 width, PRUint32 height, PRBool *finished); \
  NS_IMETHOD VideoModeSupported(PRUint32 width, PRUint32 height, PRUint32 bpp, PRBool *supported); \
  NS_IMETHOD GetVisibleRegion(PRUint8 * rectangles, PRUint32 count, PRUint32 *countCopied); \
  NS_IMETHOD SetVisibleRegion(PRUint8 * rectangles, PRUint32 count); \
  NS_IMETHOD ProcessVHWACommand(PRUint8 * command); \
  NS_IMETHOD Notify3DEvent(PRUint32 type, PRUint8 * data); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IFRAMEBUFFER(_to) \
  NS_IMETHOD GetAddress(PRUint8 * *aAddress) { return _to GetAddress(aAddress); } \
  NS_IMETHOD GetWidth(PRUint32 *aWidth) { return _to GetWidth(aWidth); } \
  NS_IMETHOD GetHeight(PRUint32 *aHeight) { return _to GetHeight(aHeight); } \
  NS_IMETHOD GetBitsPerPixel(PRUint32 *aBitsPerPixel) { return _to GetBitsPerPixel(aBitsPerPixel); } \
  NS_IMETHOD GetBytesPerLine(PRUint32 *aBytesPerLine) { return _to GetBytesPerLine(aBytesPerLine); } \
  NS_IMETHOD GetPixelFormat(PRUint32 *aPixelFormat) { return _to GetPixelFormat(aPixelFormat); } \
  NS_IMETHOD GetUsesGuestVRAM(PRBool *aUsesGuestVRAM) { return _to GetUsesGuestVRAM(aUsesGuestVRAM); } \
  NS_IMETHOD GetHeightReduction(PRUint32 *aHeightReduction) { return _to GetHeightReduction(aHeightReduction); } \
  NS_IMETHOD GetOverlay(IFramebufferOverlay * *aOverlay) { return _to GetOverlay(aOverlay); } \
  NS_IMETHOD GetWinId(PRInt64 *aWinId) { return _to GetWinId(aWinId); } \
  NS_IMETHOD Lock(void) { return _to Lock(); } \
  NS_IMETHOD Unlock(void) { return _to Unlock(); } \
  NS_IMETHOD NotifyUpdate(PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height) { return _to NotifyUpdate(x, y, width, height); } \
  NS_IMETHOD RequestResize(PRUint32 screenId, PRUint32 pixelFormat, PRUint8 * VRAM, PRUint32 bitsPerPixel, PRUint32 bytesPerLine, PRUint32 width, PRUint32 height, PRBool *finished) { return _to RequestResize(screenId, pixelFormat, VRAM, bitsPerPixel, bytesPerLine, width, height, finished); } \
  NS_IMETHOD VideoModeSupported(PRUint32 width, PRUint32 height, PRUint32 bpp, PRBool *supported) { return _to VideoModeSupported(width, height, bpp, supported); } \
  NS_IMETHOD GetVisibleRegion(PRUint8 * rectangles, PRUint32 count, PRUint32 *countCopied) { return _to GetVisibleRegion(rectangles, count, countCopied); } \
  NS_IMETHOD SetVisibleRegion(PRUint8 * rectangles, PRUint32 count) { return _to SetVisibleRegion(rectangles, count); } \
  NS_IMETHOD ProcessVHWACommand(PRUint8 * command) { return _to ProcessVHWACommand(command); } \
  NS_IMETHOD Notify3DEvent(PRUint32 type, PRUint8 * data) { return _to Notify3DEvent(type, data); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IFRAMEBUFFER(_to) \
  NS_IMETHOD GetAddress(PRUint8 * *aAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAddress(aAddress); } \
  NS_IMETHOD GetWidth(PRUint32 *aWidth) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWidth(aWidth); } \
  NS_IMETHOD GetHeight(PRUint32 *aHeight) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHeight(aHeight); } \
  NS_IMETHOD GetBitsPerPixel(PRUint32 *aBitsPerPixel) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBitsPerPixel(aBitsPerPixel); } \
  NS_IMETHOD GetBytesPerLine(PRUint32 *aBytesPerLine) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBytesPerLine(aBytesPerLine); } \
  NS_IMETHOD GetPixelFormat(PRUint32 *aPixelFormat) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPixelFormat(aPixelFormat); } \
  NS_IMETHOD GetUsesGuestVRAM(PRBool *aUsesGuestVRAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUsesGuestVRAM(aUsesGuestVRAM); } \
  NS_IMETHOD GetHeightReduction(PRUint32 *aHeightReduction) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHeightReduction(aHeightReduction); } \
  NS_IMETHOD GetOverlay(IFramebufferOverlay * *aOverlay) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOverlay(aOverlay); } \
  NS_IMETHOD GetWinId(PRInt64 *aWinId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWinId(aWinId); } \
  NS_IMETHOD Lock(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Lock(); } \
  NS_IMETHOD Unlock(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Unlock(); } \
  NS_IMETHOD NotifyUpdate(PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyUpdate(x, y, width, height); } \
  NS_IMETHOD RequestResize(PRUint32 screenId, PRUint32 pixelFormat, PRUint8 * VRAM, PRUint32 bitsPerPixel, PRUint32 bytesPerLine, PRUint32 width, PRUint32 height, PRBool *finished) { return !_to ? NS_ERROR_NULL_POINTER : _to->RequestResize(screenId, pixelFormat, VRAM, bitsPerPixel, bytesPerLine, width, height, finished); } \
  NS_IMETHOD VideoModeSupported(PRUint32 width, PRUint32 height, PRUint32 bpp, PRBool *supported) { return !_to ? NS_ERROR_NULL_POINTER : _to->VideoModeSupported(width, height, bpp, supported); } \
  NS_IMETHOD GetVisibleRegion(PRUint8 * rectangles, PRUint32 count, PRUint32 *countCopied) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVisibleRegion(rectangles, count, countCopied); } \
  NS_IMETHOD SetVisibleRegion(PRUint8 * rectangles, PRUint32 count) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVisibleRegion(rectangles, count); } \
  NS_IMETHOD ProcessVHWACommand(PRUint8 * command) { return !_to ? NS_ERROR_NULL_POINTER : _to->ProcessVHWACommand(command); } \
  NS_IMETHOD Notify3DEvent(PRUint32 type, PRUint8 * data) { return !_to ? NS_ERROR_NULL_POINTER : _to->Notify3DEvent(type, data); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IFramebuffer
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IFRAMEBUFFER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IFramebuffer)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* [noscript] readonly attribute octetPtr address; */
NS_IMETHODIMP _MYCLASS_::GetAddress(PRUint8 * *aAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long width; */
NS_IMETHODIMP _MYCLASS_::GetWidth(PRUint32 *aWidth)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long height; */
NS_IMETHODIMP _MYCLASS_::GetHeight(PRUint32 *aHeight)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long bitsPerPixel; */
NS_IMETHODIMP _MYCLASS_::GetBitsPerPixel(PRUint32 *aBitsPerPixel)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long bytesPerLine; */
NS_IMETHODIMP _MYCLASS_::GetBytesPerLine(PRUint32 *aBytesPerLine)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long pixelFormat; */
NS_IMETHODIMP _MYCLASS_::GetPixelFormat(PRUint32 *aPixelFormat)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean usesGuestVRAM; */
NS_IMETHODIMP _MYCLASS_::GetUsesGuestVRAM(PRBool *aUsesGuestVRAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long heightReduction; */
NS_IMETHODIMP _MYCLASS_::GetHeightReduction(PRUint32 *aHeightReduction)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IFramebufferOverlay overlay; */
NS_IMETHODIMP _MYCLASS_::GetOverlay(IFramebufferOverlay * *aOverlay)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long winId; */
NS_IMETHODIMP _MYCLASS_::GetWinId(PRInt64 *aWinId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void lock (); */
NS_IMETHODIMP _MYCLASS_::Lock()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unlock (); */
NS_IMETHODIMP _MYCLASS_::Unlock()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyUpdate (in unsigned long x, in unsigned long y, in unsigned long width, in unsigned long height); */
NS_IMETHODIMP _MYCLASS_::NotifyUpdate(PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void requestResize (in unsigned long screenId, in unsigned long pixelFormat, in octetPtr VRAM, in unsigned long bitsPerPixel, in unsigned long bytesPerLine, in unsigned long width, in unsigned long height, [retval] out boolean finished); */
NS_IMETHODIMP _MYCLASS_::RequestResize(PRUint32 screenId, PRUint32 pixelFormat, PRUint8 * VRAM, PRUint32 bitsPerPixel, PRUint32 bytesPerLine, PRUint32 width, PRUint32 height, PRBool *finished)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void videoModeSupported (in unsigned long width, in unsigned long height, in unsigned long bpp, [retval] out boolean supported); */
NS_IMETHODIMP _MYCLASS_::VideoModeSupported(PRUint32 width, PRUint32 height, PRUint32 bpp, PRBool *supported)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void getVisibleRegion (in octetPtr rectangles, in unsigned long count, [retval] out unsigned long countCopied); */
NS_IMETHODIMP _MYCLASS_::GetVisibleRegion(PRUint8 * rectangles, PRUint32 count, PRUint32 *countCopied)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void setVisibleRegion (in octetPtr rectangles, in unsigned long count); */
NS_IMETHODIMP _MYCLASS_::SetVisibleRegion(PRUint8 * rectangles, PRUint32 count)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void processVHWACommand (in octetPtr command); */
NS_IMETHODIMP _MYCLASS_::ProcessVHWACommand(PRUint8 * command)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void notify3DEvent (in unsigned long type, in octetPtr data); */
NS_IMETHODIMP _MYCLASS_::Notify3DEvent(PRUint32 type, PRUint8 * data)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IFramebuffer_GETTER_Address_TO(smth) NS_IMETHOD GetAddress (PRUint8 * * aAddress) { return smth GetAddress (aAddress); }
#define COM_FORWARD_IFramebuffer_GETTER_Address_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GETTER_Address_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GETTER_Address_TO_BASE(base) COM_FORWARD_IFramebuffer_GETTER_Address_TO (base::)
#define COM_FORWARD_IFramebuffer_GETTER_Width_TO(smth) NS_IMETHOD GetWidth (PRUint32 * aWidth) { return smth GetWidth (aWidth); }
#define COM_FORWARD_IFramebuffer_GETTER_Width_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GETTER_Width_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GETTER_Width_TO_BASE(base) COM_FORWARD_IFramebuffer_GETTER_Width_TO (base::)
#define COM_FORWARD_IFramebuffer_GETTER_Height_TO(smth) NS_IMETHOD GetHeight (PRUint32 * aHeight) { return smth GetHeight (aHeight); }
#define COM_FORWARD_IFramebuffer_GETTER_Height_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GETTER_Height_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GETTER_Height_TO_BASE(base) COM_FORWARD_IFramebuffer_GETTER_Height_TO (base::)
#define COM_FORWARD_IFramebuffer_GETTER_BitsPerPixel_TO(smth) NS_IMETHOD GetBitsPerPixel (PRUint32 * aBitsPerPixel) { return smth GetBitsPerPixel (aBitsPerPixel); }
#define COM_FORWARD_IFramebuffer_GETTER_BitsPerPixel_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GETTER_BitsPerPixel_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GETTER_BitsPerPixel_TO_BASE(base) COM_FORWARD_IFramebuffer_GETTER_BitsPerPixel_TO (base::)
#define COM_FORWARD_IFramebuffer_GETTER_BytesPerLine_TO(smth) NS_IMETHOD GetBytesPerLine (PRUint32 * aBytesPerLine) { return smth GetBytesPerLine (aBytesPerLine); }
#define COM_FORWARD_IFramebuffer_GETTER_BytesPerLine_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GETTER_BytesPerLine_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GETTER_BytesPerLine_TO_BASE(base) COM_FORWARD_IFramebuffer_GETTER_BytesPerLine_TO (base::)
#define COM_FORWARD_IFramebuffer_GETTER_PixelFormat_TO(smth) NS_IMETHOD GetPixelFormat (PRUint32 * aPixelFormat) { return smth GetPixelFormat (aPixelFormat); }
#define COM_FORWARD_IFramebuffer_GETTER_PixelFormat_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GETTER_PixelFormat_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GETTER_PixelFormat_TO_BASE(base) COM_FORWARD_IFramebuffer_GETTER_PixelFormat_TO (base::)
#define COM_FORWARD_IFramebuffer_GETTER_UsesGuestVRAM_TO(smth) NS_IMETHOD GetUsesGuestVRAM (PRBool * aUsesGuestVRAM) { return smth GetUsesGuestVRAM (aUsesGuestVRAM); }
#define COM_FORWARD_IFramebuffer_GETTER_UsesGuestVRAM_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GETTER_UsesGuestVRAM_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GETTER_UsesGuestVRAM_TO_BASE(base) COM_FORWARD_IFramebuffer_GETTER_UsesGuestVRAM_TO (base::)
#define COM_FORWARD_IFramebuffer_GETTER_HeightReduction_TO(smth) NS_IMETHOD GetHeightReduction (PRUint32 * aHeightReduction) { return smth GetHeightReduction (aHeightReduction); }
#define COM_FORWARD_IFramebuffer_GETTER_HeightReduction_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GETTER_HeightReduction_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GETTER_HeightReduction_TO_BASE(base) COM_FORWARD_IFramebuffer_GETTER_HeightReduction_TO (base::)
#define COM_FORWARD_IFramebuffer_GETTER_Overlay_TO(smth) NS_IMETHOD GetOverlay (IFramebufferOverlay * * aOverlay) { return smth GetOverlay (aOverlay); }
#define COM_FORWARD_IFramebuffer_GETTER_Overlay_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GETTER_Overlay_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GETTER_Overlay_TO_BASE(base) COM_FORWARD_IFramebuffer_GETTER_Overlay_TO (base::)
#define COM_FORWARD_IFramebuffer_GETTER_WinId_TO(smth) NS_IMETHOD GetWinId (PRInt64 * aWinId) { return smth GetWinId (aWinId); }
#define COM_FORWARD_IFramebuffer_GETTER_WinId_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GETTER_WinId_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GETTER_WinId_TO_BASE(base) COM_FORWARD_IFramebuffer_GETTER_WinId_TO (base::)
#define COM_FORWARD_IFramebuffer_Lock_TO(smth) NS_IMETHOD Lock() { return smth Lock(); }
#define COM_FORWARD_IFramebuffer_Lock_TO_OBJ(obj) COM_FORWARD_IFramebuffer_Lock_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_Lock_TO_BASE(base) COM_FORWARD_IFramebuffer_Lock_TO (base::)
#define COM_FORWARD_IFramebuffer_Unlock_TO(smth) NS_IMETHOD Unlock() { return smth Unlock(); }
#define COM_FORWARD_IFramebuffer_Unlock_TO_OBJ(obj) COM_FORWARD_IFramebuffer_Unlock_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_Unlock_TO_BASE(base) COM_FORWARD_IFramebuffer_Unlock_TO (base::)
#define COM_FORWARD_IFramebuffer_NotifyUpdate_TO(smth) NS_IMETHOD NotifyUpdate (PRUint32 aX, PRUint32 aY, PRUint32 aWidth, PRUint32 aHeight) { return smth NotifyUpdate (aX, aY, aWidth, aHeight); }
#define COM_FORWARD_IFramebuffer_NotifyUpdate_TO_OBJ(obj) COM_FORWARD_IFramebuffer_NotifyUpdate_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_NotifyUpdate_TO_BASE(base) COM_FORWARD_IFramebuffer_NotifyUpdate_TO (base::)
#define COM_FORWARD_IFramebuffer_RequestResize_TO(smth) NS_IMETHOD RequestResize (PRUint32 aScreenId, PRUint32 aPixelFormat, PRUint8 * aVRAM, PRUint32 aBitsPerPixel, PRUint32 aBytesPerLine, PRUint32 aWidth, PRUint32 aHeight, PRBool * aFinished) { return smth RequestResize (aScreenId, aPixelFormat, aVRAM, aBitsPerPixel, aBytesPerLine, aWidth, aHeight, aFinished); }
#define COM_FORWARD_IFramebuffer_RequestResize_TO_OBJ(obj) COM_FORWARD_IFramebuffer_RequestResize_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_RequestResize_TO_BASE(base) COM_FORWARD_IFramebuffer_RequestResize_TO (base::)
#define COM_FORWARD_IFramebuffer_VideoModeSupported_TO(smth) NS_IMETHOD VideoModeSupported (PRUint32 aWidth, PRUint32 aHeight, PRUint32 aBpp, PRBool * aSupported) { return smth VideoModeSupported (aWidth, aHeight, aBpp, aSupported); }
#define COM_FORWARD_IFramebuffer_VideoModeSupported_TO_OBJ(obj) COM_FORWARD_IFramebuffer_VideoModeSupported_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_VideoModeSupported_TO_BASE(base) COM_FORWARD_IFramebuffer_VideoModeSupported_TO (base::)
#define COM_FORWARD_IFramebuffer_GetVisibleRegion_TO(smth) NS_IMETHOD GetVisibleRegion (PRUint8 * aRectangles, PRUint32 aCount, PRUint32 * aCountCopied) { return smth GetVisibleRegion (aRectangles, aCount, aCountCopied); }
#define COM_FORWARD_IFramebuffer_GetVisibleRegion_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GetVisibleRegion_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GetVisibleRegion_TO_BASE(base) COM_FORWARD_IFramebuffer_GetVisibleRegion_TO (base::)
#define COM_FORWARD_IFramebuffer_SetVisibleRegion_TO(smth) NS_IMETHOD SetVisibleRegion (PRUint8 * aRectangles, PRUint32 aCount) { return smth SetVisibleRegion (aRectangles, aCount); }
#define COM_FORWARD_IFramebuffer_SetVisibleRegion_TO_OBJ(obj) COM_FORWARD_IFramebuffer_SetVisibleRegion_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_SetVisibleRegion_TO_BASE(base) COM_FORWARD_IFramebuffer_SetVisibleRegion_TO (base::)
#define COM_FORWARD_IFramebuffer_ProcessVHWACommand_TO(smth) NS_IMETHOD ProcessVHWACommand (PRUint8 * aCommand) { return smth ProcessVHWACommand (aCommand); }
#define COM_FORWARD_IFramebuffer_ProcessVHWACommand_TO_OBJ(obj) COM_FORWARD_IFramebuffer_ProcessVHWACommand_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_ProcessVHWACommand_TO_BASE(base) COM_FORWARD_IFramebuffer_ProcessVHWACommand_TO (base::)
#define COM_FORWARD_IFramebuffer_Notify3DEvent_TO(smth) NS_IMETHOD Notify3DEvent (PRUint32 aType, PRUint8 * aData) { return smth Notify3DEvent (aType, aData); }
#define COM_FORWARD_IFramebuffer_Notify3DEvent_TO_OBJ(obj) COM_FORWARD_IFramebuffer_Notify3DEvent_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_Notify3DEvent_TO_BASE(base) COM_FORWARD_IFramebuffer_Notify3DEvent_TO (base::)
#define COM_FORWARD_IFramebuffer_TO(smth) NS_FORWARD_IFRAMEBUFFER (smth)
#define COM_FORWARD_IFramebuffer_TO_OBJ(obj) COM_FORWARD_IFramebuffer_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_TO_BASE(base) COM_FORWARD_IFramebuffer_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IFramebuffer;

/* starting interface:    IFramebufferOverlay */
#define IFRAMEBUFFEROVERLAY_IID_STR "0bcc1c7e-e415-47d2-bfdb-e4c705fb0f47"

#define IFRAMEBUFFEROVERLAY_IID \
  {0x0bcc1c7e, 0xe415, 0x47d2, \
    { 0xbf, 0xdb, 0xe4, 0xc7, 0x05, 0xfb, 0x0f, 0x47 }}

class NS_NO_VTABLE IFramebufferOverlay : public IFramebuffer {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IFRAMEBUFFEROVERLAY_IID)

  /* readonly attribute unsigned long x; */
  NS_IMETHOD GetX(PRUint32 *aX) = 0;

  /* readonly attribute unsigned long y; */
  NS_IMETHOD GetY(PRUint32 *aY) = 0;

  /* attribute boolean visible; */
  NS_IMETHOD GetVisible(PRBool *aVisible) = 0;
  NS_IMETHOD SetVisible(PRBool aVisible) = 0;

  /* attribute unsigned long alpha; */
  NS_IMETHOD GetAlpha(PRUint32 *aAlpha) = 0;
  NS_IMETHOD SetAlpha(PRUint32 aAlpha) = 0;

  /* void move (in unsigned long x, in unsigned long y); */
  NS_IMETHOD Move(PRUint32 x, PRUint32 y) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IFRAMEBUFFEROVERLAY \
  NS_IMETHOD GetX(PRUint32 *aX); \
  NS_IMETHOD GetY(PRUint32 *aY); \
  NS_IMETHOD GetVisible(PRBool *aVisible); \
  NS_IMETHOD SetVisible(PRBool aVisible); \
  NS_IMETHOD GetAlpha(PRUint32 *aAlpha); \
  NS_IMETHOD SetAlpha(PRUint32 aAlpha); \
  NS_IMETHOD Move(PRUint32 x, PRUint32 y); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IFRAMEBUFFEROVERLAY(_to) \
  NS_IMETHOD GetX(PRUint32 *aX) { return _to GetX(aX); } \
  NS_IMETHOD GetY(PRUint32 *aY) { return _to GetY(aY); } \
  NS_IMETHOD GetVisible(PRBool *aVisible) { return _to GetVisible(aVisible); } \
  NS_IMETHOD SetVisible(PRBool aVisible) { return _to SetVisible(aVisible); } \
  NS_IMETHOD GetAlpha(PRUint32 *aAlpha) { return _to GetAlpha(aAlpha); } \
  NS_IMETHOD SetAlpha(PRUint32 aAlpha) { return _to SetAlpha(aAlpha); } \
  NS_IMETHOD Move(PRUint32 x, PRUint32 y) { return _to Move(x, y); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IFRAMEBUFFEROVERLAY(_to) \
  NS_IMETHOD GetX(PRUint32 *aX) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetX(aX); } \
  NS_IMETHOD GetY(PRUint32 *aY) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetY(aY); } \
  NS_IMETHOD GetVisible(PRBool *aVisible) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVisible(aVisible); } \
  NS_IMETHOD SetVisible(PRBool aVisible) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVisible(aVisible); } \
  NS_IMETHOD GetAlpha(PRUint32 *aAlpha) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAlpha(aAlpha); } \
  NS_IMETHOD SetAlpha(PRUint32 aAlpha) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAlpha(aAlpha); } \
  NS_IMETHOD Move(PRUint32 x, PRUint32 y) { return !_to ? NS_ERROR_NULL_POINTER : _to->Move(x, y); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IFramebufferOverlay
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IFRAMEBUFFEROVERLAY

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IFramebufferOverlay)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute unsigned long x; */
NS_IMETHODIMP _MYCLASS_::GetX(PRUint32 *aX)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long y; */
NS_IMETHODIMP _MYCLASS_::GetY(PRUint32 *aY)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean visible; */
NS_IMETHODIMP _MYCLASS_::GetVisible(PRBool *aVisible)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetVisible(PRBool aVisible)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long alpha; */
NS_IMETHODIMP _MYCLASS_::GetAlpha(PRUint32 *aAlpha)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAlpha(PRUint32 aAlpha)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void move (in unsigned long x, in unsigned long y); */
NS_IMETHODIMP _MYCLASS_::Move(PRUint32 x, PRUint32 y)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IFramebufferOverlay_GETTER_X_TO(smth) NS_IMETHOD GetX (PRUint32 * aX) { return smth GetX (aX); }
#define COM_FORWARD_IFramebufferOverlay_GETTER_X_TO_OBJ(obj) COM_FORWARD_IFramebufferOverlay_GETTER_X_TO ((obj)->)
#define COM_FORWARD_IFramebufferOverlay_GETTER_X_TO_BASE(base) COM_FORWARD_IFramebufferOverlay_GETTER_X_TO (base::)
#define COM_FORWARD_IFramebufferOverlay_GETTER_Y_TO(smth) NS_IMETHOD GetY (PRUint32 * aY) { return smth GetY (aY); }
#define COM_FORWARD_IFramebufferOverlay_GETTER_Y_TO_OBJ(obj) COM_FORWARD_IFramebufferOverlay_GETTER_Y_TO ((obj)->)
#define COM_FORWARD_IFramebufferOverlay_GETTER_Y_TO_BASE(base) COM_FORWARD_IFramebufferOverlay_GETTER_Y_TO (base::)
#define COM_FORWARD_IFramebufferOverlay_GETTER_Visible_TO(smth) NS_IMETHOD GetVisible (PRBool * aVisible) { return smth GetVisible (aVisible); }
#define COM_FORWARD_IFramebufferOverlay_GETTER_Visible_TO_OBJ(obj) COM_FORWARD_IFramebufferOverlay_GETTER_Visible_TO ((obj)->)
#define COM_FORWARD_IFramebufferOverlay_GETTER_Visible_TO_BASE(base) COM_FORWARD_IFramebufferOverlay_GETTER_Visible_TO (base::)
#define COM_FORWARD_IFramebufferOverlay_SETTER_Visible_TO(smth) NS_IMETHOD SetVisible (PRBool aVisible) { return smth SetVisible (aVisible); }
#define COM_FORWARD_IFramebufferOverlay_SETTER_Visible_TO_OBJ(obj) COM_FORWARD_IFramebufferOverlay_SETTER_Visible_TO ((obj)->)
#define COM_FORWARD_IFramebufferOverlay_SETTER_Visible_TO_BASE(base) COM_FORWARD_IFramebufferOverlay_SETTER_Visible_TO (base::)
#define COM_FORWARD_IFramebufferOverlay_GETTER_Alpha_TO(smth) NS_IMETHOD GetAlpha (PRUint32 * aAlpha) { return smth GetAlpha (aAlpha); }
#define COM_FORWARD_IFramebufferOverlay_GETTER_Alpha_TO_OBJ(obj) COM_FORWARD_IFramebufferOverlay_GETTER_Alpha_TO ((obj)->)
#define COM_FORWARD_IFramebufferOverlay_GETTER_Alpha_TO_BASE(base) COM_FORWARD_IFramebufferOverlay_GETTER_Alpha_TO (base::)
#define COM_FORWARD_IFramebufferOverlay_SETTER_Alpha_TO(smth) NS_IMETHOD SetAlpha (PRUint32 aAlpha) { return smth SetAlpha (aAlpha); }
#define COM_FORWARD_IFramebufferOverlay_SETTER_Alpha_TO_OBJ(obj) COM_FORWARD_IFramebufferOverlay_SETTER_Alpha_TO ((obj)->)
#define COM_FORWARD_IFramebufferOverlay_SETTER_Alpha_TO_BASE(base) COM_FORWARD_IFramebufferOverlay_SETTER_Alpha_TO (base::)
#define COM_FORWARD_IFramebufferOverlay_Move_TO(smth) NS_IMETHOD Move (PRUint32 aX, PRUint32 aY) { return smth Move (aX, aY); }
#define COM_FORWARD_IFramebufferOverlay_Move_TO_OBJ(obj) COM_FORWARD_IFramebufferOverlay_Move_TO ((obj)->)
#define COM_FORWARD_IFramebufferOverlay_Move_TO_BASE(base) COM_FORWARD_IFramebufferOverlay_Move_TO (base::)
#define COM_FORWARD_IFramebufferOverlay_TO(smth) NS_FORWARD_IFRAMEBUFFEROVERLAY (smth)
#define COM_FORWARD_IFramebufferOverlay_TO_OBJ(obj) COM_FORWARD_IFramebufferOverlay_TO ((obj)->)
#define COM_FORWARD_IFramebufferOverlay_TO_BASE(base) COM_FORWARD_IFramebufferOverlay_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IFramebufferOverlay;

/* starting interface:    IDisplay */
#define IDISPLAY_IID_STR "480b372c-c0b5-4c23-9bd7-dcbb85b1594c"

#define IDISPLAY_IID \
  {0x480b372c, 0xc0b5, 0x4c23, \
    { 0x9b, 0xd7, 0xdc, 0xbb, 0x85, 0xb1, 0x59, 0x4c }}

class NS_NO_VTABLE IDisplay : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IDISPLAY_IID)

  /* void getScreenResolution (in unsigned long screenId, out unsigned long width, out unsigned long height, out unsigned long bitsPerPixel, out long xOrigin, out long yOrigin); */
  NS_IMETHOD GetScreenResolution(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *bitsPerPixel, PRInt32 *xOrigin, PRInt32 *yOrigin) = 0;

  /* void setFramebuffer (in unsigned long screenId, in IFramebuffer framebuffer); */
  NS_IMETHOD SetFramebuffer(PRUint32 screenId, IFramebuffer *framebuffer) = 0;

  /* void getFramebuffer (in unsigned long screenId, out IFramebuffer framebuffer, out long xOrigin, out long yOrigin); */
  NS_IMETHOD GetFramebuffer(PRUint32 screenId, IFramebuffer **framebuffer, PRInt32 *xOrigin, PRInt32 *yOrigin) = 0;

  /* void setVideoModeHint (in unsigned long display, in boolean enabled, in boolean changeOrigin, in long originX, in long originY, in unsigned long width, in unsigned long height, in unsigned long bitsPerPixel); */
  NS_IMETHOD SetVideoModeHint(PRUint32 display, PRBool enabled, PRBool changeOrigin, PRInt32 originX, PRInt32 originY, PRUint32 width, PRUint32 height, PRUint32 bitsPerPixel) = 0;

  /* void setSeamlessMode (in boolean enabled); */
  NS_IMETHOD SetSeamlessMode(PRBool enabled) = 0;

  /* [noscript] void takeScreenShot (in unsigned long screenId, in octetPtr address, in unsigned long width, in unsigned long height); */
  NS_IMETHOD TakeScreenShot(PRUint32 screenId, PRUint8 * address, PRUint32 width, PRUint32 height) = 0;

  /* void takeScreenShotToArray (in unsigned long screenId, in unsigned long width, in unsigned long height, out unsigned long screenDataSize, [array, size_is (screenDataSize), retval] out octet screenData); */
  NS_IMETHOD TakeScreenShotToArray(PRUint32 screenId, PRUint32 width, PRUint32 height, PRUint32 *screenDataSize, PRUint8 **screenData) = 0;

  /* void takeScreenShotPNGToArray (in unsigned long screenId, in unsigned long width, in unsigned long height, out unsigned long screenDataSize, [array, size_is (screenDataSize), retval] out octet screenData); */
  NS_IMETHOD TakeScreenShotPNGToArray(PRUint32 screenId, PRUint32 width, PRUint32 height, PRUint32 *screenDataSize, PRUint8 **screenData) = 0;

  /* [noscript] void drawToScreen (in unsigned long screenId, in octetPtr address, in unsigned long x, in unsigned long y, in unsigned long width, in unsigned long height); */
  NS_IMETHOD DrawToScreen(PRUint32 screenId, PRUint8 * address, PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height) = 0;

  /* void invalidateAndUpdate (); */
  NS_IMETHOD InvalidateAndUpdate(void) = 0;

  /* void resizeCompleted (in unsigned long screenId); */
  NS_IMETHOD ResizeCompleted(PRUint32 screenId) = 0;

  /* [noscript] void completeVHWACommand (in octetPtr command); */
  NS_IMETHOD CompleteVHWACommand(PRUint8 * command) = 0;

  /* void viewportChanged (in unsigned long screenId, in unsigned long x, in unsigned long y, in unsigned long width, in unsigned long height); */
  NS_IMETHOD ViewportChanged(PRUint32 screenId, PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IDISPLAY \
  NS_IMETHOD GetScreenResolution(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *bitsPerPixel, PRInt32 *xOrigin, PRInt32 *yOrigin); \
  NS_IMETHOD SetFramebuffer(PRUint32 screenId, IFramebuffer *framebuffer); \
  NS_IMETHOD GetFramebuffer(PRUint32 screenId, IFramebuffer **framebuffer, PRInt32 *xOrigin, PRInt32 *yOrigin); \
  NS_IMETHOD SetVideoModeHint(PRUint32 display, PRBool enabled, PRBool changeOrigin, PRInt32 originX, PRInt32 originY, PRUint32 width, PRUint32 height, PRUint32 bitsPerPixel); \
  NS_IMETHOD SetSeamlessMode(PRBool enabled); \
  NS_IMETHOD TakeScreenShot(PRUint32 screenId, PRUint8 * address, PRUint32 width, PRUint32 height); \
  NS_IMETHOD TakeScreenShotToArray(PRUint32 screenId, PRUint32 width, PRUint32 height, PRUint32 *screenDataSize, PRUint8 **screenData); \
  NS_IMETHOD TakeScreenShotPNGToArray(PRUint32 screenId, PRUint32 width, PRUint32 height, PRUint32 *screenDataSize, PRUint8 **screenData); \
  NS_IMETHOD DrawToScreen(PRUint32 screenId, PRUint8 * address, PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height); \
  NS_IMETHOD InvalidateAndUpdate(void); \
  NS_IMETHOD ResizeCompleted(PRUint32 screenId); \
  NS_IMETHOD CompleteVHWACommand(PRUint8 * command); \
  NS_IMETHOD ViewportChanged(PRUint32 screenId, PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IDISPLAY(_to) \
  NS_IMETHOD GetScreenResolution(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *bitsPerPixel, PRInt32 *xOrigin, PRInt32 *yOrigin) { return _to GetScreenResolution(screenId, width, height, bitsPerPixel, xOrigin, yOrigin); } \
  NS_IMETHOD SetFramebuffer(PRUint32 screenId, IFramebuffer *framebuffer) { return _to SetFramebuffer(screenId, framebuffer); } \
  NS_IMETHOD GetFramebuffer(PRUint32 screenId, IFramebuffer **framebuffer, PRInt32 *xOrigin, PRInt32 *yOrigin) { return _to GetFramebuffer(screenId, framebuffer, xOrigin, yOrigin); } \
  NS_IMETHOD SetVideoModeHint(PRUint32 display, PRBool enabled, PRBool changeOrigin, PRInt32 originX, PRInt32 originY, PRUint32 width, PRUint32 height, PRUint32 bitsPerPixel) { return _to SetVideoModeHint(display, enabled, changeOrigin, originX, originY, width, height, bitsPerPixel); } \
  NS_IMETHOD SetSeamlessMode(PRBool enabled) { return _to SetSeamlessMode(enabled); } \
  NS_IMETHOD TakeScreenShot(PRUint32 screenId, PRUint8 * address, PRUint32 width, PRUint32 height) { return _to TakeScreenShot(screenId, address, width, height); } \
  NS_IMETHOD TakeScreenShotToArray(PRUint32 screenId, PRUint32 width, PRUint32 height, PRUint32 *screenDataSize, PRUint8 **screenData) { return _to TakeScreenShotToArray(screenId, width, height, screenDataSize, screenData); } \
  NS_IMETHOD TakeScreenShotPNGToArray(PRUint32 screenId, PRUint32 width, PRUint32 height, PRUint32 *screenDataSize, PRUint8 **screenData) { return _to TakeScreenShotPNGToArray(screenId, width, height, screenDataSize, screenData); } \
  NS_IMETHOD DrawToScreen(PRUint32 screenId, PRUint8 * address, PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height) { return _to DrawToScreen(screenId, address, x, y, width, height); } \
  NS_IMETHOD InvalidateAndUpdate(void) { return _to InvalidateAndUpdate(); } \
  NS_IMETHOD ResizeCompleted(PRUint32 screenId) { return _to ResizeCompleted(screenId); } \
  NS_IMETHOD CompleteVHWACommand(PRUint8 * command) { return _to CompleteVHWACommand(command); } \
  NS_IMETHOD ViewportChanged(PRUint32 screenId, PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height) { return _to ViewportChanged(screenId, x, y, width, height); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IDISPLAY(_to) \
  NS_IMETHOD GetScreenResolution(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *bitsPerPixel, PRInt32 *xOrigin, PRInt32 *yOrigin) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetScreenResolution(screenId, width, height, bitsPerPixel, xOrigin, yOrigin); } \
  NS_IMETHOD SetFramebuffer(PRUint32 screenId, IFramebuffer *framebuffer) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFramebuffer(screenId, framebuffer); } \
  NS_IMETHOD GetFramebuffer(PRUint32 screenId, IFramebuffer **framebuffer, PRInt32 *xOrigin, PRInt32 *yOrigin) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFramebuffer(screenId, framebuffer, xOrigin, yOrigin); } \
  NS_IMETHOD SetVideoModeHint(PRUint32 display, PRBool enabled, PRBool changeOrigin, PRInt32 originX, PRInt32 originY, PRUint32 width, PRUint32 height, PRUint32 bitsPerPixel) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVideoModeHint(display, enabled, changeOrigin, originX, originY, width, height, bitsPerPixel); } \
  NS_IMETHOD SetSeamlessMode(PRBool enabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSeamlessMode(enabled); } \
  NS_IMETHOD TakeScreenShot(PRUint32 screenId, PRUint8 * address, PRUint32 width, PRUint32 height) { return !_to ? NS_ERROR_NULL_POINTER : _to->TakeScreenShot(screenId, address, width, height); } \
  NS_IMETHOD TakeScreenShotToArray(PRUint32 screenId, PRUint32 width, PRUint32 height, PRUint32 *screenDataSize, PRUint8 **screenData) { return !_to ? NS_ERROR_NULL_POINTER : _to->TakeScreenShotToArray(screenId, width, height, screenDataSize, screenData); } \
  NS_IMETHOD TakeScreenShotPNGToArray(PRUint32 screenId, PRUint32 width, PRUint32 height, PRUint32 *screenDataSize, PRUint8 **screenData) { return !_to ? NS_ERROR_NULL_POINTER : _to->TakeScreenShotPNGToArray(screenId, width, height, screenDataSize, screenData); } \
  NS_IMETHOD DrawToScreen(PRUint32 screenId, PRUint8 * address, PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height) { return !_to ? NS_ERROR_NULL_POINTER : _to->DrawToScreen(screenId, address, x, y, width, height); } \
  NS_IMETHOD InvalidateAndUpdate(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->InvalidateAndUpdate(); } \
  NS_IMETHOD ResizeCompleted(PRUint32 screenId) { return !_to ? NS_ERROR_NULL_POINTER : _to->ResizeCompleted(screenId); } \
  NS_IMETHOD CompleteVHWACommand(PRUint8 * command) { return !_to ? NS_ERROR_NULL_POINTER : _to->CompleteVHWACommand(command); } \
  NS_IMETHOD ViewportChanged(PRUint32 screenId, PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height) { return !_to ? NS_ERROR_NULL_POINTER : _to->ViewportChanged(screenId, x, y, width, height); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IDisplay
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IDISPLAY

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IDisplay)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* void getScreenResolution (in unsigned long screenId, out unsigned long width, out unsigned long height, out unsigned long bitsPerPixel, out long xOrigin, out long yOrigin); */
NS_IMETHODIMP _MYCLASS_::GetScreenResolution(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *bitsPerPixel, PRInt32 *xOrigin, PRInt32 *yOrigin)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setFramebuffer (in unsigned long screenId, in IFramebuffer framebuffer); */
NS_IMETHODIMP _MYCLASS_::SetFramebuffer(PRUint32 screenId, IFramebuffer *framebuffer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getFramebuffer (in unsigned long screenId, out IFramebuffer framebuffer, out long xOrigin, out long yOrigin); */
NS_IMETHODIMP _MYCLASS_::GetFramebuffer(PRUint32 screenId, IFramebuffer **framebuffer, PRInt32 *xOrigin, PRInt32 *yOrigin)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setVideoModeHint (in unsigned long display, in boolean enabled, in boolean changeOrigin, in long originX, in long originY, in unsigned long width, in unsigned long height, in unsigned long bitsPerPixel); */
NS_IMETHODIMP _MYCLASS_::SetVideoModeHint(PRUint32 display, PRBool enabled, PRBool changeOrigin, PRInt32 originX, PRInt32 originY, PRUint32 width, PRUint32 height, PRUint32 bitsPerPixel)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setSeamlessMode (in boolean enabled); */
NS_IMETHODIMP _MYCLASS_::SetSeamlessMode(PRBool enabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void takeScreenShot (in unsigned long screenId, in octetPtr address, in unsigned long width, in unsigned long height); */
NS_IMETHODIMP _MYCLASS_::TakeScreenShot(PRUint32 screenId, PRUint8 * address, PRUint32 width, PRUint32 height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void takeScreenShotToArray (in unsigned long screenId, in unsigned long width, in unsigned long height, out unsigned long screenDataSize, [array, size_is (screenDataSize), retval] out octet screenData); */
NS_IMETHODIMP _MYCLASS_::TakeScreenShotToArray(PRUint32 screenId, PRUint32 width, PRUint32 height, PRUint32 *screenDataSize, PRUint8 **screenData)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void takeScreenShotPNGToArray (in unsigned long screenId, in unsigned long width, in unsigned long height, out unsigned long screenDataSize, [array, size_is (screenDataSize), retval] out octet screenData); */
NS_IMETHODIMP _MYCLASS_::TakeScreenShotPNGToArray(PRUint32 screenId, PRUint32 width, PRUint32 height, PRUint32 *screenDataSize, PRUint8 **screenData)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void drawToScreen (in unsigned long screenId, in octetPtr address, in unsigned long x, in unsigned long y, in unsigned long width, in unsigned long height); */
NS_IMETHODIMP _MYCLASS_::DrawToScreen(PRUint32 screenId, PRUint8 * address, PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void invalidateAndUpdate (); */
NS_IMETHODIMP _MYCLASS_::InvalidateAndUpdate()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void resizeCompleted (in unsigned long screenId); */
NS_IMETHODIMP _MYCLASS_::ResizeCompleted(PRUint32 screenId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void completeVHWACommand (in octetPtr command); */
NS_IMETHODIMP _MYCLASS_::CompleteVHWACommand(PRUint8 * command)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void viewportChanged (in unsigned long screenId, in unsigned long x, in unsigned long y, in unsigned long width, in unsigned long height); */
NS_IMETHODIMP _MYCLASS_::ViewportChanged(PRUint32 screenId, PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IDisplay_GetScreenResolution_TO(smth) NS_IMETHOD GetScreenResolution (PRUint32 aScreenId, PRUint32 * aWidth, PRUint32 * aHeight, PRUint32 * aBitsPerPixel, PRInt32 * aXOrigin, PRInt32 * aYOrigin) { return smth GetScreenResolution (aScreenId, aWidth, aHeight, aBitsPerPixel, aXOrigin, aYOrigin); }
#define COM_FORWARD_IDisplay_GetScreenResolution_TO_OBJ(obj) COM_FORWARD_IDisplay_GetScreenResolution_TO ((obj)->)
#define COM_FORWARD_IDisplay_GetScreenResolution_TO_BASE(base) COM_FORWARD_IDisplay_GetScreenResolution_TO (base::)
#define COM_FORWARD_IDisplay_SetFramebuffer_TO(smth) NS_IMETHOD SetFramebuffer (PRUint32 aScreenId, IFramebuffer * aFramebuffer) { return smth SetFramebuffer (aScreenId, aFramebuffer); }
#define COM_FORWARD_IDisplay_SetFramebuffer_TO_OBJ(obj) COM_FORWARD_IDisplay_SetFramebuffer_TO ((obj)->)
#define COM_FORWARD_IDisplay_SetFramebuffer_TO_BASE(base) COM_FORWARD_IDisplay_SetFramebuffer_TO (base::)
#define COM_FORWARD_IDisplay_GetFramebuffer_TO(smth) NS_IMETHOD GetFramebuffer (PRUint32 aScreenId, IFramebuffer * * aFramebuffer, PRInt32 * aXOrigin, PRInt32 * aYOrigin) { return smth GetFramebuffer (aScreenId, aFramebuffer, aXOrigin, aYOrigin); }
#define COM_FORWARD_IDisplay_GetFramebuffer_TO_OBJ(obj) COM_FORWARD_IDisplay_GetFramebuffer_TO ((obj)->)
#define COM_FORWARD_IDisplay_GetFramebuffer_TO_BASE(base) COM_FORWARD_IDisplay_GetFramebuffer_TO (base::)
#define COM_FORWARD_IDisplay_SetVideoModeHint_TO(smth) NS_IMETHOD SetVideoModeHint (PRUint32 aDisplay, PRBool aEnabled, PRBool aChangeOrigin, PRInt32 aOriginX, PRInt32 aOriginY, PRUint32 aWidth, PRUint32 aHeight, PRUint32 aBitsPerPixel) { return smth SetVideoModeHint (aDisplay, aEnabled, aChangeOrigin, aOriginX, aOriginY, aWidth, aHeight, aBitsPerPixel); }
#define COM_FORWARD_IDisplay_SetVideoModeHint_TO_OBJ(obj) COM_FORWARD_IDisplay_SetVideoModeHint_TO ((obj)->)
#define COM_FORWARD_IDisplay_SetVideoModeHint_TO_BASE(base) COM_FORWARD_IDisplay_SetVideoModeHint_TO (base::)
#define COM_FORWARD_IDisplay_SetSeamlessMode_TO(smth) NS_IMETHOD SetSeamlessMode (PRBool aEnabled) { return smth SetSeamlessMode (aEnabled); }
#define COM_FORWARD_IDisplay_SetSeamlessMode_TO_OBJ(obj) COM_FORWARD_IDisplay_SetSeamlessMode_TO ((obj)->)
#define COM_FORWARD_IDisplay_SetSeamlessMode_TO_BASE(base) COM_FORWARD_IDisplay_SetSeamlessMode_TO (base::)
#define COM_FORWARD_IDisplay_TakeScreenShot_TO(smth) NS_IMETHOD TakeScreenShot (PRUint32 aScreenId, PRUint8 * aAddress, PRUint32 aWidth, PRUint32 aHeight) { return smth TakeScreenShot (aScreenId, aAddress, aWidth, aHeight); }
#define COM_FORWARD_IDisplay_TakeScreenShot_TO_OBJ(obj) COM_FORWARD_IDisplay_TakeScreenShot_TO ((obj)->)
#define COM_FORWARD_IDisplay_TakeScreenShot_TO_BASE(base) COM_FORWARD_IDisplay_TakeScreenShot_TO (base::)
#define COM_FORWARD_IDisplay_TakeScreenShotToArray_TO(smth) NS_IMETHOD TakeScreenShotToArray (PRUint32 aScreenId, PRUint32 aWidth, PRUint32 aHeight, PRUint32 * aScreenDataSize, PRUint8 * * aScreenData) { return smth TakeScreenShotToArray (aScreenId, aWidth, aHeight, aScreenDataSize, aScreenData); }
#define COM_FORWARD_IDisplay_TakeScreenShotToArray_TO_OBJ(obj) COM_FORWARD_IDisplay_TakeScreenShotToArray_TO ((obj)->)
#define COM_FORWARD_IDisplay_TakeScreenShotToArray_TO_BASE(base) COM_FORWARD_IDisplay_TakeScreenShotToArray_TO (base::)
#define COM_FORWARD_IDisplay_TakeScreenShotPNGToArray_TO(smth) NS_IMETHOD TakeScreenShotPNGToArray (PRUint32 aScreenId, PRUint32 aWidth, PRUint32 aHeight, PRUint32 * aScreenDataSize, PRUint8 * * aScreenData) { return smth TakeScreenShotPNGToArray (aScreenId, aWidth, aHeight, aScreenDataSize, aScreenData); }
#define COM_FORWARD_IDisplay_TakeScreenShotPNGToArray_TO_OBJ(obj) COM_FORWARD_IDisplay_TakeScreenShotPNGToArray_TO ((obj)->)
#define COM_FORWARD_IDisplay_TakeScreenShotPNGToArray_TO_BASE(base) COM_FORWARD_IDisplay_TakeScreenShotPNGToArray_TO (base::)
#define COM_FORWARD_IDisplay_DrawToScreen_TO(smth) NS_IMETHOD DrawToScreen (PRUint32 aScreenId, PRUint8 * aAddress, PRUint32 aX, PRUint32 aY, PRUint32 aWidth, PRUint32 aHeight) { return smth DrawToScreen (aScreenId, aAddress, aX, aY, aWidth, aHeight); }
#define COM_FORWARD_IDisplay_DrawToScreen_TO_OBJ(obj) COM_FORWARD_IDisplay_DrawToScreen_TO ((obj)->)
#define COM_FORWARD_IDisplay_DrawToScreen_TO_BASE(base) COM_FORWARD_IDisplay_DrawToScreen_TO (base::)
#define COM_FORWARD_IDisplay_InvalidateAndUpdate_TO(smth) NS_IMETHOD InvalidateAndUpdate() { return smth InvalidateAndUpdate(); }
#define COM_FORWARD_IDisplay_InvalidateAndUpdate_TO_OBJ(obj) COM_FORWARD_IDisplay_InvalidateAndUpdate_TO ((obj)->)
#define COM_FORWARD_IDisplay_InvalidateAndUpdate_TO_BASE(base) COM_FORWARD_IDisplay_InvalidateAndUpdate_TO (base::)
#define COM_FORWARD_IDisplay_ResizeCompleted_TO(smth) NS_IMETHOD ResizeCompleted (PRUint32 aScreenId) { return smth ResizeCompleted (aScreenId); }
#define COM_FORWARD_IDisplay_ResizeCompleted_TO_OBJ(obj) COM_FORWARD_IDisplay_ResizeCompleted_TO ((obj)->)
#define COM_FORWARD_IDisplay_ResizeCompleted_TO_BASE(base) COM_FORWARD_IDisplay_ResizeCompleted_TO (base::)
#define COM_FORWARD_IDisplay_CompleteVHWACommand_TO(smth) NS_IMETHOD CompleteVHWACommand (PRUint8 * aCommand) { return smth CompleteVHWACommand (aCommand); }
#define COM_FORWARD_IDisplay_CompleteVHWACommand_TO_OBJ(obj) COM_FORWARD_IDisplay_CompleteVHWACommand_TO ((obj)->)
#define COM_FORWARD_IDisplay_CompleteVHWACommand_TO_BASE(base) COM_FORWARD_IDisplay_CompleteVHWACommand_TO (base::)
#define COM_FORWARD_IDisplay_ViewportChanged_TO(smth) NS_IMETHOD ViewportChanged (PRUint32 aScreenId, PRUint32 aX, PRUint32 aY, PRUint32 aWidth, PRUint32 aHeight) { return smth ViewportChanged (aScreenId, aX, aY, aWidth, aHeight); }
#define COM_FORWARD_IDisplay_ViewportChanged_TO_OBJ(obj) COM_FORWARD_IDisplay_ViewportChanged_TO ((obj)->)
#define COM_FORWARD_IDisplay_ViewportChanged_TO_BASE(base) COM_FORWARD_IDisplay_ViewportChanged_TO (base::)
#define COM_FORWARD_IDisplay_TO(smth) NS_FORWARD_IDISPLAY (smth)
#define COM_FORWARD_IDisplay_TO_OBJ(obj) COM_FORWARD_IDisplay_TO ((obj)->)
#define COM_FORWARD_IDisplay_TO_BASE(base) COM_FORWARD_IDisplay_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IDisplay;

/* starting interface:    INetworkAdapter */
#define INETWORKADAPTER_IID_STR "efa0f965-63c7-4c60-afdf-b1cc9943b9c0"

#define INETWORKADAPTER_IID \
  {0xefa0f965, 0x63c7, 0x4c60, \
    { 0xaf, 0xdf, 0xb1, 0xcc, 0x99, 0x43, 0xb9, 0xc0 }}

class NS_NO_VTABLE INetworkAdapter : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(INETWORKADAPTER_IID)

  /* attribute PRUint32 adapterType; */
  NS_IMETHOD GetAdapterType(PRUint32 *aAdapterType) = 0;
  NS_IMETHOD SetAdapterType(PRUint32 aAdapterType) = 0;

  /* readonly attribute unsigned long slot; */
  NS_IMETHOD GetSlot(PRUint32 *aSlot) = 0;

  /* attribute boolean enabled; */
  NS_IMETHOD GetEnabled(PRBool *aEnabled) = 0;
  NS_IMETHOD SetEnabled(PRBool aEnabled) = 0;

  /* attribute wstring MACAddress; */
  NS_IMETHOD GetMACAddress(PRUnichar * *aMACAddress) = 0;
  NS_IMETHOD SetMACAddress(const PRUnichar * aMACAddress) = 0;

  /* attribute PRUint32 attachmentType; */
  NS_IMETHOD GetAttachmentType(PRUint32 *aAttachmentType) = 0;
  NS_IMETHOD SetAttachmentType(PRUint32 aAttachmentType) = 0;

  /* attribute wstring bridgedInterface; */
  NS_IMETHOD GetBridgedInterface(PRUnichar * *aBridgedInterface) = 0;
  NS_IMETHOD SetBridgedInterface(const PRUnichar * aBridgedInterface) = 0;

  /* attribute wstring hostOnlyInterface; */
  NS_IMETHOD GetHostOnlyInterface(PRUnichar * *aHostOnlyInterface) = 0;
  NS_IMETHOD SetHostOnlyInterface(const PRUnichar * aHostOnlyInterface) = 0;

  /* attribute wstring internalNetwork; */
  NS_IMETHOD GetInternalNetwork(PRUnichar * *aInternalNetwork) = 0;
  NS_IMETHOD SetInternalNetwork(const PRUnichar * aInternalNetwork) = 0;

  /* attribute wstring NATNetwork; */
  NS_IMETHOD GetNATNetwork(PRUnichar * *aNATNetwork) = 0;
  NS_IMETHOD SetNATNetwork(const PRUnichar * aNATNetwork) = 0;

  /* attribute wstring genericDriver; */
  NS_IMETHOD GetGenericDriver(PRUnichar * *aGenericDriver) = 0;
  NS_IMETHOD SetGenericDriver(const PRUnichar * aGenericDriver) = 0;

  /* attribute boolean cableConnected; */
  NS_IMETHOD GetCableConnected(PRBool *aCableConnected) = 0;
  NS_IMETHOD SetCableConnected(PRBool aCableConnected) = 0;

  /* attribute unsigned long lineSpeed; */
  NS_IMETHOD GetLineSpeed(PRUint32 *aLineSpeed) = 0;
  NS_IMETHOD SetLineSpeed(PRUint32 aLineSpeed) = 0;

  /* attribute PRUint32 promiscModePolicy; */
  NS_IMETHOD GetPromiscModePolicy(PRUint32 *aPromiscModePolicy) = 0;
  NS_IMETHOD SetPromiscModePolicy(PRUint32 aPromiscModePolicy) = 0;

  /* attribute boolean traceEnabled; */
  NS_IMETHOD GetTraceEnabled(PRBool *aTraceEnabled) = 0;
  NS_IMETHOD SetTraceEnabled(PRBool aTraceEnabled) = 0;

  /* attribute wstring traceFile; */
  NS_IMETHOD GetTraceFile(PRUnichar * *aTraceFile) = 0;
  NS_IMETHOD SetTraceFile(const PRUnichar * aTraceFile) = 0;

  /* readonly attribute INATEngine NATEngine; */
  NS_IMETHOD GetNATEngine(INATEngine * *aNATEngine) = 0;

  /* attribute unsigned long bootPriority; */
  NS_IMETHOD GetBootPriority(PRUint32 *aBootPriority) = 0;
  NS_IMETHOD SetBootPriority(PRUint32 aBootPriority) = 0;

  /* attribute IBandwidthGroup bandwidthGroup; */
  NS_IMETHOD GetBandwidthGroup(IBandwidthGroup * *aBandwidthGroup) = 0;
  NS_IMETHOD SetBandwidthGroup(IBandwidthGroup * aBandwidthGroup) = 0;

  /* void getProperty (in wstring key, [retval] out wstring value); */
  NS_IMETHOD GetProperty(const PRUnichar *key, PRUnichar **value) = 0;

  /* void setProperty (in wstring key, in wstring value); */
  NS_IMETHOD SetProperty(const PRUnichar *key, const PRUnichar *value) = 0;

  /* void getProperties (in wstring names, out unsigned long returnNamesSize, [array, size_is (returnNamesSize)] out wstring returnNames, out unsigned long returnValuesSize, [array, size_is (returnValuesSize), retval] out wstring returnValues); */
  NS_IMETHOD GetProperties(const PRUnichar *names, PRUint32 *returnNamesSize, PRUnichar ***returnNames, PRUint32 *returnValuesSize, PRUnichar ***returnValues) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_INETWORKADAPTER \
  NS_IMETHOD GetAdapterType(PRUint32 *aAdapterType); \
  NS_IMETHOD SetAdapterType(PRUint32 aAdapterType); \
  NS_IMETHOD GetSlot(PRUint32 *aSlot); \
  NS_IMETHOD GetEnabled(PRBool *aEnabled); \
  NS_IMETHOD SetEnabled(PRBool aEnabled); \
  NS_IMETHOD GetMACAddress(PRUnichar * *aMACAddress); \
  NS_IMETHOD SetMACAddress(const PRUnichar * aMACAddress); \
  NS_IMETHOD GetAttachmentType(PRUint32 *aAttachmentType); \
  NS_IMETHOD SetAttachmentType(PRUint32 aAttachmentType); \
  NS_IMETHOD GetBridgedInterface(PRUnichar * *aBridgedInterface); \
  NS_IMETHOD SetBridgedInterface(const PRUnichar * aBridgedInterface); \
  NS_IMETHOD GetHostOnlyInterface(PRUnichar * *aHostOnlyInterface); \
  NS_IMETHOD SetHostOnlyInterface(const PRUnichar * aHostOnlyInterface); \
  NS_IMETHOD GetInternalNetwork(PRUnichar * *aInternalNetwork); \
  NS_IMETHOD SetInternalNetwork(const PRUnichar * aInternalNetwork); \
  NS_IMETHOD GetNATNetwork(PRUnichar * *aNATNetwork); \
  NS_IMETHOD SetNATNetwork(const PRUnichar * aNATNetwork); \
  NS_IMETHOD GetGenericDriver(PRUnichar * *aGenericDriver); \
  NS_IMETHOD SetGenericDriver(const PRUnichar * aGenericDriver); \
  NS_IMETHOD GetCableConnected(PRBool *aCableConnected); \
  NS_IMETHOD SetCableConnected(PRBool aCableConnected); \
  NS_IMETHOD GetLineSpeed(PRUint32 *aLineSpeed); \
  NS_IMETHOD SetLineSpeed(PRUint32 aLineSpeed); \
  NS_IMETHOD GetPromiscModePolicy(PRUint32 *aPromiscModePolicy); \
  NS_IMETHOD SetPromiscModePolicy(PRUint32 aPromiscModePolicy); \
  NS_IMETHOD GetTraceEnabled(PRBool *aTraceEnabled); \
  NS_IMETHOD SetTraceEnabled(PRBool aTraceEnabled); \
  NS_IMETHOD GetTraceFile(PRUnichar * *aTraceFile); \
  NS_IMETHOD SetTraceFile(const PRUnichar * aTraceFile); \
  NS_IMETHOD GetNATEngine(INATEngine * *aNATEngine); \
  NS_IMETHOD GetBootPriority(PRUint32 *aBootPriority); \
  NS_IMETHOD SetBootPriority(PRUint32 aBootPriority); \
  NS_IMETHOD GetBandwidthGroup(IBandwidthGroup * *aBandwidthGroup); \
  NS_IMETHOD SetBandwidthGroup(IBandwidthGroup * aBandwidthGroup); \
  NS_IMETHOD GetProperty(const PRUnichar *key, PRUnichar **value); \
  NS_IMETHOD SetProperty(const PRUnichar *key, const PRUnichar *value); \
  NS_IMETHOD GetProperties(const PRUnichar *names, PRUint32 *returnNamesSize, PRUnichar ***returnNames, PRUint32 *returnValuesSize, PRUnichar ***returnValues); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_INETWORKADAPTER(_to) \
  NS_IMETHOD GetAdapterType(PRUint32 *aAdapterType) { return _to GetAdapterType(aAdapterType); } \
  NS_IMETHOD SetAdapterType(PRUint32 aAdapterType) { return _to SetAdapterType(aAdapterType); } \
  NS_IMETHOD GetSlot(PRUint32 *aSlot) { return _to GetSlot(aSlot); } \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return _to GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return _to SetEnabled(aEnabled); } \
  NS_IMETHOD GetMACAddress(PRUnichar * *aMACAddress) { return _to GetMACAddress(aMACAddress); } \
  NS_IMETHOD SetMACAddress(const PRUnichar * aMACAddress) { return _to SetMACAddress(aMACAddress); } \
  NS_IMETHOD GetAttachmentType(PRUint32 *aAttachmentType) { return _to GetAttachmentType(aAttachmentType); } \
  NS_IMETHOD SetAttachmentType(PRUint32 aAttachmentType) { return _to SetAttachmentType(aAttachmentType); } \
  NS_IMETHOD GetBridgedInterface(PRUnichar * *aBridgedInterface) { return _to GetBridgedInterface(aBridgedInterface); } \
  NS_IMETHOD SetBridgedInterface(const PRUnichar * aBridgedInterface) { return _to SetBridgedInterface(aBridgedInterface); } \
  NS_IMETHOD GetHostOnlyInterface(PRUnichar * *aHostOnlyInterface) { return _to GetHostOnlyInterface(aHostOnlyInterface); } \
  NS_IMETHOD SetHostOnlyInterface(const PRUnichar * aHostOnlyInterface) { return _to SetHostOnlyInterface(aHostOnlyInterface); } \
  NS_IMETHOD GetInternalNetwork(PRUnichar * *aInternalNetwork) { return _to GetInternalNetwork(aInternalNetwork); } \
  NS_IMETHOD SetInternalNetwork(const PRUnichar * aInternalNetwork) { return _to SetInternalNetwork(aInternalNetwork); } \
  NS_IMETHOD GetNATNetwork(PRUnichar * *aNATNetwork) { return _to GetNATNetwork(aNATNetwork); } \
  NS_IMETHOD SetNATNetwork(const PRUnichar * aNATNetwork) { return _to SetNATNetwork(aNATNetwork); } \
  NS_IMETHOD GetGenericDriver(PRUnichar * *aGenericDriver) { return _to GetGenericDriver(aGenericDriver); } \
  NS_IMETHOD SetGenericDriver(const PRUnichar * aGenericDriver) { return _to SetGenericDriver(aGenericDriver); } \
  NS_IMETHOD GetCableConnected(PRBool *aCableConnected) { return _to GetCableConnected(aCableConnected); } \
  NS_IMETHOD SetCableConnected(PRBool aCableConnected) { return _to SetCableConnected(aCableConnected); } \
  NS_IMETHOD GetLineSpeed(PRUint32 *aLineSpeed) { return _to GetLineSpeed(aLineSpeed); } \
  NS_IMETHOD SetLineSpeed(PRUint32 aLineSpeed) { return _to SetLineSpeed(aLineSpeed); } \
  NS_IMETHOD GetPromiscModePolicy(PRUint32 *aPromiscModePolicy) { return _to GetPromiscModePolicy(aPromiscModePolicy); } \
  NS_IMETHOD SetPromiscModePolicy(PRUint32 aPromiscModePolicy) { return _to SetPromiscModePolicy(aPromiscModePolicy); } \
  NS_IMETHOD GetTraceEnabled(PRBool *aTraceEnabled) { return _to GetTraceEnabled(aTraceEnabled); } \
  NS_IMETHOD SetTraceEnabled(PRBool aTraceEnabled) { return _to SetTraceEnabled(aTraceEnabled); } \
  NS_IMETHOD GetTraceFile(PRUnichar * *aTraceFile) { return _to GetTraceFile(aTraceFile); } \
  NS_IMETHOD SetTraceFile(const PRUnichar * aTraceFile) { return _to SetTraceFile(aTraceFile); } \
  NS_IMETHOD GetNATEngine(INATEngine * *aNATEngine) { return _to GetNATEngine(aNATEngine); } \
  NS_IMETHOD GetBootPriority(PRUint32 *aBootPriority) { return _to GetBootPriority(aBootPriority); } \
  NS_IMETHOD SetBootPriority(PRUint32 aBootPriority) { return _to SetBootPriority(aBootPriority); } \
  NS_IMETHOD GetBandwidthGroup(IBandwidthGroup * *aBandwidthGroup) { return _to GetBandwidthGroup(aBandwidthGroup); } \
  NS_IMETHOD SetBandwidthGroup(IBandwidthGroup * aBandwidthGroup) { return _to SetBandwidthGroup(aBandwidthGroup); } \
  NS_IMETHOD GetProperty(const PRUnichar *key, PRUnichar **value) { return _to GetProperty(key, value); } \
  NS_IMETHOD SetProperty(const PRUnichar *key, const PRUnichar *value) { return _to SetProperty(key, value); } \
  NS_IMETHOD GetProperties(const PRUnichar *names, PRUint32 *returnNamesSize, PRUnichar ***returnNames, PRUint32 *returnValuesSize, PRUnichar ***returnValues) { return _to GetProperties(names, returnNamesSize, returnNames, returnValuesSize, returnValues); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_INETWORKADAPTER(_to) \
  NS_IMETHOD GetAdapterType(PRUint32 *aAdapterType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAdapterType(aAdapterType); } \
  NS_IMETHOD SetAdapterType(PRUint32 aAdapterType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAdapterType(aAdapterType); } \
  NS_IMETHOD GetSlot(PRUint32 *aSlot) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSlot(aSlot); } \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEnabled(aEnabled); } \
  NS_IMETHOD GetMACAddress(PRUnichar * *aMACAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMACAddress(aMACAddress); } \
  NS_IMETHOD SetMACAddress(const PRUnichar * aMACAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMACAddress(aMACAddress); } \
  NS_IMETHOD GetAttachmentType(PRUint32 *aAttachmentType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAttachmentType(aAttachmentType); } \
  NS_IMETHOD SetAttachmentType(PRUint32 aAttachmentType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAttachmentType(aAttachmentType); } \
  NS_IMETHOD GetBridgedInterface(PRUnichar * *aBridgedInterface) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBridgedInterface(aBridgedInterface); } \
  NS_IMETHOD SetBridgedInterface(const PRUnichar * aBridgedInterface) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBridgedInterface(aBridgedInterface); } \
  NS_IMETHOD GetHostOnlyInterface(PRUnichar * *aHostOnlyInterface) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHostOnlyInterface(aHostOnlyInterface); } \
  NS_IMETHOD SetHostOnlyInterface(const PRUnichar * aHostOnlyInterface) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHostOnlyInterface(aHostOnlyInterface); } \
  NS_IMETHOD GetInternalNetwork(PRUnichar * *aInternalNetwork) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInternalNetwork(aInternalNetwork); } \
  NS_IMETHOD SetInternalNetwork(const PRUnichar * aInternalNetwork) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetInternalNetwork(aInternalNetwork); } \
  NS_IMETHOD GetNATNetwork(PRUnichar * *aNATNetwork) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNATNetwork(aNATNetwork); } \
  NS_IMETHOD SetNATNetwork(const PRUnichar * aNATNetwork) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNATNetwork(aNATNetwork); } \
  NS_IMETHOD GetGenericDriver(PRUnichar * *aGenericDriver) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGenericDriver(aGenericDriver); } \
  NS_IMETHOD SetGenericDriver(const PRUnichar * aGenericDriver) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetGenericDriver(aGenericDriver); } \
  NS_IMETHOD GetCableConnected(PRBool *aCableConnected) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCableConnected(aCableConnected); } \
  NS_IMETHOD SetCableConnected(PRBool aCableConnected) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCableConnected(aCableConnected); } \
  NS_IMETHOD GetLineSpeed(PRUint32 *aLineSpeed) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLineSpeed(aLineSpeed); } \
  NS_IMETHOD SetLineSpeed(PRUint32 aLineSpeed) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLineSpeed(aLineSpeed); } \
  NS_IMETHOD GetPromiscModePolicy(PRUint32 *aPromiscModePolicy) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPromiscModePolicy(aPromiscModePolicy); } \
  NS_IMETHOD SetPromiscModePolicy(PRUint32 aPromiscModePolicy) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPromiscModePolicy(aPromiscModePolicy); } \
  NS_IMETHOD GetTraceEnabled(PRBool *aTraceEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTraceEnabled(aTraceEnabled); } \
  NS_IMETHOD SetTraceEnabled(PRBool aTraceEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTraceEnabled(aTraceEnabled); } \
  NS_IMETHOD GetTraceFile(PRUnichar * *aTraceFile) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTraceFile(aTraceFile); } \
  NS_IMETHOD SetTraceFile(const PRUnichar * aTraceFile) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTraceFile(aTraceFile); } \
  NS_IMETHOD GetNATEngine(INATEngine * *aNATEngine) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNATEngine(aNATEngine); } \
  NS_IMETHOD GetBootPriority(PRUint32 *aBootPriority) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBootPriority(aBootPriority); } \
  NS_IMETHOD SetBootPriority(PRUint32 aBootPriority) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBootPriority(aBootPriority); } \
  NS_IMETHOD GetBandwidthGroup(IBandwidthGroup * *aBandwidthGroup) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBandwidthGroup(aBandwidthGroup); } \
  NS_IMETHOD SetBandwidthGroup(IBandwidthGroup * aBandwidthGroup) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBandwidthGroup(aBandwidthGroup); } \
  NS_IMETHOD GetProperty(const PRUnichar *key, PRUnichar **value) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProperty(key, value); } \
  NS_IMETHOD SetProperty(const PRUnichar *key, const PRUnichar *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetProperty(key, value); } \
  NS_IMETHOD GetProperties(const PRUnichar *names, PRUint32 *returnNamesSize, PRUnichar ***returnNames, PRUint32 *returnValuesSize, PRUnichar ***returnValues) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProperties(names, returnNamesSize, returnNames, returnValuesSize, returnValues); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public INetworkAdapter
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_INETWORKADAPTER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, INetworkAdapter)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* attribute PRUint32 adapterType; */
NS_IMETHODIMP _MYCLASS_::GetAdapterType(PRUint32 *aAdapterType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAdapterType(PRUint32 aAdapterType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long slot; */
NS_IMETHODIMP _MYCLASS_::GetSlot(PRUint32 *aSlot)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean enabled; */
NS_IMETHODIMP _MYCLASS_::GetEnabled(PRBool *aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetEnabled(PRBool aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring MACAddress; */
NS_IMETHODIMP _MYCLASS_::GetMACAddress(PRUnichar * *aMACAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetMACAddress(const PRUnichar * aMACAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 attachmentType; */
NS_IMETHODIMP _MYCLASS_::GetAttachmentType(PRUint32 *aAttachmentType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAttachmentType(PRUint32 aAttachmentType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring bridgedInterface; */
NS_IMETHODIMP _MYCLASS_::GetBridgedInterface(PRUnichar * *aBridgedInterface)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetBridgedInterface(const PRUnichar * aBridgedInterface)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring hostOnlyInterface; */
NS_IMETHODIMP _MYCLASS_::GetHostOnlyInterface(PRUnichar * *aHostOnlyInterface)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetHostOnlyInterface(const PRUnichar * aHostOnlyInterface)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring internalNetwork; */
NS_IMETHODIMP _MYCLASS_::GetInternalNetwork(PRUnichar * *aInternalNetwork)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetInternalNetwork(const PRUnichar * aInternalNetwork)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring NATNetwork; */
NS_IMETHODIMP _MYCLASS_::GetNATNetwork(PRUnichar * *aNATNetwork)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetNATNetwork(const PRUnichar * aNATNetwork)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring genericDriver; */
NS_IMETHODIMP _MYCLASS_::GetGenericDriver(PRUnichar * *aGenericDriver)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetGenericDriver(const PRUnichar * aGenericDriver)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean cableConnected; */
NS_IMETHODIMP _MYCLASS_::GetCableConnected(PRBool *aCableConnected)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetCableConnected(PRBool aCableConnected)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long lineSpeed; */
NS_IMETHODIMP _MYCLASS_::GetLineSpeed(PRUint32 *aLineSpeed)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetLineSpeed(PRUint32 aLineSpeed)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 promiscModePolicy; */
NS_IMETHODIMP _MYCLASS_::GetPromiscModePolicy(PRUint32 *aPromiscModePolicy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPromiscModePolicy(PRUint32 aPromiscModePolicy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean traceEnabled; */
NS_IMETHODIMP _MYCLASS_::GetTraceEnabled(PRBool *aTraceEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTraceEnabled(PRBool aTraceEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring traceFile; */
NS_IMETHODIMP _MYCLASS_::GetTraceFile(PRUnichar * *aTraceFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTraceFile(const PRUnichar * aTraceFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute INATEngine NATEngine; */
NS_IMETHODIMP _MYCLASS_::GetNATEngine(INATEngine * *aNATEngine)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long bootPriority; */
NS_IMETHODIMP _MYCLASS_::GetBootPriority(PRUint32 *aBootPriority)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetBootPriority(PRUint32 aBootPriority)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute IBandwidthGroup bandwidthGroup; */
NS_IMETHODIMP _MYCLASS_::GetBandwidthGroup(IBandwidthGroup * *aBandwidthGroup)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetBandwidthGroup(IBandwidthGroup * aBandwidthGroup)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getProperty (in wstring key, [retval] out wstring value); */
NS_IMETHODIMP _MYCLASS_::GetProperty(const PRUnichar *key, PRUnichar **value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setProperty (in wstring key, in wstring value); */
NS_IMETHODIMP _MYCLASS_::SetProperty(const PRUnichar *key, const PRUnichar *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getProperties (in wstring names, out unsigned long returnNamesSize, [array, size_is (returnNamesSize)] out wstring returnNames, out unsigned long returnValuesSize, [array, size_is (returnValuesSize), retval] out wstring returnValues); */
NS_IMETHODIMP _MYCLASS_::GetProperties(const PRUnichar *names, PRUint32 *returnNamesSize, PRUnichar ***returnNames, PRUint32 *returnValuesSize, PRUnichar ***returnValues)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_INetworkAdapter_GETTER_AdapterType_TO(smth) NS_IMETHOD GetAdapterType (PRUint32 * aAdapterType) { return smth GetAdapterType (aAdapterType); }
#define COM_FORWARD_INetworkAdapter_GETTER_AdapterType_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_AdapterType_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_AdapterType_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_AdapterType_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_AdapterType_TO(smth) NS_IMETHOD SetAdapterType (PRUint32 aAdapterType) { return smth SetAdapterType (aAdapterType); }
#define COM_FORWARD_INetworkAdapter_SETTER_AdapterType_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_AdapterType_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_AdapterType_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_AdapterType_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_Slot_TO(smth) NS_IMETHOD GetSlot (PRUint32 * aSlot) { return smth GetSlot (aSlot); }
#define COM_FORWARD_INetworkAdapter_GETTER_Slot_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_Slot_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_Slot_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_Slot_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_Enabled_TO(smth) NS_IMETHOD GetEnabled (PRBool * aEnabled) { return smth GetEnabled (aEnabled); }
#define COM_FORWARD_INetworkAdapter_GETTER_Enabled_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_Enabled_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_Enabled_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_Enabled_TO(smth) NS_IMETHOD SetEnabled (PRBool aEnabled) { return smth SetEnabled (aEnabled); }
#define COM_FORWARD_INetworkAdapter_SETTER_Enabled_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_Enabled_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_Enabled_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_MACAddress_TO(smth) NS_IMETHOD GetMACAddress (PRUnichar * * aMACAddress) { return smth GetMACAddress (aMACAddress); }
#define COM_FORWARD_INetworkAdapter_GETTER_MACAddress_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_MACAddress_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_MACAddress_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_MACAddress_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_MACAddress_TO(smth) NS_IMETHOD SetMACAddress (const PRUnichar * aMACAddress) { return smth SetMACAddress (aMACAddress); }
#define COM_FORWARD_INetworkAdapter_SETTER_MACAddress_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_MACAddress_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_MACAddress_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_MACAddress_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_AttachmentType_TO(smth) NS_IMETHOD GetAttachmentType (PRUint32 * aAttachmentType) { return smth GetAttachmentType (aAttachmentType); }
#define COM_FORWARD_INetworkAdapter_GETTER_AttachmentType_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_AttachmentType_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_AttachmentType_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_AttachmentType_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_AttachmentType_TO(smth) NS_IMETHOD SetAttachmentType (PRUint32 aAttachmentType) { return smth SetAttachmentType (aAttachmentType); }
#define COM_FORWARD_INetworkAdapter_SETTER_AttachmentType_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_AttachmentType_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_AttachmentType_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_AttachmentType_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_BridgedInterface_TO(smth) NS_IMETHOD GetBridgedInterface (PRUnichar * * aBridgedInterface) { return smth GetBridgedInterface (aBridgedInterface); }
#define COM_FORWARD_INetworkAdapter_GETTER_BridgedInterface_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_BridgedInterface_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_BridgedInterface_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_BridgedInterface_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_BridgedInterface_TO(smth) NS_IMETHOD SetBridgedInterface (const PRUnichar * aBridgedInterface) { return smth SetBridgedInterface (aBridgedInterface); }
#define COM_FORWARD_INetworkAdapter_SETTER_BridgedInterface_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_BridgedInterface_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_BridgedInterface_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_BridgedInterface_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_HostOnlyInterface_TO(smth) NS_IMETHOD GetHostOnlyInterface (PRUnichar * * aHostOnlyInterface) { return smth GetHostOnlyInterface (aHostOnlyInterface); }
#define COM_FORWARD_INetworkAdapter_GETTER_HostOnlyInterface_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_HostOnlyInterface_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_HostOnlyInterface_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_HostOnlyInterface_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_HostOnlyInterface_TO(smth) NS_IMETHOD SetHostOnlyInterface (const PRUnichar * aHostOnlyInterface) { return smth SetHostOnlyInterface (aHostOnlyInterface); }
#define COM_FORWARD_INetworkAdapter_SETTER_HostOnlyInterface_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_HostOnlyInterface_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_HostOnlyInterface_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_HostOnlyInterface_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_InternalNetwork_TO(smth) NS_IMETHOD GetInternalNetwork (PRUnichar * * aInternalNetwork) { return smth GetInternalNetwork (aInternalNetwork); }
#define COM_FORWARD_INetworkAdapter_GETTER_InternalNetwork_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_InternalNetwork_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_InternalNetwork_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_InternalNetwork_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_InternalNetwork_TO(smth) NS_IMETHOD SetInternalNetwork (const PRUnichar * aInternalNetwork) { return smth SetInternalNetwork (aInternalNetwork); }
#define COM_FORWARD_INetworkAdapter_SETTER_InternalNetwork_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_InternalNetwork_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_InternalNetwork_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_InternalNetwork_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_NATNetwork_TO(smth) NS_IMETHOD GetNATNetwork (PRUnichar * * aNATNetwork) { return smth GetNATNetwork (aNATNetwork); }
#define COM_FORWARD_INetworkAdapter_GETTER_NATNetwork_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_NATNetwork_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_NATNetwork_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_NATNetwork_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_NATNetwork_TO(smth) NS_IMETHOD SetNATNetwork (const PRUnichar * aNATNetwork) { return smth SetNATNetwork (aNATNetwork); }
#define COM_FORWARD_INetworkAdapter_SETTER_NATNetwork_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_NATNetwork_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_NATNetwork_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_NATNetwork_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_GenericDriver_TO(smth) NS_IMETHOD GetGenericDriver (PRUnichar * * aGenericDriver) { return smth GetGenericDriver (aGenericDriver); }
#define COM_FORWARD_INetworkAdapter_GETTER_GenericDriver_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_GenericDriver_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_GenericDriver_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_GenericDriver_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_GenericDriver_TO(smth) NS_IMETHOD SetGenericDriver (const PRUnichar * aGenericDriver) { return smth SetGenericDriver (aGenericDriver); }
#define COM_FORWARD_INetworkAdapter_SETTER_GenericDriver_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_GenericDriver_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_GenericDriver_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_GenericDriver_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_CableConnected_TO(smth) NS_IMETHOD GetCableConnected (PRBool * aCableConnected) { return smth GetCableConnected (aCableConnected); }
#define COM_FORWARD_INetworkAdapter_GETTER_CableConnected_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_CableConnected_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_CableConnected_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_CableConnected_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_CableConnected_TO(smth) NS_IMETHOD SetCableConnected (PRBool aCableConnected) { return smth SetCableConnected (aCableConnected); }
#define COM_FORWARD_INetworkAdapter_SETTER_CableConnected_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_CableConnected_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_CableConnected_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_CableConnected_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_LineSpeed_TO(smth) NS_IMETHOD GetLineSpeed (PRUint32 * aLineSpeed) { return smth GetLineSpeed (aLineSpeed); }
#define COM_FORWARD_INetworkAdapter_GETTER_LineSpeed_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_LineSpeed_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_LineSpeed_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_LineSpeed_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_LineSpeed_TO(smth) NS_IMETHOD SetLineSpeed (PRUint32 aLineSpeed) { return smth SetLineSpeed (aLineSpeed); }
#define COM_FORWARD_INetworkAdapter_SETTER_LineSpeed_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_LineSpeed_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_LineSpeed_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_LineSpeed_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_PromiscModePolicy_TO(smth) NS_IMETHOD GetPromiscModePolicy (PRUint32 * aPromiscModePolicy) { return smth GetPromiscModePolicy (aPromiscModePolicy); }
#define COM_FORWARD_INetworkAdapter_GETTER_PromiscModePolicy_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_PromiscModePolicy_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_PromiscModePolicy_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_PromiscModePolicy_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_PromiscModePolicy_TO(smth) NS_IMETHOD SetPromiscModePolicy (PRUint32 aPromiscModePolicy) { return smth SetPromiscModePolicy (aPromiscModePolicy); }
#define COM_FORWARD_INetworkAdapter_SETTER_PromiscModePolicy_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_PromiscModePolicy_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_PromiscModePolicy_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_PromiscModePolicy_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_TraceEnabled_TO(smth) NS_IMETHOD GetTraceEnabled (PRBool * aTraceEnabled) { return smth GetTraceEnabled (aTraceEnabled); }
#define COM_FORWARD_INetworkAdapter_GETTER_TraceEnabled_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_TraceEnabled_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_TraceEnabled_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_TraceEnabled_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_TraceEnabled_TO(smth) NS_IMETHOD SetTraceEnabled (PRBool aTraceEnabled) { return smth SetTraceEnabled (aTraceEnabled); }
#define COM_FORWARD_INetworkAdapter_SETTER_TraceEnabled_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_TraceEnabled_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_TraceEnabled_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_TraceEnabled_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_TraceFile_TO(smth) NS_IMETHOD GetTraceFile (PRUnichar * * aTraceFile) { return smth GetTraceFile (aTraceFile); }
#define COM_FORWARD_INetworkAdapter_GETTER_TraceFile_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_TraceFile_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_TraceFile_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_TraceFile_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_TraceFile_TO(smth) NS_IMETHOD SetTraceFile (const PRUnichar * aTraceFile) { return smth SetTraceFile (aTraceFile); }
#define COM_FORWARD_INetworkAdapter_SETTER_TraceFile_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_TraceFile_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_TraceFile_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_TraceFile_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_NATEngine_TO(smth) NS_IMETHOD GetNATEngine (INATEngine * * aNATEngine) { return smth GetNATEngine (aNATEngine); }
#define COM_FORWARD_INetworkAdapter_GETTER_NATEngine_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_NATEngine_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_NATEngine_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_NATEngine_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_BootPriority_TO(smth) NS_IMETHOD GetBootPriority (PRUint32 * aBootPriority) { return smth GetBootPriority (aBootPriority); }
#define COM_FORWARD_INetworkAdapter_GETTER_BootPriority_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_BootPriority_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_BootPriority_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_BootPriority_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_BootPriority_TO(smth) NS_IMETHOD SetBootPriority (PRUint32 aBootPriority) { return smth SetBootPriority (aBootPriority); }
#define COM_FORWARD_INetworkAdapter_SETTER_BootPriority_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_BootPriority_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_BootPriority_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_BootPriority_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_BandwidthGroup_TO(smth) NS_IMETHOD GetBandwidthGroup (IBandwidthGroup * * aBandwidthGroup) { return smth GetBandwidthGroup (aBandwidthGroup); }
#define COM_FORWARD_INetworkAdapter_GETTER_BandwidthGroup_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_BandwidthGroup_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_BandwidthGroup_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_BandwidthGroup_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_BandwidthGroup_TO(smth) NS_IMETHOD SetBandwidthGroup (IBandwidthGroup * aBandwidthGroup) { return smth SetBandwidthGroup (aBandwidthGroup); }
#define COM_FORWARD_INetworkAdapter_SETTER_BandwidthGroup_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_BandwidthGroup_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_BandwidthGroup_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_BandwidthGroup_TO (base::)
#define COM_FORWARD_INetworkAdapter_GetProperty_TO(smth) NS_IMETHOD GetProperty (PRUnichar * aKey, PRUnichar * * aValue) { return smth GetProperty (aKey, aValue); }
#define COM_FORWARD_INetworkAdapter_GetProperty_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GetProperty_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GetProperty_TO_BASE(base) COM_FORWARD_INetworkAdapter_GetProperty_TO (base::)
#define COM_FORWARD_INetworkAdapter_SetProperty_TO(smth) NS_IMETHOD SetProperty (PRUnichar * aKey, PRUnichar * aValue) { return smth SetProperty (aKey, aValue); }
#define COM_FORWARD_INetworkAdapter_SetProperty_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SetProperty_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SetProperty_TO_BASE(base) COM_FORWARD_INetworkAdapter_SetProperty_TO (base::)
#define COM_FORWARD_INetworkAdapter_GetProperties_TO(smth) NS_IMETHOD GetProperties (PRUnichar * aNames, PRUint32 * aReturnNamesSize, PRUnichar * * * aReturnNames, PRUint32 * aReturnValuesSize, PRUnichar * * * aReturnValues) { return smth GetProperties (aNames, aReturnNamesSize+++, aReturnNames, aReturnValuesSize, aReturnValues); }
#define COM_FORWARD_INetworkAdapter_GetProperties_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GetProperties_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GetProperties_TO_BASE(base) COM_FORWARD_INetworkAdapter_GetProperties_TO (base::)
#define COM_FORWARD_INetworkAdapter_TO(smth) NS_FORWARD_INETWORKADAPTER (smth)
#define COM_FORWARD_INetworkAdapter_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_TO_BASE(base) COM_FORWARD_INetworkAdapter_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_INetworkAdapter;

/* starting interface:    ISerialPort */
#define ISERIALPORT_IID_STR "937f6970-5103-4745-b78e-d28dcf1479a8"

#define ISERIALPORT_IID \
  {0x937f6970, 0x5103, 0x4745, \
    { 0xb7, 0x8e, 0xd2, 0x8d, 0xcf, 0x14, 0x79, 0xa8 }}

class NS_NO_VTABLE ISerialPort : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISERIALPORT_IID)

  /* readonly attribute unsigned long slot; */
  NS_IMETHOD GetSlot(PRUint32 *aSlot) = 0;

  /* attribute boolean enabled; */
  NS_IMETHOD GetEnabled(PRBool *aEnabled) = 0;
  NS_IMETHOD SetEnabled(PRBool aEnabled) = 0;

  /* attribute unsigned long IOBase; */
  NS_IMETHOD GetIOBase(PRUint32 *aIOBase) = 0;
  NS_IMETHOD SetIOBase(PRUint32 aIOBase) = 0;

  /* attribute unsigned long IRQ; */
  NS_IMETHOD GetIRQ(PRUint32 *aIRQ) = 0;
  NS_IMETHOD SetIRQ(PRUint32 aIRQ) = 0;

  /* attribute PRUint32 hostMode; */
  NS_IMETHOD GetHostMode(PRUint32 *aHostMode) = 0;
  NS_IMETHOD SetHostMode(PRUint32 aHostMode) = 0;

  /* attribute boolean server; */
  NS_IMETHOD GetServer(PRBool *aServer) = 0;
  NS_IMETHOD SetServer(PRBool aServer) = 0;

  /* attribute wstring path; */
  NS_IMETHOD GetPath(PRUnichar * *aPath) = 0;
  NS_IMETHOD SetPath(const PRUnichar * aPath) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISERIALPORT \
  NS_IMETHOD GetSlot(PRUint32 *aSlot); \
  NS_IMETHOD GetEnabled(PRBool *aEnabled); \
  NS_IMETHOD SetEnabled(PRBool aEnabled); \
  NS_IMETHOD GetIOBase(PRUint32 *aIOBase); \
  NS_IMETHOD SetIOBase(PRUint32 aIOBase); \
  NS_IMETHOD GetIRQ(PRUint32 *aIRQ); \
  NS_IMETHOD SetIRQ(PRUint32 aIRQ); \
  NS_IMETHOD GetHostMode(PRUint32 *aHostMode); \
  NS_IMETHOD SetHostMode(PRUint32 aHostMode); \
  NS_IMETHOD GetServer(PRBool *aServer); \
  NS_IMETHOD SetServer(PRBool aServer); \
  NS_IMETHOD GetPath(PRUnichar * *aPath); \
  NS_IMETHOD SetPath(const PRUnichar * aPath); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISERIALPORT(_to) \
  NS_IMETHOD GetSlot(PRUint32 *aSlot) { return _to GetSlot(aSlot); } \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return _to GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return _to SetEnabled(aEnabled); } \
  NS_IMETHOD GetIOBase(PRUint32 *aIOBase) { return _to GetIOBase(aIOBase); } \
  NS_IMETHOD SetIOBase(PRUint32 aIOBase) { return _to SetIOBase(aIOBase); } \
  NS_IMETHOD GetIRQ(PRUint32 *aIRQ) { return _to GetIRQ(aIRQ); } \
  NS_IMETHOD SetIRQ(PRUint32 aIRQ) { return _to SetIRQ(aIRQ); } \
  NS_IMETHOD GetHostMode(PRUint32 *aHostMode) { return _to GetHostMode(aHostMode); } \
  NS_IMETHOD SetHostMode(PRUint32 aHostMode) { return _to SetHostMode(aHostMode); } \
  NS_IMETHOD GetServer(PRBool *aServer) { return _to GetServer(aServer); } \
  NS_IMETHOD SetServer(PRBool aServer) { return _to SetServer(aServer); } \
  NS_IMETHOD GetPath(PRUnichar * *aPath) { return _to GetPath(aPath); } \
  NS_IMETHOD SetPath(const PRUnichar * aPath) { return _to SetPath(aPath); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISERIALPORT(_to) \
  NS_IMETHOD GetSlot(PRUint32 *aSlot) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSlot(aSlot); } \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEnabled(aEnabled); } \
  NS_IMETHOD GetIOBase(PRUint32 *aIOBase) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIOBase(aIOBase); } \
  NS_IMETHOD SetIOBase(PRUint32 aIOBase) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIOBase(aIOBase); } \
  NS_IMETHOD GetIRQ(PRUint32 *aIRQ) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIRQ(aIRQ); } \
  NS_IMETHOD SetIRQ(PRUint32 aIRQ) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIRQ(aIRQ); } \
  NS_IMETHOD GetHostMode(PRUint32 *aHostMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHostMode(aHostMode); } \
  NS_IMETHOD SetHostMode(PRUint32 aHostMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHostMode(aHostMode); } \
  NS_IMETHOD GetServer(PRBool *aServer) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetServer(aServer); } \
  NS_IMETHOD SetServer(PRBool aServer) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetServer(aServer); } \
  NS_IMETHOD GetPath(PRUnichar * *aPath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPath(aPath); } \
  NS_IMETHOD SetPath(const PRUnichar * aPath) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPath(aPath); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ISerialPort
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISERIALPORT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ISerialPort)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute unsigned long slot; */
NS_IMETHODIMP _MYCLASS_::GetSlot(PRUint32 *aSlot)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean enabled; */
NS_IMETHODIMP _MYCLASS_::GetEnabled(PRBool *aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetEnabled(PRBool aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long IOBase; */
NS_IMETHODIMP _MYCLASS_::GetIOBase(PRUint32 *aIOBase)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIOBase(PRUint32 aIOBase)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long IRQ; */
NS_IMETHODIMP _MYCLASS_::GetIRQ(PRUint32 *aIRQ)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIRQ(PRUint32 aIRQ)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 hostMode; */
NS_IMETHODIMP _MYCLASS_::GetHostMode(PRUint32 *aHostMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetHostMode(PRUint32 aHostMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean server; */
NS_IMETHODIMP _MYCLASS_::GetServer(PRBool *aServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetServer(PRBool aServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring path; */
NS_IMETHODIMP _MYCLASS_::GetPath(PRUnichar * *aPath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPath(const PRUnichar * aPath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_ISerialPort_GETTER_Slot_TO(smth) NS_IMETHOD GetSlot (PRUint32 * aSlot) { return smth GetSlot (aSlot); }
#define COM_FORWARD_ISerialPort_GETTER_Slot_TO_OBJ(obj) COM_FORWARD_ISerialPort_GETTER_Slot_TO ((obj)->)
#define COM_FORWARD_ISerialPort_GETTER_Slot_TO_BASE(base) COM_FORWARD_ISerialPort_GETTER_Slot_TO (base::)
#define COM_FORWARD_ISerialPort_GETTER_Enabled_TO(smth) NS_IMETHOD GetEnabled (PRBool * aEnabled) { return smth GetEnabled (aEnabled); }
#define COM_FORWARD_ISerialPort_GETTER_Enabled_TO_OBJ(obj) COM_FORWARD_ISerialPort_GETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_ISerialPort_GETTER_Enabled_TO_BASE(base) COM_FORWARD_ISerialPort_GETTER_Enabled_TO (base::)
#define COM_FORWARD_ISerialPort_SETTER_Enabled_TO(smth) NS_IMETHOD SetEnabled (PRBool aEnabled) { return smth SetEnabled (aEnabled); }
#define COM_FORWARD_ISerialPort_SETTER_Enabled_TO_OBJ(obj) COM_FORWARD_ISerialPort_SETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_ISerialPort_SETTER_Enabled_TO_BASE(base) COM_FORWARD_ISerialPort_SETTER_Enabled_TO (base::)
#define COM_FORWARD_ISerialPort_GETTER_IOBase_TO(smth) NS_IMETHOD GetIOBase (PRUint32 * aIOBase) { return smth GetIOBase (aIOBase); }
#define COM_FORWARD_ISerialPort_GETTER_IOBase_TO_OBJ(obj) COM_FORWARD_ISerialPort_GETTER_IOBase_TO ((obj)->)
#define COM_FORWARD_ISerialPort_GETTER_IOBase_TO_BASE(base) COM_FORWARD_ISerialPort_GETTER_IOBase_TO (base::)
#define COM_FORWARD_ISerialPort_SETTER_IOBase_TO(smth) NS_IMETHOD SetIOBase (PRUint32 aIOBase) { return smth SetIOBase (aIOBase); }
#define COM_FORWARD_ISerialPort_SETTER_IOBase_TO_OBJ(obj) COM_FORWARD_ISerialPort_SETTER_IOBase_TO ((obj)->)
#define COM_FORWARD_ISerialPort_SETTER_IOBase_TO_BASE(base) COM_FORWARD_ISerialPort_SETTER_IOBase_TO (base::)
#define COM_FORWARD_ISerialPort_GETTER_IRQ_TO(smth) NS_IMETHOD GetIRQ (PRUint32 * aIRQ) { return smth GetIRQ (aIRQ); }
#define COM_FORWARD_ISerialPort_GETTER_IRQ_TO_OBJ(obj) COM_FORWARD_ISerialPort_GETTER_IRQ_TO ((obj)->)
#define COM_FORWARD_ISerialPort_GETTER_IRQ_TO_BASE(base) COM_FORWARD_ISerialPort_GETTER_IRQ_TO (base::)
#define COM_FORWARD_ISerialPort_SETTER_IRQ_TO(smth) NS_IMETHOD SetIRQ (PRUint32 aIRQ) { return smth SetIRQ (aIRQ); }
#define COM_FORWARD_ISerialPort_SETTER_IRQ_TO_OBJ(obj) COM_FORWARD_ISerialPort_SETTER_IRQ_TO ((obj)->)
#define COM_FORWARD_ISerialPort_SETTER_IRQ_TO_BASE(base) COM_FORWARD_ISerialPort_SETTER_IRQ_TO (base::)
#define COM_FORWARD_ISerialPort_GETTER_HostMode_TO(smth) NS_IMETHOD GetHostMode (PRUint32 * aHostMode) { return smth GetHostMode (aHostMode); }
#define COM_FORWARD_ISerialPort_GETTER_HostMode_TO_OBJ(obj) COM_FORWARD_ISerialPort_GETTER_HostMode_TO ((obj)->)
#define COM_FORWARD_ISerialPort_GETTER_HostMode_TO_BASE(base) COM_FORWARD_ISerialPort_GETTER_HostMode_TO (base::)
#define COM_FORWARD_ISerialPort_SETTER_HostMode_TO(smth) NS_IMETHOD SetHostMode (PRUint32 aHostMode) { return smth SetHostMode (aHostMode); }
#define COM_FORWARD_ISerialPort_SETTER_HostMode_TO_OBJ(obj) COM_FORWARD_ISerialPort_SETTER_HostMode_TO ((obj)->)
#define COM_FORWARD_ISerialPort_SETTER_HostMode_TO_BASE(base) COM_FORWARD_ISerialPort_SETTER_HostMode_TO (base::)
#define COM_FORWARD_ISerialPort_GETTER_Server_TO(smth) NS_IMETHOD GetServer (PRBool * aServer) { return smth GetServer (aServer); }
#define COM_FORWARD_ISerialPort_GETTER_Server_TO_OBJ(obj) COM_FORWARD_ISerialPort_GETTER_Server_TO ((obj)->)
#define COM_FORWARD_ISerialPort_GETTER_Server_TO_BASE(base) COM_FORWARD_ISerialPort_GETTER_Server_TO (base::)
#define COM_FORWARD_ISerialPort_SETTER_Server_TO(smth) NS_IMETHOD SetServer (PRBool aServer) { return smth SetServer (aServer); }
#define COM_FORWARD_ISerialPort_SETTER_Server_TO_OBJ(obj) COM_FORWARD_ISerialPort_SETTER_Server_TO ((obj)->)
#define COM_FORWARD_ISerialPort_SETTER_Server_TO_BASE(base) COM_FORWARD_ISerialPort_SETTER_Server_TO (base::)
#define COM_FORWARD_ISerialPort_GETTER_Path_TO(smth) NS_IMETHOD GetPath (PRUnichar * * aPath) { return smth GetPath (aPath); }
#define COM_FORWARD_ISerialPort_GETTER_Path_TO_OBJ(obj) COM_FORWARD_ISerialPort_GETTER_Path_TO ((obj)->)
#define COM_FORWARD_ISerialPort_GETTER_Path_TO_BASE(base) COM_FORWARD_ISerialPort_GETTER_Path_TO (base::)
#define COM_FORWARD_ISerialPort_SETTER_Path_TO(smth) NS_IMETHOD SetPath (const PRUnichar * aPath) { return smth SetPath (aPath); }
#define COM_FORWARD_ISerialPort_SETTER_Path_TO_OBJ(obj) COM_FORWARD_ISerialPort_SETTER_Path_TO ((obj)->)
#define COM_FORWARD_ISerialPort_SETTER_Path_TO_BASE(base) COM_FORWARD_ISerialPort_SETTER_Path_TO (base::)
#define COM_FORWARD_ISerialPort_TO(smth) NS_FORWARD_ISERIALPORT (smth)
#define COM_FORWARD_ISerialPort_TO_OBJ(obj) COM_FORWARD_ISerialPort_TO ((obj)->)
#define COM_FORWARD_ISerialPort_TO_BASE(base) COM_FORWARD_ISerialPort_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_ISerialPort;

/* starting interface:    IParallelPort */
#define IPARALLELPORT_IID_STR "0c925f06-dd10-4b77-8de8-294d738c3214"

#define IPARALLELPORT_IID \
  {0x0c925f06, 0xdd10, 0x4b77, \
    { 0x8d, 0xe8, 0x29, 0x4d, 0x73, 0x8c, 0x32, 0x14 }}

class NS_NO_VTABLE IParallelPort : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IPARALLELPORT_IID)

  /* readonly attribute unsigned long slot; */
  NS_IMETHOD GetSlot(PRUint32 *aSlot) = 0;

  /* attribute boolean enabled; */
  NS_IMETHOD GetEnabled(PRBool *aEnabled) = 0;
  NS_IMETHOD SetEnabled(PRBool aEnabled) = 0;

  /* attribute unsigned long IOBase; */
  NS_IMETHOD GetIOBase(PRUint32 *aIOBase) = 0;
  NS_IMETHOD SetIOBase(PRUint32 aIOBase) = 0;

  /* attribute unsigned long IRQ; */
  NS_IMETHOD GetIRQ(PRUint32 *aIRQ) = 0;
  NS_IMETHOD SetIRQ(PRUint32 aIRQ) = 0;

  /* attribute wstring path; */
  NS_IMETHOD GetPath(PRUnichar * *aPath) = 0;
  NS_IMETHOD SetPath(const PRUnichar * aPath) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IPARALLELPORT \
  NS_IMETHOD GetSlot(PRUint32 *aSlot); \
  NS_IMETHOD GetEnabled(PRBool *aEnabled); \
  NS_IMETHOD SetEnabled(PRBool aEnabled); \
  NS_IMETHOD GetIOBase(PRUint32 *aIOBase); \
  NS_IMETHOD SetIOBase(PRUint32 aIOBase); \
  NS_IMETHOD GetIRQ(PRUint32 *aIRQ); \
  NS_IMETHOD SetIRQ(PRUint32 aIRQ); \
  NS_IMETHOD GetPath(PRUnichar * *aPath); \
  NS_IMETHOD SetPath(const PRUnichar * aPath); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IPARALLELPORT(_to) \
  NS_IMETHOD GetSlot(PRUint32 *aSlot) { return _to GetSlot(aSlot); } \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return _to GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return _to SetEnabled(aEnabled); } \
  NS_IMETHOD GetIOBase(PRUint32 *aIOBase) { return _to GetIOBase(aIOBase); } \
  NS_IMETHOD SetIOBase(PRUint32 aIOBase) { return _to SetIOBase(aIOBase); } \
  NS_IMETHOD GetIRQ(PRUint32 *aIRQ) { return _to GetIRQ(aIRQ); } \
  NS_IMETHOD SetIRQ(PRUint32 aIRQ) { return _to SetIRQ(aIRQ); } \
  NS_IMETHOD GetPath(PRUnichar * *aPath) { return _to GetPath(aPath); } \
  NS_IMETHOD SetPath(const PRUnichar * aPath) { return _to SetPath(aPath); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IPARALLELPORT(_to) \
  NS_IMETHOD GetSlot(PRUint32 *aSlot) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSlot(aSlot); } \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEnabled(aEnabled); } \
  NS_IMETHOD GetIOBase(PRUint32 *aIOBase) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIOBase(aIOBase); } \
  NS_IMETHOD SetIOBase(PRUint32 aIOBase) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIOBase(aIOBase); } \
  NS_IMETHOD GetIRQ(PRUint32 *aIRQ) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIRQ(aIRQ); } \
  NS_IMETHOD SetIRQ(PRUint32 aIRQ) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIRQ(aIRQ); } \
  NS_IMETHOD GetPath(PRUnichar * *aPath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPath(aPath); } \
  NS_IMETHOD SetPath(const PRUnichar * aPath) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPath(aPath); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IParallelPort
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IPARALLELPORT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IParallelPort)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute unsigned long slot; */
NS_IMETHODIMP _MYCLASS_::GetSlot(PRUint32 *aSlot)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean enabled; */
NS_IMETHODIMP _MYCLASS_::GetEnabled(PRBool *aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetEnabled(PRBool aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long IOBase; */
NS_IMETHODIMP _MYCLASS_::GetIOBase(PRUint32 *aIOBase)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIOBase(PRUint32 aIOBase)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long IRQ; */
NS_IMETHODIMP _MYCLASS_::GetIRQ(PRUint32 *aIRQ)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIRQ(PRUint32 aIRQ)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring path; */
NS_IMETHODIMP _MYCLASS_::GetPath(PRUnichar * *aPath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPath(const PRUnichar * aPath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IParallelPort_GETTER_Slot_TO(smth) NS_IMETHOD GetSlot (PRUint32 * aSlot) { return smth GetSlot (aSlot); }
#define COM_FORWARD_IParallelPort_GETTER_Slot_TO_OBJ(obj) COM_FORWARD_IParallelPort_GETTER_Slot_TO ((obj)->)
#define COM_FORWARD_IParallelPort_GETTER_Slot_TO_BASE(base) COM_FORWARD_IParallelPort_GETTER_Slot_TO (base::)
#define COM_FORWARD_IParallelPort_GETTER_Enabled_TO(smth) NS_IMETHOD GetEnabled (PRBool * aEnabled) { return smth GetEnabled (aEnabled); }
#define COM_FORWARD_IParallelPort_GETTER_Enabled_TO_OBJ(obj) COM_FORWARD_IParallelPort_GETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_IParallelPort_GETTER_Enabled_TO_BASE(base) COM_FORWARD_IParallelPort_GETTER_Enabled_TO (base::)
#define COM_FORWARD_IParallelPort_SETTER_Enabled_TO(smth) NS_IMETHOD SetEnabled (PRBool aEnabled) { return smth SetEnabled (aEnabled); }
#define COM_FORWARD_IParallelPort_SETTER_Enabled_TO_OBJ(obj) COM_FORWARD_IParallelPort_SETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_IParallelPort_SETTER_Enabled_TO_BASE(base) COM_FORWARD_IParallelPort_SETTER_Enabled_TO (base::)
#define COM_FORWARD_IParallelPort_GETTER_IOBase_TO(smth) NS_IMETHOD GetIOBase (PRUint32 * aIOBase) { return smth GetIOBase (aIOBase); }
#define COM_FORWARD_IParallelPort_GETTER_IOBase_TO_OBJ(obj) COM_FORWARD_IParallelPort_GETTER_IOBase_TO ((obj)->)
#define COM_FORWARD_IParallelPort_GETTER_IOBase_TO_BASE(base) COM_FORWARD_IParallelPort_GETTER_IOBase_TO (base::)
#define COM_FORWARD_IParallelPort_SETTER_IOBase_TO(smth) NS_IMETHOD SetIOBase (PRUint32 aIOBase) { return smth SetIOBase (aIOBase); }
#define COM_FORWARD_IParallelPort_SETTER_IOBase_TO_OBJ(obj) COM_FORWARD_IParallelPort_SETTER_IOBase_TO ((obj)->)
#define COM_FORWARD_IParallelPort_SETTER_IOBase_TO_BASE(base) COM_FORWARD_IParallelPort_SETTER_IOBase_TO (base::)
#define COM_FORWARD_IParallelPort_GETTER_IRQ_TO(smth) NS_IMETHOD GetIRQ (PRUint32 * aIRQ) { return smth GetIRQ (aIRQ); }
#define COM_FORWARD_IParallelPort_GETTER_IRQ_TO_OBJ(obj) COM_FORWARD_IParallelPort_GETTER_IRQ_TO ((obj)->)
#define COM_FORWARD_IParallelPort_GETTER_IRQ_TO_BASE(base) COM_FORWARD_IParallelPort_GETTER_IRQ_TO (base::)
#define COM_FORWARD_IParallelPort_SETTER_IRQ_TO(smth) NS_IMETHOD SetIRQ (PRUint32 aIRQ) { return smth SetIRQ (aIRQ); }
#define COM_FORWARD_IParallelPort_SETTER_IRQ_TO_OBJ(obj) COM_FORWARD_IParallelPort_SETTER_IRQ_TO ((obj)->)
#define COM_FORWARD_IParallelPort_SETTER_IRQ_TO_BASE(base) COM_FORWARD_IParallelPort_SETTER_IRQ_TO (base::)
#define COM_FORWARD_IParallelPort_GETTER_Path_TO(smth) NS_IMETHOD GetPath (PRUnichar * * aPath) { return smth GetPath (aPath); }
#define COM_FORWARD_IParallelPort_GETTER_Path_TO_OBJ(obj) COM_FORWARD_IParallelPort_GETTER_Path_TO ((obj)->)
#define COM_FORWARD_IParallelPort_GETTER_Path_TO_BASE(base) COM_FORWARD_IParallelPort_GETTER_Path_TO (base::)
#define COM_FORWARD_IParallelPort_SETTER_Path_TO(smth) NS_IMETHOD SetPath (const PRUnichar * aPath) { return smth SetPath (aPath); }
#define COM_FORWARD_IParallelPort_SETTER_Path_TO_OBJ(obj) COM_FORWARD_IParallelPort_SETTER_Path_TO ((obj)->)
#define COM_FORWARD_IParallelPort_SETTER_Path_TO_BASE(base) COM_FORWARD_IParallelPort_SETTER_Path_TO (base::)
#define COM_FORWARD_IParallelPort_TO(smth) NS_FORWARD_IPARALLELPORT (smth)
#define COM_FORWARD_IParallelPort_TO_OBJ(obj) COM_FORWARD_IParallelPort_TO ((obj)->)
#define COM_FORWARD_IParallelPort_TO_BASE(base) COM_FORWARD_IParallelPort_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IParallelPort;

/* starting interface:    IMachineDebugger */
#define IMACHINEDEBUGGER_IID_STR "5e4534dc-21b8-4f6b-8a08-eef50e1a0aa1"

#define IMACHINEDEBUGGER_IID \
  {0x5e4534dc, 0x21b8, 0x4f6b, \
    { 0x8a, 0x08, 0xee, 0xf5, 0x0e, 0x1a, 0x0a, 0xa1 }}

class NS_NO_VTABLE IMachineDebugger : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMACHINEDEBUGGER_IID)

  /* attribute boolean singleStep; */
  NS_IMETHOD GetSingleStep(PRBool *aSingleStep) = 0;
  NS_IMETHOD SetSingleStep(PRBool aSingleStep) = 0;

  /* attribute boolean recompileUser; */
  NS_IMETHOD GetRecompileUser(PRBool *aRecompileUser) = 0;
  NS_IMETHOD SetRecompileUser(PRBool aRecompileUser) = 0;

  /* attribute boolean recompileSupervisor; */
  NS_IMETHOD GetRecompileSupervisor(PRBool *aRecompileSupervisor) = 0;
  NS_IMETHOD SetRecompileSupervisor(PRBool aRecompileSupervisor) = 0;

  /* attribute boolean executeAllInIEM; */
  NS_IMETHOD GetExecuteAllInIEM(PRBool *aExecuteAllInIEM) = 0;
  NS_IMETHOD SetExecuteAllInIEM(PRBool aExecuteAllInIEM) = 0;

  /* attribute boolean PATMEnabled; */
  NS_IMETHOD GetPATMEnabled(PRBool *aPATMEnabled) = 0;
  NS_IMETHOD SetPATMEnabled(PRBool aPATMEnabled) = 0;

  /* attribute boolean CSAMEnabled; */
  NS_IMETHOD GetCSAMEnabled(PRBool *aCSAMEnabled) = 0;
  NS_IMETHOD SetCSAMEnabled(PRBool aCSAMEnabled) = 0;

  /* attribute boolean logEnabled; */
  NS_IMETHOD GetLogEnabled(PRBool *aLogEnabled) = 0;
  NS_IMETHOD SetLogEnabled(PRBool aLogEnabled) = 0;

  /* readonly attribute wstring logDbgFlags; */
  NS_IMETHOD GetLogDbgFlags(PRUnichar * *aLogDbgFlags) = 0;

  /* readonly attribute wstring logDbgGroups; */
  NS_IMETHOD GetLogDbgGroups(PRUnichar * *aLogDbgGroups) = 0;

  /* readonly attribute wstring logDbgDestinations; */
  NS_IMETHOD GetLogDbgDestinations(PRUnichar * *aLogDbgDestinations) = 0;

  /* readonly attribute wstring logRelFlags; */
  NS_IMETHOD GetLogRelFlags(PRUnichar * *aLogRelFlags) = 0;

  /* readonly attribute wstring logRelGroups; */
  NS_IMETHOD GetLogRelGroups(PRUnichar * *aLogRelGroups) = 0;

  /* readonly attribute wstring logRelDestinations; */
  NS_IMETHOD GetLogRelDestinations(PRUnichar * *aLogRelDestinations) = 0;

  /* readonly attribute boolean HWVirtExEnabled; */
  NS_IMETHOD GetHWVirtExEnabled(PRBool *aHWVirtExEnabled) = 0;

  /* readonly attribute boolean HWVirtExNestedPagingEnabled; */
  NS_IMETHOD GetHWVirtExNestedPagingEnabled(PRBool *aHWVirtExNestedPagingEnabled) = 0;

  /* readonly attribute boolean HWVirtExVPIDEnabled; */
  NS_IMETHOD GetHWVirtExVPIDEnabled(PRBool *aHWVirtExVPIDEnabled) = 0;

  /* readonly attribute boolean HWVirtExUXEnabled; */
  NS_IMETHOD GetHWVirtExUXEnabled(PRBool *aHWVirtExUXEnabled) = 0;

  /* readonly attribute wstring OSName; */
  NS_IMETHOD GetOSName(PRUnichar * *aOSName) = 0;

  /* readonly attribute wstring OSVersion; */
  NS_IMETHOD GetOSVersion(PRUnichar * *aOSVersion) = 0;

  /* readonly attribute boolean PAEEnabled; */
  NS_IMETHOD GetPAEEnabled(PRBool *aPAEEnabled) = 0;

  /* attribute unsigned long virtualTimeRate; */
  NS_IMETHOD GetVirtualTimeRate(PRUint32 *aVirtualTimeRate) = 0;
  NS_IMETHOD SetVirtualTimeRate(PRUint32 aVirtualTimeRate) = 0;

  /* readonly attribute long long VM; */
  NS_IMETHOD GetVM(PRInt64 *aVM) = 0;

  /* void dumpGuestCore (in wstring filename, in wstring compression); */
  NS_IMETHOD DumpGuestCore(const PRUnichar *filename, const PRUnichar *compression) = 0;

  /* void dumpHostProcessCore (in wstring filename, in wstring compression); */
  NS_IMETHOD DumpHostProcessCore(const PRUnichar *filename, const PRUnichar *compression) = 0;

  /* void info (in wstring name, in wstring args, [retval] out wstring info); */
  NS_IMETHOD Info(const PRUnichar *name, const PRUnichar *args, PRUnichar **info) = 0;

  /* void injectNMI (); */
  NS_IMETHOD InjectNMI(void) = 0;

  /* void modifyLogGroups (in wstring settings); */
  NS_IMETHOD ModifyLogGroups(const PRUnichar *settings) = 0;

  /* void modifyLogFlags (in wstring settings); */
  NS_IMETHOD ModifyLogFlags(const PRUnichar *settings) = 0;

  /* void modifyLogDestinations (in wstring settings); */
  NS_IMETHOD ModifyLogDestinations(const PRUnichar *settings) = 0;

  /* void readPhysicalMemory (in long long address, in unsigned long size, out unsigned long bytesSize, [array, size_is (bytesSize), retval] out octet bytes); */
  NS_IMETHOD ReadPhysicalMemory(PRInt64 address, PRUint32 size, PRUint32 *bytesSize, PRUint8 **bytes) = 0;

  /* void writePhysicalMemory (in long long address, in unsigned long size, in unsigned long bytesSize, [array, size_is (bytesSize)] in octet bytes); */
  NS_IMETHOD WritePhysicalMemory(PRInt64 address, PRUint32 size, PRUint32 bytesSize, PRUint8 *bytes) = 0;

  /* void readVirtualMemory (in unsigned long cpuId, in long long address, in unsigned long size, out unsigned long bytesSize, [array, size_is (bytesSize), retval] out octet bytes); */
  NS_IMETHOD ReadVirtualMemory(PRUint32 cpuId, PRInt64 address, PRUint32 size, PRUint32 *bytesSize, PRUint8 **bytes) = 0;

  /* void writeVirtualMemory (in unsigned long cpuId, in long long address, in unsigned long size, in unsigned long bytesSize, [array, size_is (bytesSize)] in octet bytes); */
  NS_IMETHOD WriteVirtualMemory(PRUint32 cpuId, PRInt64 address, PRUint32 size, PRUint32 bytesSize, PRUint8 *bytes) = 0;

  /* void detectOS ([retval] out wstring os); */
  NS_IMETHOD DetectOS(PRUnichar **os) = 0;

  /* void getRegister (in unsigned long cpuId, in wstring name, [retval] out wstring value); */
  NS_IMETHOD GetRegister(PRUint32 cpuId, const PRUnichar *name, PRUnichar **value) = 0;

  /* void getRegisters (in unsigned long cpuId, out unsigned long namesSize, [array, size_is (namesSize)] out wstring names, out unsigned long valuesSize, [array, size_is (valuesSize)] out wstring values); */
  NS_IMETHOD GetRegisters(PRUint32 cpuId, PRUint32 *namesSize, PRUnichar ***names, PRUint32 *valuesSize, PRUnichar ***values) = 0;

  /* void setRegister (in unsigned long cpuId, in wstring name, in wstring value); */
  NS_IMETHOD SetRegister(PRUint32 cpuId, const PRUnichar *name, const PRUnichar *value) = 0;

  /* void setRegisters (in unsigned long cpuId, in unsigned long namesSize, [array, size_is (namesSize)] in wstring names, in unsigned long valuesSize, [array, size_is (valuesSize)] in wstring values); */
  NS_IMETHOD SetRegisters(PRUint32 cpuId, PRUint32 namesSize, const PRUnichar **names, PRUint32 valuesSize, const PRUnichar **values) = 0;

  /* void dumpGuestStack (in unsigned long cpuId, [retval] out wstring stack); */
  NS_IMETHOD DumpGuestStack(PRUint32 cpuId, PRUnichar **stack) = 0;

  /* void resetStats (in wstring pattern); */
  NS_IMETHOD ResetStats(const PRUnichar *pattern) = 0;

  /* void dumpStats (in wstring pattern); */
  NS_IMETHOD DumpStats(const PRUnichar *pattern) = 0;

  /* void getStats (in wstring pattern, in boolean withDescriptions, [retval] out wstring stats); */
  NS_IMETHOD GetStats(const PRUnichar *pattern, PRBool withDescriptions, PRUnichar **stats) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMACHINEDEBUGGER \
  NS_IMETHOD GetSingleStep(PRBool *aSingleStep); \
  NS_IMETHOD SetSingleStep(PRBool aSingleStep); \
  NS_IMETHOD GetRecompileUser(PRBool *aRecompileUser); \
  NS_IMETHOD SetRecompileUser(PRBool aRecompileUser); \
  NS_IMETHOD GetRecompileSupervisor(PRBool *aRecompileSupervisor); \
  NS_IMETHOD SetRecompileSupervisor(PRBool aRecompileSupervisor); \
  NS_IMETHOD GetExecuteAllInIEM(PRBool *aExecuteAllInIEM); \
  NS_IMETHOD SetExecuteAllInIEM(PRBool aExecuteAllInIEM); \
  NS_IMETHOD GetPATMEnabled(PRBool *aPATMEnabled); \
  NS_IMETHOD SetPATMEnabled(PRBool aPATMEnabled); \
  NS_IMETHOD GetCSAMEnabled(PRBool *aCSAMEnabled); \
  NS_IMETHOD SetCSAMEnabled(PRBool aCSAMEnabled); \
  NS_IMETHOD GetLogEnabled(PRBool *aLogEnabled); \
  NS_IMETHOD SetLogEnabled(PRBool aLogEnabled); \
  NS_IMETHOD GetLogDbgFlags(PRUnichar * *aLogDbgFlags); \
  NS_IMETHOD GetLogDbgGroups(PRUnichar * *aLogDbgGroups); \
  NS_IMETHOD GetLogDbgDestinations(PRUnichar * *aLogDbgDestinations); \
  NS_IMETHOD GetLogRelFlags(PRUnichar * *aLogRelFlags); \
  NS_IMETHOD GetLogRelGroups(PRUnichar * *aLogRelGroups); \
  NS_IMETHOD GetLogRelDestinations(PRUnichar * *aLogRelDestinations); \
  NS_IMETHOD GetHWVirtExEnabled(PRBool *aHWVirtExEnabled); \
  NS_IMETHOD GetHWVirtExNestedPagingEnabled(PRBool *aHWVirtExNestedPagingEnabled); \
  NS_IMETHOD GetHWVirtExVPIDEnabled(PRBool *aHWVirtExVPIDEnabled); \
  NS_IMETHOD GetHWVirtExUXEnabled(PRBool *aHWVirtExUXEnabled); \
  NS_IMETHOD GetOSName(PRUnichar * *aOSName); \
  NS_IMETHOD GetOSVersion(PRUnichar * *aOSVersion); \
  NS_IMETHOD GetPAEEnabled(PRBool *aPAEEnabled); \
  NS_IMETHOD GetVirtualTimeRate(PRUint32 *aVirtualTimeRate); \
  NS_IMETHOD SetVirtualTimeRate(PRUint32 aVirtualTimeRate); \
  NS_IMETHOD GetVM(PRInt64 *aVM); \
  NS_IMETHOD DumpGuestCore(const PRUnichar *filename, const PRUnichar *compression); \
  NS_IMETHOD DumpHostProcessCore(const PRUnichar *filename, const PRUnichar *compression); \
  NS_IMETHOD Info(const PRUnichar *name, const PRUnichar *args, PRUnichar **info); \
  NS_IMETHOD InjectNMI(void); \
  NS_IMETHOD ModifyLogGroups(const PRUnichar *settings); \
  NS_IMETHOD ModifyLogFlags(const PRUnichar *settings); \
  NS_IMETHOD ModifyLogDestinations(const PRUnichar *settings); \
  NS_IMETHOD ReadPhysicalMemory(PRInt64 address, PRUint32 size, PRUint32 *bytesSize, PRUint8 **bytes); \
  NS_IMETHOD WritePhysicalMemory(PRInt64 address, PRUint32 size, PRUint32 bytesSize, PRUint8 *bytes); \
  NS_IMETHOD ReadVirtualMemory(PRUint32 cpuId, PRInt64 address, PRUint32 size, PRUint32 *bytesSize, PRUint8 **bytes); \
  NS_IMETHOD WriteVirtualMemory(PRUint32 cpuId, PRInt64 address, PRUint32 size, PRUint32 bytesSize, PRUint8 *bytes); \
  NS_IMETHOD DetectOS(PRUnichar **os); \
  NS_IMETHOD GetRegister(PRUint32 cpuId, const PRUnichar *name, PRUnichar **value); \
  NS_IMETHOD GetRegisters(PRUint32 cpuId, PRUint32 *namesSize, PRUnichar ***names, PRUint32 *valuesSize, PRUnichar ***values); \
  NS_IMETHOD SetRegister(PRUint32 cpuId, const PRUnichar *name, const PRUnichar *value); \
  NS_IMETHOD SetRegisters(PRUint32 cpuId, PRUint32 namesSize, const PRUnichar **names, PRUint32 valuesSize, const PRUnichar **values); \
  NS_IMETHOD DumpGuestStack(PRUint32 cpuId, PRUnichar **stack); \
  NS_IMETHOD ResetStats(const PRUnichar *pattern); \
  NS_IMETHOD DumpStats(const PRUnichar *pattern); \
  NS_IMETHOD GetStats(const PRUnichar *pattern, PRBool withDescriptions, PRUnichar **stats); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMACHINEDEBUGGER(_to) \
  NS_IMETHOD GetSingleStep(PRBool *aSingleStep) { return _to GetSingleStep(aSingleStep); } \
  NS_IMETHOD SetSingleStep(PRBool aSingleStep) { return _to SetSingleStep(aSingleStep); } \
  NS_IMETHOD GetRecompileUser(PRBool *aRecompileUser) { return _to GetRecompileUser(aRecompileUser); } \
  NS_IMETHOD SetRecompileUser(PRBool aRecompileUser) { return _to SetRecompileUser(aRecompileUser); } \
  NS_IMETHOD GetRecompileSupervisor(PRBool *aRecompileSupervisor) { return _to GetRecompileSupervisor(aRecompileSupervisor); } \
  NS_IMETHOD SetRecompileSupervisor(PRBool aRecompileSupervisor) { return _to SetRecompileSupervisor(aRecompileSupervisor); } \
  NS_IMETHOD GetExecuteAllInIEM(PRBool *aExecuteAllInIEM) { return _to GetExecuteAllInIEM(aExecuteAllInIEM); } \
  NS_IMETHOD SetExecuteAllInIEM(PRBool aExecuteAllInIEM) { return _to SetExecuteAllInIEM(aExecuteAllInIEM); } \
  NS_IMETHOD GetPATMEnabled(PRBool *aPATMEnabled) { return _to GetPATMEnabled(aPATMEnabled); } \
  NS_IMETHOD SetPATMEnabled(PRBool aPATMEnabled) { return _to SetPATMEnabled(aPATMEnabled); } \
  NS_IMETHOD GetCSAMEnabled(PRBool *aCSAMEnabled) { return _to GetCSAMEnabled(aCSAMEnabled); } \
  NS_IMETHOD SetCSAMEnabled(PRBool aCSAMEnabled) { return _to SetCSAMEnabled(aCSAMEnabled); } \
  NS_IMETHOD GetLogEnabled(PRBool *aLogEnabled) { return _to GetLogEnabled(aLogEnabled); } \
  NS_IMETHOD SetLogEnabled(PRBool aLogEnabled) { return _to SetLogEnabled(aLogEnabled); } \
  NS_IMETHOD GetLogDbgFlags(PRUnichar * *aLogDbgFlags) { return _to GetLogDbgFlags(aLogDbgFlags); } \
  NS_IMETHOD GetLogDbgGroups(PRUnichar * *aLogDbgGroups) { return _to GetLogDbgGroups(aLogDbgGroups); } \
  NS_IMETHOD GetLogDbgDestinations(PRUnichar * *aLogDbgDestinations) { return _to GetLogDbgDestinations(aLogDbgDestinations); } \
  NS_IMETHOD GetLogRelFlags(PRUnichar * *aLogRelFlags) { return _to GetLogRelFlags(aLogRelFlags); } \
  NS_IMETHOD GetLogRelGroups(PRUnichar * *aLogRelGroups) { return _to GetLogRelGroups(aLogRelGroups); } \
  NS_IMETHOD GetLogRelDestinations(PRUnichar * *aLogRelDestinations) { return _to GetLogRelDestinations(aLogRelDestinations); } \
  NS_IMETHOD GetHWVirtExEnabled(PRBool *aHWVirtExEnabled) { return _to GetHWVirtExEnabled(aHWVirtExEnabled); } \
  NS_IMETHOD GetHWVirtExNestedPagingEnabled(PRBool *aHWVirtExNestedPagingEnabled) { return _to GetHWVirtExNestedPagingEnabled(aHWVirtExNestedPagingEnabled); } \
  NS_IMETHOD GetHWVirtExVPIDEnabled(PRBool *aHWVirtExVPIDEnabled) { return _to GetHWVirtExVPIDEnabled(aHWVirtExVPIDEnabled); } \
  NS_IMETHOD GetHWVirtExUXEnabled(PRBool *aHWVirtExUXEnabled) { return _to GetHWVirtExUXEnabled(aHWVirtExUXEnabled); } \
  NS_IMETHOD GetOSName(PRUnichar * *aOSName) { return _to GetOSName(aOSName); } \
  NS_IMETHOD GetOSVersion(PRUnichar * *aOSVersion) { return _to GetOSVersion(aOSVersion); } \
  NS_IMETHOD GetPAEEnabled(PRBool *aPAEEnabled) { return _to GetPAEEnabled(aPAEEnabled); } \
  NS_IMETHOD GetVirtualTimeRate(PRUint32 *aVirtualTimeRate) { return _to GetVirtualTimeRate(aVirtualTimeRate); } \
  NS_IMETHOD SetVirtualTimeRate(PRUint32 aVirtualTimeRate) { return _to SetVirtualTimeRate(aVirtualTimeRate); } \
  NS_IMETHOD GetVM(PRInt64 *aVM) { return _to GetVM(aVM); } \
  NS_IMETHOD DumpGuestCore(const PRUnichar *filename, const PRUnichar *compression) { return _to DumpGuestCore(filename, compression); } \
  NS_IMETHOD DumpHostProcessCore(const PRUnichar *filename, const PRUnichar *compression) { return _to DumpHostProcessCore(filename, compression); } \
  NS_IMETHOD Info(const PRUnichar *name, const PRUnichar *args, PRUnichar **info) { return _to Info(name, args, info); } \
  NS_IMETHOD InjectNMI(void) { return _to InjectNMI(); } \
  NS_IMETHOD ModifyLogGroups(const PRUnichar *settings) { return _to ModifyLogGroups(settings); } \
  NS_IMETHOD ModifyLogFlags(const PRUnichar *settings) { return _to ModifyLogFlags(settings); } \
  NS_IMETHOD ModifyLogDestinations(const PRUnichar *settings) { return _to ModifyLogDestinations(settings); } \
  NS_IMETHOD ReadPhysicalMemory(PRInt64 address, PRUint32 size, PRUint32 *bytesSize, PRUint8 **bytes) { return _to ReadPhysicalMemory(address, size, bytesSize, bytes); } \
  NS_IMETHOD WritePhysicalMemory(PRInt64 address, PRUint32 size, PRUint32 bytesSize, PRUint8 *bytes) { return _to WritePhysicalMemory(address, size, bytesSize, bytes); } \
  NS_IMETHOD ReadVirtualMemory(PRUint32 cpuId, PRInt64 address, PRUint32 size, PRUint32 *bytesSize, PRUint8 **bytes) { return _to ReadVirtualMemory(cpuId, address, size, bytesSize, bytes); } \
  NS_IMETHOD WriteVirtualMemory(PRUint32 cpuId, PRInt64 address, PRUint32 size, PRUint32 bytesSize, PRUint8 *bytes) { return _to WriteVirtualMemory(cpuId, address, size, bytesSize, bytes); } \
  NS_IMETHOD DetectOS(PRUnichar **os) { return _to DetectOS(os); } \
  NS_IMETHOD GetRegister(PRUint32 cpuId, const PRUnichar *name, PRUnichar **value) { return _to GetRegister(cpuId, name, value); } \
  NS_IMETHOD GetRegisters(PRUint32 cpuId, PRUint32 *namesSize, PRUnichar ***names, PRUint32 *valuesSize, PRUnichar ***values) { return _to GetRegisters(cpuId, namesSize, names, valuesSize, values); } \
  NS_IMETHOD SetRegister(PRUint32 cpuId, const PRUnichar *name, const PRUnichar *value) { return _to SetRegister(cpuId, name, value); } \
  NS_IMETHOD SetRegisters(PRUint32 cpuId, PRUint32 namesSize, const PRUnichar **names, PRUint32 valuesSize, const PRUnichar **values) { return _to SetRegisters(cpuId, namesSize, names, valuesSize, values); } \
  NS_IMETHOD DumpGuestStack(PRUint32 cpuId, PRUnichar **stack) { return _to DumpGuestStack(cpuId, stack); } \
  NS_IMETHOD ResetStats(const PRUnichar *pattern) { return _to ResetStats(pattern); } \
  NS_IMETHOD DumpStats(const PRUnichar *pattern) { return _to DumpStats(pattern); } \
  NS_IMETHOD GetStats(const PRUnichar *pattern, PRBool withDescriptions, PRUnichar **stats) { return _to GetStats(pattern, withDescriptions, stats); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMACHINEDEBUGGER(_to) \
  NS_IMETHOD GetSingleStep(PRBool *aSingleStep) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSingleStep(aSingleStep); } \
  NS_IMETHOD SetSingleStep(PRBool aSingleStep) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSingleStep(aSingleStep); } \
  NS_IMETHOD GetRecompileUser(PRBool *aRecompileUser) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecompileUser(aRecompileUser); } \
  NS_IMETHOD SetRecompileUser(PRBool aRecompileUser) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRecompileUser(aRecompileUser); } \
  NS_IMETHOD GetRecompileSupervisor(PRBool *aRecompileSupervisor) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecompileSupervisor(aRecompileSupervisor); } \
  NS_IMETHOD SetRecompileSupervisor(PRBool aRecompileSupervisor) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRecompileSupervisor(aRecompileSupervisor); } \
  NS_IMETHOD GetExecuteAllInIEM(PRBool *aExecuteAllInIEM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExecuteAllInIEM(aExecuteAllInIEM); } \
  NS_IMETHOD SetExecuteAllInIEM(PRBool aExecuteAllInIEM) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetExecuteAllInIEM(aExecuteAllInIEM); } \
  NS_IMETHOD GetPATMEnabled(PRBool *aPATMEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPATMEnabled(aPATMEnabled); } \
  NS_IMETHOD SetPATMEnabled(PRBool aPATMEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPATMEnabled(aPATMEnabled); } \
  NS_IMETHOD GetCSAMEnabled(PRBool *aCSAMEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCSAMEnabled(aCSAMEnabled); } \
  NS_IMETHOD SetCSAMEnabled(PRBool aCSAMEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCSAMEnabled(aCSAMEnabled); } \
  NS_IMETHOD GetLogEnabled(PRBool *aLogEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogEnabled(aLogEnabled); } \
  NS_IMETHOD SetLogEnabled(PRBool aLogEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLogEnabled(aLogEnabled); } \
  NS_IMETHOD GetLogDbgFlags(PRUnichar * *aLogDbgFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogDbgFlags(aLogDbgFlags); } \
  NS_IMETHOD GetLogDbgGroups(PRUnichar * *aLogDbgGroups) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogDbgGroups(aLogDbgGroups); } \
  NS_IMETHOD GetLogDbgDestinations(PRUnichar * *aLogDbgDestinations) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogDbgDestinations(aLogDbgDestinations); } \
  NS_IMETHOD GetLogRelFlags(PRUnichar * *aLogRelFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogRelFlags(aLogRelFlags); } \
  NS_IMETHOD GetLogRelGroups(PRUnichar * *aLogRelGroups) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogRelGroups(aLogRelGroups); } \
  NS_IMETHOD GetLogRelDestinations(PRUnichar * *aLogRelDestinations) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogRelDestinations(aLogRelDestinations); } \
  NS_IMETHOD GetHWVirtExEnabled(PRBool *aHWVirtExEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHWVirtExEnabled(aHWVirtExEnabled); } \
  NS_IMETHOD GetHWVirtExNestedPagingEnabled(PRBool *aHWVirtExNestedPagingEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHWVirtExNestedPagingEnabled(aHWVirtExNestedPagingEnabled); } \
  NS_IMETHOD GetHWVirtExVPIDEnabled(PRBool *aHWVirtExVPIDEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHWVirtExVPIDEnabled(aHWVirtExVPIDEnabled); } \
  NS_IMETHOD GetHWVirtExUXEnabled(PRBool *aHWVirtExUXEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHWVirtExUXEnabled(aHWVirtExUXEnabled); } \
  NS_IMETHOD GetOSName(PRUnichar * *aOSName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOSName(aOSName); } \
  NS_IMETHOD GetOSVersion(PRUnichar * *aOSVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOSVersion(aOSVersion); } \
  NS_IMETHOD GetPAEEnabled(PRBool *aPAEEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPAEEnabled(aPAEEnabled); } \
  NS_IMETHOD GetVirtualTimeRate(PRUint32 *aVirtualTimeRate) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVirtualTimeRate(aVirtualTimeRate); } \
  NS_IMETHOD SetVirtualTimeRate(PRUint32 aVirtualTimeRate) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVirtualTimeRate(aVirtualTimeRate); } \
  NS_IMETHOD GetVM(PRInt64 *aVM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVM(aVM); } \
  NS_IMETHOD DumpGuestCore(const PRUnichar *filename, const PRUnichar *compression) { return !_to ? NS_ERROR_NULL_POINTER : _to->DumpGuestCore(filename, compression); } \
  NS_IMETHOD DumpHostProcessCore(const PRUnichar *filename, const PRUnichar *compression) { return !_to ? NS_ERROR_NULL_POINTER : _to->DumpHostProcessCore(filename, compression); } \
  NS_IMETHOD Info(const PRUnichar *name, const PRUnichar *args, PRUnichar **info) { return !_to ? NS_ERROR_NULL_POINTER : _to->Info(name, args, info); } \
  NS_IMETHOD InjectNMI(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->InjectNMI(); } \
  NS_IMETHOD ModifyLogGroups(const PRUnichar *settings) { return !_to ? NS_ERROR_NULL_POINTER : _to->ModifyLogGroups(settings); } \
  NS_IMETHOD ModifyLogFlags(const PRUnichar *settings) { return !_to ? NS_ERROR_NULL_POINTER : _to->ModifyLogFlags(settings); } \
  NS_IMETHOD ModifyLogDestinations(const PRUnichar *settings) { return !_to ? NS_ERROR_NULL_POINTER : _to->ModifyLogDestinations(settings); } \
  NS_IMETHOD ReadPhysicalMemory(PRInt64 address, PRUint32 size, PRUint32 *bytesSize, PRUint8 **bytes) { return !_to ? NS_ERROR_NULL_POINTER : _to->ReadPhysicalMemory(address, size, bytesSize, bytes); } \
  NS_IMETHOD WritePhysicalMemory(PRInt64 address, PRUint32 size, PRUint32 bytesSize, PRUint8 *bytes) { return !_to ? NS_ERROR_NULL_POINTER : _to->WritePhysicalMemory(address, size, bytesSize, bytes); } \
  NS_IMETHOD ReadVirtualMemory(PRUint32 cpuId, PRInt64 address, PRUint32 size, PRUint32 *bytesSize, PRUint8 **bytes) { return !_to ? NS_ERROR_NULL_POINTER : _to->ReadVirtualMemory(cpuId, address, size, bytesSize, bytes); } \
  NS_IMETHOD WriteVirtualMemory(PRUint32 cpuId, PRInt64 address, PRUint32 size, PRUint32 bytesSize, PRUint8 *bytes) { return !_to ? NS_ERROR_NULL_POINTER : _to->WriteVirtualMemory(cpuId, address, size, bytesSize, bytes); } \
  NS_IMETHOD DetectOS(PRUnichar **os) { return !_to ? NS_ERROR_NULL_POINTER : _to->DetectOS(os); } \
  NS_IMETHOD GetRegister(PRUint32 cpuId, const PRUnichar *name, PRUnichar **value) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRegister(cpuId, name, value); } \
  NS_IMETHOD GetRegisters(PRUint32 cpuId, PRUint32 *namesSize, PRUnichar ***names, PRUint32 *valuesSize, PRUnichar ***values) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRegisters(cpuId, namesSize, names, valuesSize, values); } \
  NS_IMETHOD SetRegister(PRUint32 cpuId, const PRUnichar *name, const PRUnichar *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRegister(cpuId, name, value); } \
  NS_IMETHOD SetRegisters(PRUint32 cpuId, PRUint32 namesSize, const PRUnichar **names, PRUint32 valuesSize, const PRUnichar **values) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRegisters(cpuId, namesSize, names, valuesSize, values); } \
  NS_IMETHOD DumpGuestStack(PRUint32 cpuId, PRUnichar **stack) { return !_to ? NS_ERROR_NULL_POINTER : _to->DumpGuestStack(cpuId, stack); } \
  NS_IMETHOD ResetStats(const PRUnichar *pattern) { return !_to ? NS_ERROR_NULL_POINTER : _to->ResetStats(pattern); } \
  NS_IMETHOD DumpStats(const PRUnichar *pattern) { return !_to ? NS_ERROR_NULL_POINTER : _to->DumpStats(pattern); } \
  NS_IMETHOD GetStats(const PRUnichar *pattern, PRBool withDescriptions, PRUnichar **stats) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStats(pattern, withDescriptions, stats); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IMachineDebugger
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMACHINEDEBUGGER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IMachineDebugger)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* attribute boolean singleStep; */
NS_IMETHODIMP _MYCLASS_::GetSingleStep(PRBool *aSingleStep)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetSingleStep(PRBool aSingleStep)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean recompileUser; */
NS_IMETHODIMP _MYCLASS_::GetRecompileUser(PRBool *aRecompileUser)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetRecompileUser(PRBool aRecompileUser)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean recompileSupervisor; */
NS_IMETHODIMP _MYCLASS_::GetRecompileSupervisor(PRBool *aRecompileSupervisor)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetRecompileSupervisor(PRBool aRecompileSupervisor)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean executeAllInIEM; */
NS_IMETHODIMP _MYCLASS_::GetExecuteAllInIEM(PRBool *aExecuteAllInIEM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetExecuteAllInIEM(PRBool aExecuteAllInIEM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean PATMEnabled; */
NS_IMETHODIMP _MYCLASS_::GetPATMEnabled(PRBool *aPATMEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPATMEnabled(PRBool aPATMEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean CSAMEnabled; */
NS_IMETHODIMP _MYCLASS_::GetCSAMEnabled(PRBool *aCSAMEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetCSAMEnabled(PRBool aCSAMEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean logEnabled; */
NS_IMETHODIMP _MYCLASS_::GetLogEnabled(PRBool *aLogEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetLogEnabled(PRBool aLogEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring logDbgFlags; */
NS_IMETHODIMP _MYCLASS_::GetLogDbgFlags(PRUnichar * *aLogDbgFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring logDbgGroups; */
NS_IMETHODIMP _MYCLASS_::GetLogDbgGroups(PRUnichar * *aLogDbgGroups)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring logDbgDestinations; */
NS_IMETHODIMP _MYCLASS_::GetLogDbgDestinations(PRUnichar * *aLogDbgDestinations)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring logRelFlags; */
NS_IMETHODIMP _MYCLASS_::GetLogRelFlags(PRUnichar * *aLogRelFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring logRelGroups; */
NS_IMETHODIMP _MYCLASS_::GetLogRelGroups(PRUnichar * *aLogRelGroups)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring logRelDestinations; */
NS_IMETHODIMP _MYCLASS_::GetLogRelDestinations(PRUnichar * *aLogRelDestinations)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean HWVirtExEnabled; */
NS_IMETHODIMP _MYCLASS_::GetHWVirtExEnabled(PRBool *aHWVirtExEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean HWVirtExNestedPagingEnabled; */
NS_IMETHODIMP _MYCLASS_::GetHWVirtExNestedPagingEnabled(PRBool *aHWVirtExNestedPagingEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean HWVirtExVPIDEnabled; */
NS_IMETHODIMP _MYCLASS_::GetHWVirtExVPIDEnabled(PRBool *aHWVirtExVPIDEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean HWVirtExUXEnabled; */
NS_IMETHODIMP _MYCLASS_::GetHWVirtExUXEnabled(PRBool *aHWVirtExUXEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring OSName; */
NS_IMETHODIMP _MYCLASS_::GetOSName(PRUnichar * *aOSName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring OSVersion; */
NS_IMETHODIMP _MYCLASS_::GetOSVersion(PRUnichar * *aOSVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean PAEEnabled; */
NS_IMETHODIMP _MYCLASS_::GetPAEEnabled(PRBool *aPAEEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long virtualTimeRate; */
NS_IMETHODIMP _MYCLASS_::GetVirtualTimeRate(PRUint32 *aVirtualTimeRate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetVirtualTimeRate(PRUint32 aVirtualTimeRate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long VM; */
NS_IMETHODIMP _MYCLASS_::GetVM(PRInt64 *aVM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void dumpGuestCore (in wstring filename, in wstring compression); */
NS_IMETHODIMP _MYCLASS_::DumpGuestCore(const PRUnichar *filename, const PRUnichar *compression)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void dumpHostProcessCore (in wstring filename, in wstring compression); */
NS_IMETHODIMP _MYCLASS_::DumpHostProcessCore(const PRUnichar *filename, const PRUnichar *compression)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void info (in wstring name, in wstring args, [retval] out wstring info); */
NS_IMETHODIMP _MYCLASS_::Info(const PRUnichar *name, const PRUnichar *args, PRUnichar **info)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void injectNMI (); */
NS_IMETHODIMP _MYCLASS_::InjectNMI()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void modifyLogGroups (in wstring settings); */
NS_IMETHODIMP _MYCLASS_::ModifyLogGroups(const PRUnichar *settings)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void modifyLogFlags (in wstring settings); */
NS_IMETHODIMP _MYCLASS_::ModifyLogFlags(const PRUnichar *settings)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void modifyLogDestinations (in wstring settings); */
NS_IMETHODIMP _MYCLASS_::ModifyLogDestinations(const PRUnichar *settings)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void readPhysicalMemory (in long long address, in unsigned long size, out unsigned long bytesSize, [array, size_is (bytesSize), retval] out octet bytes); */
NS_IMETHODIMP _MYCLASS_::ReadPhysicalMemory(PRInt64 address, PRUint32 size, PRUint32 *bytesSize, PRUint8 **bytes)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void writePhysicalMemory (in long long address, in unsigned long size, in unsigned long bytesSize, [array, size_is (bytesSize)] in octet bytes); */
NS_IMETHODIMP _MYCLASS_::WritePhysicalMemory(PRInt64 address, PRUint32 size, PRUint32 bytesSize, PRUint8 *bytes)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void readVirtualMemory (in unsigned long cpuId, in long long address, in unsigned long size, out unsigned long bytesSize, [array, size_is (bytesSize), retval] out octet bytes); */
NS_IMETHODIMP _MYCLASS_::ReadVirtualMemory(PRUint32 cpuId, PRInt64 address, PRUint32 size, PRUint32 *bytesSize, PRUint8 **bytes)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void writeVirtualMemory (in unsigned long cpuId, in long long address, in unsigned long size, in unsigned long bytesSize, [array, size_is (bytesSize)] in octet bytes); */
NS_IMETHODIMP _MYCLASS_::WriteVirtualMemory(PRUint32 cpuId, PRInt64 address, PRUint32 size, PRUint32 bytesSize, PRUint8 *bytes)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void detectOS ([retval] out wstring os); */
NS_IMETHODIMP _MYCLASS_::DetectOS(PRUnichar **os)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getRegister (in unsigned long cpuId, in wstring name, [retval] out wstring value); */
NS_IMETHODIMP _MYCLASS_::GetRegister(PRUint32 cpuId, const PRUnichar *name, PRUnichar **value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getRegisters (in unsigned long cpuId, out unsigned long namesSize, [array, size_is (namesSize)] out wstring names, out unsigned long valuesSize, [array, size_is (valuesSize)] out wstring values); */
NS_IMETHODIMP _MYCLASS_::GetRegisters(PRUint32 cpuId, PRUint32 *namesSize, PRUnichar ***names, PRUint32 *valuesSize, PRUnichar ***values)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setRegister (in unsigned long cpuId, in wstring name, in wstring value); */
NS_IMETHODIMP _MYCLASS_::SetRegister(PRUint32 cpuId, const PRUnichar *name, const PRUnichar *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setRegisters (in unsigned long cpuId, in unsigned long namesSize, [array, size_is (namesSize)] in wstring names, in unsigned long valuesSize, [array, size_is (valuesSize)] in wstring values); */
NS_IMETHODIMP _MYCLASS_::SetRegisters(PRUint32 cpuId, PRUint32 namesSize, const PRUnichar **names, PRUint32 valuesSize, const PRUnichar **values)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void dumpGuestStack (in unsigned long cpuId, [retval] out wstring stack); */
NS_IMETHODIMP _MYCLASS_::DumpGuestStack(PRUint32 cpuId, PRUnichar **stack)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void resetStats (in wstring pattern); */
NS_IMETHODIMP _MYCLASS_::ResetStats(const PRUnichar *pattern)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void dumpStats (in wstring pattern); */
NS_IMETHODIMP _MYCLASS_::DumpStats(const PRUnichar *pattern)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getStats (in wstring pattern, in boolean withDescriptions, [retval] out wstring stats); */
NS_IMETHODIMP _MYCLASS_::GetStats(const PRUnichar *pattern, PRBool withDescriptions, PRUnichar **stats)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IMachineDebugger_GETTER_SingleStep_TO(smth) NS_IMETHOD GetSingleStep (PRBool * aSingleStep) { return smth GetSingleStep (aSingleStep); }
#define COM_FORWARD_IMachineDebugger_GETTER_SingleStep_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_SingleStep_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_SingleStep_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_SingleStep_TO (base::)
#define COM_FORWARD_IMachineDebugger_SETTER_SingleStep_TO(smth) NS_IMETHOD SetSingleStep (PRBool aSingleStep) { return smth SetSingleStep (aSingleStep); }
#define COM_FORWARD_IMachineDebugger_SETTER_SingleStep_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_SETTER_SingleStep_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_SETTER_SingleStep_TO_BASE(base) COM_FORWARD_IMachineDebugger_SETTER_SingleStep_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_RecompileUser_TO(smth) NS_IMETHOD GetRecompileUser (PRBool * aRecompileUser) { return smth GetRecompileUser (aRecompileUser); }
#define COM_FORWARD_IMachineDebugger_GETTER_RecompileUser_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_RecompileUser_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_RecompileUser_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_RecompileUser_TO (base::)
#define COM_FORWARD_IMachineDebugger_SETTER_RecompileUser_TO(smth) NS_IMETHOD SetRecompileUser (PRBool aRecompileUser) { return smth SetRecompileUser (aRecompileUser); }
#define COM_FORWARD_IMachineDebugger_SETTER_RecompileUser_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_SETTER_RecompileUser_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_SETTER_RecompileUser_TO_BASE(base) COM_FORWARD_IMachineDebugger_SETTER_RecompileUser_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_RecompileSupervisor_TO(smth) NS_IMETHOD GetRecompileSupervisor (PRBool * aRecompileSupervisor) { return smth GetRecompileSupervisor (aRecompileSupervisor); }
#define COM_FORWARD_IMachineDebugger_GETTER_RecompileSupervisor_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_RecompileSupervisor_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_RecompileSupervisor_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_RecompileSupervisor_TO (base::)
#define COM_FORWARD_IMachineDebugger_SETTER_RecompileSupervisor_TO(smth) NS_IMETHOD SetRecompileSupervisor (PRBool aRecompileSupervisor) { return smth SetRecompileSupervisor (aRecompileSupervisor); }
#define COM_FORWARD_IMachineDebugger_SETTER_RecompileSupervisor_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_SETTER_RecompileSupervisor_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_SETTER_RecompileSupervisor_TO_BASE(base) COM_FORWARD_IMachineDebugger_SETTER_RecompileSupervisor_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_ExecuteAllInIEM_TO(smth) NS_IMETHOD GetExecuteAllInIEM (PRBool * aExecuteAllInIEM) { return smth GetExecuteAllInIEM (aExecuteAllInIEM); }
#define COM_FORWARD_IMachineDebugger_GETTER_ExecuteAllInIEM_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_ExecuteAllInIEM_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_ExecuteAllInIEM_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_ExecuteAllInIEM_TO (base::)
#define COM_FORWARD_IMachineDebugger_SETTER_ExecuteAllInIEM_TO(smth) NS_IMETHOD SetExecuteAllInIEM (PRBool aExecuteAllInIEM) { return smth SetExecuteAllInIEM (aExecuteAllInIEM); }
#define COM_FORWARD_IMachineDebugger_SETTER_ExecuteAllInIEM_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_SETTER_ExecuteAllInIEM_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_SETTER_ExecuteAllInIEM_TO_BASE(base) COM_FORWARD_IMachineDebugger_SETTER_ExecuteAllInIEM_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_PATMEnabled_TO(smth) NS_IMETHOD GetPATMEnabled (PRBool * aPATMEnabled) { return smth GetPATMEnabled (aPATMEnabled); }
#define COM_FORWARD_IMachineDebugger_GETTER_PATMEnabled_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_PATMEnabled_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_PATMEnabled_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_PATMEnabled_TO (base::)
#define COM_FORWARD_IMachineDebugger_SETTER_PATMEnabled_TO(smth) NS_IMETHOD SetPATMEnabled (PRBool aPATMEnabled) { return smth SetPATMEnabled (aPATMEnabled); }
#define COM_FORWARD_IMachineDebugger_SETTER_PATMEnabled_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_SETTER_PATMEnabled_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_SETTER_PATMEnabled_TO_BASE(base) COM_FORWARD_IMachineDebugger_SETTER_PATMEnabled_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_CSAMEnabled_TO(smth) NS_IMETHOD GetCSAMEnabled (PRBool * aCSAMEnabled) { return smth GetCSAMEnabled (aCSAMEnabled); }
#define COM_FORWARD_IMachineDebugger_GETTER_CSAMEnabled_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_CSAMEnabled_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_CSAMEnabled_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_CSAMEnabled_TO (base::)
#define COM_FORWARD_IMachineDebugger_SETTER_CSAMEnabled_TO(smth) NS_IMETHOD SetCSAMEnabled (PRBool aCSAMEnabled) { return smth SetCSAMEnabled (aCSAMEnabled); }
#define COM_FORWARD_IMachineDebugger_SETTER_CSAMEnabled_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_SETTER_CSAMEnabled_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_SETTER_CSAMEnabled_TO_BASE(base) COM_FORWARD_IMachineDebugger_SETTER_CSAMEnabled_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_LogEnabled_TO(smth) NS_IMETHOD GetLogEnabled (PRBool * aLogEnabled) { return smth GetLogEnabled (aLogEnabled); }
#define COM_FORWARD_IMachineDebugger_GETTER_LogEnabled_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_LogEnabled_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_LogEnabled_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_LogEnabled_TO (base::)
#define COM_FORWARD_IMachineDebugger_SETTER_LogEnabled_TO(smth) NS_IMETHOD SetLogEnabled (PRBool aLogEnabled) { return smth SetLogEnabled (aLogEnabled); }
#define COM_FORWARD_IMachineDebugger_SETTER_LogEnabled_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_SETTER_LogEnabled_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_SETTER_LogEnabled_TO_BASE(base) COM_FORWARD_IMachineDebugger_SETTER_LogEnabled_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_LogDbgFlags_TO(smth) NS_IMETHOD GetLogDbgFlags (PRUnichar * * aLogDbgFlags) { return smth GetLogDbgFlags (aLogDbgFlags); }
#define COM_FORWARD_IMachineDebugger_GETTER_LogDbgFlags_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_LogDbgFlags_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_LogDbgFlags_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_LogDbgFlags_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_LogDbgGroups_TO(smth) NS_IMETHOD GetLogDbgGroups (PRUnichar * * aLogDbgGroups) { return smth GetLogDbgGroups (aLogDbgGroups); }
#define COM_FORWARD_IMachineDebugger_GETTER_LogDbgGroups_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_LogDbgGroups_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_LogDbgGroups_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_LogDbgGroups_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_LogDbgDestinations_TO(smth) NS_IMETHOD GetLogDbgDestinations (PRUnichar * * aLogDbgDestinations) { return smth GetLogDbgDestinations (aLogDbgDestinations); }
#define COM_FORWARD_IMachineDebugger_GETTER_LogDbgDestinations_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_LogDbgDestinations_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_LogDbgDestinations_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_LogDbgDestinations_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_LogRelFlags_TO(smth) NS_IMETHOD GetLogRelFlags (PRUnichar * * aLogRelFlags) { return smth GetLogRelFlags (aLogRelFlags); }
#define COM_FORWARD_IMachineDebugger_GETTER_LogRelFlags_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_LogRelFlags_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_LogRelFlags_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_LogRelFlags_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_LogRelGroups_TO(smth) NS_IMETHOD GetLogRelGroups (PRUnichar * * aLogRelGroups) { return smth GetLogRelGroups (aLogRelGroups); }
#define COM_FORWARD_IMachineDebugger_GETTER_LogRelGroups_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_LogRelGroups_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_LogRelGroups_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_LogRelGroups_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_LogRelDestinations_TO(smth) NS_IMETHOD GetLogRelDestinations (PRUnichar * * aLogRelDestinations) { return smth GetLogRelDestinations (aLogRelDestinations); }
#define COM_FORWARD_IMachineDebugger_GETTER_LogRelDestinations_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_LogRelDestinations_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_LogRelDestinations_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_LogRelDestinations_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_HWVirtExEnabled_TO(smth) NS_IMETHOD GetHWVirtExEnabled (PRBool * aHWVirtExEnabled) { return smth GetHWVirtExEnabled (aHWVirtExEnabled); }
#define COM_FORWARD_IMachineDebugger_GETTER_HWVirtExEnabled_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_HWVirtExEnabled_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_HWVirtExEnabled_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_HWVirtExEnabled_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_HWVirtExNestedPagingEnabled_TO(smth) NS_IMETHOD GetHWVirtExNestedPagingEnabled (PRBool * aHWVirtExNestedPagingEnabled) { return smth GetHWVirtExNestedPagingEnabled (aHWVirtExNestedPagingEnabled); }
#define COM_FORWARD_IMachineDebugger_GETTER_HWVirtExNestedPagingEnabled_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_HWVirtExNestedPagingEnabled_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_HWVirtExNestedPagingEnabled_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_HWVirtExNestedPagingEnabled_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_HWVirtExVPIDEnabled_TO(smth) NS_IMETHOD GetHWVirtExVPIDEnabled (PRBool * aHWVirtExVPIDEnabled) { return smth GetHWVirtExVPIDEnabled (aHWVirtExVPIDEnabled); }
#define COM_FORWARD_IMachineDebugger_GETTER_HWVirtExVPIDEnabled_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_HWVirtExVPIDEnabled_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_HWVirtExVPIDEnabled_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_HWVirtExVPIDEnabled_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_HWVirtExUXEnabled_TO(smth) NS_IMETHOD GetHWVirtExUXEnabled (PRBool * aHWVirtExUXEnabled) { return smth GetHWVirtExUXEnabled (aHWVirtExUXEnabled); }
#define COM_FORWARD_IMachineDebugger_GETTER_HWVirtExUXEnabled_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_HWVirtExUXEnabled_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_HWVirtExUXEnabled_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_HWVirtExUXEnabled_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_OSName_TO(smth) NS_IMETHOD GetOSName (PRUnichar * * aOSName) { return smth GetOSName (aOSName); }
#define COM_FORWARD_IMachineDebugger_GETTER_OSName_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_OSName_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_OSName_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_OSName_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_OSVersion_TO(smth) NS_IMETHOD GetOSVersion (PRUnichar * * aOSVersion) { return smth GetOSVersion (aOSVersion); }
#define COM_FORWARD_IMachineDebugger_GETTER_OSVersion_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_OSVersion_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_OSVersion_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_OSVersion_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_PAEEnabled_TO(smth) NS_IMETHOD GetPAEEnabled (PRBool * aPAEEnabled) { return smth GetPAEEnabled (aPAEEnabled); }
#define COM_FORWARD_IMachineDebugger_GETTER_PAEEnabled_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_PAEEnabled_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_PAEEnabled_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_PAEEnabled_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_VirtualTimeRate_TO(smth) NS_IMETHOD GetVirtualTimeRate (PRUint32 * aVirtualTimeRate) { return smth GetVirtualTimeRate (aVirtualTimeRate); }
#define COM_FORWARD_IMachineDebugger_GETTER_VirtualTimeRate_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_VirtualTimeRate_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_VirtualTimeRate_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_VirtualTimeRate_TO (base::)
#define COM_FORWARD_IMachineDebugger_SETTER_VirtualTimeRate_TO(smth) NS_IMETHOD SetVirtualTimeRate (PRUint32 aVirtualTimeRate) { return smth SetVirtualTimeRate (aVirtualTimeRate); }
#define COM_FORWARD_IMachineDebugger_SETTER_VirtualTimeRate_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_SETTER_VirtualTimeRate_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_SETTER_VirtualTimeRate_TO_BASE(base) COM_FORWARD_IMachineDebugger_SETTER_VirtualTimeRate_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_VM_TO(smth) NS_IMETHOD GetVM (PRInt64 * aVM) { return smth GetVM (aVM); }
#define COM_FORWARD_IMachineDebugger_GETTER_VM_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_VM_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_VM_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_VM_TO (base::)
#define COM_FORWARD_IMachineDebugger_DumpGuestCore_TO(smth) NS_IMETHOD DumpGuestCore (PRUnichar * aFilename, PRUnichar * aCompression) { return smth DumpGuestCore (aFilename, aCompression); }
#define COM_FORWARD_IMachineDebugger_DumpGuestCore_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_DumpGuestCore_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_DumpGuestCore_TO_BASE(base) COM_FORWARD_IMachineDebugger_DumpGuestCore_TO (base::)
#define COM_FORWARD_IMachineDebugger_DumpHostProcessCore_TO(smth) NS_IMETHOD DumpHostProcessCore (PRUnichar * aFilename, PRUnichar * aCompression) { return smth DumpHostProcessCore (aFilename, aCompression); }
#define COM_FORWARD_IMachineDebugger_DumpHostProcessCore_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_DumpHostProcessCore_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_DumpHostProcessCore_TO_BASE(base) COM_FORWARD_IMachineDebugger_DumpHostProcessCore_TO (base::)
#define COM_FORWARD_IMachineDebugger_Info_TO(smth) NS_IMETHOD Info (PRUnichar * aName, PRUnichar * aArgs, PRUnichar * * aInfo) { return smth Info (aName, aArgs, aInfo); }
#define COM_FORWARD_IMachineDebugger_Info_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_Info_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_Info_TO_BASE(base) COM_FORWARD_IMachineDebugger_Info_TO (base::)
#define COM_FORWARD_IMachineDebugger_InjectNMI_TO(smth) NS_IMETHOD InjectNMI() { return smth InjectNMI(); }
#define COM_FORWARD_IMachineDebugger_InjectNMI_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_InjectNMI_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_InjectNMI_TO_BASE(base) COM_FORWARD_IMachineDebugger_InjectNMI_TO (base::)
#define COM_FORWARD_IMachineDebugger_ModifyLogGroups_TO(smth) NS_IMETHOD ModifyLogGroups (PRUnichar * aSettings) { return smth ModifyLogGroups (aSettings); }
#define COM_FORWARD_IMachineDebugger_ModifyLogGroups_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_ModifyLogGroups_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_ModifyLogGroups_TO_BASE(base) COM_FORWARD_IMachineDebugger_ModifyLogGroups_TO (base::)
#define COM_FORWARD_IMachineDebugger_ModifyLogFlags_TO(smth) NS_IMETHOD ModifyLogFlags (PRUnichar * aSettings) { return smth ModifyLogFlags (aSettings); }
#define COM_FORWARD_IMachineDebugger_ModifyLogFlags_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_ModifyLogFlags_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_ModifyLogFlags_TO_BASE(base) COM_FORWARD_IMachineDebugger_ModifyLogFlags_TO (base::)
#define COM_FORWARD_IMachineDebugger_ModifyLogDestinations_TO(smth) NS_IMETHOD ModifyLogDestinations (PRUnichar * aSettings) { return smth ModifyLogDestinations (aSettings); }
#define COM_FORWARD_IMachineDebugger_ModifyLogDestinations_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_ModifyLogDestinations_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_ModifyLogDestinations_TO_BASE(base) COM_FORWARD_IMachineDebugger_ModifyLogDestinations_TO (base::)
#define COM_FORWARD_IMachineDebugger_ReadPhysicalMemory_TO(smth) NS_IMETHOD ReadPhysicalMemory (PRInt64 aAddress, PRUint32 aSize, PRUint32 * aBytesSize, PRUint8 * * aBytes) { return smth ReadPhysicalMemory (aAddress, aSize, aBytesSize, aBytes); }
#define COM_FORWARD_IMachineDebugger_ReadPhysicalMemory_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_ReadPhysicalMemory_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_ReadPhysicalMemory_TO_BASE(base) COM_FORWARD_IMachineDebugger_ReadPhysicalMemory_TO (base::)
#define COM_FORWARD_IMachineDebugger_WritePhysicalMemory_TO(smth) NS_IMETHOD WritePhysicalMemory (PRInt64 aAddress, PRUint32 aSize, PRUint32 aBytesSize, PRUint8 * aBytes) { return smth WritePhysicalMemory (aAddress, aSize, aBytesSize, aBytes); }
#define COM_FORWARD_IMachineDebugger_WritePhysicalMemory_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_WritePhysicalMemory_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_WritePhysicalMemory_TO_BASE(base) COM_FORWARD_IMachineDebugger_WritePhysicalMemory_TO (base::)
#define COM_FORWARD_IMachineDebugger_ReadVirtualMemory_TO(smth) NS_IMETHOD ReadVirtualMemory (PRUint32 aCpuId, PRInt64 aAddress, PRUint32 aSize, PRUint32 * aBytesSize, PRUint8 * * aBytes) { return smth ReadVirtualMemory (aCpuId, aAddress, aSize, aBytesSize, aBytes); }
#define COM_FORWARD_IMachineDebugger_ReadVirtualMemory_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_ReadVirtualMemory_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_ReadVirtualMemory_TO_BASE(base) COM_FORWARD_IMachineDebugger_ReadVirtualMemory_TO (base::)
#define COM_FORWARD_IMachineDebugger_WriteVirtualMemory_TO(smth) NS_IMETHOD WriteVirtualMemory (PRUint32 aCpuId, PRInt64 aAddress, PRUint32 aSize, PRUint32 aBytesSize, PRUint8 * aBytes) { return smth WriteVirtualMemory (aCpuId, aAddress, aSize, aBytesSize, aBytes); }
#define COM_FORWARD_IMachineDebugger_WriteVirtualMemory_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_WriteVirtualMemory_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_WriteVirtualMemory_TO_BASE(base) COM_FORWARD_IMachineDebugger_WriteVirtualMemory_TO (base::)
#define COM_FORWARD_IMachineDebugger_DetectOS_TO(smth) NS_IMETHOD DetectOS (PRUnichar * * aOs) { return smth DetectOS (aOs); }
#define COM_FORWARD_IMachineDebugger_DetectOS_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_DetectOS_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_DetectOS_TO_BASE(base) COM_FORWARD_IMachineDebugger_DetectOS_TO (base::)
#define COM_FORWARD_IMachineDebugger_GetRegister_TO(smth) NS_IMETHOD GetRegister (PRUint32 aCpuId, PRUnichar * aName, PRUnichar * * aValue) { return smth GetRegister (aCpuId, aName, aValue); }
#define COM_FORWARD_IMachineDebugger_GetRegister_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GetRegister_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GetRegister_TO_BASE(base) COM_FORWARD_IMachineDebugger_GetRegister_TO (base::)
#define COM_FORWARD_IMachineDebugger_GetRegisters_TO(smth) NS_IMETHOD GetRegisters (PRUint32 aCpuId, PRUint32 * aNamesSize, PRUnichar * * * aNames, PRUint32 * aValuesSize, PRUnichar * * * aValues) { return smth GetRegisters (aCpuId, aNamesSize+++, aNames, aValuesSize, aValues); }
#define COM_FORWARD_IMachineDebugger_GetRegisters_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GetRegisters_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GetRegisters_TO_BASE(base) COM_FORWARD_IMachineDebugger_GetRegisters_TO (base::)
#define COM_FORWARD_IMachineDebugger_SetRegister_TO(smth) NS_IMETHOD SetRegister (PRUint32 aCpuId, PRUnichar * aName, PRUnichar * aValue) { return smth SetRegister (aCpuId, aName, aValue); }
#define COM_FORWARD_IMachineDebugger_SetRegister_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_SetRegister_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_SetRegister_TO_BASE(base) COM_FORWARD_IMachineDebugger_SetRegister_TO (base::)
#define COM_FORWARD_IMachineDebugger_SetRegisters_TO(smth) NS_IMETHOD SetRegisters (PRUint32 aCpuId, PRUint32 aNamesSize, PRUnichar * * aNames, PRUint32 aValuesSize, PRUnichar * * aValues) { return smth SetRegisters (aCpuId, aNamesSize+++, aNames, aValuesSize, aValues); }
#define COM_FORWARD_IMachineDebugger_SetRegisters_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_SetRegisters_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_SetRegisters_TO_BASE(base) COM_FORWARD_IMachineDebugger_SetRegisters_TO (base::)
#define COM_FORWARD_IMachineDebugger_DumpGuestStack_TO(smth) NS_IMETHOD DumpGuestStack (PRUint32 aCpuId, PRUnichar * * aStack) { return smth DumpGuestStack (aCpuId, aStack); }
#define COM_FORWARD_IMachineDebugger_DumpGuestStack_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_DumpGuestStack_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_DumpGuestStack_TO_BASE(base) COM_FORWARD_IMachineDebugger_DumpGuestStack_TO (base::)
#define COM_FORWARD_IMachineDebugger_ResetStats_TO(smth) NS_IMETHOD ResetStats (PRUnichar * aPattern) { return smth ResetStats (aPattern); }
#define COM_FORWARD_IMachineDebugger_ResetStats_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_ResetStats_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_ResetStats_TO_BASE(base) COM_FORWARD_IMachineDebugger_ResetStats_TO (base::)
#define COM_FORWARD_IMachineDebugger_DumpStats_TO(smth) NS_IMETHOD DumpStats (PRUnichar * aPattern) { return smth DumpStats (aPattern); }
#define COM_FORWARD_IMachineDebugger_DumpStats_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_DumpStats_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_DumpStats_TO_BASE(base) COM_FORWARD_IMachineDebugger_DumpStats_TO (base::)
#define COM_FORWARD_IMachineDebugger_GetStats_TO(smth) NS_IMETHOD GetStats (PRUnichar * aPattern, PRBool aWithDescriptions, PRUnichar * * aStats) { return smth GetStats (aPattern, aWithDescriptions, aStats); }
#define COM_FORWARD_IMachineDebugger_GetStats_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GetStats_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GetStats_TO_BASE(base) COM_FORWARD_IMachineDebugger_GetStats_TO (base::)
#define COM_FORWARD_IMachineDebugger_TO(smth) NS_FORWARD_IMACHINEDEBUGGER (smth)
#define COM_FORWARD_IMachineDebugger_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_TO_BASE(base) COM_FORWARD_IMachineDebugger_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IMachineDebugger;

/* starting interface:    IUSBDeviceFilters */
#define IUSBDEVICEFILTERS_IID_STR "2ab550b2-53cc-4c2e-ae07-0adf4114e75c"

#define IUSBDEVICEFILTERS_IID \
  {0x2ab550b2, 0x53cc, 0x4c2e, \
    { 0xae, 0x07, 0x0a, 0xdf, 0x41, 0x14, 0xe7, 0x5c }}

class NS_NO_VTABLE IUSBDeviceFilters : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IUSBDEVICEFILTERS_IID)

  /* void getDeviceFilters (out unsigned long deviceFiltersSize, [array, size_is (deviceFiltersSize), retval] out IUSBDeviceFilter deviceFilters); */
  NS_IMETHOD GetDeviceFilters(PRUint32 *deviceFiltersSize, IUSBDeviceFilter ***deviceFilters) = 0;

  /* void createDeviceFilter (in wstring name, [retval] out IUSBDeviceFilter filter); */
  NS_IMETHOD CreateDeviceFilter(const PRUnichar *name, IUSBDeviceFilter **filter) = 0;

  /* void insertDeviceFilter (in unsigned long position, in IUSBDeviceFilter filter); */
  NS_IMETHOD InsertDeviceFilter(PRUint32 position, IUSBDeviceFilter *filter) = 0;

  /* void removeDeviceFilter (in unsigned long position, [retval] out IUSBDeviceFilter filter); */
  NS_IMETHOD RemoveDeviceFilter(PRUint32 position, IUSBDeviceFilter **filter) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IUSBDEVICEFILTERS \
  NS_IMETHOD GetDeviceFilters(PRUint32 *deviceFiltersSize, IUSBDeviceFilter ***deviceFilters); \
  NS_IMETHOD CreateDeviceFilter(const PRUnichar *name, IUSBDeviceFilter **filter); \
  NS_IMETHOD InsertDeviceFilter(PRUint32 position, IUSBDeviceFilter *filter); \
  NS_IMETHOD RemoveDeviceFilter(PRUint32 position, IUSBDeviceFilter **filter); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IUSBDEVICEFILTERS(_to) \
  NS_IMETHOD GetDeviceFilters(PRUint32 *deviceFiltersSize, IUSBDeviceFilter ***deviceFilters) { return _to GetDeviceFilters(deviceFiltersSize, deviceFilters); } \
  NS_IMETHOD CreateDeviceFilter(const PRUnichar *name, IUSBDeviceFilter **filter) { return _to CreateDeviceFilter(name, filter); } \
  NS_IMETHOD InsertDeviceFilter(PRUint32 position, IUSBDeviceFilter *filter) { return _to InsertDeviceFilter(position, filter); } \
  NS_IMETHOD RemoveDeviceFilter(PRUint32 position, IUSBDeviceFilter **filter) { return _to RemoveDeviceFilter(position, 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_IUSBDEVICEFILTERS(_to) \
  NS_IMETHOD GetDeviceFilters(PRUint32 *deviceFiltersSize, IUSBDeviceFilter ***deviceFilters) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDeviceFilters(deviceFiltersSize, deviceFilters); } \
  NS_IMETHOD CreateDeviceFilter(const PRUnichar *name, IUSBDeviceFilter **filter) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateDeviceFilter(name, filter); } \
  NS_IMETHOD InsertDeviceFilter(PRUint32 position, IUSBDeviceFilter *filter) { return !_to ? NS_ERROR_NULL_POINTER : _to->InsertDeviceFilter(position, filter); } \
  NS_IMETHOD RemoveDeviceFilter(PRUint32 position, IUSBDeviceFilter **filter) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveDeviceFilter(position, filter); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IUSBDeviceFilters
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IUSBDEVICEFILTERS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IUSBDeviceFilters)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* void getDeviceFilters (out unsigned long deviceFiltersSize, [array, size_is (deviceFiltersSize), retval] out IUSBDeviceFilter deviceFilters); */
NS_IMETHODIMP _MYCLASS_::GetDeviceFilters(PRUint32 *deviceFiltersSize, IUSBDeviceFilter ***deviceFilters)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createDeviceFilter (in wstring name, [retval] out IUSBDeviceFilter filter); */
NS_IMETHODIMP _MYCLASS_::CreateDeviceFilter(const PRUnichar *name, IUSBDeviceFilter **filter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void insertDeviceFilter (in unsigned long position, in IUSBDeviceFilter filter); */
NS_IMETHODIMP _MYCLASS_::InsertDeviceFilter(PRUint32 position, IUSBDeviceFilter *filter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeDeviceFilter (in unsigned long position, [retval] out IUSBDeviceFilter filter); */
NS_IMETHODIMP _MYCLASS_::RemoveDeviceFilter(PRUint32 position, IUSBDeviceFilter **filter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IUSBDeviceFilters_GETTER_DeviceFilters_TO(smth) NS_IMETHOD GetDeviceFilters (PRUint32 * aDeviceFiltersSize, IUSBDeviceFilter * * * aDeviceFilters) { return smth GetDeviceFilters (aDeviceFiltersSize, aDeviceFilters); }
#define COM_FORWARD_IUSBDeviceFilters_GETTER_DeviceFilters_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilters_GETTER_DeviceFilters_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilters_GETTER_DeviceFilters_TO_BASE(base) COM_FORWARD_IUSBDeviceFilters_GETTER_DeviceFilters_TO (base::)
#define COM_FORWARD_IUSBDeviceFilters_CreateDeviceFilter_TO(smth) NS_IMETHOD CreateDeviceFilter (PRUnichar * aName, IUSBDeviceFilter * * aFilter) { return smth CreateDeviceFilter (aName, aFilter); }
#define COM_FORWARD_IUSBDeviceFilters_CreateDeviceFilter_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilters_CreateDeviceFilter_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilters_CreateDeviceFilter_TO_BASE(base) COM_FORWARD_IUSBDeviceFilters_CreateDeviceFilter_TO (base::)
#define COM_FORWARD_IUSBDeviceFilters_InsertDeviceFilter_TO(smth) NS_IMETHOD InsertDeviceFilter (PRUint32 aPosition, IUSBDeviceFilter * aFilter) { return smth InsertDeviceFilter (aPosition, aFilter); }
#define COM_FORWARD_IUSBDeviceFilters_InsertDeviceFilter_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilters_InsertDeviceFilter_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilters_InsertDeviceFilter_TO_BASE(base) COM_FORWARD_IUSBDeviceFilters_InsertDeviceFilter_TO (base::)
#define COM_FORWARD_IUSBDeviceFilters_RemoveDeviceFilter_TO(smth) NS_IMETHOD RemoveDeviceFilter (PRUint32 aPosition, IUSBDeviceFilter * * aFilter) { return smth RemoveDeviceFilter (aPosition, aFilter); }
#define COM_FORWARD_IUSBDeviceFilters_RemoveDeviceFilter_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilters_RemoveDeviceFilter_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilters_RemoveDeviceFilter_TO_BASE(base) COM_FORWARD_IUSBDeviceFilters_RemoveDeviceFilter_TO (base::)
#define COM_FORWARD_IUSBDeviceFilters_TO(smth) NS_FORWARD_IUSBDEVICEFILTERS (smth)
#define COM_FORWARD_IUSBDeviceFilters_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilters_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilters_TO_BASE(base) COM_FORWARD_IUSBDeviceFilters_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IUSBDeviceFilters;

/* starting interface:    IUSBController */
#define IUSBCONTROLLER_IID_STR "d2745291-65f7-4d75-9556-38047d802319"

#define IUSBCONTROLLER_IID \
  {0xd2745291, 0x65f7, 0x4d75, \
    { 0x95, 0x56, 0x38, 0x04, 0x7d, 0x80, 0x23, 0x19 }}

class NS_NO_VTABLE IUSBController : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IUSBCONTROLLER_IID)

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* readonly attribute PRUint32 type; */
  NS_IMETHOD GetType(PRUint32 *aType) = 0;

  /* readonly attribute unsigned short USBStandard; */
  NS_IMETHOD GetUSBStandard(PRUint16 *aUSBStandard) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IUSBCONTROLLER \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetType(PRUint32 *aType); \
  NS_IMETHOD GetUSBStandard(PRUint16 *aUSBStandard); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IUSBCONTROLLER(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return _to GetType(aType); } \
  NS_IMETHOD GetUSBStandard(PRUint16 *aUSBStandard) { return _to GetUSBStandard(aUSBStandard); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IUSBCONTROLLER(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetType(aType); } \
  NS_IMETHOD GetUSBStandard(PRUint16 *aUSBStandard) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUSBStandard(aUSBStandard); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IUSBController
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IUSBCONTROLLER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IUSBController)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 type; */
NS_IMETHODIMP _MYCLASS_::GetType(PRUint32 *aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned short USBStandard; */
NS_IMETHODIMP _MYCLASS_::GetUSBStandard(PRUint16 *aUSBStandard)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IUSBController_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IUSBController_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IUSBController_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IUSBController_GETTER_Name_TO_BASE(base) COM_FORWARD_IUSBController_GETTER_Name_TO (base::)
#define COM_FORWARD_IUSBController_GETTER_Type_TO(smth) NS_IMETHOD GetType (PRUint32 * aType) { return smth GetType (aType); }
#define COM_FORWARD_IUSBController_GETTER_Type_TO_OBJ(obj) COM_FORWARD_IUSBController_GETTER_Type_TO ((obj)->)
#define COM_FORWARD_IUSBController_GETTER_Type_TO_BASE(base) COM_FORWARD_IUSBController_GETTER_Type_TO (base::)
#define COM_FORWARD_IUSBController_GETTER_USBStandard_TO(smth) NS_IMETHOD GetUSBStandard (PRUint16 * aUSBStandard) { return smth GetUSBStandard (aUSBStandard); }
#define COM_FORWARD_IUSBController_GETTER_USBStandard_TO_OBJ(obj) COM_FORWARD_IUSBController_GETTER_USBStandard_TO ((obj)->)
#define COM_FORWARD_IUSBController_GETTER_USBStandard_TO_BASE(base) COM_FORWARD_IUSBController_GETTER_USBStandard_TO (base::)
#define COM_FORWARD_IUSBController_TO(smth) NS_FORWARD_IUSBCONTROLLER (smth)
#define COM_FORWARD_IUSBController_TO_OBJ(obj) COM_FORWARD_IUSBController_TO ((obj)->)
#define COM_FORWARD_IUSBController_TO_BASE(base) COM_FORWARD_IUSBController_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IUSBController;

/* starting interface:    IUSBDevice */
#define IUSBDEVICE_IID_STR "f8967b0b-4483-400f-92b5-8b675d98a85b"

#define IUSBDEVICE_IID \
  {0xf8967b0b, 0x4483, 0x400f, \
    { 0x92, 0xb5, 0x8b, 0x67, 0x5d, 0x98, 0xa8, 0x5b }}

class NS_NO_VTABLE IUSBDevice : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IUSBDEVICE_IID)

  /* readonly attribute wstring id; */
  NS_IMETHOD GetId(PRUnichar * *aId) = 0;

  /* readonly attribute unsigned short vendorId; */
  NS_IMETHOD GetVendorId(PRUint16 *aVendorId) = 0;

  /* readonly attribute unsigned short productId; */
  NS_IMETHOD GetProductId(PRUint16 *aProductId) = 0;

  /* readonly attribute unsigned short revision; */
  NS_IMETHOD GetRevision(PRUint16 *aRevision) = 0;

  /* readonly attribute wstring manufacturer; */
  NS_IMETHOD GetManufacturer(PRUnichar * *aManufacturer) = 0;

  /* readonly attribute wstring product; */
  NS_IMETHOD GetProduct(PRUnichar * *aProduct) = 0;

  /* readonly attribute wstring serialNumber; */
  NS_IMETHOD GetSerialNumber(PRUnichar * *aSerialNumber) = 0;

  /* readonly attribute wstring address; */
  NS_IMETHOD GetAddress(PRUnichar * *aAddress) = 0;

  /* readonly attribute unsigned short port; */
  NS_IMETHOD GetPort(PRUint16 *aPort) = 0;

  /* readonly attribute unsigned short version; */
  NS_IMETHOD GetVersion(PRUint16 *aVersion) = 0;

  /* readonly attribute unsigned short portVersion; */
  NS_IMETHOD GetPortVersion(PRUint16 *aPortVersion) = 0;

  /* readonly attribute boolean remote; */
  NS_IMETHOD GetRemote(PRBool *aRemote) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IUSBDEVICE \
  NS_IMETHOD GetId(PRUnichar * *aId); \
  NS_IMETHOD GetVendorId(PRUint16 *aVendorId); \
  NS_IMETHOD GetProductId(PRUint16 *aProductId); \
  NS_IMETHOD GetRevision(PRUint16 *aRevision); \
  NS_IMETHOD GetManufacturer(PRUnichar * *aManufacturer); \
  NS_IMETHOD GetProduct(PRUnichar * *aProduct); \
  NS_IMETHOD GetSerialNumber(PRUnichar * *aSerialNumber); \
  NS_IMETHOD GetAddress(PRUnichar * *aAddress); \
  NS_IMETHOD GetPort(PRUint16 *aPort); \
  NS_IMETHOD GetVersion(PRUint16 *aVersion); \
  NS_IMETHOD GetPortVersion(PRUint16 *aPortVersion); \
  NS_IMETHOD GetRemote(PRBool *aRemote); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IUSBDEVICE(_to) \
  NS_IMETHOD GetId(PRUnichar * *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetVendorId(PRUint16 *aVendorId) { return _to GetVendorId(aVendorId); } \
  NS_IMETHOD GetProductId(PRUint16 *aProductId) { return _to GetProductId(aProductId); } \
  NS_IMETHOD GetRevision(PRUint16 *aRevision) { return _to GetRevision(aRevision); } \
  NS_IMETHOD GetManufacturer(PRUnichar * *aManufacturer) { return _to GetManufacturer(aManufacturer); } \
  NS_IMETHOD GetProduct(PRUnichar * *aProduct) { return _to GetProduct(aProduct); } \
  NS_IMETHOD GetSerialNumber(PRUnichar * *aSerialNumber) { return _to GetSerialNumber(aSerialNumber); } \
  NS_IMETHOD GetAddress(PRUnichar * *aAddress) { return _to GetAddress(aAddress); } \
  NS_IMETHOD GetPort(PRUint16 *aPort) { return _to GetPort(aPort); } \
  NS_IMETHOD GetVersion(PRUint16 *aVersion) { return _to GetVersion(aVersion); } \
  NS_IMETHOD GetPortVersion(PRUint16 *aPortVersion) { return _to GetPortVersion(aPortVersion); } \
  NS_IMETHOD GetRemote(PRBool *aRemote) { return _to GetRemote(aRemote); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IUSBDEVICE(_to) \
  NS_IMETHOD GetId(PRUnichar * *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetVendorId(PRUint16 *aVendorId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVendorId(aVendorId); } \
  NS_IMETHOD GetProductId(PRUint16 *aProductId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProductId(aProductId); } \
  NS_IMETHOD GetRevision(PRUint16 *aRevision) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRevision(aRevision); } \
  NS_IMETHOD GetManufacturer(PRUnichar * *aManufacturer) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetManufacturer(aManufacturer); } \
  NS_IMETHOD GetProduct(PRUnichar * *aProduct) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProduct(aProduct); } \
  NS_IMETHOD GetSerialNumber(PRUnichar * *aSerialNumber) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSerialNumber(aSerialNumber); } \
  NS_IMETHOD GetAddress(PRUnichar * *aAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAddress(aAddress); } \
  NS_IMETHOD GetPort(PRUint16 *aPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPort(aPort); } \
  NS_IMETHOD GetVersion(PRUint16 *aVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVersion(aVersion); } \
  NS_IMETHOD GetPortVersion(PRUint16 *aPortVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPortVersion(aPortVersion); } \
  NS_IMETHOD GetRemote(PRBool *aRemote) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRemote(aRemote); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IUSBDevice
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IUSBDEVICE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IUSBDevice)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring id; */
NS_IMETHODIMP _MYCLASS_::GetId(PRUnichar * *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned short vendorId; */
NS_IMETHODIMP _MYCLASS_::GetVendorId(PRUint16 *aVendorId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned short productId; */
NS_IMETHODIMP _MYCLASS_::GetProductId(PRUint16 *aProductId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned short revision; */
NS_IMETHODIMP _MYCLASS_::GetRevision(PRUint16 *aRevision)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring manufacturer; */
NS_IMETHODIMP _MYCLASS_::GetManufacturer(PRUnichar * *aManufacturer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring product; */
NS_IMETHODIMP _MYCLASS_::GetProduct(PRUnichar * *aProduct)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring serialNumber; */
NS_IMETHODIMP _MYCLASS_::GetSerialNumber(PRUnichar * *aSerialNumber)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring address; */
NS_IMETHODIMP _MYCLASS_::GetAddress(PRUnichar * *aAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned short port; */
NS_IMETHODIMP _MYCLASS_::GetPort(PRUint16 *aPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned short version; */
NS_IMETHODIMP _MYCLASS_::GetVersion(PRUint16 *aVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned short portVersion; */
NS_IMETHODIMP _MYCLASS_::GetPortVersion(PRUint16 *aPortVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean remote; */
NS_IMETHODIMP _MYCLASS_::GetRemote(PRBool *aRemote)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IUSBDevice_GETTER_Id_TO(smth) NS_IMETHOD GetId (PRUnichar * * aId) { return smth GetId (aId); }
#define COM_FORWARD_IUSBDevice_GETTER_Id_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_Id_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_Id_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_Id_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_VendorId_TO(smth) NS_IMETHOD GetVendorId (PRUint16 * aVendorId) { return smth GetVendorId (aVendorId); }
#define COM_FORWARD_IUSBDevice_GETTER_VendorId_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_VendorId_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_VendorId_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_VendorId_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_ProductId_TO(smth) NS_IMETHOD GetProductId (PRUint16 * aProductId) { return smth GetProductId (aProductId); }
#define COM_FORWARD_IUSBDevice_GETTER_ProductId_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_ProductId_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_ProductId_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_ProductId_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_Revision_TO(smth) NS_IMETHOD GetRevision (PRUint16 * aRevision) { return smth GetRevision (aRevision); }
#define COM_FORWARD_IUSBDevice_GETTER_Revision_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_Revision_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_Revision_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_Revision_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_Manufacturer_TO(smth) NS_IMETHOD GetManufacturer (PRUnichar * * aManufacturer) { return smth GetManufacturer (aManufacturer); }
#define COM_FORWARD_IUSBDevice_GETTER_Manufacturer_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_Manufacturer_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_Manufacturer_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_Manufacturer_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_Product_TO(smth) NS_IMETHOD GetProduct (PRUnichar * * aProduct) { return smth GetProduct (aProduct); }
#define COM_FORWARD_IUSBDevice_GETTER_Product_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_Product_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_Product_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_Product_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_SerialNumber_TO(smth) NS_IMETHOD GetSerialNumber (PRUnichar * * aSerialNumber) { return smth GetSerialNumber (aSerialNumber); }
#define COM_FORWARD_IUSBDevice_GETTER_SerialNumber_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_SerialNumber_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_SerialNumber_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_SerialNumber_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_Address_TO(smth) NS_IMETHOD GetAddress (PRUnichar * * aAddress) { return smth GetAddress (aAddress); }
#define COM_FORWARD_IUSBDevice_GETTER_Address_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_Address_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_Address_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_Address_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_Port_TO(smth) NS_IMETHOD GetPort (PRUint16 * aPort) { return smth GetPort (aPort); }
#define COM_FORWARD_IUSBDevice_GETTER_Port_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_Port_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_Port_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_Port_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_Version_TO(smth) NS_IMETHOD GetVersion (PRUint16 * aVersion) { return smth GetVersion (aVersion); }
#define COM_FORWARD_IUSBDevice_GETTER_Version_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_Version_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_Version_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_Version_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_PortVersion_TO(smth) NS_IMETHOD GetPortVersion (PRUint16 * aPortVersion) { return smth GetPortVersion (aPortVersion); }
#define COM_FORWARD_IUSBDevice_GETTER_PortVersion_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_PortVersion_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_PortVersion_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_PortVersion_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_Remote_TO(smth) NS_IMETHOD GetRemote (PRBool * aRemote) { return smth GetRemote (aRemote); }
#define COM_FORWARD_IUSBDevice_GETTER_Remote_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_Remote_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_Remote_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_Remote_TO (base::)
#define COM_FORWARD_IUSBDevice_TO(smth) NS_FORWARD_IUSBDEVICE (smth)
#define COM_FORWARD_IUSBDevice_TO_OBJ(obj) COM_FORWARD_IUSBDevice_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_TO_BASE(base) COM_FORWARD_IUSBDevice_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IUSBDevice;

/* starting interface:    IUSBDeviceFilter */
#define IUSBDEVICEFILTER_IID_STR "d6831fb4-1a94-4c2c-96ef-8d0d6192066d"

#define IUSBDEVICEFILTER_IID \
  {0xd6831fb4, 0x1a94, 0x4c2c, \
    { 0x96, 0xef, 0x8d, 0x0d, 0x61, 0x92, 0x06, 0x6d }}

class NS_NO_VTABLE IUSBDeviceFilter : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IUSBDEVICEFILTER_IID)

  /* attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;
  NS_IMETHOD SetName(const PRUnichar * aName) = 0;

  /* attribute boolean active; */
  NS_IMETHOD GetActive(PRBool *aActive) = 0;
  NS_IMETHOD SetActive(PRBool aActive) = 0;

  /* attribute wstring vendorId; */
  NS_IMETHOD GetVendorId(PRUnichar * *aVendorId) = 0;
  NS_IMETHOD SetVendorId(const PRUnichar * aVendorId) = 0;

  /* attribute wstring productId; */
  NS_IMETHOD GetProductId(PRUnichar * *aProductId) = 0;
  NS_IMETHOD SetProductId(const PRUnichar * aProductId) = 0;

  /* attribute wstring revision; */
  NS_IMETHOD GetRevision(PRUnichar * *aRevision) = 0;
  NS_IMETHOD SetRevision(const PRUnichar * aRevision) = 0;

  /* attribute wstring manufacturer; */
  NS_IMETHOD GetManufacturer(PRUnichar * *aManufacturer) = 0;
  NS_IMETHOD SetManufacturer(const PRUnichar * aManufacturer) = 0;

  /* attribute wstring product; */
  NS_IMETHOD GetProduct(PRUnichar * *aProduct) = 0;
  NS_IMETHOD SetProduct(const PRUnichar * aProduct) = 0;

  /* attribute wstring serialNumber; */
  NS_IMETHOD GetSerialNumber(PRUnichar * *aSerialNumber) = 0;
  NS_IMETHOD SetSerialNumber(const PRUnichar * aSerialNumber) = 0;

  /* attribute wstring port; */
  NS_IMETHOD GetPort(PRUnichar * *aPort) = 0;
  NS_IMETHOD SetPort(const PRUnichar * aPort) = 0;

  /* attribute wstring remote; */
  NS_IMETHOD GetRemote(PRUnichar * *aRemote) = 0;
  NS_IMETHOD SetRemote(const PRUnichar * aRemote) = 0;

  /* attribute unsigned long maskedInterfaces; */
  NS_IMETHOD GetMaskedInterfaces(PRUint32 *aMaskedInterfaces) = 0;
  NS_IMETHOD SetMaskedInterfaces(PRUint32 aMaskedInterfaces) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IUSBDEVICEFILTER \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD SetName(const PRUnichar * aName); \
  NS_IMETHOD GetActive(PRBool *aActive); \
  NS_IMETHOD SetActive(PRBool aActive); \
  NS_IMETHOD GetVendorId(PRUnichar * *aVendorId); \
  NS_IMETHOD SetVendorId(const PRUnichar * aVendorId); \
  NS_IMETHOD GetProductId(PRUnichar * *aProductId); \
  NS_IMETHOD SetProductId(const PRUnichar * aProductId); \
  NS_IMETHOD GetRevision(PRUnichar * *aRevision); \
  NS_IMETHOD SetRevision(const PRUnichar * aRevision); \
  NS_IMETHOD GetManufacturer(PRUnichar * *aManufacturer); \
  NS_IMETHOD SetManufacturer(const PRUnichar * aManufacturer); \
  NS_IMETHOD GetProduct(PRUnichar * *aProduct); \
  NS_IMETHOD SetProduct(const PRUnichar * aProduct); \
  NS_IMETHOD GetSerialNumber(PRUnichar * *aSerialNumber); \
  NS_IMETHOD SetSerialNumber(const PRUnichar * aSerialNumber); \
  NS_IMETHOD GetPort(PRUnichar * *aPort); \
  NS_IMETHOD SetPort(const PRUnichar * aPort); \
  NS_IMETHOD GetRemote(PRUnichar * *aRemote); \
  NS_IMETHOD SetRemote(const PRUnichar * aRemote); \
  NS_IMETHOD GetMaskedInterfaces(PRUint32 *aMaskedInterfaces); \
  NS_IMETHOD SetMaskedInterfaces(PRUint32 aMaskedInterfaces); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IUSBDEVICEFILTER(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD SetName(const PRUnichar * aName) { return _to SetName(aName); } \
  NS_IMETHOD GetActive(PRBool *aActive) { return _to GetActive(aActive); } \
  NS_IMETHOD SetActive(PRBool aActive) { return _to SetActive(aActive); } \
  NS_IMETHOD GetVendorId(PRUnichar * *aVendorId) { return _to GetVendorId(aVendorId); } \
  NS_IMETHOD SetVendorId(const PRUnichar * aVendorId) { return _to SetVendorId(aVendorId); } \
  NS_IMETHOD GetProductId(PRUnichar * *aProductId) { return _to GetProductId(aProductId); } \
  NS_IMETHOD SetProductId(const PRUnichar * aProductId) { return _to SetProductId(aProductId); } \
  NS_IMETHOD GetRevision(PRUnichar * *aRevision) { return _to GetRevision(aRevision); } \
  NS_IMETHOD SetRevision(const PRUnichar * aRevision) { return _to SetRevision(aRevision); } \
  NS_IMETHOD GetManufacturer(PRUnichar * *aManufacturer) { return _to GetManufacturer(aManufacturer); } \
  NS_IMETHOD SetManufacturer(const PRUnichar * aManufacturer) { return _to SetManufacturer(aManufacturer); } \
  NS_IMETHOD GetProduct(PRUnichar * *aProduct) { return _to GetProduct(aProduct); } \
  NS_IMETHOD SetProduct(const PRUnichar * aProduct) { return _to SetProduct(aProduct); } \
  NS_IMETHOD GetSerialNumber(PRUnichar * *aSerialNumber) { return _to GetSerialNumber(aSerialNumber); } \
  NS_IMETHOD SetSerialNumber(const PRUnichar * aSerialNumber) { return _to SetSerialNumber(aSerialNumber); } \
  NS_IMETHOD GetPort(PRUnichar * *aPort) { return _to GetPort(aPort); } \
  NS_IMETHOD SetPort(const PRUnichar * aPort) { return _to SetPort(aPort); } \
  NS_IMETHOD GetRemote(PRUnichar * *aRemote) { return _to GetRemote(aRemote); } \
  NS_IMETHOD SetRemote(const PRUnichar * aRemote) { return _to SetRemote(aRemote); } \
  NS_IMETHOD GetMaskedInterfaces(PRUint32 *aMaskedInterfaces) { return _to GetMaskedInterfaces(aMaskedInterfaces); } \
  NS_IMETHOD SetMaskedInterfaces(PRUint32 aMaskedInterfaces) { return _to SetMaskedInterfaces(aMaskedInterfaces); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IUSBDEVICEFILTER(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(const PRUnichar * aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetName(aName); } \
  NS_IMETHOD GetActive(PRBool *aActive) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetActive(aActive); } \
  NS_IMETHOD SetActive(PRBool aActive) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetActive(aActive); } \
  NS_IMETHOD GetVendorId(PRUnichar * *aVendorId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVendorId(aVendorId); } \
  NS_IMETHOD SetVendorId(const PRUnichar * aVendorId) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVendorId(aVendorId); } \
  NS_IMETHOD GetProductId(PRUnichar * *aProductId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProductId(aProductId); } \
  NS_IMETHOD SetProductId(const PRUnichar * aProductId) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetProductId(aProductId); } \
  NS_IMETHOD GetRevision(PRUnichar * *aRevision) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRevision(aRevision); } \
  NS_IMETHOD SetRevision(const PRUnichar * aRevision) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRevision(aRevision); } \
  NS_IMETHOD GetManufacturer(PRUnichar * *aManufacturer) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetManufacturer(aManufacturer); } \
  NS_IMETHOD SetManufacturer(const PRUnichar * aManufacturer) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetManufacturer(aManufacturer); } \
  NS_IMETHOD GetProduct(PRUnichar * *aProduct) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProduct(aProduct); } \
  NS_IMETHOD SetProduct(const PRUnichar * aProduct) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetProduct(aProduct); } \
  NS_IMETHOD GetSerialNumber(PRUnichar * *aSerialNumber) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSerialNumber(aSerialNumber); } \
  NS_IMETHOD SetSerialNumber(const PRUnichar * aSerialNumber) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSerialNumber(aSerialNumber); } \
  NS_IMETHOD GetPort(PRUnichar * *aPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPort(aPort); } \
  NS_IMETHOD SetPort(const PRUnichar * aPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPort(aPort); } \
  NS_IMETHOD GetRemote(PRUnichar * *aRemote) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRemote(aRemote); } \
  NS_IMETHOD SetRemote(const PRUnichar * aRemote) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRemote(aRemote); } \
  NS_IMETHOD GetMaskedInterfaces(PRUint32 *aMaskedInterfaces) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaskedInterfaces(aMaskedInterfaces); } \
  NS_IMETHOD SetMaskedInterfaces(PRUint32 aMaskedInterfaces) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMaskedInterfaces(aMaskedInterfaces); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IUSBDeviceFilter
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IUSBDEVICEFILTER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IUSBDeviceFilter)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetName(const PRUnichar * aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean active; */
NS_IMETHODIMP _MYCLASS_::GetActive(PRBool *aActive)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetActive(PRBool aActive)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring vendorId; */
NS_IMETHODIMP _MYCLASS_::GetVendorId(PRUnichar * *aVendorId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetVendorId(const PRUnichar * aVendorId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring productId; */
NS_IMETHODIMP _MYCLASS_::GetProductId(PRUnichar * *aProductId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetProductId(const PRUnichar * aProductId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring revision; */
NS_IMETHODIMP _MYCLASS_::GetRevision(PRUnichar * *aRevision)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetRevision(const PRUnichar * aRevision)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring manufacturer; */
NS_IMETHODIMP _MYCLASS_::GetManufacturer(PRUnichar * *aManufacturer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetManufacturer(const PRUnichar * aManufacturer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring product; */
NS_IMETHODIMP _MYCLASS_::GetProduct(PRUnichar * *aProduct)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetProduct(const PRUnichar * aProduct)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring serialNumber; */
NS_IMETHODIMP _MYCLASS_::GetSerialNumber(PRUnichar * *aSerialNumber)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetSerialNumber(const PRUnichar * aSerialNumber)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring port; */
NS_IMETHODIMP _MYCLASS_::GetPort(PRUnichar * *aPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPort(const PRUnichar * aPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring remote; */
NS_IMETHODIMP _MYCLASS_::GetRemote(PRUnichar * *aRemote)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetRemote(const PRUnichar * aRemote)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long maskedInterfaces; */
NS_IMETHODIMP _MYCLASS_::GetMaskedInterfaces(PRUint32 *aMaskedInterfaces)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetMaskedInterfaces(PRUint32 aMaskedInterfaces)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IUSBDeviceFilter_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Name_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_Name_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Name_TO(smth) NS_IMETHOD SetName (const PRUnichar * aName) { return smth SetName (aName); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Name_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_Name_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Name_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_Name_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Active_TO(smth) NS_IMETHOD GetActive (PRBool * aActive) { return smth GetActive (aActive); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Active_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_Active_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Active_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_Active_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Active_TO(smth) NS_IMETHOD SetActive (PRBool aActive) { return smth SetActive (aActive); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Active_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_Active_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Active_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_Active_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_VendorId_TO(smth) NS_IMETHOD GetVendorId (PRUnichar * * aVendorId) { return smth GetVendorId (aVendorId); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_VendorId_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_VendorId_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_VendorId_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_VendorId_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_VendorId_TO(smth) NS_IMETHOD SetVendorId (const PRUnichar * aVendorId) { return smth SetVendorId (aVendorId); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_VendorId_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_VendorId_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_VendorId_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_VendorId_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_ProductId_TO(smth) NS_IMETHOD GetProductId (PRUnichar * * aProductId) { return smth GetProductId (aProductId); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_ProductId_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_ProductId_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_ProductId_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_ProductId_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_ProductId_TO(smth) NS_IMETHOD SetProductId (const PRUnichar * aProductId) { return smth SetProductId (aProductId); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_ProductId_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_ProductId_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_ProductId_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_ProductId_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Revision_TO(smth) NS_IMETHOD GetRevision (PRUnichar * * aRevision) { return smth GetRevision (aRevision); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Revision_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_Revision_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Revision_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_Revision_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Revision_TO(smth) NS_IMETHOD SetRevision (const PRUnichar * aRevision) { return smth SetRevision (aRevision); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Revision_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_Revision_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Revision_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_Revision_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Manufacturer_TO(smth) NS_IMETHOD GetManufacturer (PRUnichar * * aManufacturer) { return smth GetManufacturer (aManufacturer); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Manufacturer_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_Manufacturer_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Manufacturer_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_Manufacturer_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Manufacturer_TO(smth) NS_IMETHOD SetManufacturer (const PRUnichar * aManufacturer) { return smth SetManufacturer (aManufacturer); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Manufacturer_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_Manufacturer_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Manufacturer_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_Manufacturer_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Product_TO(smth) NS_IMETHOD GetProduct (PRUnichar * * aProduct) { return smth GetProduct (aProduct); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Product_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_Product_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Product_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_Product_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Product_TO(smth) NS_IMETHOD SetProduct (const PRUnichar * aProduct) { return smth SetProduct (aProduct); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Product_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_Product_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Product_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_Product_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_SerialNumber_TO(smth) NS_IMETHOD GetSerialNumber (PRUnichar * * aSerialNumber) { return smth GetSerialNumber (aSerialNumber); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_SerialNumber_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_SerialNumber_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_SerialNumber_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_SerialNumber_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_SerialNumber_TO(smth) NS_IMETHOD SetSerialNumber (const PRUnichar * aSerialNumber) { return smth SetSerialNumber (aSerialNumber); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_SerialNumber_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_SerialNumber_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_SerialNumber_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_SerialNumber_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Port_TO(smth) NS_IMETHOD GetPort (PRUnichar * * aPort) { return smth GetPort (aPort); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Port_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_Port_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Port_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_Port_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Port_TO(smth) NS_IMETHOD SetPort (const PRUnichar * aPort) { return smth SetPort (aPort); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Port_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_Port_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Port_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_Port_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Remote_TO(smth) NS_IMETHOD GetRemote (PRUnichar * * aRemote) { return smth GetRemote (aRemote); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Remote_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_Remote_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Remote_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_Remote_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Remote_TO(smth) NS_IMETHOD SetRemote (const PRUnichar * aRemote) { return smth SetRemote (aRemote); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Remote_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_Remote_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Remote_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_Remote_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_MaskedInterfaces_TO(smth) NS_IMETHOD GetMaskedInterfaces (PRUint32 * aMaskedInterfaces) { return smth GetMaskedInterfaces (aMaskedInterfaces); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_MaskedInterfaces_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_MaskedInterfaces_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_MaskedInterfaces_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_MaskedInterfaces_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_MaskedInterfaces_TO(smth) NS_IMETHOD SetMaskedInterfaces (PRUint32 aMaskedInterfaces) { return smth SetMaskedInterfaces (aMaskedInterfaces); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_MaskedInterfaces_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_MaskedInterfaces_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_MaskedInterfaces_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_MaskedInterfaces_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_TO(smth) NS_FORWARD_IUSBDEVICEFILTER (smth)
#define COM_FORWARD_IUSBDeviceFilter_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IUSBDeviceFilter;

/* starting interface:    IHostUSBDevice */
#define IHOSTUSBDEVICE_IID_STR "173b4b44-d268-4334-a00d-b6521c9a740a"

#define IHOSTUSBDEVICE_IID \
  {0x173b4b44, 0xd268, 0x4334, \
    { 0xa0, 0x0d, 0xb6, 0x52, 0x1c, 0x9a, 0x74, 0x0a }}

class NS_NO_VTABLE IHostUSBDevice : public IUSBDevice {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOSTUSBDEVICE_IID)

  /* readonly attribute PRUint32 state; */
  NS_IMETHOD GetState(PRUint32 *aState) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOSTUSBDEVICE \
  NS_IMETHOD GetState(PRUint32 *aState); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOSTUSBDEVICE(_to) \
  NS_IMETHOD GetState(PRUint32 *aState) { return _to GetState(aState); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHOSTUSBDEVICE(_to) \
  NS_IMETHOD GetState(PRUint32 *aState) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetState(aState); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IHostUSBDevice
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHOSTUSBDEVICE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IHostUSBDevice)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute PRUint32 state; */
NS_IMETHODIMP _MYCLASS_::GetState(PRUint32 *aState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IHostUSBDevice_GETTER_State_TO(smth) NS_IMETHOD GetState (PRUint32 * aState) { return smth GetState (aState); }
#define COM_FORWARD_IHostUSBDevice_GETTER_State_TO_OBJ(obj) COM_FORWARD_IHostUSBDevice_GETTER_State_TO ((obj)->)
#define COM_FORWARD_IHostUSBDevice_GETTER_State_TO_BASE(base) COM_FORWARD_IHostUSBDevice_GETTER_State_TO (base::)
#define COM_FORWARD_IHostUSBDevice_TO(smth) NS_FORWARD_IHOSTUSBDEVICE (smth)
#define COM_FORWARD_IHostUSBDevice_TO_OBJ(obj) COM_FORWARD_IHostUSBDevice_TO ((obj)->)
#define COM_FORWARD_IHostUSBDevice_TO_BASE(base) COM_FORWARD_IHostUSBDevice_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IHostUSBDevice;

/* starting interface:    IHostUSBDeviceFilter */
#define IHOSTUSBDEVICEFILTER_IID_STR "4cc70246-d74a-400f-8222-3900489c0374"

#define IHOSTUSBDEVICEFILTER_IID \
  {0x4cc70246, 0xd74a, 0x400f, \
    { 0x82, 0x22, 0x39, 0x00, 0x48, 0x9c, 0x03, 0x74 }}

class NS_NO_VTABLE IHostUSBDeviceFilter : public IUSBDeviceFilter {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOSTUSBDEVICEFILTER_IID)

  /* attribute PRUint32 action; */
  NS_IMETHOD GetAction(PRUint32 *aAction) = 0;
  NS_IMETHOD SetAction(PRUint32 aAction) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOSTUSBDEVICEFILTER \
  NS_IMETHOD GetAction(PRUint32 *aAction); \
  NS_IMETHOD SetAction(PRUint32 aAction); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOSTUSBDEVICEFILTER(_to) \
  NS_IMETHOD GetAction(PRUint32 *aAction) { return _to GetAction(aAction); } \
  NS_IMETHOD SetAction(PRUint32 aAction) { return _to SetAction(aAction); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHOSTUSBDEVICEFILTER(_to) \
  NS_IMETHOD GetAction(PRUint32 *aAction) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAction(aAction); } \
  NS_IMETHOD SetAction(PRUint32 aAction) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAction(aAction); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IHostUSBDeviceFilter
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHOSTUSBDEVICEFILTER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IHostUSBDeviceFilter)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* attribute PRUint32 action; */
NS_IMETHODIMP _MYCLASS_::GetAction(PRUint32 *aAction)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAction(PRUint32 aAction)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IHostUSBDeviceFilter_GETTER_Action_TO(smth) NS_IMETHOD GetAction (PRUint32 * aAction) { return smth GetAction (aAction); }
#define COM_FORWARD_IHostUSBDeviceFilter_GETTER_Action_TO_OBJ(obj) COM_FORWARD_IHostUSBDeviceFilter_GETTER_Action_TO ((obj)->)
#define COM_FORWARD_IHostUSBDeviceFilter_GETTER_Action_TO_BASE(base) COM_FORWARD_IHostUSBDeviceFilter_GETTER_Action_TO (base::)
#define COM_FORWARD_IHostUSBDeviceFilter_SETTER_Action_TO(smth) NS_IMETHOD SetAction (PRUint32 aAction) { return smth SetAction (aAction); }
#define COM_FORWARD_IHostUSBDeviceFilter_SETTER_Action_TO_OBJ(obj) COM_FORWARD_IHostUSBDeviceFilter_SETTER_Action_TO ((obj)->)
#define COM_FORWARD_IHostUSBDeviceFilter_SETTER_Action_TO_BASE(base) COM_FORWARD_IHostUSBDeviceFilter_SETTER_Action_TO (base::)
#define COM_FORWARD_IHostUSBDeviceFilter_TO(smth) NS_FORWARD_IHOSTUSBDEVICEFILTER (smth)
#define COM_FORWARD_IHostUSBDeviceFilter_TO_OBJ(obj) COM_FORWARD_IHostUSBDeviceFilter_TO ((obj)->)
#define COM_FORWARD_IHostUSBDeviceFilter_TO_BASE(base) COM_FORWARD_IHostUSBDeviceFilter_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IHostUSBDeviceFilter;

/* starting interface:    IAudioAdapter */
#define IAUDIOADAPTER_IID_STR "921873db-5f3f-4b69-91f9-7be9e535a2cb"

#define IAUDIOADAPTER_IID \
  {0x921873db, 0x5f3f, 0x4b69, \
    { 0x91, 0xf9, 0x7b, 0xe9, 0xe5, 0x35, 0xa2, 0xcb }}

class NS_NO_VTABLE IAudioAdapter : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IAUDIOADAPTER_IID)

  /* attribute boolean enabled; */
  NS_IMETHOD GetEnabled(PRBool *aEnabled) = 0;
  NS_IMETHOD SetEnabled(PRBool aEnabled) = 0;

  /* attribute PRUint32 audioController; */
  NS_IMETHOD GetAudioController(PRUint32 *aAudioController) = 0;
  NS_IMETHOD SetAudioController(PRUint32 aAudioController) = 0;

  /* attribute PRUint32 audioDriver; */
  NS_IMETHOD GetAudioDriver(PRUint32 *aAudioDriver) = 0;
  NS_IMETHOD SetAudioDriver(PRUint32 aAudioDriver) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IAUDIOADAPTER \
  NS_IMETHOD GetEnabled(PRBool *aEnabled); \
  NS_IMETHOD SetEnabled(PRBool aEnabled); \
  NS_IMETHOD GetAudioController(PRUint32 *aAudioController); \
  NS_IMETHOD SetAudioController(PRUint32 aAudioController); \
  NS_IMETHOD GetAudioDriver(PRUint32 *aAudioDriver); \
  NS_IMETHOD SetAudioDriver(PRUint32 aAudioDriver); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IAUDIOADAPTER(_to) \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return _to GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return _to SetEnabled(aEnabled); } \
  NS_IMETHOD GetAudioController(PRUint32 *aAudioController) { return _to GetAudioController(aAudioController); } \
  NS_IMETHOD SetAudioController(PRUint32 aAudioController) { return _to SetAudioController(aAudioController); } \
  NS_IMETHOD GetAudioDriver(PRUint32 *aAudioDriver) { return _to GetAudioDriver(aAudioDriver); } \
  NS_IMETHOD SetAudioDriver(PRUint32 aAudioDriver) { return _to SetAudioDriver(aAudioDriver); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IAUDIOADAPTER(_to) \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEnabled(aEnabled); } \
  NS_IMETHOD GetAudioController(PRUint32 *aAudioController) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAudioController(aAudioController); } \
  NS_IMETHOD SetAudioController(PRUint32 aAudioController) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAudioController(aAudioController); } \
  NS_IMETHOD GetAudioDriver(PRUint32 *aAudioDriver) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAudioDriver(aAudioDriver); } \
  NS_IMETHOD SetAudioDriver(PRUint32 aAudioDriver) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAudioDriver(aAudioDriver); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IAudioAdapter
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IAUDIOADAPTER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IAudioAdapter)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* attribute boolean enabled; */
NS_IMETHODIMP _MYCLASS_::GetEnabled(PRBool *aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetEnabled(PRBool aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 audioController; */
NS_IMETHODIMP _MYCLASS_::GetAudioController(PRUint32 *aAudioController)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAudioController(PRUint32 aAudioController)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 audioDriver; */
NS_IMETHODIMP _MYCLASS_::GetAudioDriver(PRUint32 *aAudioDriver)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAudioDriver(PRUint32 aAudioDriver)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IAudioAdapter_GETTER_Enabled_TO(smth) NS_IMETHOD GetEnabled (PRBool * aEnabled) { return smth GetEnabled (aEnabled); }
#define COM_FORWARD_IAudioAdapter_GETTER_Enabled_TO_OBJ(obj) COM_FORWARD_IAudioAdapter_GETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_IAudioAdapter_GETTER_Enabled_TO_BASE(base) COM_FORWARD_IAudioAdapter_GETTER_Enabled_TO (base::)
#define COM_FORWARD_IAudioAdapter_SETTER_Enabled_TO(smth) NS_IMETHOD SetEnabled (PRBool aEnabled) { return smth SetEnabled (aEnabled); }
#define COM_FORWARD_IAudioAdapter_SETTER_Enabled_TO_OBJ(obj) COM_FORWARD_IAudioAdapter_SETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_IAudioAdapter_SETTER_Enabled_TO_BASE(base) COM_FORWARD_IAudioAdapter_SETTER_Enabled_TO (base::)
#define COM_FORWARD_IAudioAdapter_GETTER_AudioController_TO(smth) NS_IMETHOD GetAudioController (PRUint32 * aAudioController) { return smth GetAudioController (aAudioController); }
#define COM_FORWARD_IAudioAdapter_GETTER_AudioController_TO_OBJ(obj) COM_FORWARD_IAudioAdapter_GETTER_AudioController_TO ((obj)->)
#define COM_FORWARD_IAudioAdapter_GETTER_AudioController_TO_BASE(base) COM_FORWARD_IAudioAdapter_GETTER_AudioController_TO (base::)
#define COM_FORWARD_IAudioAdapter_SETTER_AudioController_TO(smth) NS_IMETHOD SetAudioController (PRUint32 aAudioController) { return smth SetAudioController (aAudioController); }
#define COM_FORWARD_IAudioAdapter_SETTER_AudioController_TO_OBJ(obj) COM_FORWARD_IAudioAdapter_SETTER_AudioController_TO ((obj)->)
#define COM_FORWARD_IAudioAdapter_SETTER_AudioController_TO_BASE(base) COM_FORWARD_IAudioAdapter_SETTER_AudioController_TO (base::)
#define COM_FORWARD_IAudioAdapter_GETTER_AudioDriver_TO(smth) NS_IMETHOD GetAudioDriver (PRUint32 * aAudioDriver) { return smth GetAudioDriver (aAudioDriver); }
#define COM_FORWARD_IAudioAdapter_GETTER_AudioDriver_TO_OBJ(obj) COM_FORWARD_IAudioAdapter_GETTER_AudioDriver_TO ((obj)->)
#define COM_FORWARD_IAudioAdapter_GETTER_AudioDriver_TO_BASE(base) COM_FORWARD_IAudioAdapter_GETTER_AudioDriver_TO (base::)
#define COM_FORWARD_IAudioAdapter_SETTER_AudioDriver_TO(smth) NS_IMETHOD SetAudioDriver (PRUint32 aAudioDriver) { return smth SetAudioDriver (aAudioDriver); }
#define COM_FORWARD_IAudioAdapter_SETTER_AudioDriver_TO_OBJ(obj) COM_FORWARD_IAudioAdapter_SETTER_AudioDriver_TO ((obj)->)
#define COM_FORWARD_IAudioAdapter_SETTER_AudioDriver_TO_BASE(base) COM_FORWARD_IAudioAdapter_SETTER_AudioDriver_TO (base::)
#define COM_FORWARD_IAudioAdapter_TO(smth) NS_FORWARD_IAUDIOADAPTER (smth)
#define COM_FORWARD_IAudioAdapter_TO_OBJ(obj) COM_FORWARD_IAudioAdapter_TO ((obj)->)
#define COM_FORWARD_IAudioAdapter_TO_BASE(base) COM_FORWARD_IAudioAdapter_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IAudioAdapter;

/* starting interface:    IVRDEServer */
#define IVRDESERVER_IID_STR "d38de40a-c2c1-4e95-b5a4-167b05f5694c"

#define IVRDESERVER_IID \
  {0xd38de40a, 0xc2c1, 0x4e95, \
    { 0xb5, 0xa4, 0x16, 0x7b, 0x05, 0xf5, 0x69, 0x4c }}

class NS_NO_VTABLE IVRDEServer : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVRDESERVER_IID)

  /* attribute boolean enabled; */
  NS_IMETHOD GetEnabled(PRBool *aEnabled) = 0;
  NS_IMETHOD SetEnabled(PRBool aEnabled) = 0;

  /* attribute PRUint32 authType; */
  NS_IMETHOD GetAuthType(PRUint32 *aAuthType) = 0;
  NS_IMETHOD SetAuthType(PRUint32 aAuthType) = 0;

  /* attribute unsigned long authTimeout; */
  NS_IMETHOD GetAuthTimeout(PRUint32 *aAuthTimeout) = 0;
  NS_IMETHOD SetAuthTimeout(PRUint32 aAuthTimeout) = 0;

  /* attribute boolean allowMultiConnection; */
  NS_IMETHOD GetAllowMultiConnection(PRBool *aAllowMultiConnection) = 0;
  NS_IMETHOD SetAllowMultiConnection(PRBool aAllowMultiConnection) = 0;

  /* attribute boolean reuseSingleConnection; */
  NS_IMETHOD GetReuseSingleConnection(PRBool *aReuseSingleConnection) = 0;
  NS_IMETHOD SetReuseSingleConnection(PRBool aReuseSingleConnection) = 0;

  /* attribute wstring VRDEExtPack; */
  NS_IMETHOD GetVRDEExtPack(PRUnichar * *aVRDEExtPack) = 0;
  NS_IMETHOD SetVRDEExtPack(const PRUnichar * aVRDEExtPack) = 0;

  /* attribute wstring authLibrary; */
  NS_IMETHOD GetAuthLibrary(PRUnichar * *aAuthLibrary) = 0;
  NS_IMETHOD SetAuthLibrary(const PRUnichar * aAuthLibrary) = 0;

  /* void getVRDEProperties (out unsigned long VRDEPropertiesSize, [array, size_is (VRDEPropertiesSize), retval] out wstring VRDEProperties); */
  NS_IMETHOD GetVRDEProperties(PRUint32 *VRDEPropertiesSize, PRUnichar ***VRDEProperties) = 0;

  /* void setVRDEProperty (in wstring key, in wstring value); */
  NS_IMETHOD SetVRDEProperty(const PRUnichar *key, const PRUnichar *value) = 0;

  /* void getVRDEProperty (in wstring key, [retval] out wstring value); */
  NS_IMETHOD GetVRDEProperty(const PRUnichar *key, PRUnichar **value) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVRDESERVER \
  NS_IMETHOD GetEnabled(PRBool *aEnabled); \
  NS_IMETHOD SetEnabled(PRBool aEnabled); \
  NS_IMETHOD GetAuthType(PRUint32 *aAuthType); \
  NS_IMETHOD SetAuthType(PRUint32 aAuthType); \
  NS_IMETHOD GetAuthTimeout(PRUint32 *aAuthTimeout); \
  NS_IMETHOD SetAuthTimeout(PRUint32 aAuthTimeout); \
  NS_IMETHOD GetAllowMultiConnection(PRBool *aAllowMultiConnection); \
  NS_IMETHOD SetAllowMultiConnection(PRBool aAllowMultiConnection); \
  NS_IMETHOD GetReuseSingleConnection(PRBool *aReuseSingleConnection); \
  NS_IMETHOD SetReuseSingleConnection(PRBool aReuseSingleConnection); \
  NS_IMETHOD GetVRDEExtPack(PRUnichar * *aVRDEExtPack); \
  NS_IMETHOD SetVRDEExtPack(const PRUnichar * aVRDEExtPack); \
  NS_IMETHOD GetAuthLibrary(PRUnichar * *aAuthLibrary); \
  NS_IMETHOD SetAuthLibrary(const PRUnichar * aAuthLibrary); \
  NS_IMETHOD GetVRDEProperties(PRUint32 *VRDEPropertiesSize, PRUnichar ***VRDEProperties); \
  NS_IMETHOD SetVRDEProperty(const PRUnichar *key, const PRUnichar *value); \
  NS_IMETHOD GetVRDEProperty(const PRUnichar *key, PRUnichar **value); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IVRDESERVER(_to) \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return _to GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return _to SetEnabled(aEnabled); } \
  NS_IMETHOD GetAuthType(PRUint32 *aAuthType) { return _to GetAuthType(aAuthType); } \
  NS_IMETHOD SetAuthType(PRUint32 aAuthType) { return _to SetAuthType(aAuthType); } \
  NS_IMETHOD GetAuthTimeout(PRUint32 *aAuthTimeout) { return _to GetAuthTimeout(aAuthTimeout); } \
  NS_IMETHOD SetAuthTimeout(PRUint32 aAuthTimeout) { return _to SetAuthTimeout(aAuthTimeout); } \
  NS_IMETHOD GetAllowMultiConnection(PRBool *aAllowMultiConnection) { return _to GetAllowMultiConnection(aAllowMultiConnection); } \
  NS_IMETHOD SetAllowMultiConnection(PRBool aAllowMultiConnection) { return _to SetAllowMultiConnection(aAllowMultiConnection); } \
  NS_IMETHOD GetReuseSingleConnection(PRBool *aReuseSingleConnection) { return _to GetReuseSingleConnection(aReuseSingleConnection); } \
  NS_IMETHOD SetReuseSingleConnection(PRBool aReuseSingleConnection) { return _to SetReuseSingleConnection(aReuseSingleConnection); } \
  NS_IMETHOD GetVRDEExtPack(PRUnichar * *aVRDEExtPack) { return _to GetVRDEExtPack(aVRDEExtPack); } \
  NS_IMETHOD SetVRDEExtPack(const PRUnichar * aVRDEExtPack) { return _to SetVRDEExtPack(aVRDEExtPack); } \
  NS_IMETHOD GetAuthLibrary(PRUnichar * *aAuthLibrary) { return _to GetAuthLibrary(aAuthLibrary); } \
  NS_IMETHOD SetAuthLibrary(const PRUnichar * aAuthLibrary) { return _to SetAuthLibrary(aAuthLibrary); } \
  NS_IMETHOD GetVRDEProperties(PRUint32 *VRDEPropertiesSize, PRUnichar ***VRDEProperties) { return _to GetVRDEProperties(VRDEPropertiesSize, VRDEProperties); } \
  NS_IMETHOD SetVRDEProperty(const PRUnichar *key, const PRUnichar *value) { return _to SetVRDEProperty(key, value); } \
  NS_IMETHOD GetVRDEProperty(const PRUnichar *key, PRUnichar **value) { return _to GetVRDEProperty(key, value); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IVRDESERVER(_to) \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEnabled(aEnabled); } \
  NS_IMETHOD GetAuthType(PRUint32 *aAuthType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAuthType(aAuthType); } \
  NS_IMETHOD SetAuthType(PRUint32 aAuthType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAuthType(aAuthType); } \
  NS_IMETHOD GetAuthTimeout(PRUint32 *aAuthTimeout) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAuthTimeout(aAuthTimeout); } \
  NS_IMETHOD SetAuthTimeout(PRUint32 aAuthTimeout) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAuthTimeout(aAuthTimeout); } \
  NS_IMETHOD GetAllowMultiConnection(PRBool *aAllowMultiConnection) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllowMultiConnection(aAllowMultiConnection); } \
  NS_IMETHOD SetAllowMultiConnection(PRBool aAllowMultiConnection) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAllowMultiConnection(aAllowMultiConnection); } \
  NS_IMETHOD GetReuseSingleConnection(PRBool *aReuseSingleConnection) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetReuseSingleConnection(aReuseSingleConnection); } \
  NS_IMETHOD SetReuseSingleConnection(PRBool aReuseSingleConnection) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetReuseSingleConnection(aReuseSingleConnection); } \
  NS_IMETHOD GetVRDEExtPack(PRUnichar * *aVRDEExtPack) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVRDEExtPack(aVRDEExtPack); } \
  NS_IMETHOD SetVRDEExtPack(const PRUnichar * aVRDEExtPack) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVRDEExtPack(aVRDEExtPack); } \
  NS_IMETHOD GetAuthLibrary(PRUnichar * *aAuthLibrary) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAuthLibrary(aAuthLibrary); } \
  NS_IMETHOD SetAuthLibrary(const PRUnichar * aAuthLibrary) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAuthLibrary(aAuthLibrary); } \
  NS_IMETHOD GetVRDEProperties(PRUint32 *VRDEPropertiesSize, PRUnichar ***VRDEProperties) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVRDEProperties(VRDEPropertiesSize, VRDEProperties); } \
  NS_IMETHOD SetVRDEProperty(const PRUnichar *key, const PRUnichar *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVRDEProperty(key, value); } \
  NS_IMETHOD GetVRDEProperty(const PRUnichar *key, PRUnichar **value) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVRDEProperty(key, value); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IVRDEServer
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IVRDESERVER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IVRDEServer)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* attribute boolean enabled; */
NS_IMETHODIMP _MYCLASS_::GetEnabled(PRBool *aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetEnabled(PRBool aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 authType; */
NS_IMETHODIMP _MYCLASS_::GetAuthType(PRUint32 *aAuthType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAuthType(PRUint32 aAuthType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long authTimeout; */
NS_IMETHODIMP _MYCLASS_::GetAuthTimeout(PRUint32 *aAuthTimeout)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAuthTimeout(PRUint32 aAuthTimeout)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean allowMultiConnection; */
NS_IMETHODIMP _MYCLASS_::GetAllowMultiConnection(PRBool *aAllowMultiConnection)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAllowMultiConnection(PRBool aAllowMultiConnection)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean reuseSingleConnection; */
NS_IMETHODIMP _MYCLASS_::GetReuseSingleConnection(PRBool *aReuseSingleConnection)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetReuseSingleConnection(PRBool aReuseSingleConnection)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring VRDEExtPack; */
NS_IMETHODIMP _MYCLASS_::GetVRDEExtPack(PRUnichar * *aVRDEExtPack)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetVRDEExtPack(const PRUnichar * aVRDEExtPack)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring authLibrary; */
NS_IMETHODIMP _MYCLASS_::GetAuthLibrary(PRUnichar * *aAuthLibrary)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAuthLibrary(const PRUnichar * aAuthLibrary)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getVRDEProperties (out unsigned long VRDEPropertiesSize, [array, size_is (VRDEPropertiesSize), retval] out wstring VRDEProperties); */
NS_IMETHODIMP _MYCLASS_::GetVRDEProperties(PRUint32 *VRDEPropertiesSize, PRUnichar ***VRDEProperties)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setVRDEProperty (in wstring key, in wstring value); */
NS_IMETHODIMP _MYCLASS_::SetVRDEProperty(const PRUnichar *key, const PRUnichar *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getVRDEProperty (in wstring key, [retval] out wstring value); */
NS_IMETHODIMP _MYCLASS_::GetVRDEProperty(const PRUnichar *key, PRUnichar **value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IVRDEServer_GETTER_Enabled_TO(smth) NS_IMETHOD GetEnabled (PRBool * aEnabled) { return smth GetEnabled (aEnabled); }
#define COM_FORWARD_IVRDEServer_GETTER_Enabled_TO_OBJ(obj) COM_FORWARD_IVRDEServer_GETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_IVRDEServer_GETTER_Enabled_TO_BASE(base) COM_FORWARD_IVRDEServer_GETTER_Enabled_TO (base::)
#define COM_FORWARD_IVRDEServer_SETTER_Enabled_TO(smth) NS_IMETHOD SetEnabled (PRBool aEnabled) { return smth SetEnabled (aEnabled); }
#define COM_FORWARD_IVRDEServer_SETTER_Enabled_TO_OBJ(obj) COM_FORWARD_IVRDEServer_SETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_IVRDEServer_SETTER_Enabled_TO_BASE(base) COM_FORWARD_IVRDEServer_SETTER_Enabled_TO (base::)
#define COM_FORWARD_IVRDEServer_GETTER_AuthType_TO(smth) NS_IMETHOD GetAuthType (PRUint32 * aAuthType) { return smth GetAuthType (aAuthType); }
#define COM_FORWARD_IVRDEServer_GETTER_AuthType_TO_OBJ(obj) COM_FORWARD_IVRDEServer_GETTER_AuthType_TO ((obj)->)
#define COM_FORWARD_IVRDEServer_GETTER_AuthType_TO_BASE(base) COM_FORWARD_IVRDEServer_GETTER_AuthType_TO (base::)
#define COM_FORWARD_IVRDEServer_SETTER_AuthType_TO(smth) NS_IMETHOD SetAuthType (PRUint32 aAuthType) { return smth SetAuthType (aAuthType); }
#define COM_FORWARD_IVRDEServer_SETTER_AuthType_TO_OBJ(obj) COM_FORWARD_IVRDEServer_SETTER_AuthType_TO ((obj)->)
#define COM_FORWARD_IVRDEServer_SETTER_AuthType_TO_BASE(base) COM_FORWARD_IVRDEServer_SETTER_AuthType_TO (base::)
#define COM_FORWARD_IVRDEServer_GETTER_AuthTimeout_TO(smth) NS_IMETHOD GetAuthTimeout (PRUint32 * aAuthTimeout) { return smth GetAuthTimeout (aAuthTimeout); }
#define COM_FORWARD_IVRDEServer_GETTER_AuthTimeout_TO_OBJ(obj) COM_FORWARD_IVRDEServer_GETTER_AuthTimeout_TO ((obj)->)
#define COM_FORWARD_IVRDEServer_GETTER_AuthTimeout_TO_BASE(base) COM_FORWARD_IVRDEServer_GETTER_AuthTimeout_TO (base::)
#define COM_FORWARD_IVRDEServer_SETTER_AuthTimeout_TO(smth) NS_IMETHOD SetAuthTimeout (PRUint32 aAuthTimeout) { return smth SetAuthTimeout (aAuthTimeout); }
#define COM_FORWARD_IVRDEServer_SETTER_AuthTimeout_TO_OBJ(obj) COM_FORWARD_IVRDEServer_SETTER_AuthTimeout_TO ((obj)->)
#define COM_FORWARD_IVRDEServer_SETTER_AuthTimeout_TO_BASE(base) COM_FORWARD_IVRDEServer_SETTER_AuthTimeout_TO (base::)
#define COM_FORWARD_IVRDEServer_GETTER_AllowMultiConnection_TO(smth) NS_IMETHOD GetAllowMultiConnection (PRBool * aAllowMultiConnection) { return smth GetAllowMultiConnection (aAllowMultiConnection); }
#define COM_FORWARD_IVRDEServer_GETTER_AllowMultiConnection_TO_OBJ(obj) COM_FORWARD_IVRDEServer_GETTER_AllowMultiConnection_TO ((obj)->)
#define COM_FORWARD_IVRDEServer_GETTER_AllowMultiConnection_TO_BASE(base) COM_FORWARD_IVRDEServer_GETTER_AllowMultiConnection_TO (base::)
#define COM_FORWARD_IVRDEServer_SETTER_AllowMultiConnection_TO(smth) NS_IMETHOD SetAllowMultiConnection (PRBool aAllowMultiConnection) { return smth SetAllowMultiConnection (aAllowMultiConnection); }
#define COM_FORWARD_IVRDEServer_SETTER_AllowMultiConnection_TO_OBJ(obj) COM_FORWARD_IVRDEServer_SETTER_AllowMultiConnection_TO ((obj)->)
#define COM_FORWARD_IVRDEServer_SETTER_AllowMultiConnection_TO_BASE(base) COM_FORWARD_IVRDEServer_SETTER_AllowMultiConnection_TO (base::)
#define COM_FORWARD_IVRDEServer_GETTER_ReuseSingleConnection_TO(smth) NS_IMETHOD GetReuseSingleConnection (PRBool * aReuseSingleConnection) { return smth GetReuseSingleConnection (aReuseSingleConnection); }
#define COM_FORWARD_IVRDEServer_GETTER_ReuseSingleConnection_TO_OBJ(obj) COM_FORWARD_IVRDEServer_GETTER_ReuseSingleConnection_TO ((obj)->)
#define COM_FORWARD_IVRDEServer_GETTER_ReuseSingleConnection_TO_BASE(base) COM_FORWARD_IVRDEServer_GETTER_ReuseSingleConnection_TO (base::)
#define COM_FORWARD_IVRDEServer_SETTER_ReuseSingleConnection_TO(smth) NS_IMETHOD SetReuseSingleConnection (PRBool aReuseSingleConnection) { return smth SetReuseSingleConnection (aReuseSingleConnection); }
#define COM_FORWARD_IVRDEServer_SETTER_ReuseSingleConnection_TO_OBJ(obj) COM_FORWARD_IVRDEServer_SETTER_ReuseSingleConnection_TO ((obj)->)
#define COM_FORWARD_IVRDEServer_SETTER_ReuseSingleConnection_TO_BASE(base) COM_FORWARD_IVRDEServer_SETTER_ReuseSingleConnection_TO (base::)
#define COM_FORWARD_IVRDEServer_GETTER_VRDEExtPack_TO(smth) NS_IMETHOD GetVRDEExtPack (PRUnichar * * aVRDEExtPack) { return smth GetVRDEExtPack (aVRDEExtPack); }
#define COM_FORWARD_IVRDEServer_GETTER_VRDEExtPack_TO_OBJ(obj) COM_FORWARD_IVRDEServer_GETTER_VRDEExtPack_TO ((obj)->)
#define COM_FORWARD_IVRDEServer_GETTER_VRDEExtPack_TO_BASE(base) COM_FORWARD_IVRDEServer_GETTER_VRDEExtPack_TO (base::)
#define COM_FORWARD_IVRDEServer_SETTER_VRDEExtPack_TO(smth) NS_IMETHOD SetVRDEExtPack (const PRUnichar * aVRDEExtPack) { return smth SetVRDEExtPack (aVRDEExtPack); }
#define COM_FORWARD_IVRDEServer_SETTER_VRDEExtPack_TO_OBJ(obj) COM_FORWARD_IVRDEServer_SETTER_VRDEExtPack_TO ((obj)->)
#define COM_FORWARD_IVRDEServer_SETTER_VRDEExtPack_TO_BASE(base) COM_FORWARD_IVRDEServer_SETTER_VRDEExtPack_TO (base::)
#define COM_FORWARD_IVRDEServer_GETTER_AuthLibrary_TO(smth) NS_IMETHOD GetAuthLibrary (PRUnichar * * aAuthLibrary) { return smth GetAuthLibrary (aAuthLibrary); }
#define COM_FORWARD_IVRDEServer_GETTER_AuthLibrary_TO_OBJ(obj) COM_FORWARD_IVRDEServer_GETTER_AuthLibrary_TO ((obj)->)
#define COM_FORWARD_IVRDEServer_GETTER_AuthLibrary_TO_BASE(base) COM_FORWARD_IVRDEServer_GETTER_AuthLibrary_TO (base::)
#define COM_FORWARD_IVRDEServer_SETTER_AuthLibrary_TO(smth) NS_IMETHOD SetAuthLibrary (const PRUnichar * aAuthLibrary) { return smth SetAuthLibrary (aAuthLibrary); }
#define COM_FORWARD_IVRDEServer_SETTER_AuthLibrary_TO_OBJ(obj) COM_FORWARD_IVRDEServer_SETTER_AuthLibrary_TO ((obj)->)
#define COM_FORWARD_IVRDEServer_SETTER_AuthLibrary_TO_BASE(base) COM_FORWARD_IVRDEServer_SETTER_AuthLibrary_TO (base::)
#define COM_FORWARD_IVRDEServer_GETTER_VRDEProperties_TO(smth) NS_IMETHOD GetVRDEProperties (PRUint32 * aVRDEPropertiesSize, PRUnichar * * * aVRDEProperties) { return smth GetVRDEProperties (aVRDEPropertiesSize, aVRDEProperties); }
#define COM_FORWARD_IVRDEServer_GETTER_VRDEProperties_TO_OBJ(obj) COM_FORWARD_IVRDEServer_GETTER_VRDEProperties_TO ((obj)->)
#define COM_FORWARD_IVRDEServer_GETTER_VRDEProperties_TO_BASE(base) COM_FORWARD_IVRDEServer_GETTER_VRDEProperties_TO (base::)
#define COM_FORWARD_IVRDEServer_SetVRDEProperty_TO(smth) NS_IMETHOD SetVRDEProperty (PRUnichar * aKey, PRUnichar * aValue) { return smth SetVRDEProperty (aKey, aValue); }
#define COM_FORWARD_IVRDEServer_SetVRDEProperty_TO_OBJ(obj) COM_FORWARD_IVRDEServer_SetVRDEProperty_TO ((obj)->)
#define COM_FORWARD_IVRDEServer_SetVRDEProperty_TO_BASE(base) COM_FORWARD_IVRDEServer_SetVRDEProperty_TO (base::)
#define COM_FORWARD_IVRDEServer_GetVRDEProperty_TO(smth) NS_IMETHOD GetVRDEProperty (PRUnichar * aKey, PRUnichar * * aValue) { return smth GetVRDEProperty (aKey, aValue); }
#define COM_FORWARD_IVRDEServer_GetVRDEProperty_TO_OBJ(obj) COM_FORWARD_IVRDEServer_GetVRDEProperty_TO ((obj)->)
#define COM_FORWARD_IVRDEServer_GetVRDEProperty_TO_BASE(base) COM_FORWARD_IVRDEServer_GetVRDEProperty_TO (base::)
#define COM_FORWARD_IVRDEServer_TO(smth) NS_FORWARD_IVRDESERVER (smth)
#define COM_FORWARD_IVRDEServer_TO_OBJ(obj) COM_FORWARD_IVRDEServer_TO ((obj)->)
#define COM_FORWARD_IVRDEServer_TO_BASE(base) COM_FORWARD_IVRDEServer_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IVRDEServer;

/* starting interface:    ISharedFolder */
#define ISHAREDFOLDER_IID_STR "8388da11-b559-4574-a5b7-2bd7acd5cef8"

#define ISHAREDFOLDER_IID \
  {0x8388da11, 0xb559, 0x4574, \
    { 0xa5, 0xb7, 0x2b, 0xd7, 0xac, 0xd5, 0xce, 0xf8 }}

class NS_NO_VTABLE ISharedFolder : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISHAREDFOLDER_IID)

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* readonly attribute wstring hostPath; */
  NS_IMETHOD GetHostPath(PRUnichar * *aHostPath) = 0;

  /* readonly attribute boolean accessible; */
  NS_IMETHOD GetAccessible(PRBool *aAccessible) = 0;

  /* readonly attribute boolean writable; */
  NS_IMETHOD GetWritable(PRBool *aWritable) = 0;

  /* readonly attribute boolean autoMount; */
  NS_IMETHOD GetAutoMount(PRBool *aAutoMount) = 0;

  /* readonly attribute wstring lastAccessError; */
  NS_IMETHOD GetLastAccessError(PRUnichar * *aLastAccessError) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISHAREDFOLDER \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetHostPath(PRUnichar * *aHostPath); \
  NS_IMETHOD GetAccessible(PRBool *aAccessible); \
  NS_IMETHOD GetWritable(PRBool *aWritable); \
  NS_IMETHOD GetAutoMount(PRBool *aAutoMount); \
  NS_IMETHOD GetLastAccessError(PRUnichar * *aLastAccessError); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISHAREDFOLDER(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetHostPath(PRUnichar * *aHostPath) { return _to GetHostPath(aHostPath); } \
  NS_IMETHOD GetAccessible(PRBool *aAccessible) { return _to GetAccessible(aAccessible); } \
  NS_IMETHOD GetWritable(PRBool *aWritable) { return _to GetWritable(aWritable); } \
  NS_IMETHOD GetAutoMount(PRBool *aAutoMount) { return _to GetAutoMount(aAutoMount); } \
  NS_IMETHOD GetLastAccessError(PRUnichar * *aLastAccessError) { return _to GetLastAccessError(aLastAccessError); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISHAREDFOLDER(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetHostPath(PRUnichar * *aHostPath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHostPath(aHostPath); } \
  NS_IMETHOD GetAccessible(PRBool *aAccessible) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAccessible(aAccessible); } \
  NS_IMETHOD GetWritable(PRBool *aWritable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWritable(aWritable); } \
  NS_IMETHOD GetAutoMount(PRBool *aAutoMount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAutoMount(aAutoMount); } \
  NS_IMETHOD GetLastAccessError(PRUnichar * *aLastAccessError) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastAccessError(aLastAccessError); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ISharedFolder
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISHAREDFOLDER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ISharedFolder)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring hostPath; */
NS_IMETHODIMP _MYCLASS_::GetHostPath(PRUnichar * *aHostPath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean accessible; */
NS_IMETHODIMP _MYCLASS_::GetAccessible(PRBool *aAccessible)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean writable; */
NS_IMETHODIMP _MYCLASS_::GetWritable(PRBool *aWritable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean autoMount; */
NS_IMETHODIMP _MYCLASS_::GetAutoMount(PRBool *aAutoMount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring lastAccessError; */
NS_IMETHODIMP _MYCLASS_::GetLastAccessError(PRUnichar * *aLastAccessError)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_ISharedFolder_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_ISharedFolder_GETTER_Name_TO_OBJ(obj) COM_FORWARD_ISharedFolder_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_ISharedFolder_GETTER_Name_TO_BASE(base) COM_FORWARD_ISharedFolder_GETTER_Name_TO (base::)
#define COM_FORWARD_ISharedFolder_GETTER_HostPath_TO(smth) NS_IMETHOD GetHostPath (PRUnichar * * aHostPath) { return smth GetHostPath (aHostPath); }
#define COM_FORWARD_ISharedFolder_GETTER_HostPath_TO_OBJ(obj) COM_FORWARD_ISharedFolder_GETTER_HostPath_TO ((obj)->)
#define COM_FORWARD_ISharedFolder_GETTER_HostPath_TO_BASE(base) COM_FORWARD_ISharedFolder_GETTER_HostPath_TO (base::)
#define COM_FORWARD_ISharedFolder_GETTER_Accessible_TO(smth) NS_IMETHOD GetAccessible (PRBool * aAccessible) { return smth GetAccessible (aAccessible); }
#define COM_FORWARD_ISharedFolder_GETTER_Accessible_TO_OBJ(obj) COM_FORWARD_ISharedFolder_GETTER_Accessible_TO ((obj)->)
#define COM_FORWARD_ISharedFolder_GETTER_Accessible_TO_BASE(base) COM_FORWARD_ISharedFolder_GETTER_Accessible_TO (base::)
#define COM_FORWARD_ISharedFolder_GETTER_Writable_TO(smth) NS_IMETHOD GetWritable (PRBool * aWritable) { return smth GetWritable (aWritable); }
#define COM_FORWARD_ISharedFolder_GETTER_Writable_TO_OBJ(obj) COM_FORWARD_ISharedFolder_GETTER_Writable_TO ((obj)->)
#define COM_FORWARD_ISharedFolder_GETTER_Writable_TO_BASE(base) COM_FORWARD_ISharedFolder_GETTER_Writable_TO (base::)
#define COM_FORWARD_ISharedFolder_GETTER_AutoMount_TO(smth) NS_IMETHOD GetAutoMount (PRBool * aAutoMount) { return smth GetAutoMount (aAutoMount); }
#define COM_FORWARD_ISharedFolder_GETTER_AutoMount_TO_OBJ(obj) COM_FORWARD_ISharedFolder_GETTER_AutoMount_TO ((obj)->)
#define COM_FORWARD_ISharedFolder_GETTER_AutoMount_TO_BASE(base) COM_FORWARD_ISharedFolder_GETTER_AutoMount_TO (base::)
#define COM_FORWARD_ISharedFolder_GETTER_LastAccessError_TO(smth) NS_IMETHOD GetLastAccessError (PRUnichar * * aLastAccessError) { return smth GetLastAccessError (aLastAccessError); }
#define COM_FORWARD_ISharedFolder_GETTER_LastAccessError_TO_OBJ(obj) COM_FORWARD_ISharedFolder_GETTER_LastAccessError_TO ((obj)->)
#define COM_FORWARD_ISharedFolder_GETTER_LastAccessError_TO_BASE(base) COM_FORWARD_ISharedFolder_GETTER_LastAccessError_TO (base::)
#define COM_FORWARD_ISharedFolder_TO(smth) NS_FORWARD_ISHAREDFOLDER (smth)
#define COM_FORWARD_ISharedFolder_TO_OBJ(obj) COM_FORWARD_ISharedFolder_TO ((obj)->)
#define COM_FORWARD_ISharedFolder_TO_BASE(base) COM_FORWARD_ISharedFolder_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_ISharedFolder;

/* starting interface:    IInternalSessionControl */
#define IINTERNALSESSIONCONTROL_IID_STR "2d2124a7-0f62-4907-ae21-eee5a559bdde"

#define IINTERNALSESSIONCONTROL_IID \
  {0x2d2124a7, 0x0f62, 0x4907, \
    { 0xae, 0x21, 0xee, 0xe5, 0xa5, 0x59, 0xbd, 0xde }}

class NS_NO_VTABLE IInternalSessionControl : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IINTERNALSESSIONCONTROL_IID)

  /* void getPID ([retval] out unsigned long pid); */
  NS_IMETHOD GetPID(PRUint32 *pid) = 0;

  /* void getRemoteConsole ([retval] out IConsole console); */
  NS_IMETHOD GetRemoteConsole(IConsole **console) = 0;

  /* void assignRemoteMachine (in IMachine machine, in IConsole console); */
  NS_IMETHOD AssignRemoteMachine(IMachine *machine, IConsole *console) = 0;

  /* void updateMachineState (in PRUint32 machineState); */
  NS_IMETHOD UpdateMachineState(PRUint32 machineState) = 0;

  /* void uninitialize (); */
  NS_IMETHOD Uninitialize(void) = 0;

  /* void onNetworkAdapterChange (in INetworkAdapter networkAdapter, in boolean changeAdapter); */
  NS_IMETHOD OnNetworkAdapterChange(INetworkAdapter *networkAdapter, PRBool changeAdapter) = 0;

  /* void onSerialPortChange (in ISerialPort serialPort); */
  NS_IMETHOD OnSerialPortChange(ISerialPort *serialPort) = 0;

  /* void onParallelPortChange (in IParallelPort parallelPort); */
  NS_IMETHOD OnParallelPortChange(IParallelPort *parallelPort) = 0;

  /* void onStorageControllerChange (); */
  NS_IMETHOD OnStorageControllerChange(void) = 0;

  /* void onMediumChange (in IMediumAttachment mediumAttachment, in boolean force); */
  NS_IMETHOD OnMediumChange(IMediumAttachment *mediumAttachment, PRBool force) = 0;

  /* void onStorageDeviceChange (in IMediumAttachment mediumAttachment, in boolean remove, in boolean silent); */
  NS_IMETHOD OnStorageDeviceChange(IMediumAttachment *mediumAttachment, PRBool remove, PRBool silent) = 0;

  /* void onClipboardModeChange (in PRUint32 clipboardMode); */
  NS_IMETHOD OnClipboardModeChange(PRUint32 clipboardMode) = 0;

  /* void onDragAndDropModeChange (in PRUint32 dragAndDropMode); */
  NS_IMETHOD OnDragAndDropModeChange(PRUint32 dragAndDropMode) = 0;

  /* void onCPUChange (in unsigned long cpu, in boolean add); */
  NS_IMETHOD OnCPUChange(PRUint32 cpu, PRBool add) = 0;

  /* void onCPUExecutionCapChange (in unsigned long executionCap); */
  NS_IMETHOD OnCPUExecutionCapChange(PRUint32 executionCap) = 0;

  /* void onVRDEServerChange (in boolean restart); */
  NS_IMETHOD OnVRDEServerChange(PRBool restart) = 0;

  /* void onVideoCaptureChange (); */
  NS_IMETHOD OnVideoCaptureChange(void) = 0;

  /* void onUSBControllerChange (); */
  NS_IMETHOD OnUSBControllerChange(void) = 0;

  /* void onSharedFolderChange (in boolean global); */
  NS_IMETHOD OnSharedFolderChange(PRBool global) = 0;

  /* void onUSBDeviceAttach (in IUSBDevice device, in IVirtualBoxErrorInfo error, in unsigned long maskedInterfaces); */
  NS_IMETHOD OnUSBDeviceAttach(IUSBDevice *device, IVirtualBoxErrorInfo *error, PRUint32 maskedInterfaces) = 0;

  /* void onUSBDeviceDetach (in wstring id, in IVirtualBoxErrorInfo error); */
  NS_IMETHOD OnUSBDeviceDetach(const PRUnichar *id, IVirtualBoxErrorInfo *error) = 0;

  /* void onShowWindow (in boolean check, out boolean canShow, out long long winId); */
  NS_IMETHOD OnShowWindow(PRBool check, PRBool *canShow, PRInt64 *winId) = 0;

  /* void onBandwidthGroupChange (in IBandwidthGroup bandwidthGroup); */
  NS_IMETHOD OnBandwidthGroupChange(IBandwidthGroup *bandwidthGroup) = 0;

  /* void accessGuestProperty (in wstring name, in wstring value, in wstring flags, in boolean isSetter, out wstring retValue, out long long retTimestamp, out wstring retFlags); */
  NS_IMETHOD AccessGuestProperty(const PRUnichar *name, const PRUnichar *value, const PRUnichar *flags, PRBool isSetter, PRUnichar **retValue, PRInt64 *retTimestamp, PRUnichar **retFlags) = 0;

  /* void enumerateGuestProperties (in wstring patterns, out unsigned long keysSize, [array, size_is (keysSize)] out wstring keys, out unsigned long valuesSize, [array, size_is (valuesSize)] out wstring values, out unsigned long timestampsSize, [array, size_is (timestampsSize)] out long long timestamps, out unsigned long flagsSize, [array, size_is (flagsSize)] out wstring flags); */
  NS_IMETHOD EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *keysSize, PRUnichar ***keys, PRUint32 *valuesSize, PRUnichar ***values, PRUint32 *timestampsSize, PRInt64 **timestamps, PRUint32 *flagsSize, PRUnichar ***flags) = 0;

  /* void onlineMergeMedium (in IMediumAttachment mediumAttachment, in unsigned long sourceIdx, in unsigned long targetIdx, in IProgress progress); */
  NS_IMETHOD OnlineMergeMedium(IMediumAttachment *mediumAttachment, PRUint32 sourceIdx, PRUint32 targetIdx, IProgress *progress) = 0;

  /* void enableVMMStatistics (in boolean enable); */
  NS_IMETHOD EnableVMMStatistics(PRBool enable) = 0;

  /* void pauseWithReason (in PRUint32 reason); */
  NS_IMETHOD PauseWithReason(PRUint32 reason) = 0;

  /* void resumeWithReason (in PRUint32 reason); */
  NS_IMETHOD ResumeWithReason(PRUint32 reason) = 0;

  /* void saveStateWithReason (in PRUint32 reason, [retval] out IProgress progress); */
  NS_IMETHOD SaveStateWithReason(PRUint32 reason, IProgress **progress) = 0;

  /* void assignMachine (in IMachine machine, in PRUint32 lockType, in IToken token); */
  NS_IMETHOD AssignMachine(IMachine *machine, PRUint32 lockType, IToken *token) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IINTERNALSESSIONCONTROL \
  NS_IMETHOD GetPID(PRUint32 *pid); \
  NS_IMETHOD GetRemoteConsole(IConsole **console); \
  NS_IMETHOD AssignRemoteMachine(IMachine *machine, IConsole *console); \
  NS_IMETHOD UpdateMachineState(PRUint32 machineState); \
  NS_IMETHOD Uninitialize(void); \
  NS_IMETHOD OnNetworkAdapterChange(INetworkAdapter *networkAdapter, PRBool changeAdapter); \
  NS_IMETHOD OnSerialPortChange(ISerialPort *serialPort); \
  NS_IMETHOD OnParallelPortChange(IParallelPort *parallelPort); \
  NS_IMETHOD OnStorageControllerChange(void); \
  NS_IMETHOD OnMediumChange(IMediumAttachment *mediumAttachment, PRBool force); \
  NS_IMETHOD OnStorageDeviceChange(IMediumAttachment *mediumAttachment, PRBool remove, PRBool silent); \
  NS_IMETHOD OnClipboardModeChange(PRUint32 clipboardMode); \
  NS_IMETHOD OnDragAndDropModeChange(PRUint32 dragAndDropMode); \
  NS_IMETHOD OnCPUChange(PRUint32 cpu, PRBool add); \
  NS_IMETHOD OnCPUExecutionCapChange(PRUint32 executionCap); \
  NS_IMETHOD OnVRDEServerChange(PRBool restart); \
  NS_IMETHOD OnVideoCaptureChange(void); \
  NS_IMETHOD OnUSBControllerChange(void); \
  NS_IMETHOD OnSharedFolderChange(PRBool global); \
  NS_IMETHOD OnUSBDeviceAttach(IUSBDevice *device, IVirtualBoxErrorInfo *error, PRUint32 maskedInterfaces); \
  NS_IMETHOD OnUSBDeviceDetach(const PRUnichar *id, IVirtualBoxErrorInfo *error); \
  NS_IMETHOD OnShowWindow(PRBool check, PRBool *canShow, PRInt64 *winId); \
  NS_IMETHOD OnBandwidthGroupChange(IBandwidthGroup *bandwidthGroup); \
  NS_IMETHOD AccessGuestProperty(const PRUnichar *name, const PRUnichar *value, const PRUnichar *flags, PRBool isSetter, PRUnichar **retValue, PRInt64 *retTimestamp, PRUnichar **retFlags); \
  NS_IMETHOD EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *keysSize, PRUnichar ***keys, PRUint32 *valuesSize, PRUnichar ***values, PRUint32 *timestampsSize, PRInt64 **timestamps, PRUint32 *flagsSize, PRUnichar ***flags); \
  NS_IMETHOD OnlineMergeMedium(IMediumAttachment *mediumAttachment, PRUint32 sourceIdx, PRUint32 targetIdx, IProgress *progress); \
  NS_IMETHOD EnableVMMStatistics(PRBool enable); \
  NS_IMETHOD PauseWithReason(PRUint32 reason); \
  NS_IMETHOD ResumeWithReason(PRUint32 reason); \
  NS_IMETHOD SaveStateWithReason(PRUint32 reason, IProgress **progress); \
  NS_IMETHOD AssignMachine(IMachine *machine, PRUint32 lockType, IToken *token); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IINTERNALSESSIONCONTROL(_to) \
  NS_IMETHOD GetPID(PRUint32 *pid) { return _to GetPID(pid); } \
  NS_IMETHOD GetRemoteConsole(IConsole **console) { return _to GetRemoteConsole(console); } \
  NS_IMETHOD AssignRemoteMachine(IMachine *machine, IConsole *console) { return _to AssignRemoteMachine(machine, console); } \
  NS_IMETHOD UpdateMachineState(PRUint32 machineState) { return _to UpdateMachineState(machineState); } \
  NS_IMETHOD Uninitialize(void) { return _to Uninitialize(); } \
  NS_IMETHOD OnNetworkAdapterChange(INetworkAdapter *networkAdapter, PRBool changeAdapter) { return _to OnNetworkAdapterChange(networkAdapter, changeAdapter); } \
  NS_IMETHOD OnSerialPortChange(ISerialPort *serialPort) { return _to OnSerialPortChange(serialPort); } \
  NS_IMETHOD OnParallelPortChange(IParallelPort *parallelPort) { return _to OnParallelPortChange(parallelPort); } \
  NS_IMETHOD OnStorageControllerChange(void) { return _to OnStorageControllerChange(); } \
  NS_IMETHOD OnMediumChange(IMediumAttachment *mediumAttachment, PRBool force) { return _to OnMediumChange(mediumAttachment, force); } \
  NS_IMETHOD OnStorageDeviceChange(IMediumAttachment *mediumAttachment, PRBool remove, PRBool silent) { return _to OnStorageDeviceChange(mediumAttachment, remove, silent); } \
  NS_IMETHOD OnClipboardModeChange(PRUint32 clipboardMode) { return _to OnClipboardModeChange(clipboardMode); } \
  NS_IMETHOD OnDragAndDropModeChange(PRUint32 dragAndDropMode) { return _to OnDragAndDropModeChange(dragAndDropMode); } \
  NS_IMETHOD OnCPUChange(PRUint32 cpu, PRBool add) { return _to OnCPUChange(cpu, add); } \
  NS_IMETHOD OnCPUExecutionCapChange(PRUint32 executionCap) { return _to OnCPUExecutionCapChange(executionCap); } \
  NS_IMETHOD OnVRDEServerChange(PRBool restart) { return _to OnVRDEServerChange(restart); } \
  NS_IMETHOD OnVideoCaptureChange(void) { return _to OnVideoCaptureChange(); } \
  NS_IMETHOD OnUSBControllerChange(void) { return _to OnUSBControllerChange(); } \
  NS_IMETHOD OnSharedFolderChange(PRBool global) { return _to OnSharedFolderChange(global); } \
  NS_IMETHOD OnUSBDeviceAttach(IUSBDevice *device, IVirtualBoxErrorInfo *error, PRUint32 maskedInterfaces) { return _to OnUSBDeviceAttach(device, error, maskedInterfaces); } \
  NS_IMETHOD OnUSBDeviceDetach(const PRUnichar *id, IVirtualBoxErrorInfo *error) { return _to OnUSBDeviceDetach(id, error); } \
  NS_IMETHOD OnShowWindow(PRBool check, PRBool *canShow, PRInt64 *winId) { return _to OnShowWindow(check, canShow, winId); } \
  NS_IMETHOD OnBandwidthGroupChange(IBandwidthGroup *bandwidthGroup) { return _to OnBandwidthGroupChange(bandwidthGroup); } \
  NS_IMETHOD AccessGuestProperty(const PRUnichar *name, const PRUnichar *value, const PRUnichar *flags, PRBool isSetter, PRUnichar **retValue, PRInt64 *retTimestamp, PRUnichar **retFlags) { return _to AccessGuestProperty(name, value, flags, isSetter, retValue, retTimestamp, retFlags); } \
  NS_IMETHOD EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *keysSize, PRUnichar ***keys, PRUint32 *valuesSize, PRUnichar ***values, PRUint32 *timestampsSize, PRInt64 **timestamps, PRUint32 *flagsSize, PRUnichar ***flags) { return _to EnumerateGuestProperties(patterns, keysSize, keys, valuesSize, values, timestampsSize, timestamps, flagsSize, flags); } \
  NS_IMETHOD OnlineMergeMedium(IMediumAttachment *mediumAttachment, PRUint32 sourceIdx, PRUint32 targetIdx, IProgress *progress) { return _to OnlineMergeMedium(mediumAttachment, sourceIdx, targetIdx, progress); } \
  NS_IMETHOD EnableVMMStatistics(PRBool enable) { return _to EnableVMMStatistics(enable); } \
  NS_IMETHOD PauseWithReason(PRUint32 reason) { return _to PauseWithReason(reason); } \
  NS_IMETHOD ResumeWithReason(PRUint32 reason) { return _to ResumeWithReason(reason); } \
  NS_IMETHOD SaveStateWithReason(PRUint32 reason, IProgress **progress) { return _to SaveStateWithReason(reason, progress); } \
  NS_IMETHOD AssignMachine(IMachine *machine, PRUint32 lockType, IToken *token) { return _to AssignMachine(machine, lockType, token); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IINTERNALSESSIONCONTROL(_to) \
  NS_IMETHOD GetPID(PRUint32 *pid) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPID(pid); } \
  NS_IMETHOD GetRemoteConsole(IConsole **console) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRemoteConsole(console); } \
  NS_IMETHOD AssignRemoteMachine(IMachine *machine, IConsole *console) { return !_to ? NS_ERROR_NULL_POINTER : _to->AssignRemoteMachine(machine, console); } \
  NS_IMETHOD UpdateMachineState(PRUint32 machineState) { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateMachineState(machineState); } \
  NS_IMETHOD Uninitialize(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uninitialize(); } \
  NS_IMETHOD OnNetworkAdapterChange(INetworkAdapter *networkAdapter, PRBool changeAdapter) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnNetworkAdapterChange(networkAdapter, changeAdapter); } \
  NS_IMETHOD OnSerialPortChange(ISerialPort *serialPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnSerialPortChange(serialPort); } \
  NS_IMETHOD OnParallelPortChange(IParallelPort *parallelPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnParallelPortChange(parallelPort); } \
  NS_IMETHOD OnStorageControllerChange(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnStorageControllerChange(); } \
  NS_IMETHOD OnMediumChange(IMediumAttachment *mediumAttachment, PRBool force) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnMediumChange(mediumAttachment, force); } \
  NS_IMETHOD OnStorageDeviceChange(IMediumAttachment *mediumAttachment, PRBool remove, PRBool silent) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnStorageDeviceChange(mediumAttachment, remove, silent); } \
  NS_IMETHOD OnClipboardModeChange(PRUint32 clipboardMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnClipboardModeChange(clipboardMode); } \
  NS_IMETHOD OnDragAndDropModeChange(PRUint32 dragAndDropMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnDragAndDropModeChange(dragAndDropMode); } \
  NS_IMETHOD OnCPUChange(PRUint32 cpu, PRBool add) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnCPUChange(cpu, add); } \
  NS_IMETHOD OnCPUExecutionCapChange(PRUint32 executionCap) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnCPUExecutionCapChange(executionCap); } \
  NS_IMETHOD OnVRDEServerChange(PRBool restart) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnVRDEServerChange(restart); } \
  NS_IMETHOD OnVideoCaptureChange(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnVideoCaptureChange(); } \
  NS_IMETHOD OnUSBControllerChange(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnUSBControllerChange(); } \
  NS_IMETHOD OnSharedFolderChange(PRBool global) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnSharedFolderChange(global); } \
  NS_IMETHOD OnUSBDeviceAttach(IUSBDevice *device, IVirtualBoxErrorInfo *error, PRUint32 maskedInterfaces) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnUSBDeviceAttach(device, error, maskedInterfaces); } \
  NS_IMETHOD OnUSBDeviceDetach(const PRUnichar *id, IVirtualBoxErrorInfo *error) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnUSBDeviceDetach(id, error); } \
  NS_IMETHOD OnShowWindow(PRBool check, PRBool *canShow, PRInt64 *winId) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnShowWindow(check, canShow, winId); } \
  NS_IMETHOD OnBandwidthGroupChange(IBandwidthGroup *bandwidthGroup) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnBandwidthGroupChange(bandwidthGroup); } \
  NS_IMETHOD AccessGuestProperty(const PRUnichar *name, const PRUnichar *value, const PRUnichar *flags, PRBool isSetter, PRUnichar **retValue, PRInt64 *retTimestamp, PRUnichar **retFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->AccessGuestProperty(name, value, flags, isSetter, retValue, retTimestamp, retFlags); } \
  NS_IMETHOD EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *keysSize, PRUnichar ***keys, PRUint32 *valuesSize, PRUnichar ***values, PRUint32 *timestampsSize, PRInt64 **timestamps, PRUint32 *flagsSize, PRUnichar ***flags) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnumerateGuestProperties(patterns, keysSize, keys, valuesSize, values, timestampsSize, timestamps, flagsSize, flags); } \
  NS_IMETHOD OnlineMergeMedium(IMediumAttachment *mediumAttachment, PRUint32 sourceIdx, PRUint32 targetIdx, IProgress *progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnlineMergeMedium(mediumAttachment, sourceIdx, targetIdx, progress); } \
  NS_IMETHOD EnableVMMStatistics(PRBool enable) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnableVMMStatistics(enable); } \
  NS_IMETHOD PauseWithReason(PRUint32 reason) { return !_to ? NS_ERROR_NULL_POINTER : _to->PauseWithReason(reason); } \
  NS_IMETHOD ResumeWithReason(PRUint32 reason) { return !_to ? NS_ERROR_NULL_POINTER : _to->ResumeWithReason(reason); } \
  NS_IMETHOD SaveStateWithReason(PRUint32 reason, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->SaveStateWithReason(reason, progress); } \
  NS_IMETHOD AssignMachine(IMachine *machine, PRUint32 lockType, IToken *token) { return !_to ? NS_ERROR_NULL_POINTER : _to->AssignMachine(machine, lockType, token); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IInternalSessionControl
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IINTERNALSESSIONCONTROL

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IInternalSessionControl)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* void getPID ([retval] out unsigned long pid); */
NS_IMETHODIMP _MYCLASS_::GetPID(PRUint32 *pid)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getRemoteConsole ([retval] out IConsole console); */
NS_IMETHODIMP _MYCLASS_::GetRemoteConsole(IConsole **console)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void assignRemoteMachine (in IMachine machine, in IConsole console); */
NS_IMETHODIMP _MYCLASS_::AssignRemoteMachine(IMachine *machine, IConsole *console)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void updateMachineState (in PRUint32 machineState); */
NS_IMETHODIMP _MYCLASS_::UpdateMachineState(PRUint32 machineState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uninitialize (); */
NS_IMETHODIMP _MYCLASS_::Uninitialize()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onNetworkAdapterChange (in INetworkAdapter networkAdapter, in boolean changeAdapter); */
NS_IMETHODIMP _MYCLASS_::OnNetworkAdapterChange(INetworkAdapter *networkAdapter, PRBool changeAdapter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onSerialPortChange (in ISerialPort serialPort); */
NS_IMETHODIMP _MYCLASS_::OnSerialPortChange(ISerialPort *serialPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onParallelPortChange (in IParallelPort parallelPort); */
NS_IMETHODIMP _MYCLASS_::OnParallelPortChange(IParallelPort *parallelPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onStorageControllerChange (); */
NS_IMETHODIMP _MYCLASS_::OnStorageControllerChange()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onMediumChange (in IMediumAttachment mediumAttachment, in boolean force); */
NS_IMETHODIMP _MYCLASS_::OnMediumChange(IMediumAttachment *mediumAttachment, PRBool force)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onStorageDeviceChange (in IMediumAttachment mediumAttachment, in boolean remove, in boolean silent); */
NS_IMETHODIMP _MYCLASS_::OnStorageDeviceChange(IMediumAttachment *mediumAttachment, PRBool remove, PRBool silent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onClipboardModeChange (in PRUint32 clipboardMode); */
NS_IMETHODIMP _MYCLASS_::OnClipboardModeChange(PRUint32 clipboardMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onDragAndDropModeChange (in PRUint32 dragAndDropMode); */
NS_IMETHODIMP _MYCLASS_::OnDragAndDropModeChange(PRUint32 dragAndDropMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onCPUChange (in unsigned long cpu, in boolean add); */
NS_IMETHODIMP _MYCLASS_::OnCPUChange(PRUint32 cpu, PRBool add)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onCPUExecutionCapChange (in unsigned long executionCap); */
NS_IMETHODIMP _MYCLASS_::OnCPUExecutionCapChange(PRUint32 executionCap)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onVRDEServerChange (in boolean restart); */
NS_IMETHODIMP _MYCLASS_::OnVRDEServerChange(PRBool restart)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onVideoCaptureChange (); */
NS_IMETHODIMP _MYCLASS_::OnVideoCaptureChange()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onUSBControllerChange (); */
NS_IMETHODIMP _MYCLASS_::OnUSBControllerChange()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onSharedFolderChange (in boolean global); */
NS_IMETHODIMP _MYCLASS_::OnSharedFolderChange(PRBool global)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onUSBDeviceAttach (in IUSBDevice device, in IVirtualBoxErrorInfo error, in unsigned long maskedInterfaces); */
NS_IMETHODIMP _MYCLASS_::OnUSBDeviceAttach(IUSBDevice *device, IVirtualBoxErrorInfo *error, PRUint32 maskedInterfaces)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onUSBDeviceDetach (in wstring id, in IVirtualBoxErrorInfo error); */
NS_IMETHODIMP _MYCLASS_::OnUSBDeviceDetach(const PRUnichar *id, IVirtualBoxErrorInfo *error)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onShowWindow (in boolean check, out boolean canShow, out long long winId); */
NS_IMETHODIMP _MYCLASS_::OnShowWindow(PRBool check, PRBool *canShow, PRInt64 *winId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onBandwidthGroupChange (in IBandwidthGroup bandwidthGroup); */
NS_IMETHODIMP _MYCLASS_::OnBandwidthGroupChange(IBandwidthGroup *bandwidthGroup)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void accessGuestProperty (in wstring name, in wstring value, in wstring flags, in boolean isSetter, out wstring retValue, out long long retTimestamp, out wstring retFlags); */
NS_IMETHODIMP _MYCLASS_::AccessGuestProperty(const PRUnichar *name, const PRUnichar *value, const PRUnichar *flags, PRBool isSetter, PRUnichar **retValue, PRInt64 *retTimestamp, PRUnichar **retFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enumerateGuestProperties (in wstring patterns, out unsigned long keysSize, [array, size_is (keysSize)] out wstring keys, out unsigned long valuesSize, [array, size_is (valuesSize)] out wstring values, out unsigned long timestampsSize, [array, size_is (timestampsSize)] out long long timestamps, out unsigned long flagsSize, [array, size_is (flagsSize)] out wstring flags); */
NS_IMETHODIMP _MYCLASS_::EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *keysSize, PRUnichar ***keys, PRUint32 *valuesSize, PRUnichar ***values, PRUint32 *timestampsSize, PRInt64 **timestamps, PRUint32 *flagsSize, PRUnichar ***flags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onlineMergeMedium (in IMediumAttachment mediumAttachment, in unsigned long sourceIdx, in unsigned long targetIdx, in IProgress progress); */
NS_IMETHODIMP _MYCLASS_::OnlineMergeMedium(IMediumAttachment *mediumAttachment, PRUint32 sourceIdx, PRUint32 targetIdx, IProgress *progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enableVMMStatistics (in boolean enable); */
NS_IMETHODIMP _MYCLASS_::EnableVMMStatistics(PRBool enable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void pauseWithReason (in PRUint32 reason); */
NS_IMETHODIMP _MYCLASS_::PauseWithReason(PRUint32 reason)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void resumeWithReason (in PRUint32 reason); */
NS_IMETHODIMP _MYCLASS_::ResumeWithReason(PRUint32 reason)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void saveStateWithReason (in PRUint32 reason, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::SaveStateWithReason(PRUint32 reason, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void assignMachine (in IMachine machine, in PRUint32 lockType, in IToken token); */
NS_IMETHODIMP _MYCLASS_::AssignMachine(IMachine *machine, PRUint32 lockType, IToken *token)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IInternalSessionControl_GetPID_TO(smth) NS_IMETHOD GetPID (PRUint32 * aPid) { return smth GetPID (aPid); }
#define COM_FORWARD_IInternalSessionControl_GetPID_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_GetPID_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_GetPID_TO_BASE(base) COM_FORWARD_IInternalSessionControl_GetPID_TO (base::)
#define COM_FORWARD_IInternalSessionControl_GetRemoteConsole_TO(smth) NS_IMETHOD GetRemoteConsole (IConsole * * aConsole) { return smth GetRemoteConsole (aConsole); }
#define COM_FORWARD_IInternalSessionControl_GetRemoteConsole_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_GetRemoteConsole_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_GetRemoteConsole_TO_BASE(base) COM_FORWARD_IInternalSessionControl_GetRemoteConsole_TO (base::)
#define COM_FORWARD_IInternalSessionControl_AssignRemoteMachine_TO(smth) NS_IMETHOD AssignRemoteMachine (IMachine * aMachine, IConsole * aConsole) { return smth AssignRemoteMachine (aMachine, aConsole); }
#define COM_FORWARD_IInternalSessionControl_AssignRemoteMachine_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_AssignRemoteMachine_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_AssignRemoteMachine_TO_BASE(base) COM_FORWARD_IInternalSessionControl_AssignRemoteMachine_TO (base::)
#define COM_FORWARD_IInternalSessionControl_UpdateMachineState_TO(smth) NS_IMETHOD UpdateMachineState (PRUint32 aMachineState) { return smth UpdateMachineState (aMachineState); }
#define COM_FORWARD_IInternalSessionControl_UpdateMachineState_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_UpdateMachineState_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_UpdateMachineState_TO_BASE(base) COM_FORWARD_IInternalSessionControl_UpdateMachineState_TO (base::)
#define COM_FORWARD_IInternalSessionControl_Uninitialize_TO(smth) NS_IMETHOD Uninitialize() { return smth Uninitialize(); }
#define COM_FORWARD_IInternalSessionControl_Uninitialize_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_Uninitialize_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_Uninitialize_TO_BASE(base) COM_FORWARD_IInternalSessionControl_Uninitialize_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnNetworkAdapterChange_TO(smth) NS_IMETHOD OnNetworkAdapterChange (INetworkAdapter * aNetworkAdapter, PRBool aChangeAdapter) { return smth OnNetworkAdapterChange (aNetworkAdapter, aChangeAdapter); }
#define COM_FORWARD_IInternalSessionControl_OnNetworkAdapterChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnNetworkAdapterChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnNetworkAdapterChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnNetworkAdapterChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnSerialPortChange_TO(smth) NS_IMETHOD OnSerialPortChange (ISerialPort * aSerialPort) { return smth OnSerialPortChange (aSerialPort); }
#define COM_FORWARD_IInternalSessionControl_OnSerialPortChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnSerialPortChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnSerialPortChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnSerialPortChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnParallelPortChange_TO(smth) NS_IMETHOD OnParallelPortChange (IParallelPort * aParallelPort) { return smth OnParallelPortChange (aParallelPort); }
#define COM_FORWARD_IInternalSessionControl_OnParallelPortChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnParallelPortChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnParallelPortChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnParallelPortChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnStorageControllerChange_TO(smth) NS_IMETHOD OnStorageControllerChange() { return smth OnStorageControllerChange(); }
#define COM_FORWARD_IInternalSessionControl_OnStorageControllerChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnStorageControllerChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnStorageControllerChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnStorageControllerChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnMediumChange_TO(smth) NS_IMETHOD OnMediumChange (IMediumAttachment * aMediumAttachment, PRBool aForce) { return smth OnMediumChange (aMediumAttachment, aForce); }
#define COM_FORWARD_IInternalSessionControl_OnMediumChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnMediumChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnMediumChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnMediumChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnStorageDeviceChange_TO(smth) NS_IMETHOD OnStorageDeviceChange (IMediumAttachment * aMediumAttachment, PRBool aRemove, PRBool aSilent) { return smth OnStorageDeviceChange (aMediumAttachment, aRemove, aSilent); }
#define COM_FORWARD_IInternalSessionControl_OnStorageDeviceChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnStorageDeviceChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnStorageDeviceChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnStorageDeviceChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnClipboardModeChange_TO(smth) NS_IMETHOD OnClipboardModeChange (PRUint32 aClipboardMode) { return smth OnClipboardModeChange (aClipboardMode); }
#define COM_FORWARD_IInternalSessionControl_OnClipboardModeChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnClipboardModeChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnClipboardModeChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnClipboardModeChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnDragAndDropModeChange_TO(smth) NS_IMETHOD OnDragAndDropModeChange (PRUint32 aDragAndDropMode) { return smth OnDragAndDropModeChange (aDragAndDropMode); }
#define COM_FORWARD_IInternalSessionControl_OnDragAndDropModeChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnDragAndDropModeChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnDragAndDropModeChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnDragAndDropModeChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnCPUChange_TO(smth) NS_IMETHOD OnCPUChange (PRUint32 aCpu, PRBool aAdd) { return smth OnCPUChange (aCpu, aAdd); }
#define COM_FORWARD_IInternalSessionControl_OnCPUChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnCPUChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnCPUChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnCPUChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnCPUExecutionCapChange_TO(smth) NS_IMETHOD OnCPUExecutionCapChange (PRUint32 aExecutionCap) { return smth OnCPUExecutionCapChange (aExecutionCap); }
#define COM_FORWARD_IInternalSessionControl_OnCPUExecutionCapChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnCPUExecutionCapChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnCPUExecutionCapChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnCPUExecutionCapChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnVRDEServerChange_TO(smth) NS_IMETHOD OnVRDEServerChange (PRBool aRestart) { return smth OnVRDEServerChange (aRestart); }
#define COM_FORWARD_IInternalSessionControl_OnVRDEServerChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnVRDEServerChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnVRDEServerChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnVRDEServerChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnVideoCaptureChange_TO(smth) NS_IMETHOD OnVideoCaptureChange() { return smth OnVideoCaptureChange(); }
#define COM_FORWARD_IInternalSessionControl_OnVideoCaptureChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnVideoCaptureChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnVideoCaptureChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnVideoCaptureChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnUSBControllerChange_TO(smth) NS_IMETHOD OnUSBControllerChange() { return smth OnUSBControllerChange(); }
#define COM_FORWARD_IInternalSessionControl_OnUSBControllerChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnUSBControllerChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnUSBControllerChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnUSBControllerChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnSharedFolderChange_TO(smth) NS_IMETHOD OnSharedFolderChange (PRBool aGlobal) { return smth OnSharedFolderChange (aGlobal); }
#define COM_FORWARD_IInternalSessionControl_OnSharedFolderChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnSharedFolderChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnSharedFolderChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnSharedFolderChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnUSBDeviceAttach_TO(smth) NS_IMETHOD OnUSBDeviceAttach (IUSBDevice * aDevice, IVirtualBoxErrorInfo * aError, PRUint32 aMaskedInterfaces) { return smth OnUSBDeviceAttach (aDevice, aError, aMaskedInterfaces); }
#define COM_FORWARD_IInternalSessionControl_OnUSBDeviceAttach_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnUSBDeviceAttach_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnUSBDeviceAttach_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnUSBDeviceAttach_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnUSBDeviceDetach_TO(smth) NS_IMETHOD OnUSBDeviceDetach (PRUnichar * aId, IVirtualBoxErrorInfo * aError) { return smth OnUSBDeviceDetach (aId, aError); }
#define COM_FORWARD_IInternalSessionControl_OnUSBDeviceDetach_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnUSBDeviceDetach_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnUSBDeviceDetach_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnUSBDeviceDetach_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnShowWindow_TO(smth) NS_IMETHOD OnShowWindow (PRBool aCheck, PRBool * aCanShow, PRInt64 * aWinId) { return smth OnShowWindow (aCheck, aCanShow, aWinId); }
#define COM_FORWARD_IInternalSessionControl_OnShowWindow_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnShowWindow_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnShowWindow_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnShowWindow_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnBandwidthGroupChange_TO(smth) NS_IMETHOD OnBandwidthGroupChange (IBandwidthGroup * aBandwidthGroup) { return smth OnBandwidthGroupChange (aBandwidthGroup); }
#define COM_FORWARD_IInternalSessionControl_OnBandwidthGroupChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnBandwidthGroupChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnBandwidthGroupChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnBandwidthGroupChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_AccessGuestProperty_TO(smth) NS_IMETHOD AccessGuestProperty (PRUnichar * aName, PRUnichar * aValue, PRUnichar * aFlags, PRBool aIsSetter, PRUnichar * * aRetValue, PRInt64 * aRetTimestamp, PRUnichar * * aRetFlags) { return smth AccessGuestProperty (aName, aValue, aFlags, aIsSetter, aRetValue, aRetTimestamp, aRetFlags); }
#define COM_FORWARD_IInternalSessionControl_AccessGuestProperty_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_AccessGuestProperty_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_AccessGuestProperty_TO_BASE(base) COM_FORWARD_IInternalSessionControl_AccessGuestProperty_TO (base::)
#define COM_FORWARD_IInternalSessionControl_EnumerateGuestProperties_TO(smth) NS_IMETHOD EnumerateGuestProperties (PRUnichar * aPatterns, PRUint32 * aKeysSize, PRUnichar * * * aKeys, PRUint32 * aValuesSize, PRUnichar * * * aValues, PRUint32 * aTimestampsSize, PRInt64 * * aTimestamps, PRUint32 * aFlagsSize, PRUnichar * * * aFlags) { return smth EnumerateGuestProperties (aPatterns, aKeysSize+++, aKeys, aValuesSize+++, aValues, aTimestampsSize+++, aTimestamps, aFlagsSize, aFlags); }
#define COM_FORWARD_IInternalSessionControl_EnumerateGuestProperties_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_EnumerateGuestProperties_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_EnumerateGuestProperties_TO_BASE(base) COM_FORWARD_IInternalSessionControl_EnumerateGuestProperties_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnlineMergeMedium_TO(smth) NS_IMETHOD OnlineMergeMedium (IMediumAttachment * aMediumAttachment, PRUint32 aSourceIdx, PRUint32 aTargetIdx, IProgress * aProgress) { return smth OnlineMergeMedium (aMediumAttachment, aSourceIdx, aTargetIdx, aProgress); }
#define COM_FORWARD_IInternalSessionControl_OnlineMergeMedium_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnlineMergeMedium_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnlineMergeMedium_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnlineMergeMedium_TO (base::)
#define COM_FORWARD_IInternalSessionControl_EnableVMMStatistics_TO(smth) NS_IMETHOD EnableVMMStatistics (PRBool aEnable) { return smth EnableVMMStatistics (aEnable); }
#define COM_FORWARD_IInternalSessionControl_EnableVMMStatistics_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_EnableVMMStatistics_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_EnableVMMStatistics_TO_BASE(base) COM_FORWARD_IInternalSessionControl_EnableVMMStatistics_TO (base::)
#define COM_FORWARD_IInternalSessionControl_PauseWithReason_TO(smth) NS_IMETHOD PauseWithReason (PRUint32 aReason) { return smth PauseWithReason (aReason); }
#define COM_FORWARD_IInternalSessionControl_PauseWithReason_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_PauseWithReason_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_PauseWithReason_TO_BASE(base) COM_FORWARD_IInternalSessionControl_PauseWithReason_TO (base::)
#define COM_FORWARD_IInternalSessionControl_ResumeWithReason_TO(smth) NS_IMETHOD ResumeWithReason (PRUint32 aReason) { return smth ResumeWithReason (aReason); }
#define COM_FORWARD_IInternalSessionControl_ResumeWithReason_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_ResumeWithReason_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_ResumeWithReason_TO_BASE(base) COM_FORWARD_IInternalSessionControl_ResumeWithReason_TO (base::)
#define COM_FORWARD_IInternalSessionControl_SaveStateWithReason_TO(smth) NS_IMETHOD SaveStateWithReason (PRUint32 aReason, IProgress * * aProgress) { return smth SaveStateWithReason (aReason, aProgress); }
#define COM_FORWARD_IInternalSessionControl_SaveStateWithReason_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_SaveStateWithReason_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_SaveStateWithReason_TO_BASE(base) COM_FORWARD_IInternalSessionControl_SaveStateWithReason_TO (base::)
#define COM_FORWARD_IInternalSessionControl_AssignMachine_TO(smth) NS_IMETHOD AssignMachine (IMachine * aMachine, PRUint32 aLockType, PRUnichar * aTokenId) { return smth AssignMachine (aMachine, aLockType, aTokenId); }
#define COM_FORWARD_IInternalSessionControl_AssignMachine_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_AssignMachine_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_AssignMachine_TO_BASE(base) COM_FORWARD_IInternalSessionControl_AssignMachine_TO (base::)
#define COM_FORWARD_IInternalSessionControl_TO(smth) NS_FORWARD_IINTERNALSESSIONCONTROL (smth)
#define COM_FORWARD_IInternalSessionControl_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_TO_BASE(base) COM_FORWARD_IInternalSessionControl_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IInternalSessionControl;

/* starting interface:    ISession */
#define ISESSION_IID_STR "12f4dcdb-12b2-4ec1-b7cd-ddd9f6c5bf4d"

#define ISESSION_IID \
  {0x12f4dcdb, 0x12b2, 0x4ec1, \
    { 0xb7, 0xcd, 0xdd, 0xd9, 0xf6, 0xc5, 0xbf, 0x4d }}

class NS_NO_VTABLE ISession : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISESSION_IID)

  /* readonly attribute PRUint32 state; */
  NS_IMETHOD GetState(PRUint32 *aState) = 0;

  /* readonly attribute PRUint32 type; */
  NS_IMETHOD GetType(PRUint32 *aType) = 0;

  /* readonly attribute IMachine machine; */
  NS_IMETHOD GetMachine(IMachine * *aMachine) = 0;

  /* readonly attribute IConsole console; */
  NS_IMETHOD GetConsole(IConsole * *aConsole) = 0;

  /* void unlockMachine (); */
  NS_IMETHOD UnlockMachine(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISESSION \
  NS_IMETHOD GetState(PRUint32 *aState); \
  NS_IMETHOD GetType(PRUint32 *aType); \
  NS_IMETHOD GetMachine(IMachine * *aMachine); \
  NS_IMETHOD GetConsole(IConsole * *aConsole); \
  NS_IMETHOD UnlockMachine(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISESSION(_to) \
  NS_IMETHOD GetState(PRUint32 *aState) { return _to GetState(aState); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return _to GetType(aType); } \
  NS_IMETHOD GetMachine(IMachine * *aMachine) { return _to GetMachine(aMachine); } \
  NS_IMETHOD GetConsole(IConsole * *aConsole) { return _to GetConsole(aConsole); } \
  NS_IMETHOD UnlockMachine(void) { return _to UnlockMachine(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISESSION(_to) \
  NS_IMETHOD GetState(PRUint32 *aState) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetState(aState); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetType(aType); } \
  NS_IMETHOD GetMachine(IMachine * *aMachine) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMachine(aMachine); } \
  NS_IMETHOD GetConsole(IConsole * *aConsole) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetConsole(aConsole); } \
  NS_IMETHOD UnlockMachine(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnlockMachine(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ISession
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISESSION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ISession)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute PRUint32 state; */
NS_IMETHODIMP _MYCLASS_::GetState(PRUint32 *aState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 type; */
NS_IMETHODIMP _MYCLASS_::GetType(PRUint32 *aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IMachine machine; */
NS_IMETHODIMP _MYCLASS_::GetMachine(IMachine * *aMachine)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IConsole console; */
NS_IMETHODIMP _MYCLASS_::GetConsole(IConsole * *aConsole)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unlockMachine (); */
NS_IMETHODIMP _MYCLASS_::UnlockMachine()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_ISession_GETTER_State_TO(smth) NS_IMETHOD GetState (PRUint32 * aState) { return smth GetState (aState); }
#define COM_FORWARD_ISession_GETTER_State_TO_OBJ(obj) COM_FORWARD_ISession_GETTER_State_TO ((obj)->)
#define COM_FORWARD_ISession_GETTER_State_TO_BASE(base) COM_FORWARD_ISession_GETTER_State_TO (base::)
#define COM_FORWARD_ISession_GETTER_Type_TO(smth) NS_IMETHOD GetType (PRUint32 * aType) { return smth GetType (aType); }
#define COM_FORWARD_ISession_GETTER_Type_TO_OBJ(obj) COM_FORWARD_ISession_GETTER_Type_TO ((obj)->)
#define COM_FORWARD_ISession_GETTER_Type_TO_BASE(base) COM_FORWARD_ISession_GETTER_Type_TO (base::)
#define COM_FORWARD_ISession_GETTER_Machine_TO(smth) NS_IMETHOD GetMachine (IMachine * * aMachine) { return smth GetMachine (aMachine); }
#define COM_FORWARD_ISession_GETTER_Machine_TO_OBJ(obj) COM_FORWARD_ISession_GETTER_Machine_TO ((obj)->)
#define COM_FORWARD_ISession_GETTER_Machine_TO_BASE(base) COM_FORWARD_ISession_GETTER_Machine_TO (base::)
#define COM_FORWARD_ISession_GETTER_Console_TO(smth) NS_IMETHOD GetConsole (IConsole * * aConsole) { return smth GetConsole (aConsole); }
#define COM_FORWARD_ISession_GETTER_Console_TO_OBJ(obj) COM_FORWARD_ISession_GETTER_Console_TO ((obj)->)
#define COM_FORWARD_ISession_GETTER_Console_TO_BASE(base) COM_FORWARD_ISession_GETTER_Console_TO (base::)
#define COM_FORWARD_ISession_UnlockMachine_TO(smth) NS_IMETHOD UnlockMachine() { return smth UnlockMachine(); }
#define COM_FORWARD_ISession_UnlockMachine_TO_OBJ(obj) COM_FORWARD_ISession_UnlockMachine_TO ((obj)->)
#define COM_FORWARD_ISession_UnlockMachine_TO_BASE(base) COM_FORWARD_ISession_UnlockMachine_TO (base::)
#define COM_FORWARD_ISession_TO(smth) NS_FORWARD_ISESSION (smth)
#define COM_FORWARD_ISession_TO_OBJ(obj) COM_FORWARD_ISession_TO ((obj)->)
#define COM_FORWARD_ISession_TO_BASE(base) COM_FORWARD_ISession_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_ISession;

/* starting interface:    IStorageController */
#define ISTORAGECONTROLLER_IID_STR "a1556333-09b6-46d9-bfb7-fc239b7fbe1e"

#define ISTORAGECONTROLLER_IID \
  {0xa1556333, 0x09b6, 0x46d9, \
    { 0xbf, 0xb7, 0xfc, 0x23, 0x9b, 0x7f, 0xbe, 0x1e }}

class NS_NO_VTABLE IStorageController : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISTORAGECONTROLLER_IID)

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* readonly attribute unsigned long maxDevicesPerPortCount; */
  NS_IMETHOD GetMaxDevicesPerPortCount(PRUint32 *aMaxDevicesPerPortCount) = 0;

  /* readonly attribute unsigned long minPortCount; */
  NS_IMETHOD GetMinPortCount(PRUint32 *aMinPortCount) = 0;

  /* readonly attribute unsigned long maxPortCount; */
  NS_IMETHOD GetMaxPortCount(PRUint32 *aMaxPortCount) = 0;

  /* attribute unsigned long instance; */
  NS_IMETHOD GetInstance(PRUint32 *aInstance) = 0;
  NS_IMETHOD SetInstance(PRUint32 aInstance) = 0;

  /* attribute unsigned long portCount; */
  NS_IMETHOD GetPortCount(PRUint32 *aPortCount) = 0;
  NS_IMETHOD SetPortCount(PRUint32 aPortCount) = 0;

  /* readonly attribute PRUint32 bus; */
  NS_IMETHOD GetBus(PRUint32 *aBus) = 0;

  /* attribute PRUint32 controllerType; */
  NS_IMETHOD GetControllerType(PRUint32 *aControllerType) = 0;
  NS_IMETHOD SetControllerType(PRUint32 aControllerType) = 0;

  /* attribute boolean useHostIOCache; */
  NS_IMETHOD GetUseHostIOCache(PRBool *aUseHostIOCache) = 0;
  NS_IMETHOD SetUseHostIOCache(PRBool aUseHostIOCache) = 0;

  /* readonly attribute boolean bootable; */
  NS_IMETHOD GetBootable(PRBool *aBootable) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISTORAGECONTROLLER \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetMaxDevicesPerPortCount(PRUint32 *aMaxDevicesPerPortCount); \
  NS_IMETHOD GetMinPortCount(PRUint32 *aMinPortCount); \
  NS_IMETHOD GetMaxPortCount(PRUint32 *aMaxPortCount); \
  NS_IMETHOD GetInstance(PRUint32 *aInstance); \
  NS_IMETHOD SetInstance(PRUint32 aInstance); \
  NS_IMETHOD GetPortCount(PRUint32 *aPortCount); \
  NS_IMETHOD SetPortCount(PRUint32 aPortCount); \
  NS_IMETHOD GetBus(PRUint32 *aBus); \
  NS_IMETHOD GetControllerType(PRUint32 *aControllerType); \
  NS_IMETHOD SetControllerType(PRUint32 aControllerType); \
  NS_IMETHOD GetUseHostIOCache(PRBool *aUseHostIOCache); \
  NS_IMETHOD SetUseHostIOCache(PRBool aUseHostIOCache); \
  NS_IMETHOD GetBootable(PRBool *aBootable); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISTORAGECONTROLLER(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetMaxDevicesPerPortCount(PRUint32 *aMaxDevicesPerPortCount) { return _to GetMaxDevicesPerPortCount(aMaxDevicesPerPortCount); } \
  NS_IMETHOD GetMinPortCount(PRUint32 *aMinPortCount) { return _to GetMinPortCount(aMinPortCount); } \
  NS_IMETHOD GetMaxPortCount(PRUint32 *aMaxPortCount) { return _to GetMaxPortCount(aMaxPortCount); } \
  NS_IMETHOD GetInstance(PRUint32 *aInstance) { return _to GetInstance(aInstance); } \
  NS_IMETHOD SetInstance(PRUint32 aInstance) { return _to SetInstance(aInstance); } \
  NS_IMETHOD GetPortCount(PRUint32 *aPortCount) { return _to GetPortCount(aPortCount); } \
  NS_IMETHOD SetPortCount(PRUint32 aPortCount) { return _to SetPortCount(aPortCount); } \
  NS_IMETHOD GetBus(PRUint32 *aBus) { return _to GetBus(aBus); } \
  NS_IMETHOD GetControllerType(PRUint32 *aControllerType) { return _to GetControllerType(aControllerType); } \
  NS_IMETHOD SetControllerType(PRUint32 aControllerType) { return _to SetControllerType(aControllerType); } \
  NS_IMETHOD GetUseHostIOCache(PRBool *aUseHostIOCache) { return _to GetUseHostIOCache(aUseHostIOCache); } \
  NS_IMETHOD SetUseHostIOCache(PRBool aUseHostIOCache) { return _to SetUseHostIOCache(aUseHostIOCache); } \
  NS_IMETHOD GetBootable(PRBool *aBootable) { return _to GetBootable(aBootable); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISTORAGECONTROLLER(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetMaxDevicesPerPortCount(PRUint32 *aMaxDevicesPerPortCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxDevicesPerPortCount(aMaxDevicesPerPortCount); } \
  NS_IMETHOD GetMinPortCount(PRUint32 *aMinPortCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMinPortCount(aMinPortCount); } \
  NS_IMETHOD GetMaxPortCount(PRUint32 *aMaxPortCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxPortCount(aMaxPortCount); } \
  NS_IMETHOD GetInstance(PRUint32 *aInstance) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInstance(aInstance); } \
  NS_IMETHOD SetInstance(PRUint32 aInstance) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetInstance(aInstance); } \
  NS_IMETHOD GetPortCount(PRUint32 *aPortCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPortCount(aPortCount); } \
  NS_IMETHOD SetPortCount(PRUint32 aPortCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPortCount(aPortCount); } \
  NS_IMETHOD GetBus(PRUint32 *aBus) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBus(aBus); } \
  NS_IMETHOD GetControllerType(PRUint32 *aControllerType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetControllerType(aControllerType); } \
  NS_IMETHOD SetControllerType(PRUint32 aControllerType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetControllerType(aControllerType); } \
  NS_IMETHOD GetUseHostIOCache(PRBool *aUseHostIOCache) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUseHostIOCache(aUseHostIOCache); } \
  NS_IMETHOD SetUseHostIOCache(PRBool aUseHostIOCache) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetUseHostIOCache(aUseHostIOCache); } \
  NS_IMETHOD GetBootable(PRBool *aBootable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBootable(aBootable); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IStorageController
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISTORAGECONTROLLER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IStorageController)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long maxDevicesPerPortCount; */
NS_IMETHODIMP _MYCLASS_::GetMaxDevicesPerPortCount(PRUint32 *aMaxDevicesPerPortCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long minPortCount; */
NS_IMETHODIMP _MYCLASS_::GetMinPortCount(PRUint32 *aMinPortCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long maxPortCount; */
NS_IMETHODIMP _MYCLASS_::GetMaxPortCount(PRUint32 *aMaxPortCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long instance; */
NS_IMETHODIMP _MYCLASS_::GetInstance(PRUint32 *aInstance)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetInstance(PRUint32 aInstance)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long portCount; */
NS_IMETHODIMP _MYCLASS_::GetPortCount(PRUint32 *aPortCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPortCount(PRUint32 aPortCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 bus; */
NS_IMETHODIMP _MYCLASS_::GetBus(PRUint32 *aBus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 controllerType; */
NS_IMETHODIMP _MYCLASS_::GetControllerType(PRUint32 *aControllerType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetControllerType(PRUint32 aControllerType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean useHostIOCache; */
NS_IMETHODIMP _MYCLASS_::GetUseHostIOCache(PRBool *aUseHostIOCache)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetUseHostIOCache(PRBool aUseHostIOCache)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean bootable; */
NS_IMETHODIMP _MYCLASS_::GetBootable(PRBool *aBootable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IStorageController_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IStorageController_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IStorageController_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IStorageController_GETTER_Name_TO_BASE(base) COM_FORWARD_IStorageController_GETTER_Name_TO (base::)
#define COM_FORWARD_IStorageController_GETTER_MaxDevicesPerPortCount_TO(smth) NS_IMETHOD GetMaxDevicesPerPortCount (PRUint32 * aMaxDevicesPerPortCount) { return smth GetMaxDevicesPerPortCount (aMaxDevicesPerPortCount); }
#define COM_FORWARD_IStorageController_GETTER_MaxDevicesPerPortCount_TO_OBJ(obj) COM_FORWARD_IStorageController_GETTER_MaxDevicesPerPortCount_TO ((obj)->)
#define COM_FORWARD_IStorageController_GETTER_MaxDevicesPerPortCount_TO_BASE(base) COM_FORWARD_IStorageController_GETTER_MaxDevicesPerPortCount_TO (base::)
#define COM_FORWARD_IStorageController_GETTER_MinPortCount_TO(smth) NS_IMETHOD GetMinPortCount (PRUint32 * aMinPortCount) { return smth GetMinPortCount (aMinPortCount); }
#define COM_FORWARD_IStorageController_GETTER_MinPortCount_TO_OBJ(obj) COM_FORWARD_IStorageController_GETTER_MinPortCount_TO ((obj)->)
#define COM_FORWARD_IStorageController_GETTER_MinPortCount_TO_BASE(base) COM_FORWARD_IStorageController_GETTER_MinPortCount_TO (base::)
#define COM_FORWARD_IStorageController_GETTER_MaxPortCount_TO(smth) NS_IMETHOD GetMaxPortCount (PRUint32 * aMaxPortCount) { return smth GetMaxPortCount (aMaxPortCount); }
#define COM_FORWARD_IStorageController_GETTER_MaxPortCount_TO_OBJ(obj) COM_FORWARD_IStorageController_GETTER_MaxPortCount_TO ((obj)->)
#define COM_FORWARD_IStorageController_GETTER_MaxPortCount_TO_BASE(base) COM_FORWARD_IStorageController_GETTER_MaxPortCount_TO (base::)
#define COM_FORWARD_IStorageController_GETTER_Instance_TO(smth) NS_IMETHOD GetInstance (PRUint32 * aInstance) { return smth GetInstance (aInstance); }
#define COM_FORWARD_IStorageController_GETTER_Instance_TO_OBJ(obj) COM_FORWARD_IStorageController_GETTER_Instance_TO ((obj)->)
#define COM_FORWARD_IStorageController_GETTER_Instance_TO_BASE(base) COM_FORWARD_IStorageController_GETTER_Instance_TO (base::)
#define COM_FORWARD_IStorageController_SETTER_Instance_TO(smth) NS_IMETHOD SetInstance (PRUint32 aInstance) { return smth SetInstance (aInstance); }
#define COM_FORWARD_IStorageController_SETTER_Instance_TO_OBJ(obj) COM_FORWARD_IStorageController_SETTER_Instance_TO ((obj)->)
#define COM_FORWARD_IStorageController_SETTER_Instance_TO_BASE(base) COM_FORWARD_IStorageController_SETTER_Instance_TO (base::)
#define COM_FORWARD_IStorageController_GETTER_PortCount_TO(smth) NS_IMETHOD GetPortCount (PRUint32 * aPortCount) { return smth GetPortCount (aPortCount); }
#define COM_FORWARD_IStorageController_GETTER_PortCount_TO_OBJ(obj) COM_FORWARD_IStorageController_GETTER_PortCount_TO ((obj)->)
#define COM_FORWARD_IStorageController_GETTER_PortCount_TO_BASE(base) COM_FORWARD_IStorageController_GETTER_PortCount_TO (base::)
#define COM_FORWARD_IStorageController_SETTER_PortCount_TO(smth) NS_IMETHOD SetPortCount (PRUint32 aPortCount) { return smth SetPortCount (aPortCount); }
#define COM_FORWARD_IStorageController_SETTER_PortCount_TO_OBJ(obj) COM_FORWARD_IStorageController_SETTER_PortCount_TO ((obj)->)
#define COM_FORWARD_IStorageController_SETTER_PortCount_TO_BASE(base) COM_FORWARD_IStorageController_SETTER_PortCount_TO (base::)
#define COM_FORWARD_IStorageController_GETTER_Bus_TO(smth) NS_IMETHOD GetBus (PRUint32 * aBus) { return smth GetBus (aBus); }
#define COM_FORWARD_IStorageController_GETTER_Bus_TO_OBJ(obj) COM_FORWARD_IStorageController_GETTER_Bus_TO ((obj)->)
#define COM_FORWARD_IStorageController_GETTER_Bus_TO_BASE(base) COM_FORWARD_IStorageController_GETTER_Bus_TO (base::)
#define COM_FORWARD_IStorageController_GETTER_ControllerType_TO(smth) NS_IMETHOD GetControllerType (PRUint32 * aControllerType) { return smth GetControllerType (aControllerType); }
#define COM_FORWARD_IStorageController_GETTER_ControllerType_TO_OBJ(obj) COM_FORWARD_IStorageController_GETTER_ControllerType_TO ((obj)->)
#define COM_FORWARD_IStorageController_GETTER_ControllerType_TO_BASE(base) COM_FORWARD_IStorageController_GETTER_ControllerType_TO (base::)
#define COM_FORWARD_IStorageController_SETTER_ControllerType_TO(smth) NS_IMETHOD SetControllerType (PRUint32 aControllerType) { return smth SetControllerType (aControllerType); }
#define COM_FORWARD_IStorageController_SETTER_ControllerType_TO_OBJ(obj) COM_FORWARD_IStorageController_SETTER_ControllerType_TO ((obj)->)
#define COM_FORWARD_IStorageController_SETTER_ControllerType_TO_BASE(base) COM_FORWARD_IStorageController_SETTER_ControllerType_TO (base::)
#define COM_FORWARD_IStorageController_GETTER_UseHostIOCache_TO(smth) NS_IMETHOD GetUseHostIOCache (PRBool * aUseHostIOCache) { return smth GetUseHostIOCache (aUseHostIOCache); }
#define COM_FORWARD_IStorageController_GETTER_UseHostIOCache_TO_OBJ(obj) COM_FORWARD_IStorageController_GETTER_UseHostIOCache_TO ((obj)->)
#define COM_FORWARD_IStorageController_GETTER_UseHostIOCache_TO_BASE(base) COM_FORWARD_IStorageController_GETTER_UseHostIOCache_TO (base::)
#define COM_FORWARD_IStorageController_SETTER_UseHostIOCache_TO(smth) NS_IMETHOD SetUseHostIOCache (PRBool aUseHostIOCache) { return smth SetUseHostIOCache (aUseHostIOCache); }
#define COM_FORWARD_IStorageController_SETTER_UseHostIOCache_TO_OBJ(obj) COM_FORWARD_IStorageController_SETTER_UseHostIOCache_TO ((obj)->)
#define COM_FORWARD_IStorageController_SETTER_UseHostIOCache_TO_BASE(base) COM_FORWARD_IStorageController_SETTER_UseHostIOCache_TO (base::)
#define COM_FORWARD_IStorageController_GETTER_Bootable_TO(smth) NS_IMETHOD GetBootable (PRBool * aBootable) { return smth GetBootable (aBootable); }
#define COM_FORWARD_IStorageController_GETTER_Bootable_TO_OBJ(obj) COM_FORWARD_IStorageController_GETTER_Bootable_TO ((obj)->)
#define COM_FORWARD_IStorageController_GETTER_Bootable_TO_BASE(base) COM_FORWARD_IStorageController_GETTER_Bootable_TO (base::)
#define COM_FORWARD_IStorageController_TO(smth) NS_FORWARD_ISTORAGECONTROLLER (smth)
#define COM_FORWARD_IStorageController_TO_OBJ(obj) COM_FORWARD_IStorageController_TO ((obj)->)
#define COM_FORWARD_IStorageController_TO_BASE(base) COM_FORWARD_IStorageController_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IStorageController;

/* starting interface:    IPerformanceMetric */
#define IPERFORMANCEMETRIC_IID_STR "2a1a60ae-9345-4019-ad53-d34ba41cbfe9"

#define IPERFORMANCEMETRIC_IID \
  {0x2a1a60ae, 0x9345, 0x4019, \
    { 0xad, 0x53, 0xd3, 0x4b, 0xa4, 0x1c, 0xbf, 0xe9 }}

class NS_NO_VTABLE IPerformanceMetric : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IPERFORMANCEMETRIC_IID)

  /* readonly attribute wstring metricName; */
  NS_IMETHOD GetMetricName(PRUnichar * *aMetricName) = 0;

  /* readonly attribute nsISupports object; */
  NS_IMETHOD GetObject(nsISupports * *aObject) = 0;

  /* readonly attribute wstring description; */
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) = 0;

  /* readonly attribute unsigned long period; */
  NS_IMETHOD GetPeriod(PRUint32 *aPeriod) = 0;

  /* readonly attribute unsigned long count; */
  NS_IMETHOD GetCount(PRUint32 *aCount) = 0;

  /* readonly attribute wstring unit; */
  NS_IMETHOD GetUnit(PRUnichar * *aUnit) = 0;

  /* readonly attribute long minimumValue; */
  NS_IMETHOD GetMinimumValue(PRInt32 *aMinimumValue) = 0;

  /* readonly attribute long maximumValue; */
  NS_IMETHOD GetMaximumValue(PRInt32 *aMaximumValue) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IPERFORMANCEMETRIC \
  NS_IMETHOD GetMetricName(PRUnichar * *aMetricName); \
  NS_IMETHOD GetObject(nsISupports * *aObject); \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription); \
  NS_IMETHOD GetPeriod(PRUint32 *aPeriod); \
  NS_IMETHOD GetCount(PRUint32 *aCount); \
  NS_IMETHOD GetUnit(PRUnichar * *aUnit); \
  NS_IMETHOD GetMinimumValue(PRInt32 *aMinimumValue); \
  NS_IMETHOD GetMaximumValue(PRInt32 *aMaximumValue); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IPERFORMANCEMETRIC(_to) \
  NS_IMETHOD GetMetricName(PRUnichar * *aMetricName) { return _to GetMetricName(aMetricName); } \
  NS_IMETHOD GetObject(nsISupports * *aObject) { return _to GetObject(aObject); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return _to GetDescription(aDescription); } \
  NS_IMETHOD GetPeriod(PRUint32 *aPeriod) { return _to GetPeriod(aPeriod); } \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return _to GetCount(aCount); } \
  NS_IMETHOD GetUnit(PRUnichar * *aUnit) { return _to GetUnit(aUnit); } \
  NS_IMETHOD GetMinimumValue(PRInt32 *aMinimumValue) { return _to GetMinimumValue(aMinimumValue); } \
  NS_IMETHOD GetMaximumValue(PRInt32 *aMaximumValue) { return _to GetMaximumValue(aMaximumValue); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IPERFORMANCEMETRIC(_to) \
  NS_IMETHOD GetMetricName(PRUnichar * *aMetricName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMetricName(aMetricName); } \
  NS_IMETHOD GetObject(nsISupports * *aObject) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetObject(aObject); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } \
  NS_IMETHOD GetPeriod(PRUint32 *aPeriod) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPeriod(aPeriod); } \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCount(aCount); } \
  NS_IMETHOD GetUnit(PRUnichar * *aUnit) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUnit(aUnit); } \
  NS_IMETHOD GetMinimumValue(PRInt32 *aMinimumValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMinimumValue(aMinimumValue); } \
  NS_IMETHOD GetMaximumValue(PRInt32 *aMaximumValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaximumValue(aMaximumValue); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IPerformanceMetric
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IPERFORMANCEMETRIC

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IPerformanceMetric)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring metricName; */
NS_IMETHODIMP _MYCLASS_::GetMetricName(PRUnichar * *aMetricName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsISupports object; */
NS_IMETHODIMP _MYCLASS_::GetObject(nsISupports * *aObject)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring description; */
NS_IMETHODIMP _MYCLASS_::GetDescription(PRUnichar * *aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long period; */
NS_IMETHODIMP _MYCLASS_::GetPeriod(PRUint32 *aPeriod)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long count; */
NS_IMETHODIMP _MYCLASS_::GetCount(PRUint32 *aCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring unit; */
NS_IMETHODIMP _MYCLASS_::GetUnit(PRUnichar * *aUnit)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long minimumValue; */
NS_IMETHODIMP _MYCLASS_::GetMinimumValue(PRInt32 *aMinimumValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long maximumValue; */
NS_IMETHODIMP _MYCLASS_::GetMaximumValue(PRInt32 *aMaximumValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IPerformanceMetric_GETTER_MetricName_TO(smth) NS_IMETHOD GetMetricName (PRUnichar * * aMetricName) { return smth GetMetricName (aMetricName); }
#define COM_FORWARD_IPerformanceMetric_GETTER_MetricName_TO_OBJ(obj) COM_FORWARD_IPerformanceMetric_GETTER_MetricName_TO ((obj)->)
#define COM_FORWARD_IPerformanceMetric_GETTER_MetricName_TO_BASE(base) COM_FORWARD_IPerformanceMetric_GETTER_MetricName_TO (base::)
#define COM_FORWARD_IPerformanceMetric_GETTER_Object_TO(smth) NS_IMETHOD GetObject (nsISupports * * aObject) { return smth GetObject (aObject); }
#define COM_FORWARD_IPerformanceMetric_GETTER_Object_TO_OBJ(obj) COM_FORWARD_IPerformanceMetric_GETTER_Object_TO ((obj)->)
#define COM_FORWARD_IPerformanceMetric_GETTER_Object_TO_BASE(base) COM_FORWARD_IPerformanceMetric_GETTER_Object_TO (base::)
#define COM_FORWARD_IPerformanceMetric_GETTER_Description_TO(smth) NS_IMETHOD GetDescription (PRUnichar * * aDescription) { return smth GetDescription (aDescription); }
#define COM_FORWARD_IPerformanceMetric_GETTER_Description_TO_OBJ(obj) COM_FORWARD_IPerformanceMetric_GETTER_Description_TO ((obj)->)
#define COM_FORWARD_IPerformanceMetric_GETTER_Description_TO_BASE(base) COM_FORWARD_IPerformanceMetric_GETTER_Description_TO (base::)
#define COM_FORWARD_IPerformanceMetric_GETTER_Period_TO(smth) NS_IMETHOD GetPeriod (PRUint32 * aPeriod) { return smth GetPeriod (aPeriod); }
#define COM_FORWARD_IPerformanceMetric_GETTER_Period_TO_OBJ(obj) COM_FORWARD_IPerformanceMetric_GETTER_Period_TO ((obj)->)
#define COM_FORWARD_IPerformanceMetric_GETTER_Period_TO_BASE(base) COM_FORWARD_IPerformanceMetric_GETTER_Period_TO (base::)
#define COM_FORWARD_IPerformanceMetric_GETTER_Count_TO(smth) NS_IMETHOD GetCount (PRUint32 * aCount) { return smth GetCount (aCount); }
#define COM_FORWARD_IPerformanceMetric_GETTER_Count_TO_OBJ(obj) COM_FORWARD_IPerformanceMetric_GETTER_Count_TO ((obj)->)
#define COM_FORWARD_IPerformanceMetric_GETTER_Count_TO_BASE(base) COM_FORWARD_IPerformanceMetric_GETTER_Count_TO (base::)
#define COM_FORWARD_IPerformanceMetric_GETTER_Unit_TO(smth) NS_IMETHOD GetUnit (PRUnichar * * aUnit) { return smth GetUnit (aUnit); }
#define COM_FORWARD_IPerformanceMetric_GETTER_Unit_TO_OBJ(obj) COM_FORWARD_IPerformanceMetric_GETTER_Unit_TO ((obj)->)
#define COM_FORWARD_IPerformanceMetric_GETTER_Unit_TO_BASE(base) COM_FORWARD_IPerformanceMetric_GETTER_Unit_TO (base::)
#define COM_FORWARD_IPerformanceMetric_GETTER_MinimumValue_TO(smth) NS_IMETHOD GetMinimumValue (PRInt32 * aMinimumValue) { return smth GetMinimumValue (aMinimumValue); }
#define COM_FORWARD_IPerformanceMetric_GETTER_MinimumValue_TO_OBJ(obj) COM_FORWARD_IPerformanceMetric_GETTER_MinimumValue_TO ((obj)->)
#define COM_FORWARD_IPerformanceMetric_GETTER_MinimumValue_TO_BASE(base) COM_FORWARD_IPerformanceMetric_GETTER_MinimumValue_TO (base::)
#define COM_FORWARD_IPerformanceMetric_GETTER_MaximumValue_TO(smth) NS_IMETHOD GetMaximumValue (PRInt32 * aMaximumValue) { return smth GetMaximumValue (aMaximumValue); }
#define COM_FORWARD_IPerformanceMetric_GETTER_MaximumValue_TO_OBJ(obj) COM_FORWARD_IPerformanceMetric_GETTER_MaximumValue_TO ((obj)->)
#define COM_FORWARD_IPerformanceMetric_GETTER_MaximumValue_TO_BASE(base) COM_FORWARD_IPerformanceMetric_GETTER_MaximumValue_TO (base::)
#define COM_FORWARD_IPerformanceMetric_TO(smth) NS_FORWARD_IPERFORMANCEMETRIC (smth)
#define COM_FORWARD_IPerformanceMetric_TO_OBJ(obj) COM_FORWARD_IPerformanceMetric_TO ((obj)->)
#define COM_FORWARD_IPerformanceMetric_TO_BASE(base) COM_FORWARD_IPerformanceMetric_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IPerformanceMetric;

/* starting interface:    IPerformanceCollector */
#define IPERFORMANCECOLLECTOR_IID_STR "e22e1acb-ac4a-43bb-a31c-17321659b0c6"

#define IPERFORMANCECOLLECTOR_IID \
  {0xe22e1acb, 0xac4a, 0x43bb, \
    { 0xa3, 0x1c, 0x17, 0x32, 0x16, 0x59, 0xb0, 0xc6 }}

class NS_NO_VTABLE IPerformanceCollector : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IPERFORMANCECOLLECTOR_IID)

  /* void getMetricNames (out unsigned long metricNamesSize, [array, size_is (metricNamesSize), retval] out wstring metricNames); */
  NS_IMETHOD GetMetricNames(PRUint32 *metricNamesSize, PRUnichar ***metricNames) = 0;

  /* void getMetrics (in unsigned long metricNamesSize, [array, size_is (metricNamesSize)] in wstring metricNames, in unsigned long objectsSize, [array, size_is (objectsSize)] in nsISupports objects, out unsigned long metricsSize, [array, size_is (metricsSize), retval] out IPerformanceMetric metrics); */
  NS_IMETHOD GetMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *metricsSize, IPerformanceMetric ***metrics) = 0;

  /* void setupMetrics (in unsigned long metricNamesSize, [array, size_is (metricNamesSize)] in wstring metricNames, in unsigned long objectsSize, [array, size_is (objectsSize)] in nsISupports objects, in unsigned long period, in unsigned long count, out unsigned long affectedMetricsSize, [array, size_is (affectedMetricsSize), retval] out IPerformanceMetric affectedMetrics); */
  NS_IMETHOD SetupMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 period, PRUint32 count, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics) = 0;

  /* void enableMetrics (in unsigned long metricNamesSize, [array, size_is (metricNamesSize)] in wstring metricNames, in unsigned long objectsSize, [array, size_is (objectsSize)] in nsISupports objects, out unsigned long affectedMetricsSize, [array, size_is (affectedMetricsSize), retval] out IPerformanceMetric affectedMetrics); */
  NS_IMETHOD EnableMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics) = 0;

  /* void disableMetrics (in unsigned long metricNamesSize, [array, size_is (metricNamesSize)] in wstring metricNames, in unsigned long objectsSize, [array, size_is (objectsSize)] in nsISupports objects, out unsigned long affectedMetricsSize, [array, size_is (affectedMetricsSize), retval] out IPerformanceMetric affectedMetrics); */
  NS_IMETHOD DisableMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics) = 0;

  /* void queryMetricsData (in unsigned long metricNamesSize, [array, size_is (metricNamesSize)] in wstring metricNames, in unsigned long objectsSize, [array, size_is (objectsSize)] in nsISupports objects, out unsigned long returnMetricNamesSize, [array, size_is (returnMetricNamesSize)] out wstring returnMetricNames, out unsigned long returnObjectsSize, [array, size_is (returnObjectsSize)] out nsISupports returnObjects, out unsigned long returnUnitsSize, [array, size_is (returnUnitsSize)] out wstring returnUnits, out unsigned long returnScalesSize, [array, size_is (returnScalesSize)] out unsigned long returnScales, out unsigned long returnSequenceNumbersSize, [array, size_is (returnSequenceNumbersSize)] out unsigned long returnSequenceNumbers, out unsigned long returnDataIndicesSize, [array, size_is (returnDataIndicesSize)] out unsigned long returnDataIndices, out unsigned long returnDataLengthsSize, [array, size_is (returnDataLengthsSize)] out unsigned long returnDataLengths, out unsigned long returnDataSize, [array, size_is (returnDataSize), retval] out long returnData); */
  NS_IMETHOD QueryMetricsData(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *returnMetricNamesSize, PRUnichar ***returnMetricNames, PRUint32 *returnObjectsSize, nsISupports ***returnObjects, PRUint32 *returnUnitsSize, PRUnichar ***returnUnits, PRUint32 *returnScalesSize, PRUint32 **returnScales, PRUint32 *returnSequenceNumbersSize, PRUint32 **returnSequenceNumbers, PRUint32 *returnDataIndicesSize, PRUint32 **returnDataIndices, PRUint32 *returnDataLengthsSize, PRUint32 **returnDataLengths, PRUint32 *returnDataSize, PRInt32 **returnData) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IPERFORMANCECOLLECTOR \
  NS_IMETHOD GetMetricNames(PRUint32 *metricNamesSize, PRUnichar ***metricNames); \
  NS_IMETHOD GetMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *metricsSize, IPerformanceMetric ***metrics); \
  NS_IMETHOD SetupMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 period, PRUint32 count, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics); \
  NS_IMETHOD EnableMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics); \
  NS_IMETHOD DisableMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics); \
  NS_IMETHOD QueryMetricsData(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *returnMetricNamesSize, PRUnichar ***returnMetricNames, PRUint32 *returnObjectsSize, nsISupports ***returnObjects, PRUint32 *returnUnitsSize, PRUnichar ***returnUnits, PRUint32 *returnScalesSize, PRUint32 **returnScales, PRUint32 *returnSequenceNumbersSize, PRUint32 **returnSequenceNumbers, PRUint32 *returnDataIndicesSize, PRUint32 **returnDataIndices, PRUint32 *returnDataLengthsSize, PRUint32 **returnDataLengths, PRUint32 *returnDataSize, PRInt32 **returnData); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IPERFORMANCECOLLECTOR(_to) \
  NS_IMETHOD GetMetricNames(PRUint32 *metricNamesSize, PRUnichar ***metricNames) { return _to GetMetricNames(metricNamesSize, metricNames); } \
  NS_IMETHOD GetMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *metricsSize, IPerformanceMetric ***metrics) { return _to GetMetrics(metricNamesSize, metricNames, objectsSize, objects, metricsSize, metrics); } \
  NS_IMETHOD SetupMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 period, PRUint32 count, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics) { return _to SetupMetrics(metricNamesSize, metricNames, objectsSize, objects, period, count, affectedMetricsSize, affectedMetrics); } \
  NS_IMETHOD EnableMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics) { return _to EnableMetrics(metricNamesSize, metricNames, objectsSize, objects, affectedMetricsSize, affectedMetrics); } \
  NS_IMETHOD DisableMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics) { return _to DisableMetrics(metricNamesSize, metricNames, objectsSize, objects, affectedMetricsSize, affectedMetrics); } \
  NS_IMETHOD QueryMetricsData(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *returnMetricNamesSize, PRUnichar ***returnMetricNames, PRUint32 *returnObjectsSize, nsISupports ***returnObjects, PRUint32 *returnUnitsSize, PRUnichar ***returnUnits, PRUint32 *returnScalesSize, PRUint32 **returnScales, PRUint32 *returnSequenceNumbersSize, PRUint32 **returnSequenceNumbers, PRUint32 *returnDataIndicesSize, PRUint32 **returnDataIndices, PRUint32 *returnDataLengthsSize, PRUint32 **returnDataLengths, PRUint32 *returnDataSize, PRInt32 **returnData) { return _to QueryMetricsData(metricNamesSize, metricNames, objectsSize, objects, returnMetricNamesSize, returnMetricNames, returnObjectsSize, returnObjects, returnUnitsSize, returnUnits, returnScalesSize, returnScales, returnSequenceNumbersSize, returnSequenceNumbers, returnDataIndicesSize, returnDataIndices, returnDataLengthsSize, returnDataLengths, returnDataSize, returnData); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IPERFORMANCECOLLECTOR(_to) \
  NS_IMETHOD GetMetricNames(PRUint32 *metricNamesSize, PRUnichar ***metricNames) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMetricNames(metricNamesSize, metricNames); } \
  NS_IMETHOD GetMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *metricsSize, IPerformanceMetric ***metrics) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMetrics(metricNamesSize, metricNames, objectsSize, objects, metricsSize, metrics); } \
  NS_IMETHOD SetupMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 period, PRUint32 count, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetupMetrics(metricNamesSize, metricNames, objectsSize, objects, period, count, affectedMetricsSize, affectedMetrics); } \
  NS_IMETHOD EnableMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnableMetrics(metricNamesSize, metricNames, objectsSize, objects, affectedMetricsSize, affectedMetrics); } \
  NS_IMETHOD DisableMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics) { return !_to ? NS_ERROR_NULL_POINTER : _to->DisableMetrics(metricNamesSize, metricNames, objectsSize, objects, affectedMetricsSize, affectedMetrics); } \
  NS_IMETHOD QueryMetricsData(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *returnMetricNamesSize, PRUnichar ***returnMetricNames, PRUint32 *returnObjectsSize, nsISupports ***returnObjects, PRUint32 *returnUnitsSize, PRUnichar ***returnUnits, PRUint32 *returnScalesSize, PRUint32 **returnScales, PRUint32 *returnSequenceNumbersSize, PRUint32 **returnSequenceNumbers, PRUint32 *returnDataIndicesSize, PRUint32 **returnDataIndices, PRUint32 *returnDataLengthsSize, PRUint32 **returnDataLengths, PRUint32 *returnDataSize, PRInt32 **returnData) { return !_to ? NS_ERROR_NULL_POINTER : _to->QueryMetricsData(metricNamesSize, metricNames, objectsSize, objects, returnMetricNamesSize, returnMetricNames, returnObjectsSize, returnObjects, returnUnitsSize, returnUnits, returnScalesSize, returnScales, returnSequenceNumbersSize, returnSequenceNumbers, returnDataIndicesSize, returnDataIndices, returnDataLengthsSize, returnDataLengths, returnDataSize, returnData); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IPerformanceCollector
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IPERFORMANCECOLLECTOR

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IPerformanceCollector)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* void getMetricNames (out unsigned long metricNamesSize, [array, size_is (metricNamesSize), retval] out wstring metricNames); */
NS_IMETHODIMP _MYCLASS_::GetMetricNames(PRUint32 *metricNamesSize, PRUnichar ***metricNames)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMetrics (in unsigned long metricNamesSize, [array, size_is (metricNamesSize)] in wstring metricNames, in unsigned long objectsSize, [array, size_is (objectsSize)] in nsISupports objects, out unsigned long metricsSize, [array, size_is (metricsSize), retval] out IPerformanceMetric metrics); */
NS_IMETHODIMP _MYCLASS_::GetMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *metricsSize, IPerformanceMetric ***metrics)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setupMetrics (in unsigned long metricNamesSize, [array, size_is (metricNamesSize)] in wstring metricNames, in unsigned long objectsSize, [array, size_is (objectsSize)] in nsISupports objects, in unsigned long period, in unsigned long count, out unsigned long affectedMetricsSize, [array, size_is (affectedMetricsSize), retval] out IPerformanceMetric affectedMetrics); */
NS_IMETHODIMP _MYCLASS_::SetupMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 period, PRUint32 count, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enableMetrics (in unsigned long metricNamesSize, [array, size_is (metricNamesSize)] in wstring metricNames, in unsigned long objectsSize, [array, size_is (objectsSize)] in nsISupports objects, out unsigned long affectedMetricsSize, [array, size_is (affectedMetricsSize), retval] out IPerformanceMetric affectedMetrics); */
NS_IMETHODIMP _MYCLASS_::EnableMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void disableMetrics (in unsigned long metricNamesSize, [array, size_is (metricNamesSize)] in wstring metricNames, in unsigned long objectsSize, [array, size_is (objectsSize)] in nsISupports objects, out unsigned long affectedMetricsSize, [array, size_is (affectedMetricsSize), retval] out IPerformanceMetric affectedMetrics); */
NS_IMETHODIMP _MYCLASS_::DisableMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void queryMetricsData (in unsigned long metricNamesSize, [array, size_is (metricNamesSize)] in wstring metricNames, in unsigned long objectsSize, [array, size_is (objectsSize)] in nsISupports objects, out unsigned long returnMetricNamesSize, [array, size_is (returnMetricNamesSize)] out wstring returnMetricNames, out unsigned long returnObjectsSize, [array, size_is (returnObjectsSize)] out nsISupports returnObjects, out unsigned long returnUnitsSize, [array, size_is (returnUnitsSize)] out wstring returnUnits, out unsigned long returnScalesSize, [array, size_is (returnScalesSize)] out unsigned long returnScales, out unsigned long returnSequenceNumbersSize, [array, size_is (returnSequenceNumbersSize)] out unsigned long returnSequenceNumbers, out unsigned long returnDataIndicesSize, [array, size_is (returnDataIndicesSize)] out unsigned long returnDataIndices, out unsigned long returnDataLengthsSize, [array, size_is (returnDataLengthsSize)] out unsigned long returnDataLengths, out unsigned long returnDataSize, [array, size_is (returnDataSize), retval] out long returnData); */
NS_IMETHODIMP _MYCLASS_::QueryMetricsData(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *returnMetricNamesSize, PRUnichar ***returnMetricNames, PRUint32 *returnObjectsSize, nsISupports ***returnObjects, PRUint32 *returnUnitsSize, PRUnichar ***returnUnits, PRUint32 *returnScalesSize, PRUint32 **returnScales, PRUint32 *returnSequenceNumbersSize, PRUint32 **returnSequenceNumbers, PRUint32 *returnDataIndicesSize, PRUint32 **returnDataIndices, PRUint32 *returnDataLengthsSize, PRUint32 **returnDataLengths, PRUint32 *returnDataSize, PRInt32 **returnData)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IPerformanceCollector_GETTER_MetricNames_TO(smth) NS_IMETHOD GetMetricNames (PRUint32 * aMetricNamesSize, PRUnichar * * * aMetricNames) { return smth GetMetricNames (aMetricNamesSize, aMetricNames); }
#define COM_FORWARD_IPerformanceCollector_GETTER_MetricNames_TO_OBJ(obj) COM_FORWARD_IPerformanceCollector_GETTER_MetricNames_TO ((obj)->)
#define COM_FORWARD_IPerformanceCollector_GETTER_MetricNames_TO_BASE(base) COM_FORWARD_IPerformanceCollector_GETTER_MetricNames_TO (base::)
#define COM_FORWARD_IPerformanceCollector_GetMetrics_TO(smth) NS_IMETHOD GetMetrics (PRUint32 aMetricNamesSize, PRUnichar * * aMetricNames, PRUint32 aObjectsSize, nsISupports * * aObjects, PRUint32 * aMetricsSize, IPerformanceMetric * * * aMetrics) { return smth GetMetrics (aMetricNamesSize+++, aMetricNames, aObjectsSize+++, aObjects, aMetricsSize, aMetrics); }
#define COM_FORWARD_IPerformanceCollector_GetMetrics_TO_OBJ(obj) COM_FORWARD_IPerformanceCollector_GetMetrics_TO ((obj)->)
#define COM_FORWARD_IPerformanceCollector_GetMetrics_TO_BASE(base) COM_FORWARD_IPerformanceCollector_GetMetrics_TO (base::)
#define COM_FORWARD_IPerformanceCollector_SetupMetrics_TO(smth) NS_IMETHOD SetupMetrics (PRUint32 aMetricNamesSize, PRUnichar * * aMetricNames, PRUint32 aObjectsSize, nsISupports * * aObjects, PRUint32 aPeriod, PRUint32 aCount, PRUint32 * aAffectedMetricsSize, IPerformanceMetric * * * aAffectedMetrics) { return smth SetupMetrics (aMetricNamesSize+++, aMetricNames, aObjectsSize+++, aObjects, aPeriod, aCount, aAffectedMetricsSize, aAffectedMetrics); }
#define COM_FORWARD_IPerformanceCollector_SetupMetrics_TO_OBJ(obj) COM_FORWARD_IPerformanceCollector_SetupMetrics_TO ((obj)->)
#define COM_FORWARD_IPerformanceCollector_SetupMetrics_TO_BASE(base) COM_FORWARD_IPerformanceCollector_SetupMetrics_TO (base::)
#define COM_FORWARD_IPerformanceCollector_EnableMetrics_TO(smth) NS_IMETHOD EnableMetrics (PRUint32 aMetricNamesSize, PRUnichar * * aMetricNames, PRUint32 aObjectsSize, nsISupports * * aObjects, PRUint32 * aAffectedMetricsSize, IPerformanceMetric * * * aAffectedMetrics) { return smth EnableMetrics (aMetricNamesSize+++, aMetricNames, aObjectsSize+++, aObjects, aAffectedMetricsSize, aAffectedMetrics); }
#define COM_FORWARD_IPerformanceCollector_EnableMetrics_TO_OBJ(obj) COM_FORWARD_IPerformanceCollector_EnableMetrics_TO ((obj)->)
#define COM_FORWARD_IPerformanceCollector_EnableMetrics_TO_BASE(base) COM_FORWARD_IPerformanceCollector_EnableMetrics_TO (base::)
#define COM_FORWARD_IPerformanceCollector_DisableMetrics_TO(smth) NS_IMETHOD DisableMetrics (PRUint32 aMetricNamesSize, PRUnichar * * aMetricNames, PRUint32 aObjectsSize, nsISupports * * aObjects, PRUint32 * aAffectedMetricsSize, IPerformanceMetric * * * aAffectedMetrics) { return smth DisableMetrics (aMetricNamesSize+++, aMetricNames, aObjectsSize+++, aObjects, aAffectedMetricsSize, aAffectedMetrics); }
#define COM_FORWARD_IPerformanceCollector_DisableMetrics_TO_OBJ(obj) COM_FORWARD_IPerformanceCollector_DisableMetrics_TO ((obj)->)
#define COM_FORWARD_IPerformanceCollector_DisableMetrics_TO_BASE(base) COM_FORWARD_IPerformanceCollector_DisableMetrics_TO (base::)
#define COM_FORWARD_IPerformanceCollector_QueryMetricsData_TO(smth) NS_IMETHOD QueryMetricsData (PRUint32 aMetricNamesSize, PRUnichar * * aMetricNames, PRUint32 aObjectsSize, nsISupports * * aObjects, PRUint32 * aReturnMetricNamesSize, PRUnichar * * * aReturnMetricNames, PRUint32 * aReturnObjectsSize, nsISupports * * * aReturnObjects, PRUint32 * aReturnUnitsSize, PRUnichar * * * aReturnUnits, PRUint32 * aReturnScalesSize, PRUint32 * * aReturnScales, PRUint32 * aReturnSequenceNumbersSize, PRUint32 * * aReturnSequenceNumbers, PRUint32 * aReturnDataIndicesSize, PRUint32 * * aReturnDataIndices, PRUint32 * aReturnDataLengthsSize, PRUint32 * * aReturnDataLengths, PRUint32 * aReturnDataSize, PRInt32 * * aReturnData) { return smth QueryMetricsData (aMetricNamesSize+++, aMetricNames, aObjectsSize+++, aObjects, aReturnMetricNamesSize+++, aReturnMetricNames, aReturnObjectsSize+++, aReturnObjects, aReturnUnitsSize+++, aReturnUnits, aReturnScalesSize+++, aReturnScales, aReturnSequenceNumbersSize+++, aReturnSequenceNumbers, aReturnDataIndicesSize+++, aReturnDataIndices, aReturnDataLengthsSize+++, aReturnDataLengths, aReturnDataSize, aReturnData); }
#define COM_FORWARD_IPerformanceCollector_QueryMetricsData_TO_OBJ(obj) COM_FORWARD_IPerformanceCollector_QueryMetricsData_TO ((obj)->)
#define COM_FORWARD_IPerformanceCollector_QueryMetricsData_TO_BASE(base) COM_FORWARD_IPerformanceCollector_QueryMetricsData_TO (base::)
#define COM_FORWARD_IPerformanceCollector_TO(smth) NS_FORWARD_IPERFORMANCECOLLECTOR (smth)
#define COM_FORWARD_IPerformanceCollector_TO_OBJ(obj) COM_FORWARD_IPerformanceCollector_TO ((obj)->)
#define COM_FORWARD_IPerformanceCollector_TO_BASE(base) COM_FORWARD_IPerformanceCollector_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IPerformanceCollector;

/* starting interface:    INATEngine */
#define INATENGINE_IID_STR "26451b99-3b2d-4dcb-8e4b-d63654218175"

#define INATENGINE_IID \
  {0x26451b99, 0x3b2d, 0x4dcb, \
    { 0x8e, 0x4b, 0xd6, 0x36, 0x54, 0x21, 0x81, 0x75 }}

class NS_NO_VTABLE INATEngine : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(INATENGINE_IID)

  /* attribute wstring network; */
  NS_IMETHOD GetNetwork(PRUnichar * *aNetwork) = 0;
  NS_IMETHOD SetNetwork(const PRUnichar * aNetwork) = 0;

  /* attribute wstring hostIP; */
  NS_IMETHOD GetHostIP(PRUnichar * *aHostIP) = 0;
  NS_IMETHOD SetHostIP(const PRUnichar * aHostIP) = 0;

  /* attribute wstring TFTPPrefix; */
  NS_IMETHOD GetTFTPPrefix(PRUnichar * *aTFTPPrefix) = 0;
  NS_IMETHOD SetTFTPPrefix(const PRUnichar * aTFTPPrefix) = 0;

  /* attribute wstring TFTPBootFile; */
  NS_IMETHOD GetTFTPBootFile(PRUnichar * *aTFTPBootFile) = 0;
  NS_IMETHOD SetTFTPBootFile(const PRUnichar * aTFTPBootFile) = 0;

  /* attribute wstring TFTPNextServer; */
  NS_IMETHOD GetTFTPNextServer(PRUnichar * *aTFTPNextServer) = 0;
  NS_IMETHOD SetTFTPNextServer(const PRUnichar * aTFTPNextServer) = 0;

  /* attribute unsigned long aliasMode; */
  NS_IMETHOD GetAliasMode(PRUint32 *aAliasMode) = 0;
  NS_IMETHOD SetAliasMode(PRUint32 aAliasMode) = 0;

  /* attribute boolean DNSPassDomain; */
  NS_IMETHOD GetDNSPassDomain(PRBool *aDNSPassDomain) = 0;
  NS_IMETHOD SetDNSPassDomain(PRBool aDNSPassDomain) = 0;

  /* attribute boolean DNSProxy; */
  NS_IMETHOD GetDNSProxy(PRBool *aDNSProxy) = 0;
  NS_IMETHOD SetDNSProxy(PRBool aDNSProxy) = 0;

  /* attribute boolean DNSUseHostResolver; */
  NS_IMETHOD GetDNSUseHostResolver(PRBool *aDNSUseHostResolver) = 0;
  NS_IMETHOD SetDNSUseHostResolver(PRBool aDNSUseHostResolver) = 0;

  /* void getRedirects (out unsigned long redirectsSize, [array, size_is (redirectsSize), retval] out wstring redirects); */
  NS_IMETHOD GetRedirects(PRUint32 *redirectsSize, PRUnichar ***redirects) = 0;

  /* void setNetworkSettings (in unsigned long mtu, in unsigned long sockSnd, in unsigned long sockRcv, in unsigned long TcpWndSnd, in unsigned long TcpWndRcv); */
  NS_IMETHOD SetNetworkSettings(PRUint32 mtu, PRUint32 sockSnd, PRUint32 sockRcv, PRUint32 TcpWndSnd, PRUint32 TcpWndRcv) = 0;

  /* void getNetworkSettings (out unsigned long mtu, out unsigned long sockSnd, out unsigned long sockRcv, out unsigned long TcpWndSnd, out unsigned long TcpWndRcv); */
  NS_IMETHOD GetNetworkSettings(PRUint32 *mtu, PRUint32 *sockSnd, PRUint32 *sockRcv, PRUint32 *TcpWndSnd, PRUint32 *TcpWndRcv) = 0;

  /* void addRedirect (in wstring name, in PRUint32 proto, in wstring hostIP, in unsigned short hostPort, in wstring guestIP, in unsigned short guestPort); */
  NS_IMETHOD AddRedirect(const PRUnichar *name, PRUint32 proto, const PRUnichar *hostIP, PRUint16 hostPort, const PRUnichar *guestIP, PRUint16 guestPort) = 0;

  /* void removeRedirect (in wstring name); */
  NS_IMETHOD RemoveRedirect(const PRUnichar *name) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_INATENGINE \
  NS_IMETHOD GetNetwork(PRUnichar * *aNetwork); \
  NS_IMETHOD SetNetwork(const PRUnichar * aNetwork); \
  NS_IMETHOD GetHostIP(PRUnichar * *aHostIP); \
  NS_IMETHOD SetHostIP(const PRUnichar * aHostIP); \
  NS_IMETHOD GetTFTPPrefix(PRUnichar * *aTFTPPrefix); \
  NS_IMETHOD SetTFTPPrefix(const PRUnichar * aTFTPPrefix); \
  NS_IMETHOD GetTFTPBootFile(PRUnichar * *aTFTPBootFile); \
  NS_IMETHOD SetTFTPBootFile(const PRUnichar * aTFTPBootFile); \
  NS_IMETHOD GetTFTPNextServer(PRUnichar * *aTFTPNextServer); \
  NS_IMETHOD SetTFTPNextServer(const PRUnichar * aTFTPNextServer); \
  NS_IMETHOD GetAliasMode(PRUint32 *aAliasMode); \
  NS_IMETHOD SetAliasMode(PRUint32 aAliasMode); \
  NS_IMETHOD GetDNSPassDomain(PRBool *aDNSPassDomain); \
  NS_IMETHOD SetDNSPassDomain(PRBool aDNSPassDomain); \
  NS_IMETHOD GetDNSProxy(PRBool *aDNSProxy); \
  NS_IMETHOD SetDNSProxy(PRBool aDNSProxy); \
  NS_IMETHOD GetDNSUseHostResolver(PRBool *aDNSUseHostResolver); \
  NS_IMETHOD SetDNSUseHostResolver(PRBool aDNSUseHostResolver); \
  NS_IMETHOD GetRedirects(PRUint32 *redirectsSize, PRUnichar ***redirects); \
  NS_IMETHOD SetNetworkSettings(PRUint32 mtu, PRUint32 sockSnd, PRUint32 sockRcv, PRUint32 TcpWndSnd, PRUint32 TcpWndRcv); \
  NS_IMETHOD GetNetworkSettings(PRUint32 *mtu, PRUint32 *sockSnd, PRUint32 *sockRcv, PRUint32 *TcpWndSnd, PRUint32 *TcpWndRcv); \
  NS_IMETHOD AddRedirect(const PRUnichar *name, PRUint32 proto, const PRUnichar *hostIP, PRUint16 hostPort, const PRUnichar *guestIP, PRUint16 guestPort); \
  NS_IMETHOD RemoveRedirect(const PRUnichar *name); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_INATENGINE(_to) \
  NS_IMETHOD GetNetwork(PRUnichar * *aNetwork) { return _to GetNetwork(aNetwork); } \
  NS_IMETHOD SetNetwork(const PRUnichar * aNetwork) { return _to SetNetwork(aNetwork); } \
  NS_IMETHOD GetHostIP(PRUnichar * *aHostIP) { return _to GetHostIP(aHostIP); } \
  NS_IMETHOD SetHostIP(const PRUnichar * aHostIP) { return _to SetHostIP(aHostIP); } \
  NS_IMETHOD GetTFTPPrefix(PRUnichar * *aTFTPPrefix) { return _to GetTFTPPrefix(aTFTPPrefix); } \
  NS_IMETHOD SetTFTPPrefix(const PRUnichar * aTFTPPrefix) { return _to SetTFTPPrefix(aTFTPPrefix); } \
  NS_IMETHOD GetTFTPBootFile(PRUnichar * *aTFTPBootFile) { return _to GetTFTPBootFile(aTFTPBootFile); } \
  NS_IMETHOD SetTFTPBootFile(const PRUnichar * aTFTPBootFile) { return _to SetTFTPBootFile(aTFTPBootFile); } \
  NS_IMETHOD GetTFTPNextServer(PRUnichar * *aTFTPNextServer) { return _to GetTFTPNextServer(aTFTPNextServer); } \
  NS_IMETHOD SetTFTPNextServer(const PRUnichar * aTFTPNextServer) { return _to SetTFTPNextServer(aTFTPNextServer); } \
  NS_IMETHOD GetAliasMode(PRUint32 *aAliasMode) { return _to GetAliasMode(aAliasMode); } \
  NS_IMETHOD SetAliasMode(PRUint32 aAliasMode) { return _to SetAliasMode(aAliasMode); } \
  NS_IMETHOD GetDNSPassDomain(PRBool *aDNSPassDomain) { return _to GetDNSPassDomain(aDNSPassDomain); } \
  NS_IMETHOD SetDNSPassDomain(PRBool aDNSPassDomain) { return _to SetDNSPassDomain(aDNSPassDomain); } \
  NS_IMETHOD GetDNSProxy(PRBool *aDNSProxy) { return _to GetDNSProxy(aDNSProxy); } \
  NS_IMETHOD SetDNSProxy(PRBool aDNSProxy) { return _to SetDNSProxy(aDNSProxy); } \
  NS_IMETHOD GetDNSUseHostResolver(PRBool *aDNSUseHostResolver) { return _to GetDNSUseHostResolver(aDNSUseHostResolver); } \
  NS_IMETHOD SetDNSUseHostResolver(PRBool aDNSUseHostResolver) { return _to SetDNSUseHostResolver(aDNSUseHostResolver); } \
  NS_IMETHOD GetRedirects(PRUint32 *redirectsSize, PRUnichar ***redirects) { return _to GetRedirects(redirectsSize, redirects); } \
  NS_IMETHOD SetNetworkSettings(PRUint32 mtu, PRUint32 sockSnd, PRUint32 sockRcv, PRUint32 TcpWndSnd, PRUint32 TcpWndRcv) { return _to SetNetworkSettings(mtu, sockSnd, sockRcv, TcpWndSnd, TcpWndRcv); } \
  NS_IMETHOD GetNetworkSettings(PRUint32 *mtu, PRUint32 *sockSnd, PRUint32 *sockRcv, PRUint32 *TcpWndSnd, PRUint32 *TcpWndRcv) { return _to GetNetworkSettings(mtu, sockSnd, sockRcv, TcpWndSnd, TcpWndRcv); } \
  NS_IMETHOD AddRedirect(const PRUnichar *name, PRUint32 proto, const PRUnichar *hostIP, PRUint16 hostPort, const PRUnichar *guestIP, PRUint16 guestPort) { return _to AddRedirect(name, proto, hostIP, hostPort, guestIP, guestPort); } \
  NS_IMETHOD RemoveRedirect(const PRUnichar *name) { return _to RemoveRedirect(name); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_INATENGINE(_to) \
  NS_IMETHOD GetNetwork(PRUnichar * *aNetwork) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetwork(aNetwork); } \
  NS_IMETHOD SetNetwork(const PRUnichar * aNetwork) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNetwork(aNetwork); } \
  NS_IMETHOD GetHostIP(PRUnichar * *aHostIP) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHostIP(aHostIP); } \
  NS_IMETHOD SetHostIP(const PRUnichar * aHostIP) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHostIP(aHostIP); } \
  NS_IMETHOD GetTFTPPrefix(PRUnichar * *aTFTPPrefix) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTFTPPrefix(aTFTPPrefix); } \
  NS_IMETHOD SetTFTPPrefix(const PRUnichar * aTFTPPrefix) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTFTPPrefix(aTFTPPrefix); } \
  NS_IMETHOD GetTFTPBootFile(PRUnichar * *aTFTPBootFile) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTFTPBootFile(aTFTPBootFile); } \
  NS_IMETHOD SetTFTPBootFile(const PRUnichar * aTFTPBootFile) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTFTPBootFile(aTFTPBootFile); } \
  NS_IMETHOD GetTFTPNextServer(PRUnichar * *aTFTPNextServer) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTFTPNextServer(aTFTPNextServer); } \
  NS_IMETHOD SetTFTPNextServer(const PRUnichar * aTFTPNextServer) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTFTPNextServer(aTFTPNextServer); } \
  NS_IMETHOD GetAliasMode(PRUint32 *aAliasMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAliasMode(aAliasMode); } \
  NS_IMETHOD SetAliasMode(PRUint32 aAliasMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAliasMode(aAliasMode); } \
  NS_IMETHOD GetDNSPassDomain(PRBool *aDNSPassDomain) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDNSPassDomain(aDNSPassDomain); } \
  NS_IMETHOD SetDNSPassDomain(PRBool aDNSPassDomain) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDNSPassDomain(aDNSPassDomain); } \
  NS_IMETHOD GetDNSProxy(PRBool *aDNSProxy) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDNSProxy(aDNSProxy); } \
  NS_IMETHOD SetDNSProxy(PRBool aDNSProxy) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDNSProxy(aDNSProxy); } \
  NS_IMETHOD GetDNSUseHostResolver(PRBool *aDNSUseHostResolver) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDNSUseHostResolver(aDNSUseHostResolver); } \
  NS_IMETHOD SetDNSUseHostResolver(PRBool aDNSUseHostResolver) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDNSUseHostResolver(aDNSUseHostResolver); } \
  NS_IMETHOD GetRedirects(PRUint32 *redirectsSize, PRUnichar ***redirects) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRedirects(redirectsSize, redirects); } \
  NS_IMETHOD SetNetworkSettings(PRUint32 mtu, PRUint32 sockSnd, PRUint32 sockRcv, PRUint32 TcpWndSnd, PRUint32 TcpWndRcv) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNetworkSettings(mtu, sockSnd, sockRcv, TcpWndSnd, TcpWndRcv); } \
  NS_IMETHOD GetNetworkSettings(PRUint32 *mtu, PRUint32 *sockSnd, PRUint32 *sockRcv, PRUint32 *TcpWndSnd, PRUint32 *TcpWndRcv) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworkSettings(mtu, sockSnd, sockRcv, TcpWndSnd, TcpWndRcv); } \
  NS_IMETHOD AddRedirect(const PRUnichar *name, PRUint32 proto, const PRUnichar *hostIP, PRUint16 hostPort, const PRUnichar *guestIP, PRUint16 guestPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddRedirect(name, proto, hostIP, hostPort, guestIP, guestPort); } \
  NS_IMETHOD RemoveRedirect(const PRUnichar *name) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveRedirect(name); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public INATEngine
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_INATENGINE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, INATEngine)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* attribute wstring network; */
NS_IMETHODIMP _MYCLASS_::GetNetwork(PRUnichar * *aNetwork)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetNetwork(const PRUnichar * aNetwork)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring hostIP; */
NS_IMETHODIMP _MYCLASS_::GetHostIP(PRUnichar * *aHostIP)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetHostIP(const PRUnichar * aHostIP)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring TFTPPrefix; */
NS_IMETHODIMP _MYCLASS_::GetTFTPPrefix(PRUnichar * *aTFTPPrefix)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTFTPPrefix(const PRUnichar * aTFTPPrefix)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring TFTPBootFile; */
NS_IMETHODIMP _MYCLASS_::GetTFTPBootFile(PRUnichar * *aTFTPBootFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTFTPBootFile(const PRUnichar * aTFTPBootFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring TFTPNextServer; */
NS_IMETHODIMP _MYCLASS_::GetTFTPNextServer(PRUnichar * *aTFTPNextServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTFTPNextServer(const PRUnichar * aTFTPNextServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long aliasMode; */
NS_IMETHODIMP _MYCLASS_::GetAliasMode(PRUint32 *aAliasMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAliasMode(PRUint32 aAliasMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean DNSPassDomain; */
NS_IMETHODIMP _MYCLASS_::GetDNSPassDomain(PRBool *aDNSPassDomain)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDNSPassDomain(PRBool aDNSPassDomain)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean DNSProxy; */
NS_IMETHODIMP _MYCLASS_::GetDNSProxy(PRBool *aDNSProxy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDNSProxy(PRBool aDNSProxy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean DNSUseHostResolver; */
NS_IMETHODIMP _MYCLASS_::GetDNSUseHostResolver(PRBool *aDNSUseHostResolver)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDNSUseHostResolver(PRBool aDNSUseHostResolver)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getRedirects (out unsigned long redirectsSize, [array, size_is (redirectsSize), retval] out wstring redirects); */
NS_IMETHODIMP _MYCLASS_::GetRedirects(PRUint32 *redirectsSize, PRUnichar ***redirects)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setNetworkSettings (in unsigned long mtu, in unsigned long sockSnd, in unsigned long sockRcv, in unsigned long TcpWndSnd, in unsigned long TcpWndRcv); */
NS_IMETHODIMP _MYCLASS_::SetNetworkSettings(PRUint32 mtu, PRUint32 sockSnd, PRUint32 sockRcv, PRUint32 TcpWndSnd, PRUint32 TcpWndRcv)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNetworkSettings (out unsigned long mtu, out unsigned long sockSnd, out unsigned long sockRcv, out unsigned long TcpWndSnd, out unsigned long TcpWndRcv); */
NS_IMETHODIMP _MYCLASS_::GetNetworkSettings(PRUint32 *mtu, PRUint32 *sockSnd, PRUint32 *sockRcv, PRUint32 *TcpWndSnd, PRUint32 *TcpWndRcv)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addRedirect (in wstring name, in PRUint32 proto, in wstring hostIP, in unsigned short hostPort, in wstring guestIP, in unsigned short guestPort); */
NS_IMETHODIMP _MYCLASS_::AddRedirect(const PRUnichar *name, PRUint32 proto, const PRUnichar *hostIP, PRUint16 hostPort, const PRUnichar *guestIP, PRUint16 guestPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeRedirect (in wstring name); */
NS_IMETHODIMP _MYCLASS_::RemoveRedirect(const PRUnichar *name)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_INATEngine_GETTER_Network_TO(smth) NS_IMETHOD GetNetwork (PRUnichar * * aNetwork) { return smth GetNetwork (aNetwork); }
#define COM_FORWARD_INATEngine_GETTER_Network_TO_OBJ(obj) COM_FORWARD_INATEngine_GETTER_Network_TO ((obj)->)
#define COM_FORWARD_INATEngine_GETTER_Network_TO_BASE(base) COM_FORWARD_INATEngine_GETTER_Network_TO (base::)
#define COM_FORWARD_INATEngine_SETTER_Network_TO(smth) NS_IMETHOD SetNetwork (const PRUnichar * aNetwork) { return smth SetNetwork (aNetwork); }
#define COM_FORWARD_INATEngine_SETTER_Network_TO_OBJ(obj) COM_FORWARD_INATEngine_SETTER_Network_TO ((obj)->)
#define COM_FORWARD_INATEngine_SETTER_Network_TO_BASE(base) COM_FORWARD_INATEngine_SETTER_Network_TO (base::)
#define COM_FORWARD_INATEngine_GETTER_HostIP_TO(smth) NS_IMETHOD GetHostIP (PRUnichar * * aHostIP) { return smth GetHostIP (aHostIP); }
#define COM_FORWARD_INATEngine_GETTER_HostIP_TO_OBJ(obj) COM_FORWARD_INATEngine_GETTER_HostIP_TO ((obj)->)
#define COM_FORWARD_INATEngine_GETTER_HostIP_TO_BASE(base) COM_FORWARD_INATEngine_GETTER_HostIP_TO (base::)
#define COM_FORWARD_INATEngine_SETTER_HostIP_TO(smth) NS_IMETHOD SetHostIP (const PRUnichar * aHostIP) { return smth SetHostIP (aHostIP); }
#define COM_FORWARD_INATEngine_SETTER_HostIP_TO_OBJ(obj) COM_FORWARD_INATEngine_SETTER_HostIP_TO ((obj)->)
#define COM_FORWARD_INATEngine_SETTER_HostIP_TO_BASE(base) COM_FORWARD_INATEngine_SETTER_HostIP_TO (base::)
#define COM_FORWARD_INATEngine_GETTER_TFTPPrefix_TO(smth) NS_IMETHOD GetTFTPPrefix (PRUnichar * * aTFTPPrefix) { return smth GetTFTPPrefix (aTFTPPrefix); }
#define COM_FORWARD_INATEngine_GETTER_TFTPPrefix_TO_OBJ(obj) COM_FORWARD_INATEngine_GETTER_TFTPPrefix_TO ((obj)->)
#define COM_FORWARD_INATEngine_GETTER_TFTPPrefix_TO_BASE(base) COM_FORWARD_INATEngine_GETTER_TFTPPrefix_TO (base::)
#define COM_FORWARD_INATEngine_SETTER_TFTPPrefix_TO(smth) NS_IMETHOD SetTFTPPrefix (const PRUnichar * aTFTPPrefix) { return smth SetTFTPPrefix (aTFTPPrefix); }
#define COM_FORWARD_INATEngine_SETTER_TFTPPrefix_TO_OBJ(obj) COM_FORWARD_INATEngine_SETTER_TFTPPrefix_TO ((obj)->)
#define COM_FORWARD_INATEngine_SETTER_TFTPPrefix_TO_BASE(base) COM_FORWARD_INATEngine_SETTER_TFTPPrefix_TO (base::)
#define COM_FORWARD_INATEngine_GETTER_TFTPBootFile_TO(smth) NS_IMETHOD GetTFTPBootFile (PRUnichar * * aTFTPBootFile) { return smth GetTFTPBootFile (aTFTPBootFile); }
#define COM_FORWARD_INATEngine_GETTER_TFTPBootFile_TO_OBJ(obj) COM_FORWARD_INATEngine_GETTER_TFTPBootFile_TO ((obj)->)
#define COM_FORWARD_INATEngine_GETTER_TFTPBootFile_TO_BASE(base) COM_FORWARD_INATEngine_GETTER_TFTPBootFile_TO (base::)
#define COM_FORWARD_INATEngine_SETTER_TFTPBootFile_TO(smth) NS_IMETHOD SetTFTPBootFile (const PRUnichar * aTFTPBootFile) { return smth SetTFTPBootFile (aTFTPBootFile); }
#define COM_FORWARD_INATEngine_SETTER_TFTPBootFile_TO_OBJ(obj) COM_FORWARD_INATEngine_SETTER_TFTPBootFile_TO ((obj)->)
#define COM_FORWARD_INATEngine_SETTER_TFTPBootFile_TO_BASE(base) COM_FORWARD_INATEngine_SETTER_TFTPBootFile_TO (base::)
#define COM_FORWARD_INATEngine_GETTER_TFTPNextServer_TO(smth) NS_IMETHOD GetTFTPNextServer (PRUnichar * * aTFTPNextServer) { return smth GetTFTPNextServer (aTFTPNextServer); }
#define COM_FORWARD_INATEngine_GETTER_TFTPNextServer_TO_OBJ(obj) COM_FORWARD_INATEngine_GETTER_TFTPNextServer_TO ((obj)->)
#define COM_FORWARD_INATEngine_GETTER_TFTPNextServer_TO_BASE(base) COM_FORWARD_INATEngine_GETTER_TFTPNextServer_TO (base::)
#define COM_FORWARD_INATEngine_SETTER_TFTPNextServer_TO(smth) NS_IMETHOD SetTFTPNextServer (const PRUnichar * aTFTPNextServer) { return smth SetTFTPNextServer (aTFTPNextServer); }
#define COM_FORWARD_INATEngine_SETTER_TFTPNextServer_TO_OBJ(obj) COM_FORWARD_INATEngine_SETTER_TFTPNextServer_TO ((obj)->)
#define COM_FORWARD_INATEngine_SETTER_TFTPNextServer_TO_BASE(base) COM_FORWARD_INATEngine_SETTER_TFTPNextServer_TO (base::)
#define COM_FORWARD_INATEngine_GETTER_AliasMode_TO(smth) NS_IMETHOD GetAliasMode (PRUint32 * aAliasMode) { return smth GetAliasMode (aAliasMode); }
#define COM_FORWARD_INATEngine_GETTER_AliasMode_TO_OBJ(obj) COM_FORWARD_INATEngine_GETTER_AliasMode_TO ((obj)->)
#define COM_FORWARD_INATEngine_GETTER_AliasMode_TO_BASE(base) COM_FORWARD_INATEngine_GETTER_AliasMode_TO (base::)
#define COM_FORWARD_INATEngine_SETTER_AliasMode_TO(smth) NS_IMETHOD SetAliasMode (PRUint32 aAliasMode) { return smth SetAliasMode (aAliasMode); }
#define COM_FORWARD_INATEngine_SETTER_AliasMode_TO_OBJ(obj) COM_FORWARD_INATEngine_SETTER_AliasMode_TO ((obj)->)
#define COM_FORWARD_INATEngine_SETTER_AliasMode_TO_BASE(base) COM_FORWARD_INATEngine_SETTER_AliasMode_TO (base::)
#define COM_FORWARD_INATEngine_GETTER_DNSPassDomain_TO(smth) NS_IMETHOD GetDNSPassDomain (PRBool * aDNSPassDomain) { return smth GetDNSPassDomain (aDNSPassDomain); }
#define COM_FORWARD_INATEngine_GETTER_DNSPassDomain_TO_OBJ(obj) COM_FORWARD_INATEngine_GETTER_DNSPassDomain_TO ((obj)->)
#define COM_FORWARD_INATEngine_GETTER_DNSPassDomain_TO_BASE(base) COM_FORWARD_INATEngine_GETTER_DNSPassDomain_TO (base::)
#define COM_FORWARD_INATEngine_SETTER_DNSPassDomain_TO(smth) NS_IMETHOD SetDNSPassDomain (PRBool aDNSPassDomain) { return smth SetDNSPassDomain (aDNSPassDomain); }
#define COM_FORWARD_INATEngine_SETTER_DNSPassDomain_TO_OBJ(obj) COM_FORWARD_INATEngine_SETTER_DNSPassDomain_TO ((obj)->)
#define COM_FORWARD_INATEngine_SETTER_DNSPassDomain_TO_BASE(base) COM_FORWARD_INATEngine_SETTER_DNSPassDomain_TO (base::)
#define COM_FORWARD_INATEngine_GETTER_DNSProxy_TO(smth) NS_IMETHOD GetDNSProxy (PRBool * aDNSProxy) { return smth GetDNSProxy (aDNSProxy); }
#define COM_FORWARD_INATEngine_GETTER_DNSProxy_TO_OBJ(obj) COM_FORWARD_INATEngine_GETTER_DNSProxy_TO ((obj)->)
#define COM_FORWARD_INATEngine_GETTER_DNSProxy_TO_BASE(base) COM_FORWARD_INATEngine_GETTER_DNSProxy_TO (base::)
#define COM_FORWARD_INATEngine_SETTER_DNSProxy_TO(smth) NS_IMETHOD SetDNSProxy (PRBool aDNSProxy) { return smth SetDNSProxy (aDNSProxy); }
#define COM_FORWARD_INATEngine_SETTER_DNSProxy_TO_OBJ(obj) COM_FORWARD_INATEngine_SETTER_DNSProxy_TO ((obj)->)
#define COM_FORWARD_INATEngine_SETTER_DNSProxy_TO_BASE(base) COM_FORWARD_INATEngine_SETTER_DNSProxy_TO (base::)
#define COM_FORWARD_INATEngine_GETTER_DNSUseHostResolver_TO(smth) NS_IMETHOD GetDNSUseHostResolver (PRBool * aDNSUseHostResolver) { return smth GetDNSUseHostResolver (aDNSUseHostResolver); }
#define COM_FORWARD_INATEngine_GETTER_DNSUseHostResolver_TO_OBJ(obj) COM_FORWARD_INATEngine_GETTER_DNSUseHostResolver_TO ((obj)->)
#define COM_FORWARD_INATEngine_GETTER_DNSUseHostResolver_TO_BASE(base) COM_FORWARD_INATEngine_GETTER_DNSUseHostResolver_TO (base::)
#define COM_FORWARD_INATEngine_SETTER_DNSUseHostResolver_TO(smth) NS_IMETHOD SetDNSUseHostResolver (PRBool aDNSUseHostResolver) { return smth SetDNSUseHostResolver (aDNSUseHostResolver); }
#define COM_FORWARD_INATEngine_SETTER_DNSUseHostResolver_TO_OBJ(obj) COM_FORWARD_INATEngine_SETTER_DNSUseHostResolver_TO ((obj)->)
#define COM_FORWARD_INATEngine_SETTER_DNSUseHostResolver_TO_BASE(base) COM_FORWARD_INATEngine_SETTER_DNSUseHostResolver_TO (base::)
#define COM_FORWARD_INATEngine_GETTER_Redirects_TO(smth) NS_IMETHOD GetRedirects (PRUint32 * aRedirectsSize, PRUnichar * * * aRedirects) { return smth GetRedirects (aRedirectsSize, aRedirects); }
#define COM_FORWARD_INATEngine_GETTER_Redirects_TO_OBJ(obj) COM_FORWARD_INATEngine_GETTER_Redirects_TO ((obj)->)
#define COM_FORWARD_INATEngine_GETTER_Redirects_TO_BASE(base) COM_FORWARD_INATEngine_GETTER_Redirects_TO (base::)
#define COM_FORWARD_INATEngine_SetNetworkSettings_TO(smth) NS_IMETHOD SetNetworkSettings (PRUint32 aMtu, PRUint32 aSockSnd, PRUint32 aSockRcv, PRUint32 aTcpWndSnd, PRUint32 aTcpWndRcv) { return smth SetNetworkSettings (aMtu, aSockSnd, aSockRcv, aTcpWndSnd, aTcpWndRcv); }
#define COM_FORWARD_INATEngine_SetNetworkSettings_TO_OBJ(obj) COM_FORWARD_INATEngine_SetNetworkSettings_TO ((obj)->)
#define COM_FORWARD_INATEngine_SetNetworkSettings_TO_BASE(base) COM_FORWARD_INATEngine_SetNetworkSettings_TO (base::)
#define COM_FORWARD_INATEngine_GetNetworkSettings_TO(smth) NS_IMETHOD GetNetworkSettings (PRUint32 * aMtu, PRUint32 * aSockSnd, PRUint32 * aSockRcv, PRUint32 * aTcpWndSnd, PRUint32 * aTcpWndRcv) { return smth GetNetworkSettings (aMtu, aSockSnd, aSockRcv, aTcpWndSnd, aTcpWndRcv); }
#define COM_FORWARD_INATEngine_GetNetworkSettings_TO_OBJ(obj) COM_FORWARD_INATEngine_GetNetworkSettings_TO ((obj)->)
#define COM_FORWARD_INATEngine_GetNetworkSettings_TO_BASE(base) COM_FORWARD_INATEngine_GetNetworkSettings_TO (base::)
#define COM_FORWARD_INATEngine_AddRedirect_TO(smth) NS_IMETHOD AddRedirect (PRUnichar * aName, PRUint32 aProto, PRUnichar * aHostIP, PRUint16 aHostPort, PRUnichar * aGuestIP, PRUint16 aGuestPort) { return smth AddRedirect (aName, aProto, aHostIP, aHostPort, aGuestIP, aGuestPort); }
#define COM_FORWARD_INATEngine_AddRedirect_TO_OBJ(obj) COM_FORWARD_INATEngine_AddRedirect_TO ((obj)->)
#define COM_FORWARD_INATEngine_AddRedirect_TO_BASE(base) COM_FORWARD_INATEngine_AddRedirect_TO (base::)
#define COM_FORWARD_INATEngine_RemoveRedirect_TO(smth) NS_IMETHOD RemoveRedirect (PRUnichar * aName) { return smth RemoveRedirect (aName); }
#define COM_FORWARD_INATEngine_RemoveRedirect_TO_OBJ(obj) COM_FORWARD_INATEngine_RemoveRedirect_TO ((obj)->)
#define COM_FORWARD_INATEngine_RemoveRedirect_TO_BASE(base) COM_FORWARD_INATEngine_RemoveRedirect_TO (base::)
#define COM_FORWARD_INATEngine_TO(smth) NS_FORWARD_INATENGINE (smth)
#define COM_FORWARD_INATEngine_TO_OBJ(obj) COM_FORWARD_INATEngine_TO ((obj)->)
#define COM_FORWARD_INATEngine_TO_BASE(base) COM_FORWARD_INATEngine_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_INATEngine;

/* starting interface:    IExtPackPlugIn */
#define IEXTPACKPLUGIN_IID_STR "58000040-e718-4746-bbce-4b86d96da461"

#define IEXTPACKPLUGIN_IID \
  {0x58000040, 0xe718, 0x4746, \
    { 0xbb, 0xce, 0x4b, 0x86, 0xd9, 0x6d, 0xa4, 0x61 }}

class NS_NO_VTABLE IExtPackPlugIn : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IEXTPACKPLUGIN_IID)

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* readonly attribute wstring description; */
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) = 0;

  /* readonly attribute wstring frontend; */
  NS_IMETHOD GetFrontend(PRUnichar * *aFrontend) = 0;

  /* readonly attribute wstring modulePath; */
  NS_IMETHOD GetModulePath(PRUnichar * *aModulePath) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IEXTPACKPLUGIN \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription); \
  NS_IMETHOD GetFrontend(PRUnichar * *aFrontend); \
  NS_IMETHOD GetModulePath(PRUnichar * *aModulePath); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IEXTPACKPLUGIN(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return _to GetDescription(aDescription); } \
  NS_IMETHOD GetFrontend(PRUnichar * *aFrontend) { return _to GetFrontend(aFrontend); } \
  NS_IMETHOD GetModulePath(PRUnichar * *aModulePath) { return _to GetModulePath(aModulePath); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IEXTPACKPLUGIN(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } \
  NS_IMETHOD GetFrontend(PRUnichar * *aFrontend) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFrontend(aFrontend); } \
  NS_IMETHOD GetModulePath(PRUnichar * *aModulePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetModulePath(aModulePath); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IExtPackPlugIn
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IEXTPACKPLUGIN

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IExtPackPlugIn)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring description; */
NS_IMETHODIMP _MYCLASS_::GetDescription(PRUnichar * *aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring frontend; */
NS_IMETHODIMP _MYCLASS_::GetFrontend(PRUnichar * *aFrontend)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring modulePath; */
NS_IMETHODIMP _MYCLASS_::GetModulePath(PRUnichar * *aModulePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IExtPackPlugIn_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IExtPackPlugIn_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IExtPackPlugIn_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IExtPackPlugIn_GETTER_Name_TO_BASE(base) COM_FORWARD_IExtPackPlugIn_GETTER_Name_TO (base::)
#define COM_FORWARD_IExtPackPlugIn_GETTER_Description_TO(smth) NS_IMETHOD GetDescription (PRUnichar * * aDescription) { return smth GetDescription (aDescription); }
#define COM_FORWARD_IExtPackPlugIn_GETTER_Description_TO_OBJ(obj) COM_FORWARD_IExtPackPlugIn_GETTER_Description_TO ((obj)->)
#define COM_FORWARD_IExtPackPlugIn_GETTER_Description_TO_BASE(base) COM_FORWARD_IExtPackPlugIn_GETTER_Description_TO (base::)
#define COM_FORWARD_IExtPackPlugIn_GETTER_Frontend_TO(smth) NS_IMETHOD GetFrontend (PRUnichar * * aFrontend) { return smth GetFrontend (aFrontend); }
#define COM_FORWARD_IExtPackPlugIn_GETTER_Frontend_TO_OBJ(obj) COM_FORWARD_IExtPackPlugIn_GETTER_Frontend_TO ((obj)->)
#define COM_FORWARD_IExtPackPlugIn_GETTER_Frontend_TO_BASE(base) COM_FORWARD_IExtPackPlugIn_GETTER_Frontend_TO (base::)
#define COM_FORWARD_IExtPackPlugIn_GETTER_ModulePath_TO(smth) NS_IMETHOD GetModulePath (PRUnichar * * aModulePath) { return smth GetModulePath (aModulePath); }
#define COM_FORWARD_IExtPackPlugIn_GETTER_ModulePath_TO_OBJ(obj) COM_FORWARD_IExtPackPlugIn_GETTER_ModulePath_TO ((obj)->)
#define COM_FORWARD_IExtPackPlugIn_GETTER_ModulePath_TO_BASE(base) COM_FORWARD_IExtPackPlugIn_GETTER_ModulePath_TO (base::)
#define COM_FORWARD_IExtPackPlugIn_TO(smth) NS_FORWARD_IEXTPACKPLUGIN (smth)
#define COM_FORWARD_IExtPackPlugIn_TO_OBJ(obj) COM_FORWARD_IExtPackPlugIn_TO ((obj)->)
#define COM_FORWARD_IExtPackPlugIn_TO_BASE(base) COM_FORWARD_IExtPackPlugIn_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IExtPackPlugIn;

/* starting interface:    IExtPackBase */
#define IEXTPACKBASE_IID_STR "f79b75d8-2890-4f34-ffff-ffffa144e82c"

#define IEXTPACKBASE_IID \
  {0xf79b75d8, 0x2890, 0x4f34, \
    { 0xff, 0xff, 0xff, 0xff, 0xa1, 0x44, 0xe8, 0x2c }}

class NS_NO_VTABLE IExtPackBase : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IEXTPACKBASE_IID)

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* readonly attribute wstring description; */
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) = 0;

  /* readonly attribute wstring version; */
  NS_IMETHOD GetVersion(PRUnichar * *aVersion) = 0;

  /* readonly attribute unsigned long revision; */
  NS_IMETHOD GetRevision(PRUint32 *aRevision) = 0;

  /* readonly attribute wstring edition; */
  NS_IMETHOD GetEdition(PRUnichar * *aEdition) = 0;

  /* readonly attribute wstring VRDEModule; */
  NS_IMETHOD GetVRDEModule(PRUnichar * *aVRDEModule) = 0;

  /* void getPlugIns (out unsigned long plugInsSize, [array, size_is (plugInsSize), retval] out IExtPackPlugIn plugIns); */
  NS_IMETHOD GetPlugIns(PRUint32 *plugInsSize, IExtPackPlugIn ***plugIns) = 0;

  /* readonly attribute boolean usable; */
  NS_IMETHOD GetUsable(PRBool *aUsable) = 0;

  /* readonly attribute wstring whyUnusable; */
  NS_IMETHOD GetWhyUnusable(PRUnichar * *aWhyUnusable) = 0;

  /* readonly attribute boolean showLicense; */
  NS_IMETHOD GetShowLicense(PRBool *aShowLicense) = 0;

  /* readonly attribute wstring license; */
  NS_IMETHOD GetLicense(PRUnichar * *aLicense) = 0;

  /* void queryLicense (in wstring preferredLocale, in wstring preferredLanguage, in wstring format, [retval] out wstring licenseText); */
  NS_IMETHOD QueryLicense(const PRUnichar *preferredLocale, const PRUnichar *preferredLanguage, const PRUnichar *format, PRUnichar **licenseText) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IEXTPACKBASE \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription); \
  NS_IMETHOD GetVersion(PRUnichar * *aVersion); \
  NS_IMETHOD GetRevision(PRUint32 *aRevision); \
  NS_IMETHOD GetEdition(PRUnichar * *aEdition); \
  NS_IMETHOD GetVRDEModule(PRUnichar * *aVRDEModule); \
  NS_IMETHOD GetPlugIns(PRUint32 *plugInsSize, IExtPackPlugIn ***plugIns); \
  NS_IMETHOD GetUsable(PRBool *aUsable); \
  NS_IMETHOD GetWhyUnusable(PRUnichar * *aWhyUnusable); \
  NS_IMETHOD GetShowLicense(PRBool *aShowLicense); \
  NS_IMETHOD GetLicense(PRUnichar * *aLicense); \
  NS_IMETHOD QueryLicense(const PRUnichar *preferredLocale, const PRUnichar *preferredLanguage, const PRUnichar *format, PRUnichar **licenseText); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IEXTPACKBASE(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return _to GetDescription(aDescription); } \
  NS_IMETHOD GetVersion(PRUnichar * *aVersion) { return _to GetVersion(aVersion); } \
  NS_IMETHOD GetRevision(PRUint32 *aRevision) { return _to GetRevision(aRevision); } \
  NS_IMETHOD GetEdition(PRUnichar * *aEdition) { return _to GetEdition(aEdition); } \
  NS_IMETHOD GetVRDEModule(PRUnichar * *aVRDEModule) { return _to GetVRDEModule(aVRDEModule); } \
  NS_IMETHOD GetPlugIns(PRUint32 *plugInsSize, IExtPackPlugIn ***plugIns) { return _to GetPlugIns(plugInsSize, plugIns); } \
  NS_IMETHOD GetUsable(PRBool *aUsable) { return _to GetUsable(aUsable); } \
  NS_IMETHOD GetWhyUnusable(PRUnichar * *aWhyUnusable) { return _to GetWhyUnusable(aWhyUnusable); } \
  NS_IMETHOD GetShowLicense(PRBool *aShowLicense) { return _to GetShowLicense(aShowLicense); } \
  NS_IMETHOD GetLicense(PRUnichar * *aLicense) { return _to GetLicense(aLicense); } \
  NS_IMETHOD QueryLicense(const PRUnichar *preferredLocale, const PRUnichar *preferredLanguage, const PRUnichar *format, PRUnichar **licenseText) { return _to QueryLicense(preferredLocale, preferredLanguage, format, licenseText); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IEXTPACKBASE(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } \
  NS_IMETHOD GetVersion(PRUnichar * *aVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVersion(aVersion); } \
  NS_IMETHOD GetRevision(PRUint32 *aRevision) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRevision(aRevision); } \
  NS_IMETHOD GetEdition(PRUnichar * *aEdition) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEdition(aEdition); } \
  NS_IMETHOD GetVRDEModule(PRUnichar * *aVRDEModule) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVRDEModule(aVRDEModule); } \
  NS_IMETHOD GetPlugIns(PRUint32 *plugInsSize, IExtPackPlugIn ***plugIns) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPlugIns(plugInsSize, plugIns); } \
  NS_IMETHOD GetUsable(PRBool *aUsable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUsable(aUsable); } \
  NS_IMETHOD GetWhyUnusable(PRUnichar * *aWhyUnusable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWhyUnusable(aWhyUnusable); } \
  NS_IMETHOD GetShowLicense(PRBool *aShowLicense) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetShowLicense(aShowLicense); } \
  NS_IMETHOD GetLicense(PRUnichar * *aLicense) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLicense(aLicense); } \
  NS_IMETHOD QueryLicense(const PRUnichar *preferredLocale, const PRUnichar *preferredLanguage, const PRUnichar *format, PRUnichar **licenseText) { return !_to ? NS_ERROR_NULL_POINTER : _to->QueryLicense(preferredLocale, preferredLanguage, format, licenseText); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IExtPackBase
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IEXTPACKBASE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IExtPackBase)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring description; */
NS_IMETHODIMP _MYCLASS_::GetDescription(PRUnichar * *aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring version; */
NS_IMETHODIMP _MYCLASS_::GetVersion(PRUnichar * *aVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long revision; */
NS_IMETHODIMP _MYCLASS_::GetRevision(PRUint32 *aRevision)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring edition; */
NS_IMETHODIMP _MYCLASS_::GetEdition(PRUnichar * *aEdition)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring VRDEModule; */
NS_IMETHODIMP _MYCLASS_::GetVRDEModule(PRUnichar * *aVRDEModule)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getPlugIns (out unsigned long plugInsSize, [array, size_is (plugInsSize), retval] out IExtPackPlugIn plugIns); */
NS_IMETHODIMP _MYCLASS_::GetPlugIns(PRUint32 *plugInsSize, IExtPackPlugIn ***plugIns)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean usable; */
NS_IMETHODIMP _MYCLASS_::GetUsable(PRBool *aUsable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring whyUnusable; */
NS_IMETHODIMP _MYCLASS_::GetWhyUnusable(PRUnichar * *aWhyUnusable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean showLicense; */
NS_IMETHODIMP _MYCLASS_::GetShowLicense(PRBool *aShowLicense)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring license; */
NS_IMETHODIMP _MYCLASS_::GetLicense(PRUnichar * *aLicense)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void queryLicense (in wstring preferredLocale, in wstring preferredLanguage, in wstring format, [retval] out wstring licenseText); */
NS_IMETHODIMP _MYCLASS_::QueryLicense(const PRUnichar *preferredLocale, const PRUnichar *preferredLanguage, const PRUnichar *format, PRUnichar **licenseText)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IExtPackBase_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IExtPackBase_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IExtPackBase_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IExtPackBase_GETTER_Name_TO_BASE(base) COM_FORWARD_IExtPackBase_GETTER_Name_TO (base::)
#define COM_FORWARD_IExtPackBase_GETTER_Description_TO(smth) NS_IMETHOD GetDescription (PRUnichar * * aDescription) { return smth GetDescription (aDescription); }
#define COM_FORWARD_IExtPackBase_GETTER_Description_TO_OBJ(obj) COM_FORWARD_IExtPackBase_GETTER_Description_TO ((obj)->)
#define COM_FORWARD_IExtPackBase_GETTER_Description_TO_BASE(base) COM_FORWARD_IExtPackBase_GETTER_Description_TO (base::)
#define COM_FORWARD_IExtPackBase_GETTER_Version_TO(smth) NS_IMETHOD GetVersion (PRUnichar * * aVersion) { return smth GetVersion (aVersion); }
#define COM_FORWARD_IExtPackBase_GETTER_Version_TO_OBJ(obj) COM_FORWARD_IExtPackBase_GETTER_Version_TO ((obj)->)
#define COM_FORWARD_IExtPackBase_GETTER_Version_TO_BASE(base) COM_FORWARD_IExtPackBase_GETTER_Version_TO (base::)
#define COM_FORWARD_IExtPackBase_GETTER_Revision_TO(smth) NS_IMETHOD GetRevision (PRUint32 * aRevision) { return smth GetRevision (aRevision); }
#define COM_FORWARD_IExtPackBase_GETTER_Revision_TO_OBJ(obj) COM_FORWARD_IExtPackBase_GETTER_Revision_TO ((obj)->)
#define COM_FORWARD_IExtPackBase_GETTER_Revision_TO_BASE(base) COM_FORWARD_IExtPackBase_GETTER_Revision_TO (base::)
#define COM_FORWARD_IExtPackBase_GETTER_Edition_TO(smth) NS_IMETHOD GetEdition (PRUnichar * * aEdition) { return smth GetEdition (aEdition); }
#define COM_FORWARD_IExtPackBase_GETTER_Edition_TO_OBJ(obj) COM_FORWARD_IExtPackBase_GETTER_Edition_TO ((obj)->)
#define COM_FORWARD_IExtPackBase_GETTER_Edition_TO_BASE(base) COM_FORWARD_IExtPackBase_GETTER_Edition_TO (base::)
#define COM_FORWARD_IExtPackBase_GETTER_VRDEModule_TO(smth) NS_IMETHOD GetVRDEModule (PRUnichar * * aVRDEModule) { return smth GetVRDEModule (aVRDEModule); }
#define COM_FORWARD_IExtPackBase_GETTER_VRDEModule_TO_OBJ(obj) COM_FORWARD_IExtPackBase_GETTER_VRDEModule_TO ((obj)->)
#define COM_FORWARD_IExtPackBase_GETTER_VRDEModule_TO_BASE(base) COM_FORWARD_IExtPackBase_GETTER_VRDEModule_TO (base::)
#define COM_FORWARD_IExtPackBase_GETTER_PlugIns_TO(smth) NS_IMETHOD GetPlugIns (PRUint32 * aPlugInsSize, IExtPackPlugIn * * * aPlugIns) { return smth GetPlugIns (aPlugInsSize, aPlugIns); }
#define COM_FORWARD_IExtPackBase_GETTER_PlugIns_TO_OBJ(obj) COM_FORWARD_IExtPackBase_GETTER_PlugIns_TO ((obj)->)
#define COM_FORWARD_IExtPackBase_GETTER_PlugIns_TO_BASE(base) COM_FORWARD_IExtPackBase_GETTER_PlugIns_TO (base::)
#define COM_FORWARD_IExtPackBase_GETTER_Usable_TO(smth) NS_IMETHOD GetUsable (PRBool * aUsable) { return smth GetUsable (aUsable); }
#define COM_FORWARD_IExtPackBase_GETTER_Usable_TO_OBJ(obj) COM_FORWARD_IExtPackBase_GETTER_Usable_TO ((obj)->)
#define COM_FORWARD_IExtPackBase_GETTER_Usable_TO_BASE(base) COM_FORWARD_IExtPackBase_GETTER_Usable_TO (base::)
#define COM_FORWARD_IExtPackBase_GETTER_WhyUnusable_TO(smth) NS_IMETHOD GetWhyUnusable (PRUnichar * * aWhyUnusable) { return smth GetWhyUnusable (aWhyUnusable); }
#define COM_FORWARD_IExtPackBase_GETTER_WhyUnusable_TO_OBJ(obj) COM_FORWARD_IExtPackBase_GETTER_WhyUnusable_TO ((obj)->)
#define COM_FORWARD_IExtPackBase_GETTER_WhyUnusable_TO_BASE(base) COM_FORWARD_IExtPackBase_GETTER_WhyUnusable_TO (base::)
#define COM_FORWARD_IExtPackBase_GETTER_ShowLicense_TO(smth) NS_IMETHOD GetShowLicense (PRBool * aShowLicense) { return smth GetShowLicense (aShowLicense); }
#define COM_FORWARD_IExtPackBase_GETTER_ShowLicense_TO_OBJ(obj) COM_FORWARD_IExtPackBase_GETTER_ShowLicense_TO ((obj)->)
#define COM_FORWARD_IExtPackBase_GETTER_ShowLicense_TO_BASE(base) COM_FORWARD_IExtPackBase_GETTER_ShowLicense_TO (base::)
#define COM_FORWARD_IExtPackBase_GETTER_License_TO(smth) NS_IMETHOD GetLicense (PRUnichar * * aLicense) { return smth GetLicense (aLicense); }
#define COM_FORWARD_IExtPackBase_GETTER_License_TO_OBJ(obj) COM_FORWARD_IExtPackBase_GETTER_License_TO ((obj)->)
#define COM_FORWARD_IExtPackBase_GETTER_License_TO_BASE(base) COM_FORWARD_IExtPackBase_GETTER_License_TO (base::)
#define COM_FORWARD_IExtPackBase_QueryLicense_TO(smth) NS_IMETHOD QueryLicense (PRUnichar * aPreferredLocale, PRUnichar * aPreferredLanguage, PRUnichar * aFormat, PRUnichar * * aLicenseText) { return smth QueryLicense (aPreferredLocale, aPreferredLanguage, aFormat, aLicenseText); }
#define COM_FORWARD_IExtPackBase_QueryLicense_TO_OBJ(obj) COM_FORWARD_IExtPackBase_QueryLicense_TO ((obj)->)
#define COM_FORWARD_IExtPackBase_QueryLicense_TO_BASE(base) COM_FORWARD_IExtPackBase_QueryLicense_TO (base::)
#define COM_FORWARD_IExtPackBase_TO(smth) NS_FORWARD_IEXTPACKBASE (smth)
#define COM_FORWARD_IExtPackBase_TO_OBJ(obj) COM_FORWARD_IExtPackBase_TO ((obj)->)
#define COM_FORWARD_IExtPackBase_TO_BASE(base) COM_FORWARD_IExtPackBase_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IExtPackBase;

/* starting interface:    IExtPack */
#define IEXTPACK_IID_STR "431685da-3618-4ebc-b038-833ba829b4b2"

#define IEXTPACK_IID \
  {0x431685da, 0x3618, 0x4ebc, \
    { 0xb0, 0x38, 0x83, 0x3b, 0xa8, 0x29, 0xb4, 0xb2 }}

class NS_NO_VTABLE IExtPack : public IExtPackBase {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IEXTPACK_IID)

  /* void queryObject (in wstring objUuid, [retval] out nsISupports returnInterface); */
  NS_IMETHOD QueryObject(const PRUnichar *objUuid, nsISupports **returnInterface) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IEXTPACK \
  NS_IMETHOD QueryObject(const PRUnichar *objUuid, nsISupports **returnInterface); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IEXTPACK(_to) \
  NS_IMETHOD QueryObject(const PRUnichar *objUuid, nsISupports **returnInterface) { return _to QueryObject(objUuid, returnInterface); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IEXTPACK(_to) \
  NS_IMETHOD QueryObject(const PRUnichar *objUuid, nsISupports **returnInterface) { return !_to ? NS_ERROR_NULL_POINTER : _to->QueryObject(objUuid, returnInterface); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IExtPack
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IEXTPACK

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IExtPack)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* void queryObject (in wstring objUuid, [retval] out nsISupports returnInterface); */
NS_IMETHODIMP _MYCLASS_::QueryObject(const PRUnichar *objUuid, nsISupports **returnInterface)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IExtPack_QueryObject_TO(smth) NS_IMETHOD QueryObject (PRUnichar * aObjUuid, nsISupports * * aReturnInterface) { return smth QueryObject (aObjUuid, aReturnInterface); }
#define COM_FORWARD_IExtPack_QueryObject_TO_OBJ(obj) COM_FORWARD_IExtPack_QueryObject_TO ((obj)->)
#define COM_FORWARD_IExtPack_QueryObject_TO_BASE(base) COM_FORWARD_IExtPack_QueryObject_TO (base::)
#define COM_FORWARD_IExtPack_TO(smth) NS_FORWARD_IEXTPACK (smth)
#define COM_FORWARD_IExtPack_TO_OBJ(obj) COM_FORWARD_IExtPack_TO ((obj)->)
#define COM_FORWARD_IExtPack_TO_BASE(base) COM_FORWARD_IExtPack_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IExtPack;

/* starting interface:    IExtPackFile */
#define IEXTPACKFILE_IID_STR "b6b49f55-efcc-4f08-b486-56e8d8afb10b"

#define IEXTPACKFILE_IID \
  {0xb6b49f55, 0xefcc, 0x4f08, \
    { 0xb4, 0x86, 0x56, 0xe8, 0xd8, 0xaf, 0xb1, 0x0b }}

class NS_NO_VTABLE IExtPackFile : public IExtPackBase {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IEXTPACKFILE_IID)

  /* readonly attribute wstring filePath; */
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath) = 0;

  /* void install (in boolean replace, in wstring displayInfo, [retval] out IProgress progess); */
  NS_IMETHOD Install(PRBool replace, const PRUnichar *displayInfo, IProgress **progess) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IEXTPACKFILE \
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath); \
  NS_IMETHOD Install(PRBool replace, const PRUnichar *displayInfo, IProgress **progess); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IEXTPACKFILE(_to) \
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath) { return _to GetFilePath(aFilePath); } \
  NS_IMETHOD Install(PRBool replace, const PRUnichar *displayInfo, IProgress **progess) { return _to Install(replace, displayInfo, progess); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IEXTPACKFILE(_to) \
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilePath(aFilePath); } \
  NS_IMETHOD Install(PRBool replace, const PRUnichar *displayInfo, IProgress **progess) { return !_to ? NS_ERROR_NULL_POINTER : _to->Install(replace, displayInfo, progess); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IExtPackFile
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IEXTPACKFILE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IExtPackFile)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring filePath; */
NS_IMETHODIMP _MYCLASS_::GetFilePath(PRUnichar * *aFilePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void install (in boolean replace, in wstring displayInfo, [retval] out IProgress progess); */
NS_IMETHODIMP _MYCLASS_::Install(PRBool replace, const PRUnichar *displayInfo, IProgress **progess)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IExtPackFile_GETTER_FilePath_TO(smth) NS_IMETHOD GetFilePath (PRUnichar * * aFilePath) { return smth GetFilePath (aFilePath); }
#define COM_FORWARD_IExtPackFile_GETTER_FilePath_TO_OBJ(obj) COM_FORWARD_IExtPackFile_GETTER_FilePath_TO ((obj)->)
#define COM_FORWARD_IExtPackFile_GETTER_FilePath_TO_BASE(base) COM_FORWARD_IExtPackFile_GETTER_FilePath_TO (base::)
#define COM_FORWARD_IExtPackFile_Install_TO(smth) NS_IMETHOD Install (PRBool aReplace, PRUnichar * aDisplayInfo, IProgress * * aProgess) { return smth Install (aReplace, aDisplayInfo, aProgess); }
#define COM_FORWARD_IExtPackFile_Install_TO_OBJ(obj) COM_FORWARD_IExtPackFile_Install_TO ((obj)->)
#define COM_FORWARD_IExtPackFile_Install_TO_BASE(base) COM_FORWARD_IExtPackFile_Install_TO (base::)
#define COM_FORWARD_IExtPackFile_TO(smth) NS_FORWARD_IEXTPACKFILE (smth)
#define COM_FORWARD_IExtPackFile_TO_OBJ(obj) COM_FORWARD_IExtPackFile_TO ((obj)->)
#define COM_FORWARD_IExtPackFile_TO_BASE(base) COM_FORWARD_IExtPackFile_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IExtPackFile;

/* starting interface:    IExtPackManager */
#define IEXTPACKMANAGER_IID_STR "3295e6ce-b051-47b2-9514-2c588bfe7554"

#define IEXTPACKMANAGER_IID \
  {0x3295e6ce, 0xb051, 0x47b2, \
    { 0x95, 0x14, 0x2c, 0x58, 0x8b, 0xfe, 0x75, 0x54 }}

class NS_NO_VTABLE IExtPackManager : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IEXTPACKMANAGER_IID)

  /* void getInstalledExtPacks (out unsigned long installedExtPacksSize, [array, size_is (installedExtPacksSize), retval] out IExtPack installedExtPacks); */
  NS_IMETHOD GetInstalledExtPacks(PRUint32 *installedExtPacksSize, IExtPack ***installedExtPacks) = 0;

  /* void find (in wstring name, [retval] out IExtPack returnData); */
  NS_IMETHOD Find(const PRUnichar *name, IExtPack **returnData) = 0;

  /* void openExtPackFile (in wstring path, [retval] out IExtPackFile file); */
  NS_IMETHOD OpenExtPackFile(const PRUnichar *path, IExtPackFile **file) = 0;

  /* void uninstall (in wstring name, in boolean forcedRemoval, in wstring displayInfo, [retval] out IProgress progess); */
  NS_IMETHOD Uninstall(const PRUnichar *name, PRBool forcedRemoval, const PRUnichar *displayInfo, IProgress **progess) = 0;

  /* void cleanup (); */
  NS_IMETHOD Cleanup(void) = 0;

  /* void queryAllPlugInsForFrontend (in wstring frontendName, out unsigned long plugInModulesSize, [array, size_is (plugInModulesSize), retval] out wstring plugInModules); */
  NS_IMETHOD QueryAllPlugInsForFrontend(const PRUnichar *frontendName, PRUint32 *plugInModulesSize, PRUnichar ***plugInModules) = 0;

  /* void isExtPackUsable (in wstring name, [retval] out boolean usable); */
  NS_IMETHOD IsExtPackUsable(const PRUnichar *name, PRBool *usable) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IEXTPACKMANAGER \
  NS_IMETHOD GetInstalledExtPacks(PRUint32 *installedExtPacksSize, IExtPack ***installedExtPacks); \
  NS_IMETHOD Find(const PRUnichar *name, IExtPack **returnData); \
  NS_IMETHOD OpenExtPackFile(const PRUnichar *path, IExtPackFile **file); \
  NS_IMETHOD Uninstall(const PRUnichar *name, PRBool forcedRemoval, const PRUnichar *displayInfo, IProgress **progess); \
  NS_IMETHOD Cleanup(void); \
  NS_IMETHOD QueryAllPlugInsForFrontend(const PRUnichar *frontendName, PRUint32 *plugInModulesSize, PRUnichar ***plugInModules); \
  NS_IMETHOD IsExtPackUsable(const PRUnichar *name, PRBool *usable); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IEXTPACKMANAGER(_to) \
  NS_IMETHOD GetInstalledExtPacks(PRUint32 *installedExtPacksSize, IExtPack ***installedExtPacks) { return _to GetInstalledExtPacks(installedExtPacksSize, installedExtPacks); } \
  NS_IMETHOD Find(const PRUnichar *name, IExtPack **returnData) { return _to Find(name, returnData); } \
  NS_IMETHOD OpenExtPackFile(const PRUnichar *path, IExtPackFile **file) { return _to OpenExtPackFile(path, file); } \
  NS_IMETHOD Uninstall(const PRUnichar *name, PRBool forcedRemoval, const PRUnichar *displayInfo, IProgress **progess) { return _to Uninstall(name, forcedRemoval, displayInfo, progess); } \
  NS_IMETHOD Cleanup(void) { return _to Cleanup(); } \
  NS_IMETHOD QueryAllPlugInsForFrontend(const PRUnichar *frontendName, PRUint32 *plugInModulesSize, PRUnichar ***plugInModules) { return _to QueryAllPlugInsForFrontend(frontendName, plugInModulesSize, plugInModules); } \
  NS_IMETHOD IsExtPackUsable(const PRUnichar *name, PRBool *usable) { return _to IsExtPackUsable(name, usable); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IEXTPACKMANAGER(_to) \
  NS_IMETHOD GetInstalledExtPacks(PRUint32 *installedExtPacksSize, IExtPack ***installedExtPacks) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInstalledExtPacks(installedExtPacksSize, installedExtPacks); } \
  NS_IMETHOD Find(const PRUnichar *name, IExtPack **returnData) { return !_to ? NS_ERROR_NULL_POINTER : _to->Find(name, returnData); } \
  NS_IMETHOD OpenExtPackFile(const PRUnichar *path, IExtPackFile **file) { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenExtPackFile(path, file); } \
  NS_IMETHOD Uninstall(const PRUnichar *name, PRBool forcedRemoval, const PRUnichar *displayInfo, IProgress **progess) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uninstall(name, forcedRemoval, displayInfo, progess); } \
  NS_IMETHOD Cleanup(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Cleanup(); } \
  NS_IMETHOD QueryAllPlugInsForFrontend(const PRUnichar *frontendName, PRUint32 *plugInModulesSize, PRUnichar ***plugInModules) { return !_to ? NS_ERROR_NULL_POINTER : _to->QueryAllPlugInsForFrontend(frontendName, plugInModulesSize, plugInModules); } \
  NS_IMETHOD IsExtPackUsable(const PRUnichar *name, PRBool *usable) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsExtPackUsable(name, usable); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IExtPackManager
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IEXTPACKMANAGER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IExtPackManager)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* void getInstalledExtPacks (out unsigned long installedExtPacksSize, [array, size_is (installedExtPacksSize), retval] out IExtPack installedExtPacks); */
NS_IMETHODIMP _MYCLASS_::GetInstalledExtPacks(PRUint32 *installedExtPacksSize, IExtPack ***installedExtPacks)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void find (in wstring name, [retval] out IExtPack returnData); */
NS_IMETHODIMP _MYCLASS_::Find(const PRUnichar *name, IExtPack **returnData)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void openExtPackFile (in wstring path, [retval] out IExtPackFile file); */
NS_IMETHODIMP _MYCLASS_::OpenExtPackFile(const PRUnichar *path, IExtPackFile **file)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uninstall (in wstring name, in boolean forcedRemoval, in wstring displayInfo, [retval] out IProgress progess); */
NS_IMETHODIMP _MYCLASS_::Uninstall(const PRUnichar *name, PRBool forcedRemoval, const PRUnichar *displayInfo, IProgress **progess)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void cleanup (); */
NS_IMETHODIMP _MYCLASS_::Cleanup()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void queryAllPlugInsForFrontend (in wstring frontendName, out unsigned long plugInModulesSize, [array, size_is (plugInModulesSize), retval] out wstring plugInModules); */
NS_IMETHODIMP _MYCLASS_::QueryAllPlugInsForFrontend(const PRUnichar *frontendName, PRUint32 *plugInModulesSize, PRUnichar ***plugInModules)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void isExtPackUsable (in wstring name, [retval] out boolean usable); */
NS_IMETHODIMP _MYCLASS_::IsExtPackUsable(const PRUnichar *name, PRBool *usable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IExtPackManager_GETTER_InstalledExtPacks_TO(smth) NS_IMETHOD GetInstalledExtPacks (PRUint32 * aInstalledExtPacksSize, IExtPack * * * aInstalledExtPacks) { return smth GetInstalledExtPacks (aInstalledExtPacksSize, aInstalledExtPacks); }
#define COM_FORWARD_IExtPackManager_GETTER_InstalledExtPacks_TO_OBJ(obj) COM_FORWARD_IExtPackManager_GETTER_InstalledExtPacks_TO ((obj)->)
#define COM_FORWARD_IExtPackManager_GETTER_InstalledExtPacks_TO_BASE(base) COM_FORWARD_IExtPackManager_GETTER_InstalledExtPacks_TO (base::)
#define COM_FORWARD_IExtPackManager_Find_TO(smth) NS_IMETHOD Find (PRUnichar * aName, IExtPack * * aReturnData) { return smth Find (aName, aReturnData); }
#define COM_FORWARD_IExtPackManager_Find_TO_OBJ(obj) COM_FORWARD_IExtPackManager_Find_TO ((obj)->)
#define COM_FORWARD_IExtPackManager_Find_TO_BASE(base) COM_FORWARD_IExtPackManager_Find_TO (base::)
#define COM_FORWARD_IExtPackManager_OpenExtPackFile_TO(smth) NS_IMETHOD OpenExtPackFile (PRUnichar * aPath, IExtPackFile * * aFile) { return smth OpenExtPackFile (aPath, aFile); }
#define COM_FORWARD_IExtPackManager_OpenExtPackFile_TO_OBJ(obj) COM_FORWARD_IExtPackManager_OpenExtPackFile_TO ((obj)->)
#define COM_FORWARD_IExtPackManager_OpenExtPackFile_TO_BASE(base) COM_FORWARD_IExtPackManager_OpenExtPackFile_TO (base::)
#define COM_FORWARD_IExtPackManager_Uninstall_TO(smth) NS_IMETHOD Uninstall (PRUnichar * aName, PRBool aForcedRemoval, PRUnichar * aDisplayInfo, IProgress * * aProgess) { return smth Uninstall (aName, aForcedRemoval, aDisplayInfo, aProgess); }
#define COM_FORWARD_IExtPackManager_Uninstall_TO_OBJ(obj) COM_FORWARD_IExtPackManager_Uninstall_TO ((obj)->)
#define COM_FORWARD_IExtPackManager_Uninstall_TO_BASE(base) COM_FORWARD_IExtPackManager_Uninstall_TO (base::)
#define COM_FORWARD_IExtPackManager_Cleanup_TO(smth) NS_IMETHOD Cleanup() { return smth Cleanup(); }
#define COM_FORWARD_IExtPackManager_Cleanup_TO_OBJ(obj) COM_FORWARD_IExtPackManager_Cleanup_TO ((obj)->)
#define COM_FORWARD_IExtPackManager_Cleanup_TO_BASE(base) COM_FORWARD_IExtPackManager_Cleanup_TO (base::)
#define COM_FORWARD_IExtPackManager_QueryAllPlugInsForFrontend_TO(smth) NS_IMETHOD QueryAllPlugInsForFrontend (PRUnichar * aFrontendName, PRUint32 * aPlugInModulesSize, PRUnichar * * * aPlugInModules) { return smth QueryAllPlugInsForFrontend (aFrontendName, aPlugInModulesSize, aPlugInModules); }
#define COM_FORWARD_IExtPackManager_QueryAllPlugInsForFrontend_TO_OBJ(obj) COM_FORWARD_IExtPackManager_QueryAllPlugInsForFrontend_TO ((obj)->)
#define COM_FORWARD_IExtPackManager_QueryAllPlugInsForFrontend_TO_BASE(base) COM_FORWARD_IExtPackManager_QueryAllPlugInsForFrontend_TO (base::)
#define COM_FORWARD_IExtPackManager_IsExtPackUsable_TO(smth) NS_IMETHOD IsExtPackUsable (PRUnichar * aName, PRBool * aUsable) { return smth IsExtPackUsable (aName, aUsable); }
#define COM_FORWARD_IExtPackManager_IsExtPackUsable_TO_OBJ(obj) COM_FORWARD_IExtPackManager_IsExtPackUsable_TO ((obj)->)
#define COM_FORWARD_IExtPackManager_IsExtPackUsable_TO_BASE(base) COM_FORWARD_IExtPackManager_IsExtPackUsable_TO (base::)
#define COM_FORWARD_IExtPackManager_TO(smth) NS_FORWARD_IEXTPACKMANAGER (smth)
#define COM_FORWARD_IExtPackManager_TO_OBJ(obj) COM_FORWARD_IExtPackManager_TO ((obj)->)
#define COM_FORWARD_IExtPackManager_TO_BASE(base) COM_FORWARD_IExtPackManager_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IExtPackManager;

/* starting interface:    IBandwidthGroup */
#define IBANDWIDTHGROUP_IID_STR "badea2d7-0261-4146-89f0-6a57cc34833d"

#define IBANDWIDTHGROUP_IID \
  {0xbadea2d7, 0x0261, 0x4146, \
    { 0x89, 0xf0, 0x6a, 0x57, 0xcc, 0x34, 0x83, 0x3d }}

class NS_NO_VTABLE IBandwidthGroup : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IBANDWIDTHGROUP_IID)

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* readonly attribute PRUint32 type; */
  NS_IMETHOD GetType(PRUint32 *aType) = 0;

  /* readonly attribute unsigned long reference; */
  NS_IMETHOD GetReference(PRUint32 *aReference) = 0;

  /* attribute long long maxBytesPerSec; */
  NS_IMETHOD GetMaxBytesPerSec(PRInt64 *aMaxBytesPerSec) = 0;
  NS_IMETHOD SetMaxBytesPerSec(PRInt64 aMaxBytesPerSec) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IBANDWIDTHGROUP \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetType(PRUint32 *aType); \
  NS_IMETHOD GetReference(PRUint32 *aReference); \
  NS_IMETHOD GetMaxBytesPerSec(PRInt64 *aMaxBytesPerSec); \
  NS_IMETHOD SetMaxBytesPerSec(PRInt64 aMaxBytesPerSec); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IBANDWIDTHGROUP(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return _to GetType(aType); } \
  NS_IMETHOD GetReference(PRUint32 *aReference) { return _to GetReference(aReference); } \
  NS_IMETHOD GetMaxBytesPerSec(PRInt64 *aMaxBytesPerSec) { return _to GetMaxBytesPerSec(aMaxBytesPerSec); } \
  NS_IMETHOD SetMaxBytesPerSec(PRInt64 aMaxBytesPerSec) { return _to SetMaxBytesPerSec(aMaxBytesPerSec); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IBANDWIDTHGROUP(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetType(aType); } \
  NS_IMETHOD GetReference(PRUint32 *aReference) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetReference(aReference); } \
  NS_IMETHOD GetMaxBytesPerSec(PRInt64 *aMaxBytesPerSec) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxBytesPerSec(aMaxBytesPerSec); } \
  NS_IMETHOD SetMaxBytesPerSec(PRInt64 aMaxBytesPerSec) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMaxBytesPerSec(aMaxBytesPerSec); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IBandwidthGroup
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IBANDWIDTHGROUP

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IBandwidthGroup)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 type; */
NS_IMETHODIMP _MYCLASS_::GetType(PRUint32 *aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long reference; */
NS_IMETHODIMP _MYCLASS_::GetReference(PRUint32 *aReference)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute long long maxBytesPerSec; */
NS_IMETHODIMP _MYCLASS_::GetMaxBytesPerSec(PRInt64 *aMaxBytesPerSec)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetMaxBytesPerSec(PRInt64 aMaxBytesPerSec)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IBandwidthGroup_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IBandwidthGroup_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IBandwidthGroup_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IBandwidthGroup_GETTER_Name_TO_BASE(base) COM_FORWARD_IBandwidthGroup_GETTER_Name_TO (base::)
#define COM_FORWARD_IBandwidthGroup_GETTER_Type_TO(smth) NS_IMETHOD GetType (PRUint32 * aType) { return smth GetType (aType); }
#define COM_FORWARD_IBandwidthGroup_GETTER_Type_TO_OBJ(obj) COM_FORWARD_IBandwidthGroup_GETTER_Type_TO ((obj)->)
#define COM_FORWARD_IBandwidthGroup_GETTER_Type_TO_BASE(base) COM_FORWARD_IBandwidthGroup_GETTER_Type_TO (base::)
#define COM_FORWARD_IBandwidthGroup_GETTER_Reference_TO(smth) NS_IMETHOD GetReference (PRUint32 * aReference) { return smth GetReference (aReference); }
#define COM_FORWARD_IBandwidthGroup_GETTER_Reference_TO_OBJ(obj) COM_FORWARD_IBandwidthGroup_GETTER_Reference_TO ((obj)->)
#define COM_FORWARD_IBandwidthGroup_GETTER_Reference_TO_BASE(base) COM_FORWARD_IBandwidthGroup_GETTER_Reference_TO (base::)
#define COM_FORWARD_IBandwidthGroup_GETTER_MaxBytesPerSec_TO(smth) NS_IMETHOD GetMaxBytesPerSec (PRInt64 * aMaxBytesPerSec) { return smth GetMaxBytesPerSec (aMaxBytesPerSec); }
#define COM_FORWARD_IBandwidthGroup_GETTER_MaxBytesPerSec_TO_OBJ(obj) COM_FORWARD_IBandwidthGroup_GETTER_MaxBytesPerSec_TO ((obj)->)
#define COM_FORWARD_IBandwidthGroup_GETTER_MaxBytesPerSec_TO_BASE(base) COM_FORWARD_IBandwidthGroup_GETTER_MaxBytesPerSec_TO (base::)
#define COM_FORWARD_IBandwidthGroup_SETTER_MaxBytesPerSec_TO(smth) NS_IMETHOD SetMaxBytesPerSec (PRInt64 aMaxBytesPerSec) { return smth SetMaxBytesPerSec (aMaxBytesPerSec); }
#define COM_FORWARD_IBandwidthGroup_SETTER_MaxBytesPerSec_TO_OBJ(obj) COM_FORWARD_IBandwidthGroup_SETTER_MaxBytesPerSec_TO ((obj)->)
#define COM_FORWARD_IBandwidthGroup_SETTER_MaxBytesPerSec_TO_BASE(base) COM_FORWARD_IBandwidthGroup_SETTER_MaxBytesPerSec_TO (base::)
#define COM_FORWARD_IBandwidthGroup_TO(smth) NS_FORWARD_IBANDWIDTHGROUP (smth)
#define COM_FORWARD_IBandwidthGroup_TO_OBJ(obj) COM_FORWARD_IBandwidthGroup_TO ((obj)->)
#define COM_FORWARD_IBandwidthGroup_TO_BASE(base) COM_FORWARD_IBandwidthGroup_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IBandwidthGroup;

/* starting interface:    IBandwidthControl */
#define IBANDWIDTHCONTROL_IID_STR "e2eb3930-d2f4-4f87-be17-0707e30f019f"

#define IBANDWIDTHCONTROL_IID \
  {0xe2eb3930, 0xd2f4, 0x4f87, \
    { 0xbe, 0x17, 0x07, 0x07, 0xe3, 0x0f, 0x01, 0x9f }}

class NS_NO_VTABLE IBandwidthControl : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IBANDWIDTHCONTROL_IID)

  /* readonly attribute unsigned long numGroups; */
  NS_IMETHOD GetNumGroups(PRUint32 *aNumGroups) = 0;

  /* void createBandwidthGroup (in wstring name, in PRUint32 type, in long long maxBytesPerSec); */
  NS_IMETHOD CreateBandwidthGroup(const PRUnichar *name, PRUint32 type, PRInt64 maxBytesPerSec) = 0;

  /* void deleteBandwidthGroup (in wstring name); */
  NS_IMETHOD DeleteBandwidthGroup(const PRUnichar *name) = 0;

  /* void getBandwidthGroup (in wstring name, [retval] out IBandwidthGroup bandwidthGroup); */
  NS_IMETHOD GetBandwidthGroup(const PRUnichar *name, IBandwidthGroup **bandwidthGroup) = 0;

  /* void getAllBandwidthGroups (out unsigned long bandwidthGroupsSize, [array, size_is (bandwidthGroupsSize), retval] out IBandwidthGroup bandwidthGroups); */
  NS_IMETHOD GetAllBandwidthGroups(PRUint32 *bandwidthGroupsSize, IBandwidthGroup ***bandwidthGroups) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IBANDWIDTHCONTROL \
  NS_IMETHOD GetNumGroups(PRUint32 *aNumGroups); \
  NS_IMETHOD CreateBandwidthGroup(const PRUnichar *name, PRUint32 type, PRInt64 maxBytesPerSec); \
  NS_IMETHOD DeleteBandwidthGroup(const PRUnichar *name); \
  NS_IMETHOD GetBandwidthGroup(const PRUnichar *name, IBandwidthGroup **bandwidthGroup); \
  NS_IMETHOD GetAllBandwidthGroups(PRUint32 *bandwidthGroupsSize, IBandwidthGroup ***bandwidthGroups); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IBANDWIDTHCONTROL(_to) \
  NS_IMETHOD GetNumGroups(PRUint32 *aNumGroups) { return _to GetNumGroups(aNumGroups); } \
  NS_IMETHOD CreateBandwidthGroup(const PRUnichar *name, PRUint32 type, PRInt64 maxBytesPerSec) { return _to CreateBandwidthGroup(name, type, maxBytesPerSec); } \
  NS_IMETHOD DeleteBandwidthGroup(const PRUnichar *name) { return _to DeleteBandwidthGroup(name); } \
  NS_IMETHOD GetBandwidthGroup(const PRUnichar *name, IBandwidthGroup **bandwidthGroup) { return _to GetBandwidthGroup(name, bandwidthGroup); } \
  NS_IMETHOD GetAllBandwidthGroups(PRUint32 *bandwidthGroupsSize, IBandwidthGroup ***bandwidthGroups) { return _to GetAllBandwidthGroups(bandwidthGroupsSize, bandwidthGroups); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IBANDWIDTHCONTROL(_to) \
  NS_IMETHOD GetNumGroups(PRUint32 *aNumGroups) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNumGroups(aNumGroups); } \
  NS_IMETHOD CreateBandwidthGroup(const PRUnichar *name, PRUint32 type, PRInt64 maxBytesPerSec) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateBandwidthGroup(name, type, maxBytesPerSec); } \
  NS_IMETHOD DeleteBandwidthGroup(const PRUnichar *name) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteBandwidthGroup(name); } \
  NS_IMETHOD GetBandwidthGroup(const PRUnichar *name, IBandwidthGroup **bandwidthGroup) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBandwidthGroup(name, bandwidthGroup); } \
  NS_IMETHOD GetAllBandwidthGroups(PRUint32 *bandwidthGroupsSize, IBandwidthGroup ***bandwidthGroups) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllBandwidthGroups(bandwidthGroupsSize, bandwidthGroups); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IBandwidthControl
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IBANDWIDTHCONTROL

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IBandwidthControl)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute unsigned long numGroups; */
NS_IMETHODIMP _MYCLASS_::GetNumGroups(PRUint32 *aNumGroups)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createBandwidthGroup (in wstring name, in PRUint32 type, in long long maxBytesPerSec); */
NS_IMETHODIMP _MYCLASS_::CreateBandwidthGroup(const PRUnichar *name, PRUint32 type, PRInt64 maxBytesPerSec)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteBandwidthGroup (in wstring name); */
NS_IMETHODIMP _MYCLASS_::DeleteBandwidthGroup(const PRUnichar *name)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getBandwidthGroup (in wstring name, [retval] out IBandwidthGroup bandwidthGroup); */
NS_IMETHODIMP _MYCLASS_::GetBandwidthGroup(const PRUnichar *name, IBandwidthGroup **bandwidthGroup)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getAllBandwidthGroups (out unsigned long bandwidthGroupsSize, [array, size_is (bandwidthGroupsSize), retval] out IBandwidthGroup bandwidthGroups); */
NS_IMETHODIMP _MYCLASS_::GetAllBandwidthGroups(PRUint32 *bandwidthGroupsSize, IBandwidthGroup ***bandwidthGroups)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IBandwidthControl_GETTER_NumGroups_TO(smth) NS_IMETHOD GetNumGroups (PRUint32 * aNumGroups) { return smth GetNumGroups (aNumGroups); }
#define COM_FORWARD_IBandwidthControl_GETTER_NumGroups_TO_OBJ(obj) COM_FORWARD_IBandwidthControl_GETTER_NumGroups_TO ((obj)->)
#define COM_FORWARD_IBandwidthControl_GETTER_NumGroups_TO_BASE(base) COM_FORWARD_IBandwidthControl_GETTER_NumGroups_TO (base::)
#define COM_FORWARD_IBandwidthControl_CreateBandwidthGroup_TO(smth) NS_IMETHOD CreateBandwidthGroup (PRUnichar * aName, PRUint32 aType, PRInt64 aMaxBytesPerSec) { return smth CreateBandwidthGroup (aName, aType, aMaxBytesPerSec); }
#define COM_FORWARD_IBandwidthControl_CreateBandwidthGroup_TO_OBJ(obj) COM_FORWARD_IBandwidthControl_CreateBandwidthGroup_TO ((obj)->)
#define COM_FORWARD_IBandwidthControl_CreateBandwidthGroup_TO_BASE(base) COM_FORWARD_IBandwidthControl_CreateBandwidthGroup_TO (base::)
#define COM_FORWARD_IBandwidthControl_DeleteBandwidthGroup_TO(smth) NS_IMETHOD DeleteBandwidthGroup (PRUnichar * aName) { return smth DeleteBandwidthGroup (aName); }
#define COM_FORWARD_IBandwidthControl_DeleteBandwidthGroup_TO_OBJ(obj) COM_FORWARD_IBandwidthControl_DeleteBandwidthGroup_TO ((obj)->)
#define COM_FORWARD_IBandwidthControl_DeleteBandwidthGroup_TO_BASE(base) COM_FORWARD_IBandwidthControl_DeleteBandwidthGroup_TO (base::)
#define COM_FORWARD_IBandwidthControl_GetBandwidthGroup_TO(smth) NS_IMETHOD GetBandwidthGroup (PRUnichar * aName, IBandwidthGroup * * aBandwidthGroup) { return smth GetBandwidthGroup (aName, aBandwidthGroup); }
#define COM_FORWARD_IBandwidthControl_GetBandwidthGroup_TO_OBJ(obj) COM_FORWARD_IBandwidthControl_GetBandwidthGroup_TO ((obj)->)
#define COM_FORWARD_IBandwidthControl_GetBandwidthGroup_TO_BASE(base) COM_FORWARD_IBandwidthControl_GetBandwidthGroup_TO (base::)
#define COM_FORWARD_IBandwidthControl_GetAllBandwidthGroups_TO(smth) NS_IMETHOD GetAllBandwidthGroups (PRUint32 * aBandwidthGroupsSize, IBandwidthGroup * * * aBandwidthGroups) { return smth GetAllBandwidthGroups (aBandwidthGroupsSize, aBandwidthGroups); }
#define COM_FORWARD_IBandwidthControl_GetAllBandwidthGroups_TO_OBJ(obj) COM_FORWARD_IBandwidthControl_GetAllBandwidthGroups_TO ((obj)->)
#define COM_FORWARD_IBandwidthControl_GetAllBandwidthGroups_TO_BASE(base) COM_FORWARD_IBandwidthControl_GetAllBandwidthGroups_TO (base::)
#define COM_FORWARD_IBandwidthControl_TO(smth) NS_FORWARD_IBANDWIDTHCONTROL (smth)
#define COM_FORWARD_IBandwidthControl_TO_OBJ(obj) COM_FORWARD_IBandwidthControl_TO ((obj)->)
#define COM_FORWARD_IBandwidthControl_TO_BASE(base) COM_FORWARD_IBandwidthControl_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IBandwidthControl;

/* starting interface:    IVirtualBoxClient */
#define IVIRTUALBOXCLIENT_IID_STR "d191281f-b0cb-4d83-a8fa-0d9fd6ba234c"

#define IVIRTUALBOXCLIENT_IID \
  {0xd191281f, 0xb0cb, 0x4d83, \
    { 0xa8, 0xfa, 0x0d, 0x9f, 0xd6, 0xba, 0x23, 0x4c }}

class NS_NO_VTABLE IVirtualBoxClient : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVIRTUALBOXCLIENT_IID)

  /* readonly attribute IVirtualBox virtualBox; */
  NS_IMETHOD GetVirtualBox(IVirtualBox * *aVirtualBox) = 0;

  /* readonly attribute ISession session; */
  NS_IMETHOD GetSession(ISession * *aSession) = 0;

  /* readonly attribute IEventSource eventSource; */
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) = 0;

  /* void checkMachineError (in IMachine machine); */
  NS_IMETHOD CheckMachineError(IMachine *machine) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVIRTUALBOXCLIENT \
  NS_IMETHOD GetVirtualBox(IVirtualBox * *aVirtualBox); \
  NS_IMETHOD GetSession(ISession * *aSession); \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource); \
  NS_IMETHOD CheckMachineError(IMachine *machine); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IVIRTUALBOXCLIENT(_to) \
  NS_IMETHOD GetVirtualBox(IVirtualBox * *aVirtualBox) { return _to GetVirtualBox(aVirtualBox); } \
  NS_IMETHOD GetSession(ISession * *aSession) { return _to GetSession(aSession); } \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return _to GetEventSource(aEventSource); } \
  NS_IMETHOD CheckMachineError(IMachine *machine) { return _to CheckMachineError(machine); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IVIRTUALBOXCLIENT(_to) \
  NS_IMETHOD GetVirtualBox(IVirtualBox * *aVirtualBox) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVirtualBox(aVirtualBox); } \
  NS_IMETHOD GetSession(ISession * *aSession) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSession(aSession); } \
  NS_IMETHOD GetEventSource(IEventSource * *aEventSource) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEventSource(aEventSource); } \
  NS_IMETHOD CheckMachineError(IMachine *machine) { return !_to ? NS_ERROR_NULL_POINTER : _to->CheckMachineError(machine); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IVirtualBoxClient
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IVIRTUALBOXCLIENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IVirtualBoxClient)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute IVirtualBox virtualBox; */
NS_IMETHODIMP _MYCLASS_::GetVirtualBox(IVirtualBox * *aVirtualBox)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute ISession session; */
NS_IMETHODIMP _MYCLASS_::GetSession(ISession * *aSession)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IEventSource eventSource; */
NS_IMETHODIMP _MYCLASS_::GetEventSource(IEventSource * *aEventSource)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void checkMachineError (in IMachine machine); */
NS_IMETHODIMP _MYCLASS_::CheckMachineError(IMachine *machine)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IVirtualBoxClient_GETTER_VirtualBox_TO(smth) NS_IMETHOD GetVirtualBox (IVirtualBox * * aVirtualBox) { return smth GetVirtualBox (aVirtualBox); }
#define COM_FORWARD_IVirtualBoxClient_GETTER_VirtualBox_TO_OBJ(obj) COM_FORWARD_IVirtualBoxClient_GETTER_VirtualBox_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxClient_GETTER_VirtualBox_TO_BASE(base) COM_FORWARD_IVirtualBoxClient_GETTER_VirtualBox_TO (base::)
#define COM_FORWARD_IVirtualBoxClient_GETTER_Session_TO(smth) NS_IMETHOD GetSession (ISession * * aSession) { return smth GetSession (aSession); }
#define COM_FORWARD_IVirtualBoxClient_GETTER_Session_TO_OBJ(obj) COM_FORWARD_IVirtualBoxClient_GETTER_Session_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxClient_GETTER_Session_TO_BASE(base) COM_FORWARD_IVirtualBoxClient_GETTER_Session_TO (base::)
#define COM_FORWARD_IVirtualBoxClient_GETTER_EventSource_TO(smth) NS_IMETHOD GetEventSource (IEventSource * * aEventSource) { return smth GetEventSource (aEventSource); }
#define COM_FORWARD_IVirtualBoxClient_GETTER_EventSource_TO_OBJ(obj) COM_FORWARD_IVirtualBoxClient_GETTER_EventSource_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxClient_GETTER_EventSource_TO_BASE(base) COM_FORWARD_IVirtualBoxClient_GETTER_EventSource_TO (base::)
#define COM_FORWARD_IVirtualBoxClient_CheckMachineError_TO(smth) NS_IMETHOD CheckMachineError (IMachine * aMachine) { return smth CheckMachineError (aMachine); }
#define COM_FORWARD_IVirtualBoxClient_CheckMachineError_TO_OBJ(obj) COM_FORWARD_IVirtualBoxClient_CheckMachineError_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxClient_CheckMachineError_TO_BASE(base) COM_FORWARD_IVirtualBoxClient_CheckMachineError_TO (base::)
#define COM_FORWARD_IVirtualBoxClient_TO(smth) NS_FORWARD_IVIRTUALBOXCLIENT (smth)
#define COM_FORWARD_IVirtualBoxClient_TO_OBJ(obj) COM_FORWARD_IVirtualBoxClient_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxClient_TO_BASE(base) COM_FORWARD_IVirtualBoxClient_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IVirtualBoxClient;

/* starting interface:    IEventSource */
#define IEVENTSOURCE_IID_STR "9b6e1aee-35f3-4f4d-b5bb-ed0ecefd8538"

#define IEVENTSOURCE_IID \
  {0x9b6e1aee, 0x35f3, 0x4f4d, \
    { 0xb5, 0xbb, 0xed, 0x0e, 0xce, 0xfd, 0x85, 0x38 }}

class NS_NO_VTABLE IEventSource : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IEVENTSOURCE_IID)

  /* void createListener ([retval] out IEventListener listener); */
  NS_IMETHOD CreateListener(IEventListener **listener) = 0;

  /* void createAggregator (in unsigned long subordinatesSize, [array, size_is (subordinatesSize)] in IEventSource subordinates, [retval] out IEventSource result); */
  NS_IMETHOD CreateAggregator(PRUint32 subordinatesSize, IEventSource **subordinates, IEventSource **result) = 0;

  /* void registerListener (in IEventListener listener, in unsigned long interestingSize, [array, size_is (interestingSize)] in PRUint32 interesting, in boolean active); */
  NS_IMETHOD RegisterListener(IEventListener *listener, PRUint32 interestingSize, PRUint32 *interesting, PRBool active) = 0;

  /* void unregisterListener (in IEventListener listener); */
  NS_IMETHOD UnregisterListener(IEventListener *listener) = 0;

  /* void fireEvent (in IEvent event, in long timeout, [retval] out boolean result); */
  NS_IMETHOD FireEvent(IEvent *event, PRInt32 timeout, PRBool *result) = 0;

  /* void getEvent (in IEventListener listener, in long timeout, [retval] out IEvent event); */
  NS_IMETHOD GetEvent(IEventListener *listener, PRInt32 timeout, IEvent **event) = 0;

  /* void eventProcessed (in IEventListener listener, in IEvent event); */
  NS_IMETHOD EventProcessed(IEventListener *listener, IEvent *event) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IEVENTSOURCE \
  NS_IMETHOD CreateListener(IEventListener **listener); \
  NS_IMETHOD CreateAggregator(PRUint32 subordinatesSize, IEventSource **subordinates, IEventSource **result); \
  NS_IMETHOD RegisterListener(IEventListener *listener, PRUint32 interestingSize, PRUint32 *interesting, PRBool active); \
  NS_IMETHOD UnregisterListener(IEventListener *listener); \
  NS_IMETHOD FireEvent(IEvent *event, PRInt32 timeout, PRBool *result); \
  NS_IMETHOD GetEvent(IEventListener *listener, PRInt32 timeout, IEvent **event); \
  NS_IMETHOD EventProcessed(IEventListener *listener, IEvent *event); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IEVENTSOURCE(_to) \
  NS_IMETHOD CreateListener(IEventListener **listener) { return _to CreateListener(listener); } \
  NS_IMETHOD CreateAggregator(PRUint32 subordinatesSize, IEventSource **subordinates, IEventSource **result) { return _to CreateAggregator(subordinatesSize, subordinates, result); } \
  NS_IMETHOD RegisterListener(IEventListener *listener, PRUint32 interestingSize, PRUint32 *interesting, PRBool active) { return _to RegisterListener(listener, interestingSize, interesting, active); } \
  NS_IMETHOD UnregisterListener(IEventListener *listener) { return _to UnregisterListener(listener); } \
  NS_IMETHOD FireEvent(IEvent *event, PRInt32 timeout, PRBool *result) { return _to FireEvent(event, timeout, result); } \
  NS_IMETHOD GetEvent(IEventListener *listener, PRInt32 timeout, IEvent **event) { return _to GetEvent(listener, timeout, event); } \
  NS_IMETHOD EventProcessed(IEventListener *listener, IEvent *event) { return _to EventProcessed(listener, event); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IEVENTSOURCE(_to) \
  NS_IMETHOD CreateListener(IEventListener **listener) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateListener(listener); } \
  NS_IMETHOD CreateAggregator(PRUint32 subordinatesSize, IEventSource **subordinates, IEventSource **result) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateAggregator(subordinatesSize, subordinates, result); } \
  NS_IMETHOD RegisterListener(IEventListener *listener, PRUint32 interestingSize, PRUint32 *interesting, PRBool active) { return !_to ? NS_ERROR_NULL_POINTER : _to->RegisterListener(listener, interestingSize, interesting, active); } \
  NS_IMETHOD UnregisterListener(IEventListener *listener) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnregisterListener(listener); } \
  NS_IMETHOD FireEvent(IEvent *event, PRInt32 timeout, PRBool *result) { return !_to ? NS_ERROR_NULL_POINTER : _to->FireEvent(event, timeout, result); } \
  NS_IMETHOD GetEvent(IEventListener *listener, PRInt32 timeout, IEvent **event) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEvent(listener, timeout, event); } \
  NS_IMETHOD EventProcessed(IEventListener *listener, IEvent *event) { return !_to ? NS_ERROR_NULL_POINTER : _to->EventProcessed(listener, event); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IEventSource
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IEVENTSOURCE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IEventSource)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* void createListener ([retval] out IEventListener listener); */
NS_IMETHODIMP _MYCLASS_::CreateListener(IEventListener **listener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createAggregator (in unsigned long subordinatesSize, [array, size_is (subordinatesSize)] in IEventSource subordinates, [retval] out IEventSource result); */
NS_IMETHODIMP _MYCLASS_::CreateAggregator(PRUint32 subordinatesSize, IEventSource **subordinates, IEventSource **result)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void registerListener (in IEventListener listener, in unsigned long interestingSize, [array, size_is (interestingSize)] in PRUint32 interesting, in boolean active); */
NS_IMETHODIMP _MYCLASS_::RegisterListener(IEventListener *listener, PRUint32 interestingSize, PRUint32 *interesting, PRBool active)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unregisterListener (in IEventListener listener); */
NS_IMETHODIMP _MYCLASS_::UnregisterListener(IEventListener *listener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void fireEvent (in IEvent event, in long timeout, [retval] out boolean result); */
NS_IMETHODIMP _MYCLASS_::FireEvent(IEvent *event, PRInt32 timeout, PRBool *result)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getEvent (in IEventListener listener, in long timeout, [retval] out IEvent event); */
NS_IMETHODIMP _MYCLASS_::GetEvent(IEventListener *listener, PRInt32 timeout, IEvent **event)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void eventProcessed (in IEventListener listener, in IEvent event); */
NS_IMETHODIMP _MYCLASS_::EventProcessed(IEventListener *listener, IEvent *event)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IEventSource_CreateListener_TO(smth) NS_IMETHOD CreateListener (IEventListener * * aListener) { return smth CreateListener (aListener); }
#define COM_FORWARD_IEventSource_CreateListener_TO_OBJ(obj) COM_FORWARD_IEventSource_CreateListener_TO ((obj)->)
#define COM_FORWARD_IEventSource_CreateListener_TO_BASE(base) COM_FORWARD_IEventSource_CreateListener_TO (base::)
#define COM_FORWARD_IEventSource_CreateAggregator_TO(smth) NS_IMETHOD CreateAggregator (PRUint32 aSubordinatesSize, IEventSource * * aSubordinates, IEventSource * * aResult) { return smth CreateAggregator (aSubordinatesSize+++, aSubordinates, aResult); }
#define COM_FORWARD_IEventSource_CreateAggregator_TO_OBJ(obj) COM_FORWARD_IEventSource_CreateAggregator_TO ((obj)->)
#define COM_FORWARD_IEventSource_CreateAggregator_TO_BASE(base) COM_FORWARD_IEventSource_CreateAggregator_TO (base::)
#define COM_FORWARD_IEventSource_RegisterListener_TO(smth) NS_IMETHOD RegisterListener (IEventListener * aListener, PRUint32 aInterestingSize, PRUint32 * aInteresting, PRBool aActive) { return smth RegisterListener (aListener, aInterestingSize+++, aInteresting, aActive); }
#define COM_FORWARD_IEventSource_RegisterListener_TO_OBJ(obj) COM_FORWARD_IEventSource_RegisterListener_TO ((obj)->)
#define COM_FORWARD_IEventSource_RegisterListener_TO_BASE(base) COM_FORWARD_IEventSource_RegisterListener_TO (base::)
#define COM_FORWARD_IEventSource_UnregisterListener_TO(smth) NS_IMETHOD UnregisterListener (IEventListener * aListener) { return smth UnregisterListener (aListener); }
#define COM_FORWARD_IEventSource_UnregisterListener_TO_OBJ(obj) COM_FORWARD_IEventSource_UnregisterListener_TO ((obj)->)
#define COM_FORWARD_IEventSource_UnregisterListener_TO_BASE(base) COM_FORWARD_IEventSource_UnregisterListener_TO (base::)
#define COM_FORWARD_IEventSource_FireEvent_TO(smth) NS_IMETHOD FireEvent (IEvent * aEvent, PRInt32 aTimeout, PRBool * aResult) { return smth FireEvent (aEvent, aTimeout, aResult); }
#define COM_FORWARD_IEventSource_FireEvent_TO_OBJ(obj) COM_FORWARD_IEventSource_FireEvent_TO ((obj)->)
#define COM_FORWARD_IEventSource_FireEvent_TO_BASE(base) COM_FORWARD_IEventSource_FireEvent_TO (base::)
#define COM_FORWARD_IEventSource_GetEvent_TO(smth) NS_IMETHOD GetEvent (IEventListener * aListener, PRInt32 aTimeout, IEvent * * aEvent) { return smth GetEvent (aListener, aTimeout, aEvent); }
#define COM_FORWARD_IEventSource_GetEvent_TO_OBJ(obj) COM_FORWARD_IEventSource_GetEvent_TO ((obj)->)
#define COM_FORWARD_IEventSource_GetEvent_TO_BASE(base) COM_FORWARD_IEventSource_GetEvent_TO (base::)
#define COM_FORWARD_IEventSource_EventProcessed_TO(smth) NS_IMETHOD EventProcessed (IEventListener * aListener, IEvent * aEvent) { return smth EventProcessed (aListener, aEvent); }
#define COM_FORWARD_IEventSource_EventProcessed_TO_OBJ(obj) COM_FORWARD_IEventSource_EventProcessed_TO ((obj)->)
#define COM_FORWARD_IEventSource_EventProcessed_TO_BASE(base) COM_FORWARD_IEventSource_EventProcessed_TO (base::)
#define COM_FORWARD_IEventSource_TO(smth) NS_FORWARD_IEVENTSOURCE (smth)
#define COM_FORWARD_IEventSource_TO_OBJ(obj) COM_FORWARD_IEventSource_TO ((obj)->)
#define COM_FORWARD_IEventSource_TO_BASE(base) COM_FORWARD_IEventSource_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IEventSource;

/* starting interface:    IEventListener */
#define IEVENTLISTENER_IID_STR "67099191-32e7-4f6c-85ee-422304c71b90"

#define IEVENTLISTENER_IID \
  {0x67099191, 0x32e7, 0x4f6c, \
    { 0x85, 0xee, 0x42, 0x23, 0x04, 0xc7, 0x1b, 0x90 }}

class NS_NO_VTABLE IEventListener : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IEVENTLISTENER_IID)

  /* void handleEvent (in IEvent event); */
  NS_IMETHOD HandleEvent(IEvent *event) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IEVENTLISTENER \
  NS_IMETHOD HandleEvent(IEvent *event); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IEVENTLISTENER(_to) \
  NS_IMETHOD HandleEvent(IEvent *event) { return _to HandleEvent(event); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IEVENTLISTENER(_to) \
  NS_IMETHOD HandleEvent(IEvent *event) { return !_to ? NS_ERROR_NULL_POINTER : _to->HandleEvent(event); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IEventListener
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IEVENTLISTENER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IEventListener)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* void handleEvent (in IEvent event); */
NS_IMETHODIMP _MYCLASS_::HandleEvent(IEvent *event)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IEventListener_HandleEvent_TO(smth) NS_IMETHOD HandleEvent (IEvent * aEvent) { return smth HandleEvent (aEvent); }
#define COM_FORWARD_IEventListener_HandleEvent_TO_OBJ(obj) COM_FORWARD_IEventListener_HandleEvent_TO ((obj)->)
#define COM_FORWARD_IEventListener_HandleEvent_TO_BASE(base) COM_FORWARD_IEventListener_HandleEvent_TO (base::)
#define COM_FORWARD_IEventListener_TO(smth) NS_FORWARD_IEVENTLISTENER (smth)
#define COM_FORWARD_IEventListener_TO_OBJ(obj) COM_FORWARD_IEventListener_TO ((obj)->)
#define COM_FORWARD_IEventListener_TO_BASE(base) COM_FORWARD_IEventListener_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IEventListener;

/* starting interface:    IEvent */
#define IEVENT_IID_STR "0ca2adba-8f30-401b-a8cd-fe31dbe839c0"

#define IEVENT_IID \
  {0x0ca2adba, 0x8f30, 0x401b, \
    { 0xa8, 0xcd, 0xfe, 0x31, 0xdb, 0xe8, 0x39, 0xc0 }}

class NS_NO_VTABLE IEvent : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IEVENT_IID)

  /* readonly attribute PRUint32 type; */
  NS_IMETHOD GetType(PRUint32 *aType) = 0;

  /* readonly attribute IEventSource source; */
  NS_IMETHOD GetSource(IEventSource * *aSource) = 0;

  /* readonly attribute boolean waitable; */
  NS_IMETHOD GetWaitable(PRBool *aWaitable) = 0;

  /* void setProcessed (); */
  NS_IMETHOD SetProcessed(void) = 0;

  /* void waitProcessed (in long timeout, [retval] out boolean result); */
  NS_IMETHOD WaitProcessed(PRInt32 timeout, PRBool *result) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IEVENT \
  NS_IMETHOD GetType(PRUint32 *aType); \
  NS_IMETHOD GetSource(IEventSource * *aSource); \
  NS_IMETHOD GetWaitable(PRBool *aWaitable); \
  NS_IMETHOD SetProcessed(void); \
  NS_IMETHOD WaitProcessed(PRInt32 timeout, PRBool *result); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IEVENT(_to) \
  NS_IMETHOD GetType(PRUint32 *aType) { return _to GetType(aType); } \
  NS_IMETHOD GetSource(IEventSource * *aSource) { return _to GetSource(aSource); } \
  NS_IMETHOD GetWaitable(PRBool *aWaitable) { return _to GetWaitable(aWaitable); } \
  NS_IMETHOD SetProcessed(void) { return _to SetProcessed(); } \
  NS_IMETHOD WaitProcessed(PRInt32 timeout, PRBool *result) { return _to WaitProcessed(timeout, result); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IEVENT(_to) \
  NS_IMETHOD GetType(PRUint32 *aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetType(aType); } \
  NS_IMETHOD GetSource(IEventSource * *aSource) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSource(aSource); } \
  NS_IMETHOD GetWaitable(PRBool *aWaitable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWaitable(aWaitable); } \
  NS_IMETHOD SetProcessed(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetProcessed(); } \
  NS_IMETHOD WaitProcessed(PRInt32 timeout, PRBool *result) { return !_to ? NS_ERROR_NULL_POINTER : _to->WaitProcessed(timeout, result); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute PRUint32 type; */
NS_IMETHODIMP _MYCLASS_::GetType(PRUint32 *aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IEventSource source; */
NS_IMETHODIMP _MYCLASS_::GetSource(IEventSource * *aSource)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean waitable; */
NS_IMETHODIMP _MYCLASS_::GetWaitable(PRBool *aWaitable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setProcessed (); */
NS_IMETHODIMP _MYCLASS_::SetProcessed()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void waitProcessed (in long timeout, [retval] out boolean result); */
NS_IMETHODIMP _MYCLASS_::WaitProcessed(PRInt32 timeout, PRBool *result)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IEvent_GETTER_Type_TO(smth) NS_IMETHOD GetType (PRUint32 * aType) { return smth GetType (aType); }
#define COM_FORWARD_IEvent_GETTER_Type_TO_OBJ(obj) COM_FORWARD_IEvent_GETTER_Type_TO ((obj)->)
#define COM_FORWARD_IEvent_GETTER_Type_TO_BASE(base) COM_FORWARD_IEvent_GETTER_Type_TO (base::)
#define COM_FORWARD_IEvent_GETTER_Source_TO(smth) NS_IMETHOD GetSource (IEventSource * * aSource) { return smth GetSource (aSource); }
#define COM_FORWARD_IEvent_GETTER_Source_TO_OBJ(obj) COM_FORWARD_IEvent_GETTER_Source_TO ((obj)->)
#define COM_FORWARD_IEvent_GETTER_Source_TO_BASE(base) COM_FORWARD_IEvent_GETTER_Source_TO (base::)
#define COM_FORWARD_IEvent_GETTER_Waitable_TO(smth) NS_IMETHOD GetWaitable (PRBool * aWaitable) { return smth GetWaitable (aWaitable); }
#define COM_FORWARD_IEvent_GETTER_Waitable_TO_OBJ(obj) COM_FORWARD_IEvent_GETTER_Waitable_TO ((obj)->)
#define COM_FORWARD_IEvent_GETTER_Waitable_TO_BASE(base) COM_FORWARD_IEvent_GETTER_Waitable_TO (base::)
#define COM_FORWARD_IEvent_SetProcessed_TO(smth) NS_IMETHOD SetProcessed() { return smth SetProcessed(); }
#define COM_FORWARD_IEvent_SetProcessed_TO_OBJ(obj) COM_FORWARD_IEvent_SetProcessed_TO ((obj)->)
#define COM_FORWARD_IEvent_SetProcessed_TO_BASE(base) COM_FORWARD_IEvent_SetProcessed_TO (base::)
#define COM_FORWARD_IEvent_WaitProcessed_TO(smth) NS_IMETHOD WaitProcessed (PRInt32 aTimeout, PRBool * aResult) { return smth WaitProcessed (aTimeout, aResult); }
#define COM_FORWARD_IEvent_WaitProcessed_TO_OBJ(obj) COM_FORWARD_IEvent_WaitProcessed_TO ((obj)->)
#define COM_FORWARD_IEvent_WaitProcessed_TO_BASE(base) COM_FORWARD_IEvent_WaitProcessed_TO (base::)
#define COM_FORWARD_IEvent_TO(smth) NS_FORWARD_IEVENT (smth)
#define COM_FORWARD_IEvent_TO_OBJ(obj) COM_FORWARD_IEvent_TO ((obj)->)
#define COM_FORWARD_IEvent_TO_BASE(base) COM_FORWARD_IEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IEvent;

/* starting interface:    IReusableEvent */
#define IREUSABLEEVENT_IID_STR "69bfb134-80f6-4266-8e20-16371f68fa25"

#define IREUSABLEEVENT_IID \
  {0x69bfb134, 0x80f6, 0x4266, \
    { 0x8e, 0x20, 0x16, 0x37, 0x1f, 0x68, 0xfa, 0x25 }}

class NS_NO_VTABLE IReusableEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IREUSABLEEVENT_IID)

  /* readonly attribute unsigned long generation; */
  NS_IMETHOD GetGeneration(PRUint32 *aGeneration) = 0;

  /* void reuse (); */
  NS_IMETHOD Reuse(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IREUSABLEEVENT \
  NS_IMETHOD GetGeneration(PRUint32 *aGeneration); \
  NS_IMETHOD Reuse(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IREUSABLEEVENT(_to) \
  NS_IMETHOD GetGeneration(PRUint32 *aGeneration) { return _to GetGeneration(aGeneration); } \
  NS_IMETHOD Reuse(void) { return _to Reuse(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IREUSABLEEVENT(_to) \
  NS_IMETHOD GetGeneration(PRUint32 *aGeneration) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGeneration(aGeneration); } \
  NS_IMETHOD Reuse(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Reuse(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IReusableEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IREUSABLEEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IReusableEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute unsigned long generation; */
NS_IMETHODIMP _MYCLASS_::GetGeneration(PRUint32 *aGeneration)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void reuse (); */
NS_IMETHODIMP _MYCLASS_::Reuse()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IReusableEvent_GETTER_Generation_TO(smth) NS_IMETHOD GetGeneration (PRUint32 * aGeneration) { return smth GetGeneration (aGeneration); }
#define COM_FORWARD_IReusableEvent_GETTER_Generation_TO_OBJ(obj) COM_FORWARD_IReusableEvent_GETTER_Generation_TO ((obj)->)
#define COM_FORWARD_IReusableEvent_GETTER_Generation_TO_BASE(base) COM_FORWARD_IReusableEvent_GETTER_Generation_TO (base::)
#define COM_FORWARD_IReusableEvent_Reuse_TO(smth) NS_IMETHOD Reuse() { return smth Reuse(); }
#define COM_FORWARD_IReusableEvent_Reuse_TO_OBJ(obj) COM_FORWARD_IReusableEvent_Reuse_TO ((obj)->)
#define COM_FORWARD_IReusableEvent_Reuse_TO_BASE(base) COM_FORWARD_IReusableEvent_Reuse_TO (base::)
#define COM_FORWARD_IReusableEvent_TO(smth) NS_FORWARD_IREUSABLEEVENT (smth)
#define COM_FORWARD_IReusableEvent_TO_OBJ(obj) COM_FORWARD_IReusableEvent_TO ((obj)->)
#define COM_FORWARD_IReusableEvent_TO_BASE(base) COM_FORWARD_IReusableEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IReusableEvent;

/* starting interface:    IMachineEvent */
#define IMACHINEEVENT_IID_STR "92ed7b1a-0d96-40ed-ae46-a564d484325e"

#define IMACHINEEVENT_IID \
  {0x92ed7b1a, 0x0d96, 0x40ed, \
    { 0xae, 0x46, 0xa5, 0x64, 0xd4, 0x84, 0x32, 0x5e }}

class NS_NO_VTABLE IMachineEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMACHINEEVENT_IID)

  /* readonly attribute wstring machineId; */
  NS_IMETHOD GetMachineId(PRUnichar * *aMachineId) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMACHINEEVENT \
  NS_IMETHOD GetMachineId(PRUnichar * *aMachineId); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMACHINEEVENT(_to) \
  NS_IMETHOD GetMachineId(PRUnichar * *aMachineId) { return _to GetMachineId(aMachineId); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMACHINEEVENT(_to) \
  NS_IMETHOD GetMachineId(PRUnichar * *aMachineId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMachineId(aMachineId); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IMachineEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMACHINEEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IMachineEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring machineId; */
NS_IMETHODIMP _MYCLASS_::GetMachineId(PRUnichar * *aMachineId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IMachineEvent_GETTER_MachineId_TO(smth) NS_IMETHOD GetMachineId (PRUnichar * * aMachineId) { return smth GetMachineId (aMachineId); }
#define COM_FORWARD_IMachineEvent_GETTER_MachineId_TO_OBJ(obj) COM_FORWARD_IMachineEvent_GETTER_MachineId_TO ((obj)->)
#define COM_FORWARD_IMachineEvent_GETTER_MachineId_TO_BASE(base) COM_FORWARD_IMachineEvent_GETTER_MachineId_TO (base::)
#define COM_FORWARD_IMachineEvent_TO(smth) NS_FORWARD_IMACHINEEVENT (smth)
#define COM_FORWARD_IMachineEvent_TO_OBJ(obj) COM_FORWARD_IMachineEvent_TO ((obj)->)
#define COM_FORWARD_IMachineEvent_TO_BASE(base) COM_FORWARD_IMachineEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IMachineEvent;

/* starting interface:    IMachineStateChangedEvent */
#define IMACHINESTATECHANGEDEVENT_IID_STR "5748f794-48df-438d-85eb-98ffd70d18c9"

#define IMACHINESTATECHANGEDEVENT_IID \
  {0x5748f794, 0x48df, 0x438d, \
    { 0x85, 0xeb, 0x98, 0xff, 0xd7, 0x0d, 0x18, 0xc9 }}

class NS_NO_VTABLE IMachineStateChangedEvent : public IMachineEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMACHINESTATECHANGEDEVENT_IID)

  /* readonly attribute PRUint32 state; */
  NS_IMETHOD GetState(PRUint32 *aState) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMACHINESTATECHANGEDEVENT \
  NS_IMETHOD GetState(PRUint32 *aState); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMACHINESTATECHANGEDEVENT(_to) \
  NS_IMETHOD GetState(PRUint32 *aState) { return _to GetState(aState); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMACHINESTATECHANGEDEVENT(_to) \
  NS_IMETHOD GetState(PRUint32 *aState) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetState(aState); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IMachineStateChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMACHINESTATECHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IMachineStateChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute PRUint32 state; */
NS_IMETHODIMP _MYCLASS_::GetState(PRUint32 *aState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IMachineStateChangedEvent_GETTER_State_TO(smth) NS_IMETHOD GetState (PRUint32 * aState) { return smth GetState (aState); }
#define COM_FORWARD_IMachineStateChangedEvent_GETTER_State_TO_OBJ(obj) COM_FORWARD_IMachineStateChangedEvent_GETTER_State_TO ((obj)->)
#define COM_FORWARD_IMachineStateChangedEvent_GETTER_State_TO_BASE(base) COM_FORWARD_IMachineStateChangedEvent_GETTER_State_TO (base::)
#define COM_FORWARD_IMachineStateChangedEvent_TO(smth) NS_FORWARD_IMACHINESTATECHANGEDEVENT (smth)
#define COM_FORWARD_IMachineStateChangedEvent_TO_OBJ(obj) COM_FORWARD_IMachineStateChangedEvent_TO ((obj)->)
#define COM_FORWARD_IMachineStateChangedEvent_TO_BASE(base) COM_FORWARD_IMachineStateChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IMachineStateChangedEvent;

/* starting interface:    IMachineDataChangedEvent */
#define IMACHINEDATACHANGEDEVENT_IID_STR "abe94809-2e88-4436-83d7-50f3e64d0503"

#define IMACHINEDATACHANGEDEVENT_IID \
  {0xabe94809, 0x2e88, 0x4436, \
    { 0x83, 0xd7, 0x50, 0xf3, 0xe6, 0x4d, 0x05, 0x03 }}

class NS_NO_VTABLE IMachineDataChangedEvent : public IMachineEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMACHINEDATACHANGEDEVENT_IID)

  /* readonly attribute boolean temporary; */
  NS_IMETHOD GetTemporary(PRBool *aTemporary) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMACHINEDATACHANGEDEVENT \
  NS_IMETHOD GetTemporary(PRBool *aTemporary); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMACHINEDATACHANGEDEVENT(_to) \
  NS_IMETHOD GetTemporary(PRBool *aTemporary) { return _to GetTemporary(aTemporary); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMACHINEDATACHANGEDEVENT(_to) \
  NS_IMETHOD GetTemporary(PRBool *aTemporary) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTemporary(aTemporary); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IMachineDataChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMACHINEDATACHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IMachineDataChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute boolean temporary; */
NS_IMETHODIMP _MYCLASS_::GetTemporary(PRBool *aTemporary)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IMachineDataChangedEvent_GETTER_Temporary_TO(smth) NS_IMETHOD GetTemporary (PRBool * aTemporary) { return smth GetTemporary (aTemporary); }
#define COM_FORWARD_IMachineDataChangedEvent_GETTER_Temporary_TO_OBJ(obj) COM_FORWARD_IMachineDataChangedEvent_GETTER_Temporary_TO ((obj)->)
#define COM_FORWARD_IMachineDataChangedEvent_GETTER_Temporary_TO_BASE(base) COM_FORWARD_IMachineDataChangedEvent_GETTER_Temporary_TO (base::)
#define COM_FORWARD_IMachineDataChangedEvent_TO(smth) NS_FORWARD_IMACHINEDATACHANGEDEVENT (smth)
#define COM_FORWARD_IMachineDataChangedEvent_TO_OBJ(obj) COM_FORWARD_IMachineDataChangedEvent_TO ((obj)->)
#define COM_FORWARD_IMachineDataChangedEvent_TO_BASE(base) COM_FORWARD_IMachineDataChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IMachineDataChangedEvent;

/* starting interface:    IMediumRegisteredEvent */
#define IMEDIUMREGISTEREDEVENT_IID_STR "53fac49a-b7f1-4a5a-a4ef-a11dd9c2a458"

#define IMEDIUMREGISTEREDEVENT_IID \
  {0x53fac49a, 0xb7f1, 0x4a5a, \
    { 0xa4, 0xef, 0xa1, 0x1d, 0xd9, 0xc2, 0xa4, 0x58 }}

class NS_NO_VTABLE IMediumRegisteredEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMEDIUMREGISTEREDEVENT_IID)

  /* readonly attribute wstring mediumId; */
  NS_IMETHOD GetMediumId(PRUnichar * *aMediumId) = 0;

  /* readonly attribute PRUint32 mediumType; */
  NS_IMETHOD GetMediumType(PRUint32 *aMediumType) = 0;

  /* readonly attribute boolean registered; */
  NS_IMETHOD GetRegistered(PRBool *aRegistered) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMEDIUMREGISTEREDEVENT \
  NS_IMETHOD GetMediumId(PRUnichar * *aMediumId); \
  NS_IMETHOD GetMediumType(PRUint32 *aMediumType); \
  NS_IMETHOD GetRegistered(PRBool *aRegistered); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMEDIUMREGISTEREDEVENT(_to) \
  NS_IMETHOD GetMediumId(PRUnichar * *aMediumId) { return _to GetMediumId(aMediumId); } \
  NS_IMETHOD GetMediumType(PRUint32 *aMediumType) { return _to GetMediumType(aMediumType); } \
  NS_IMETHOD GetRegistered(PRBool *aRegistered) { return _to GetRegistered(aRegistered); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMEDIUMREGISTEREDEVENT(_to) \
  NS_IMETHOD GetMediumId(PRUnichar * *aMediumId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMediumId(aMediumId); } \
  NS_IMETHOD GetMediumType(PRUint32 *aMediumType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMediumType(aMediumType); } \
  NS_IMETHOD GetRegistered(PRBool *aRegistered) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRegistered(aRegistered); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IMediumRegisteredEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMEDIUMREGISTEREDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IMediumRegisteredEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring mediumId; */
NS_IMETHODIMP _MYCLASS_::GetMediumId(PRUnichar * *aMediumId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 mediumType; */
NS_IMETHODIMP _MYCLASS_::GetMediumType(PRUint32 *aMediumType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean registered; */
NS_IMETHODIMP _MYCLASS_::GetRegistered(PRBool *aRegistered)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IMediumRegisteredEvent_GETTER_MediumId_TO(smth) NS_IMETHOD GetMediumId (PRUnichar * * aMediumId) { return smth GetMediumId (aMediumId); }
#define COM_FORWARD_IMediumRegisteredEvent_GETTER_MediumId_TO_OBJ(obj) COM_FORWARD_IMediumRegisteredEvent_GETTER_MediumId_TO ((obj)->)
#define COM_FORWARD_IMediumRegisteredEvent_GETTER_MediumId_TO_BASE(base) COM_FORWARD_IMediumRegisteredEvent_GETTER_MediumId_TO (base::)
#define COM_FORWARD_IMediumRegisteredEvent_GETTER_MediumType_TO(smth) NS_IMETHOD GetMediumType (PRUint32 * aMediumType) { return smth GetMediumType (aMediumType); }
#define COM_FORWARD_IMediumRegisteredEvent_GETTER_MediumType_TO_OBJ(obj) COM_FORWARD_IMediumRegisteredEvent_GETTER_MediumType_TO ((obj)->)
#define COM_FORWARD_IMediumRegisteredEvent_GETTER_MediumType_TO_BASE(base) COM_FORWARD_IMediumRegisteredEvent_GETTER_MediumType_TO (base::)
#define COM_FORWARD_IMediumRegisteredEvent_GETTER_Registered_TO(smth) NS_IMETHOD GetRegistered (PRBool * aRegistered) { return smth GetRegistered (aRegistered); }
#define COM_FORWARD_IMediumRegisteredEvent_GETTER_Registered_TO_OBJ(obj) COM_FORWARD_IMediumRegisteredEvent_GETTER_Registered_TO ((obj)->)
#define COM_FORWARD_IMediumRegisteredEvent_GETTER_Registered_TO_BASE(base) COM_FORWARD_IMediumRegisteredEvent_GETTER_Registered_TO (base::)
#define COM_FORWARD_IMediumRegisteredEvent_TO(smth) NS_FORWARD_IMEDIUMREGISTEREDEVENT (smth)
#define COM_FORWARD_IMediumRegisteredEvent_TO_OBJ(obj) COM_FORWARD_IMediumRegisteredEvent_TO ((obj)->)
#define COM_FORWARD_IMediumRegisteredEvent_TO_BASE(base) COM_FORWARD_IMediumRegisteredEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IMediumRegisteredEvent;

/* starting interface:    IMachineRegisteredEvent */
#define IMACHINEREGISTEREDEVENT_IID_STR "c354a762-3ff2-4f2e-8f09-07382ee25088"

#define IMACHINEREGISTEREDEVENT_IID \
  {0xc354a762, 0x3ff2, 0x4f2e, \
    { 0x8f, 0x09, 0x07, 0x38, 0x2e, 0xe2, 0x50, 0x88 }}

class NS_NO_VTABLE IMachineRegisteredEvent : public IMachineEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMACHINEREGISTEREDEVENT_IID)

  /* readonly attribute boolean registered; */
  NS_IMETHOD GetRegistered(PRBool *aRegistered) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMACHINEREGISTEREDEVENT \
  NS_IMETHOD GetRegistered(PRBool *aRegistered); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMACHINEREGISTEREDEVENT(_to) \
  NS_IMETHOD GetRegistered(PRBool *aRegistered) { return _to GetRegistered(aRegistered); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMACHINEREGISTEREDEVENT(_to) \
  NS_IMETHOD GetRegistered(PRBool *aRegistered) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRegistered(aRegistered); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IMachineRegisteredEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMACHINEREGISTEREDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IMachineRegisteredEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute boolean registered; */
NS_IMETHODIMP _MYCLASS_::GetRegistered(PRBool *aRegistered)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IMachineRegisteredEvent_GETTER_Registered_TO(smth) NS_IMETHOD GetRegistered (PRBool * aRegistered) { return smth GetRegistered (aRegistered); }
#define COM_FORWARD_IMachineRegisteredEvent_GETTER_Registered_TO_OBJ(obj) COM_FORWARD_IMachineRegisteredEvent_GETTER_Registered_TO ((obj)->)
#define COM_FORWARD_IMachineRegisteredEvent_GETTER_Registered_TO_BASE(base) COM_FORWARD_IMachineRegisteredEvent_GETTER_Registered_TO (base::)
#define COM_FORWARD_IMachineRegisteredEvent_TO(smth) NS_FORWARD_IMACHINEREGISTEREDEVENT (smth)
#define COM_FORWARD_IMachineRegisteredEvent_TO_OBJ(obj) COM_FORWARD_IMachineRegisteredEvent_TO ((obj)->)
#define COM_FORWARD_IMachineRegisteredEvent_TO_BASE(base) COM_FORWARD_IMachineRegisteredEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IMachineRegisteredEvent;

/* starting interface:    ISessionStateChangedEvent */
#define ISESSIONSTATECHANGEDEVENT_IID_STR "714a3eef-799a-4489-86cd-fe8e45b2ff8e"

#define ISESSIONSTATECHANGEDEVENT_IID \
  {0x714a3eef, 0x799a, 0x4489, \
    { 0x86, 0xcd, 0xfe, 0x8e, 0x45, 0xb2, 0xff, 0x8e }}

class NS_NO_VTABLE ISessionStateChangedEvent : public IMachineEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISESSIONSTATECHANGEDEVENT_IID)

  /* readonly attribute PRUint32 state; */
  NS_IMETHOD GetState(PRUint32 *aState) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISESSIONSTATECHANGEDEVENT \
  NS_IMETHOD GetState(PRUint32 *aState); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISESSIONSTATECHANGEDEVENT(_to) \
  NS_IMETHOD GetState(PRUint32 *aState) { return _to GetState(aState); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISESSIONSTATECHANGEDEVENT(_to) \
  NS_IMETHOD GetState(PRUint32 *aState) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetState(aState); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ISessionStateChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISESSIONSTATECHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ISessionStateChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute PRUint32 state; */
NS_IMETHODIMP _MYCLASS_::GetState(PRUint32 *aState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_ISessionStateChangedEvent_GETTER_State_TO(smth) NS_IMETHOD GetState (PRUint32 * aState) { return smth GetState (aState); }
#define COM_FORWARD_ISessionStateChangedEvent_GETTER_State_TO_OBJ(obj) COM_FORWARD_ISessionStateChangedEvent_GETTER_State_TO ((obj)->)
#define COM_FORWARD_ISessionStateChangedEvent_GETTER_State_TO_BASE(base) COM_FORWARD_ISessionStateChangedEvent_GETTER_State_TO (base::)
#define COM_FORWARD_ISessionStateChangedEvent_TO(smth) NS_FORWARD_ISESSIONSTATECHANGEDEVENT (smth)
#define COM_FORWARD_ISessionStateChangedEvent_TO_OBJ(obj) COM_FORWARD_ISessionStateChangedEvent_TO ((obj)->)
#define COM_FORWARD_ISessionStateChangedEvent_TO_BASE(base) COM_FORWARD_ISessionStateChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_ISessionStateChangedEvent;

/* starting interface:    IGuestPropertyChangedEvent */
#define IGUESTPROPERTYCHANGEDEVENT_IID_STR "3f63597a-26f1-4edb-8dd2-6bddd0912368"

#define IGUESTPROPERTYCHANGEDEVENT_IID \
  {0x3f63597a, 0x26f1, 0x4edb, \
    { 0x8d, 0xd2, 0x6b, 0xdd, 0xd0, 0x91, 0x23, 0x68 }}

class NS_NO_VTABLE IGuestPropertyChangedEvent : public IMachineEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTPROPERTYCHANGEDEVENT_IID)

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* readonly attribute wstring value; */
  NS_IMETHOD GetValue(PRUnichar * *aValue) = 0;

  /* readonly attribute wstring flags; */
  NS_IMETHOD GetFlags(PRUnichar * *aFlags) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTPROPERTYCHANGEDEVENT \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetValue(PRUnichar * *aValue); \
  NS_IMETHOD GetFlags(PRUnichar * *aFlags); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTPROPERTYCHANGEDEVENT(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetValue(PRUnichar * *aValue) { return _to GetValue(aValue); } \
  NS_IMETHOD GetFlags(PRUnichar * *aFlags) { return _to GetFlags(aFlags); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTPROPERTYCHANGEDEVENT(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetValue(PRUnichar * *aValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetValue(aValue); } \
  NS_IMETHOD GetFlags(PRUnichar * *aFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFlags(aFlags); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestPropertyChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTPROPERTYCHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestPropertyChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring value; */
NS_IMETHODIMP _MYCLASS_::GetValue(PRUnichar * *aValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring flags; */
NS_IMETHODIMP _MYCLASS_::GetFlags(PRUnichar * *aFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestPropertyChangedEvent_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IGuestPropertyChangedEvent_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IGuestPropertyChangedEvent_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IGuestPropertyChangedEvent_GETTER_Name_TO_BASE(base) COM_FORWARD_IGuestPropertyChangedEvent_GETTER_Name_TO (base::)
#define COM_FORWARD_IGuestPropertyChangedEvent_GETTER_Value_TO(smth) NS_IMETHOD GetValue (PRUnichar * * aValue) { return smth GetValue (aValue); }
#define COM_FORWARD_IGuestPropertyChangedEvent_GETTER_Value_TO_OBJ(obj) COM_FORWARD_IGuestPropertyChangedEvent_GETTER_Value_TO ((obj)->)
#define COM_FORWARD_IGuestPropertyChangedEvent_GETTER_Value_TO_BASE(base) COM_FORWARD_IGuestPropertyChangedEvent_GETTER_Value_TO (base::)
#define COM_FORWARD_IGuestPropertyChangedEvent_GETTER_Flags_TO(smth) NS_IMETHOD GetFlags (PRUnichar * * aFlags) { return smth GetFlags (aFlags); }
#define COM_FORWARD_IGuestPropertyChangedEvent_GETTER_Flags_TO_OBJ(obj) COM_FORWARD_IGuestPropertyChangedEvent_GETTER_Flags_TO ((obj)->)
#define COM_FORWARD_IGuestPropertyChangedEvent_GETTER_Flags_TO_BASE(base) COM_FORWARD_IGuestPropertyChangedEvent_GETTER_Flags_TO (base::)
#define COM_FORWARD_IGuestPropertyChangedEvent_TO(smth) NS_FORWARD_IGUESTPROPERTYCHANGEDEVENT (smth)
#define COM_FORWARD_IGuestPropertyChangedEvent_TO_OBJ(obj) COM_FORWARD_IGuestPropertyChangedEvent_TO ((obj)->)
#define COM_FORWARD_IGuestPropertyChangedEvent_TO_BASE(base) COM_FORWARD_IGuestPropertyChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestPropertyChangedEvent;

/* starting interface:    ISnapshotEvent */
#define ISNAPSHOTEVENT_IID_STR "21637b0e-34b8-42d3-acfb-7e96daf77c22"

#define ISNAPSHOTEVENT_IID \
  {0x21637b0e, 0x34b8, 0x42d3, \
    { 0xac, 0xfb, 0x7e, 0x96, 0xda, 0xf7, 0x7c, 0x22 }}

class NS_NO_VTABLE ISnapshotEvent : public IMachineEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISNAPSHOTEVENT_IID)

  /* readonly attribute wstring snapshotId; */
  NS_IMETHOD GetSnapshotId(PRUnichar * *aSnapshotId) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISNAPSHOTEVENT \
  NS_IMETHOD GetSnapshotId(PRUnichar * *aSnapshotId); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISNAPSHOTEVENT(_to) \
  NS_IMETHOD GetSnapshotId(PRUnichar * *aSnapshotId) { return _to GetSnapshotId(aSnapshotId); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISNAPSHOTEVENT(_to) \
  NS_IMETHOD GetSnapshotId(PRUnichar * *aSnapshotId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSnapshotId(aSnapshotId); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ISnapshotEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISNAPSHOTEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ISnapshotEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring snapshotId; */
NS_IMETHODIMP _MYCLASS_::GetSnapshotId(PRUnichar * *aSnapshotId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_ISnapshotEvent_GETTER_SnapshotId_TO(smth) NS_IMETHOD GetSnapshotId (PRUnichar * * aSnapshotId) { return smth GetSnapshotId (aSnapshotId); }
#define COM_FORWARD_ISnapshotEvent_GETTER_SnapshotId_TO_OBJ(obj) COM_FORWARD_ISnapshotEvent_GETTER_SnapshotId_TO ((obj)->)
#define COM_FORWARD_ISnapshotEvent_GETTER_SnapshotId_TO_BASE(base) COM_FORWARD_ISnapshotEvent_GETTER_SnapshotId_TO (base::)
#define COM_FORWARD_ISnapshotEvent_TO(smth) NS_FORWARD_ISNAPSHOTEVENT (smth)
#define COM_FORWARD_ISnapshotEvent_TO_OBJ(obj) COM_FORWARD_ISnapshotEvent_TO ((obj)->)
#define COM_FORWARD_ISnapshotEvent_TO_BASE(base) COM_FORWARD_ISnapshotEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_ISnapshotEvent;

/* starting interface:    ISnapshotTakenEvent */
#define ISNAPSHOTTAKENEVENT_IID_STR "d27c0b3d-6038-422c-b45e-6d4a0503d9f1"

#define ISNAPSHOTTAKENEVENT_IID \
  {0xd27c0b3d, 0x6038, 0x422c, \
    { 0xb4, 0x5e, 0x6d, 0x4a, 0x05, 0x03, 0xd9, 0xf1 }}

class NS_NO_VTABLE ISnapshotTakenEvent : public ISnapshotEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISNAPSHOTTAKENEVENT_IID)

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISNAPSHOTTAKENEVENT \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISNAPSHOTTAKENEVENT(_to) \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISNAPSHOTTAKENEVENT(_to) \
  /* no methods! */

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ISnapshotTakenEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISNAPSHOTTAKENEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ISnapshotTakenEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_ISnapshotTakenEvent_TO(smth) NS_FORWARD_ISNAPSHOTTAKENEVENT (smth)
#define COM_FORWARD_ISnapshotTakenEvent_TO_OBJ(obj) COM_FORWARD_ISnapshotTakenEvent_TO ((obj)->)
#define COM_FORWARD_ISnapshotTakenEvent_TO_BASE(base) COM_FORWARD_ISnapshotTakenEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_ISnapshotTakenEvent;

/* starting interface:    ISnapshotDeletedEvent */
#define ISNAPSHOTDELETEDEVENT_IID_STR "c48f3401-4a9e-43f4-b7a7-54bd285e22f4"

#define ISNAPSHOTDELETEDEVENT_IID \
  {0xc48f3401, 0x4a9e, 0x43f4, \
    { 0xb7, 0xa7, 0x54, 0xbd, 0x28, 0x5e, 0x22, 0xf4 }}

class NS_NO_VTABLE ISnapshotDeletedEvent : public ISnapshotEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISNAPSHOTDELETEDEVENT_IID)

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISNAPSHOTDELETEDEVENT \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISNAPSHOTDELETEDEVENT(_to) \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISNAPSHOTDELETEDEVENT(_to) \
  /* no methods! */

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ISnapshotDeletedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISNAPSHOTDELETEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ISnapshotDeletedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_ISnapshotDeletedEvent_TO(smth) NS_FORWARD_ISNAPSHOTDELETEDEVENT (smth)
#define COM_FORWARD_ISnapshotDeletedEvent_TO_OBJ(obj) COM_FORWARD_ISnapshotDeletedEvent_TO ((obj)->)
#define COM_FORWARD_ISnapshotDeletedEvent_TO_BASE(base) COM_FORWARD_ISnapshotDeletedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_ISnapshotDeletedEvent;

/* starting interface:    ISnapshotChangedEvent */
#define ISNAPSHOTCHANGEDEVENT_IID_STR "07541941-8079-447a-a33e-47a69c7980db"

#define ISNAPSHOTCHANGEDEVENT_IID \
  {0x07541941, 0x8079, 0x447a, \
    { 0xa3, 0x3e, 0x47, 0xa6, 0x9c, 0x79, 0x80, 0xdb }}

class NS_NO_VTABLE ISnapshotChangedEvent : public ISnapshotEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISNAPSHOTCHANGEDEVENT_IID)

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISNAPSHOTCHANGEDEVENT \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISNAPSHOTCHANGEDEVENT(_to) \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISNAPSHOTCHANGEDEVENT(_to) \
  /* no methods! */

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ISnapshotChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISNAPSHOTCHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ISnapshotChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_ISnapshotChangedEvent_TO(smth) NS_FORWARD_ISNAPSHOTCHANGEDEVENT (smth)
#define COM_FORWARD_ISnapshotChangedEvent_TO_OBJ(obj) COM_FORWARD_ISnapshotChangedEvent_TO ((obj)->)
#define COM_FORWARD_ISnapshotChangedEvent_TO_BASE(base) COM_FORWARD_ISnapshotChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_ISnapshotChangedEvent;

/* starting interface:    IMousePointerShapeChangedEvent */
#define IMOUSEPOINTERSHAPECHANGEDEVENT_IID_STR "a6dcf6e8-416b-4181-8c4a-45ec95177aef"

#define IMOUSEPOINTERSHAPECHANGEDEVENT_IID \
  {0xa6dcf6e8, 0x416b, 0x4181, \
    { 0x8c, 0x4a, 0x45, 0xec, 0x95, 0x17, 0x7a, 0xef }}

class NS_NO_VTABLE IMousePointerShapeChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMOUSEPOINTERSHAPECHANGEDEVENT_IID)

  /* readonly attribute boolean visible; */
  NS_IMETHOD GetVisible(PRBool *aVisible) = 0;

  /* readonly attribute boolean alpha; */
  NS_IMETHOD GetAlpha(PRBool *aAlpha) = 0;

  /* readonly attribute unsigned long xhot; */
  NS_IMETHOD GetXhot(PRUint32 *aXhot) = 0;

  /* readonly attribute unsigned long yhot; */
  NS_IMETHOD GetYhot(PRUint32 *aYhot) = 0;

  /* readonly attribute unsigned long width; */
  NS_IMETHOD GetWidth(PRUint32 *aWidth) = 0;

  /* readonly attribute unsigned long height; */
  NS_IMETHOD GetHeight(PRUint32 *aHeight) = 0;

  /* void getShape (out unsigned long shapeSize, [array, size_is (shapeSize), retval] out octet shape); */
  NS_IMETHOD GetShape(PRUint32 *shapeSize, PRUint8 **shape) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMOUSEPOINTERSHAPECHANGEDEVENT \
  NS_IMETHOD GetVisible(PRBool *aVisible); \
  NS_IMETHOD GetAlpha(PRBool *aAlpha); \
  NS_IMETHOD GetXhot(PRUint32 *aXhot); \
  NS_IMETHOD GetYhot(PRUint32 *aYhot); \
  NS_IMETHOD GetWidth(PRUint32 *aWidth); \
  NS_IMETHOD GetHeight(PRUint32 *aHeight); \
  NS_IMETHOD GetShape(PRUint32 *shapeSize, PRUint8 **shape); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMOUSEPOINTERSHAPECHANGEDEVENT(_to) \
  NS_IMETHOD GetVisible(PRBool *aVisible) { return _to GetVisible(aVisible); } \
  NS_IMETHOD GetAlpha(PRBool *aAlpha) { return _to GetAlpha(aAlpha); } \
  NS_IMETHOD GetXhot(PRUint32 *aXhot) { return _to GetXhot(aXhot); } \
  NS_IMETHOD GetYhot(PRUint32 *aYhot) { return _to GetYhot(aYhot); } \
  NS_IMETHOD GetWidth(PRUint32 *aWidth) { return _to GetWidth(aWidth); } \
  NS_IMETHOD GetHeight(PRUint32 *aHeight) { return _to GetHeight(aHeight); } \
  NS_IMETHOD GetShape(PRUint32 *shapeSize, PRUint8 **shape) { return _to GetShape(shapeSize, shape); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMOUSEPOINTERSHAPECHANGEDEVENT(_to) \
  NS_IMETHOD GetVisible(PRBool *aVisible) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVisible(aVisible); } \
  NS_IMETHOD GetAlpha(PRBool *aAlpha) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAlpha(aAlpha); } \
  NS_IMETHOD GetXhot(PRUint32 *aXhot) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetXhot(aXhot); } \
  NS_IMETHOD GetYhot(PRUint32 *aYhot) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetYhot(aYhot); } \
  NS_IMETHOD GetWidth(PRUint32 *aWidth) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWidth(aWidth); } \
  NS_IMETHOD GetHeight(PRUint32 *aHeight) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHeight(aHeight); } \
  NS_IMETHOD GetShape(PRUint32 *shapeSize, PRUint8 **shape) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetShape(shapeSize, shape); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IMousePointerShapeChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMOUSEPOINTERSHAPECHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IMousePointerShapeChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute boolean visible; */
NS_IMETHODIMP _MYCLASS_::GetVisible(PRBool *aVisible)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean alpha; */
NS_IMETHODIMP _MYCLASS_::GetAlpha(PRBool *aAlpha)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long xhot; */
NS_IMETHODIMP _MYCLASS_::GetXhot(PRUint32 *aXhot)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long yhot; */
NS_IMETHODIMP _MYCLASS_::GetYhot(PRUint32 *aYhot)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long width; */
NS_IMETHODIMP _MYCLASS_::GetWidth(PRUint32 *aWidth)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long height; */
NS_IMETHODIMP _MYCLASS_::GetHeight(PRUint32 *aHeight)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getShape (out unsigned long shapeSize, [array, size_is (shapeSize), retval] out octet shape); */
NS_IMETHODIMP _MYCLASS_::GetShape(PRUint32 *shapeSize, PRUint8 **shape)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Visible_TO(smth) NS_IMETHOD GetVisible (PRBool * aVisible) { return smth GetVisible (aVisible); }
#define COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Visible_TO_OBJ(obj) COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Visible_TO ((obj)->)
#define COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Visible_TO_BASE(base) COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Visible_TO (base::)
#define COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Alpha_TO(smth) NS_IMETHOD GetAlpha (PRBool * aAlpha) { return smth GetAlpha (aAlpha); }
#define COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Alpha_TO_OBJ(obj) COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Alpha_TO ((obj)->)
#define COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Alpha_TO_BASE(base) COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Alpha_TO (base::)
#define COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Xhot_TO(smth) NS_IMETHOD GetXhot (PRUint32 * aXhot) { return smth GetXhot (aXhot); }
#define COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Xhot_TO_OBJ(obj) COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Xhot_TO ((obj)->)
#define COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Xhot_TO_BASE(base) COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Xhot_TO (base::)
#define COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Yhot_TO(smth) NS_IMETHOD GetYhot (PRUint32 * aYhot) { return smth GetYhot (aYhot); }
#define COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Yhot_TO_OBJ(obj) COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Yhot_TO ((obj)->)
#define COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Yhot_TO_BASE(base) COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Yhot_TO (base::)
#define COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Width_TO(smth) NS_IMETHOD GetWidth (PRUint32 * aWidth) { return smth GetWidth (aWidth); }
#define COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Width_TO_OBJ(obj) COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Width_TO ((obj)->)
#define COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Width_TO_BASE(base) COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Width_TO (base::)
#define COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Height_TO(smth) NS_IMETHOD GetHeight (PRUint32 * aHeight) { return smth GetHeight (aHeight); }
#define COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Height_TO_OBJ(obj) COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Height_TO ((obj)->)
#define COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Height_TO_BASE(base) COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Height_TO (base::)
#define COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Shape_TO(smth) NS_IMETHOD GetShape (PRUint32 * aShapeSize, PRUint8 * * aShape) { return smth GetShape (aShapeSize, aShape); }
#define COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Shape_TO_OBJ(obj) COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Shape_TO ((obj)->)
#define COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Shape_TO_BASE(base) COM_FORWARD_IMousePointerShapeChangedEvent_GETTER_Shape_TO (base::)
#define COM_FORWARD_IMousePointerShapeChangedEvent_TO(smth) NS_FORWARD_IMOUSEPOINTERSHAPECHANGEDEVENT (smth)
#define COM_FORWARD_IMousePointerShapeChangedEvent_TO_OBJ(obj) COM_FORWARD_IMousePointerShapeChangedEvent_TO ((obj)->)
#define COM_FORWARD_IMousePointerShapeChangedEvent_TO_BASE(base) COM_FORWARD_IMousePointerShapeChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IMousePointerShapeChangedEvent;

/* starting interface:    IMouseCapabilityChangedEvent */
#define IMOUSECAPABILITYCHANGEDEVENT_IID_STR "70e7779a-e64a-4908-804e-371cad23a756"

#define IMOUSECAPABILITYCHANGEDEVENT_IID \
  {0x70e7779a, 0xe64a, 0x4908, \
    { 0x80, 0x4e, 0x37, 0x1c, 0xad, 0x23, 0xa7, 0x56 }}

class NS_NO_VTABLE IMouseCapabilityChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMOUSECAPABILITYCHANGEDEVENT_IID)

  /* readonly attribute boolean supportsAbsolute; */
  NS_IMETHOD GetSupportsAbsolute(PRBool *aSupportsAbsolute) = 0;

  /* readonly attribute boolean supportsRelative; */
  NS_IMETHOD GetSupportsRelative(PRBool *aSupportsRelative) = 0;

  /* readonly attribute boolean supportsMultiTouch; */
  NS_IMETHOD GetSupportsMultiTouch(PRBool *aSupportsMultiTouch) = 0;

  /* readonly attribute boolean needsHostCursor; */
  NS_IMETHOD GetNeedsHostCursor(PRBool *aNeedsHostCursor) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMOUSECAPABILITYCHANGEDEVENT \
  NS_IMETHOD GetSupportsAbsolute(PRBool *aSupportsAbsolute); \
  NS_IMETHOD GetSupportsRelative(PRBool *aSupportsRelative); \
  NS_IMETHOD GetSupportsMultiTouch(PRBool *aSupportsMultiTouch); \
  NS_IMETHOD GetNeedsHostCursor(PRBool *aNeedsHostCursor); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMOUSECAPABILITYCHANGEDEVENT(_to) \
  NS_IMETHOD GetSupportsAbsolute(PRBool *aSupportsAbsolute) { return _to GetSupportsAbsolute(aSupportsAbsolute); } \
  NS_IMETHOD GetSupportsRelative(PRBool *aSupportsRelative) { return _to GetSupportsRelative(aSupportsRelative); } \
  NS_IMETHOD GetSupportsMultiTouch(PRBool *aSupportsMultiTouch) { return _to GetSupportsMultiTouch(aSupportsMultiTouch); } \
  NS_IMETHOD GetNeedsHostCursor(PRBool *aNeedsHostCursor) { return _to GetNeedsHostCursor(aNeedsHostCursor); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMOUSECAPABILITYCHANGEDEVENT(_to) \
  NS_IMETHOD GetSupportsAbsolute(PRBool *aSupportsAbsolute) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSupportsAbsolute(aSupportsAbsolute); } \
  NS_IMETHOD GetSupportsRelative(PRBool *aSupportsRelative) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSupportsRelative(aSupportsRelative); } \
  NS_IMETHOD GetSupportsMultiTouch(PRBool *aSupportsMultiTouch) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSupportsMultiTouch(aSupportsMultiTouch); } \
  NS_IMETHOD GetNeedsHostCursor(PRBool *aNeedsHostCursor) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNeedsHostCursor(aNeedsHostCursor); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IMouseCapabilityChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMOUSECAPABILITYCHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IMouseCapabilityChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute boolean supportsAbsolute; */
NS_IMETHODIMP _MYCLASS_::GetSupportsAbsolute(PRBool *aSupportsAbsolute)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean supportsRelative; */
NS_IMETHODIMP _MYCLASS_::GetSupportsRelative(PRBool *aSupportsRelative)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean supportsMultiTouch; */
NS_IMETHODIMP _MYCLASS_::GetSupportsMultiTouch(PRBool *aSupportsMultiTouch)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean needsHostCursor; */
NS_IMETHODIMP _MYCLASS_::GetNeedsHostCursor(PRBool *aNeedsHostCursor)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IMouseCapabilityChangedEvent_GETTER_SupportsAbsolute_TO(smth) NS_IMETHOD GetSupportsAbsolute (PRBool * aSupportsAbsolute) { return smth GetSupportsAbsolute (aSupportsAbsolute); }
#define COM_FORWARD_IMouseCapabilityChangedEvent_GETTER_SupportsAbsolute_TO_OBJ(obj) COM_FORWARD_IMouseCapabilityChangedEvent_GETTER_SupportsAbsolute_TO ((obj)->)
#define COM_FORWARD_IMouseCapabilityChangedEvent_GETTER_SupportsAbsolute_TO_BASE(base) COM_FORWARD_IMouseCapabilityChangedEvent_GETTER_SupportsAbsolute_TO (base::)
#define COM_FORWARD_IMouseCapabilityChangedEvent_GETTER_SupportsRelative_TO(smth) NS_IMETHOD GetSupportsRelative (PRBool * aSupportsRelative) { return smth GetSupportsRelative (aSupportsRelative); }
#define COM_FORWARD_IMouseCapabilityChangedEvent_GETTER_SupportsRelative_TO_OBJ(obj) COM_FORWARD_IMouseCapabilityChangedEvent_GETTER_SupportsRelative_TO ((obj)->)
#define COM_FORWARD_IMouseCapabilityChangedEvent_GETTER_SupportsRelative_TO_BASE(base) COM_FORWARD_IMouseCapabilityChangedEvent_GETTER_SupportsRelative_TO (base::)
#define COM_FORWARD_IMouseCapabilityChangedEvent_GETTER_SupportsMultiTouch_TO(smth) NS_IMETHOD GetSupportsMultiTouch (PRBool * aSupportsMultiTouch) { return smth GetSupportsMultiTouch (aSupportsMultiTouch); }
#define COM_FORWARD_IMouseCapabilityChangedEvent_GETTER_SupportsMultiTouch_TO_OBJ(obj) COM_FORWARD_IMouseCapabilityChangedEvent_GETTER_SupportsMultiTouch_TO ((obj)->)
#define COM_FORWARD_IMouseCapabilityChangedEvent_GETTER_SupportsMultiTouch_TO_BASE(base) COM_FORWARD_IMouseCapabilityChangedEvent_GETTER_SupportsMultiTouch_TO (base::)
#define COM_FORWARD_IMouseCapabilityChangedEvent_GETTER_NeedsHostCursor_TO(smth) NS_IMETHOD GetNeedsHostCursor (PRBool * aNeedsHostCursor) { return smth GetNeedsHostCursor (aNeedsHostCursor); }
#define COM_FORWARD_IMouseCapabilityChangedEvent_GETTER_NeedsHostCursor_TO_OBJ(obj) COM_FORWARD_IMouseCapabilityChangedEvent_GETTER_NeedsHostCursor_TO ((obj)->)
#define COM_FORWARD_IMouseCapabilityChangedEvent_GETTER_NeedsHostCursor_TO_BASE(base) COM_FORWARD_IMouseCapabilityChangedEvent_GETTER_NeedsHostCursor_TO (base::)
#define COM_FORWARD_IMouseCapabilityChangedEvent_TO(smth) NS_FORWARD_IMOUSECAPABILITYCHANGEDEVENT (smth)
#define COM_FORWARD_IMouseCapabilityChangedEvent_TO_OBJ(obj) COM_FORWARD_IMouseCapabilityChangedEvent_TO ((obj)->)
#define COM_FORWARD_IMouseCapabilityChangedEvent_TO_BASE(base) COM_FORWARD_IMouseCapabilityChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IMouseCapabilityChangedEvent;

/* starting interface:    IKeyboardLedsChangedEvent */
#define IKEYBOARDLEDSCHANGEDEVENT_IID_STR "6ddef35e-4737-457b-99fc-bc52c851a44f"

#define IKEYBOARDLEDSCHANGEDEVENT_IID \
  {0x6ddef35e, 0x4737, 0x457b, \
    { 0x99, 0xfc, 0xbc, 0x52, 0xc8, 0x51, 0xa4, 0x4f }}

class NS_NO_VTABLE IKeyboardLedsChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IKEYBOARDLEDSCHANGEDEVENT_IID)

  /* readonly attribute boolean numLock; */
  NS_IMETHOD GetNumLock(PRBool *aNumLock) = 0;

  /* readonly attribute boolean capsLock; */
  NS_IMETHOD GetCapsLock(PRBool *aCapsLock) = 0;

  /* readonly attribute boolean scrollLock; */
  NS_IMETHOD GetScrollLock(PRBool *aScrollLock) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IKEYBOARDLEDSCHANGEDEVENT \
  NS_IMETHOD GetNumLock(PRBool *aNumLock); \
  NS_IMETHOD GetCapsLock(PRBool *aCapsLock); \
  NS_IMETHOD GetScrollLock(PRBool *aScrollLock); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IKEYBOARDLEDSCHANGEDEVENT(_to) \
  NS_IMETHOD GetNumLock(PRBool *aNumLock) { return _to GetNumLock(aNumLock); } \
  NS_IMETHOD GetCapsLock(PRBool *aCapsLock) { return _to GetCapsLock(aCapsLock); } \
  NS_IMETHOD GetScrollLock(PRBool *aScrollLock) { return _to GetScrollLock(aScrollLock); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IKEYBOARDLEDSCHANGEDEVENT(_to) \
  NS_IMETHOD GetNumLock(PRBool *aNumLock) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNumLock(aNumLock); } \
  NS_IMETHOD GetCapsLock(PRBool *aCapsLock) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCapsLock(aCapsLock); } \
  NS_IMETHOD GetScrollLock(PRBool *aScrollLock) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetScrollLock(aScrollLock); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IKeyboardLedsChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IKEYBOARDLEDSCHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IKeyboardLedsChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute boolean numLock; */
NS_IMETHODIMP _MYCLASS_::GetNumLock(PRBool *aNumLock)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean capsLock; */
NS_IMETHODIMP _MYCLASS_::GetCapsLock(PRBool *aCapsLock)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean scrollLock; */
NS_IMETHODIMP _MYCLASS_::GetScrollLock(PRBool *aScrollLock)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IKeyboardLedsChangedEvent_GETTER_NumLock_TO(smth) NS_IMETHOD GetNumLock (PRBool * aNumLock) { return smth GetNumLock (aNumLock); }
#define COM_FORWARD_IKeyboardLedsChangedEvent_GETTER_NumLock_TO_OBJ(obj) COM_FORWARD_IKeyboardLedsChangedEvent_GETTER_NumLock_TO ((obj)->)
#define COM_FORWARD_IKeyboardLedsChangedEvent_GETTER_NumLock_TO_BASE(base) COM_FORWARD_IKeyboardLedsChangedEvent_GETTER_NumLock_TO (base::)
#define COM_FORWARD_IKeyboardLedsChangedEvent_GETTER_CapsLock_TO(smth) NS_IMETHOD GetCapsLock (PRBool * aCapsLock) { return smth GetCapsLock (aCapsLock); }
#define COM_FORWARD_IKeyboardLedsChangedEvent_GETTER_CapsLock_TO_OBJ(obj) COM_FORWARD_IKeyboardLedsChangedEvent_GETTER_CapsLock_TO ((obj)->)
#define COM_FORWARD_IKeyboardLedsChangedEvent_GETTER_CapsLock_TO_BASE(base) COM_FORWARD_IKeyboardLedsChangedEvent_GETTER_CapsLock_TO (base::)
#define COM_FORWARD_IKeyboardLedsChangedEvent_GETTER_ScrollLock_TO(smth) NS_IMETHOD GetScrollLock (PRBool * aScrollLock) { return smth GetScrollLock (aScrollLock); }
#define COM_FORWARD_IKeyboardLedsChangedEvent_GETTER_ScrollLock_TO_OBJ(obj) COM_FORWARD_IKeyboardLedsChangedEvent_GETTER_ScrollLock_TO ((obj)->)
#define COM_FORWARD_IKeyboardLedsChangedEvent_GETTER_ScrollLock_TO_BASE(base) COM_FORWARD_IKeyboardLedsChangedEvent_GETTER_ScrollLock_TO (base::)
#define COM_FORWARD_IKeyboardLedsChangedEvent_TO(smth) NS_FORWARD_IKEYBOARDLEDSCHANGEDEVENT (smth)
#define COM_FORWARD_IKeyboardLedsChangedEvent_TO_OBJ(obj) COM_FORWARD_IKeyboardLedsChangedEvent_TO ((obj)->)
#define COM_FORWARD_IKeyboardLedsChangedEvent_TO_BASE(base) COM_FORWARD_IKeyboardLedsChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IKeyboardLedsChangedEvent;

/* starting interface:    IStateChangedEvent */
#define ISTATECHANGEDEVENT_IID_STR "4376693c-cf37-453b-9289-3b0f521caf27"

#define ISTATECHANGEDEVENT_IID \
  {0x4376693c, 0xcf37, 0x453b, \
    { 0x92, 0x89, 0x3b, 0x0f, 0x52, 0x1c, 0xaf, 0x27 }}

class NS_NO_VTABLE IStateChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISTATECHANGEDEVENT_IID)

  /* readonly attribute PRUint32 state; */
  NS_IMETHOD GetState(PRUint32 *aState) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISTATECHANGEDEVENT \
  NS_IMETHOD GetState(PRUint32 *aState); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISTATECHANGEDEVENT(_to) \
  NS_IMETHOD GetState(PRUint32 *aState) { return _to GetState(aState); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISTATECHANGEDEVENT(_to) \
  NS_IMETHOD GetState(PRUint32 *aState) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetState(aState); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IStateChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISTATECHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IStateChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute PRUint32 state; */
NS_IMETHODIMP _MYCLASS_::GetState(PRUint32 *aState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IStateChangedEvent_GETTER_State_TO(smth) NS_IMETHOD GetState (PRUint32 * aState) { return smth GetState (aState); }
#define COM_FORWARD_IStateChangedEvent_GETTER_State_TO_OBJ(obj) COM_FORWARD_IStateChangedEvent_GETTER_State_TO ((obj)->)
#define COM_FORWARD_IStateChangedEvent_GETTER_State_TO_BASE(base) COM_FORWARD_IStateChangedEvent_GETTER_State_TO (base::)
#define COM_FORWARD_IStateChangedEvent_TO(smth) NS_FORWARD_ISTATECHANGEDEVENT (smth)
#define COM_FORWARD_IStateChangedEvent_TO_OBJ(obj) COM_FORWARD_IStateChangedEvent_TO ((obj)->)
#define COM_FORWARD_IStateChangedEvent_TO_BASE(base) COM_FORWARD_IStateChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IStateChangedEvent;

/* starting interface:    IAdditionsStateChangedEvent */
#define IADDITIONSSTATECHANGEDEVENT_IID_STR "d70f7915-da7c-44c8-a7ac-9f173490446a"

#define IADDITIONSSTATECHANGEDEVENT_IID \
  {0xd70f7915, 0xda7c, 0x44c8, \
    { 0xa7, 0xac, 0x9f, 0x17, 0x34, 0x90, 0x44, 0x6a }}

class NS_NO_VTABLE IAdditionsStateChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IADDITIONSSTATECHANGEDEVENT_IID)

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IADDITIONSSTATECHANGEDEVENT \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IADDITIONSSTATECHANGEDEVENT(_to) \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IADDITIONSSTATECHANGEDEVENT(_to) \
  /* no methods! */

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IAdditionsStateChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IADDITIONSSTATECHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IAdditionsStateChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IAdditionsStateChangedEvent_TO(smth) NS_FORWARD_IADDITIONSSTATECHANGEDEVENT (smth)
#define COM_FORWARD_IAdditionsStateChangedEvent_TO_OBJ(obj) COM_FORWARD_IAdditionsStateChangedEvent_TO ((obj)->)
#define COM_FORWARD_IAdditionsStateChangedEvent_TO_BASE(base) COM_FORWARD_IAdditionsStateChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IAdditionsStateChangedEvent;

/* starting interface:    INetworkAdapterChangedEvent */
#define INETWORKADAPTERCHANGEDEVENT_IID_STR "08889892-1ec6-4883-801d-77f56cfd0103"

#define INETWORKADAPTERCHANGEDEVENT_IID \
  {0x08889892, 0x1ec6, 0x4883, \
    { 0x80, 0x1d, 0x77, 0xf5, 0x6c, 0xfd, 0x01, 0x03 }}

class NS_NO_VTABLE INetworkAdapterChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(INETWORKADAPTERCHANGEDEVENT_IID)

  /* readonly attribute INetworkAdapter networkAdapter; */
  NS_IMETHOD GetNetworkAdapter(INetworkAdapter * *aNetworkAdapter) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_INETWORKADAPTERCHANGEDEVENT \
  NS_IMETHOD GetNetworkAdapter(INetworkAdapter * *aNetworkAdapter); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_INETWORKADAPTERCHANGEDEVENT(_to) \
  NS_IMETHOD GetNetworkAdapter(INetworkAdapter * *aNetworkAdapter) { return _to GetNetworkAdapter(aNetworkAdapter); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_INETWORKADAPTERCHANGEDEVENT(_to) \
  NS_IMETHOD GetNetworkAdapter(INetworkAdapter * *aNetworkAdapter) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworkAdapter(aNetworkAdapter); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public INetworkAdapterChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_INETWORKADAPTERCHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, INetworkAdapterChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute INetworkAdapter networkAdapter; */
NS_IMETHODIMP _MYCLASS_::GetNetworkAdapter(INetworkAdapter * *aNetworkAdapter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_INetworkAdapterChangedEvent_GETTER_NetworkAdapter_TO(smth) NS_IMETHOD GetNetworkAdapter (INetworkAdapter * * aNetworkAdapter) { return smth GetNetworkAdapter (aNetworkAdapter); }
#define COM_FORWARD_INetworkAdapterChangedEvent_GETTER_NetworkAdapter_TO_OBJ(obj) COM_FORWARD_INetworkAdapterChangedEvent_GETTER_NetworkAdapter_TO ((obj)->)
#define COM_FORWARD_INetworkAdapterChangedEvent_GETTER_NetworkAdapter_TO_BASE(base) COM_FORWARD_INetworkAdapterChangedEvent_GETTER_NetworkAdapter_TO (base::)
#define COM_FORWARD_INetworkAdapterChangedEvent_TO(smth) NS_FORWARD_INETWORKADAPTERCHANGEDEVENT (smth)
#define COM_FORWARD_INetworkAdapterChangedEvent_TO_OBJ(obj) COM_FORWARD_INetworkAdapterChangedEvent_TO ((obj)->)
#define COM_FORWARD_INetworkAdapterChangedEvent_TO_BASE(base) COM_FORWARD_INetworkAdapterChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_INetworkAdapterChangedEvent;

/* starting interface:    ISerialPortChangedEvent */
#define ISERIALPORTCHANGEDEVENT_IID_STR "3ba329dc-659c-488b-835c-4eca7ae71c6c"

#define ISERIALPORTCHANGEDEVENT_IID \
  {0x3ba329dc, 0x659c, 0x488b, \
    { 0x83, 0x5c, 0x4e, 0xca, 0x7a, 0xe7, 0x1c, 0x6c }}

class NS_NO_VTABLE ISerialPortChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISERIALPORTCHANGEDEVENT_IID)

  /* readonly attribute ISerialPort serialPort; */
  NS_IMETHOD GetSerialPort(ISerialPort * *aSerialPort) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISERIALPORTCHANGEDEVENT \
  NS_IMETHOD GetSerialPort(ISerialPort * *aSerialPort); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISERIALPORTCHANGEDEVENT(_to) \
  NS_IMETHOD GetSerialPort(ISerialPort * *aSerialPort) { return _to GetSerialPort(aSerialPort); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISERIALPORTCHANGEDEVENT(_to) \
  NS_IMETHOD GetSerialPort(ISerialPort * *aSerialPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSerialPort(aSerialPort); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ISerialPortChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISERIALPORTCHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ISerialPortChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute ISerialPort serialPort; */
NS_IMETHODIMP _MYCLASS_::GetSerialPort(ISerialPort * *aSerialPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_ISerialPortChangedEvent_GETTER_SerialPort_TO(smth) NS_IMETHOD GetSerialPort (ISerialPort * * aSerialPort) { return smth GetSerialPort (aSerialPort); }
#define COM_FORWARD_ISerialPortChangedEvent_GETTER_SerialPort_TO_OBJ(obj) COM_FORWARD_ISerialPortChangedEvent_GETTER_SerialPort_TO ((obj)->)
#define COM_FORWARD_ISerialPortChangedEvent_GETTER_SerialPort_TO_BASE(base) COM_FORWARD_ISerialPortChangedEvent_GETTER_SerialPort_TO (base::)
#define COM_FORWARD_ISerialPortChangedEvent_TO(smth) NS_FORWARD_ISERIALPORTCHANGEDEVENT (smth)
#define COM_FORWARD_ISerialPortChangedEvent_TO_OBJ(obj) COM_FORWARD_ISerialPortChangedEvent_TO ((obj)->)
#define COM_FORWARD_ISerialPortChangedEvent_TO_BASE(base) COM_FORWARD_ISerialPortChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_ISerialPortChangedEvent;

/* starting interface:    IParallelPortChangedEvent */
#define IPARALLELPORTCHANGEDEVENT_IID_STR "813c99fc-9849-4f47-813e-24a75dc85615"

#define IPARALLELPORTCHANGEDEVENT_IID \
  {0x813c99fc, 0x9849, 0x4f47, \
    { 0x81, 0x3e, 0x24, 0xa7, 0x5d, 0xc8, 0x56, 0x15 }}

class NS_NO_VTABLE IParallelPortChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IPARALLELPORTCHANGEDEVENT_IID)

  /* readonly attribute IParallelPort parallelPort; */
  NS_IMETHOD GetParallelPort(IParallelPort * *aParallelPort) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IPARALLELPORTCHANGEDEVENT \
  NS_IMETHOD GetParallelPort(IParallelPort * *aParallelPort); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IPARALLELPORTCHANGEDEVENT(_to) \
  NS_IMETHOD GetParallelPort(IParallelPort * *aParallelPort) { return _to GetParallelPort(aParallelPort); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IPARALLELPORTCHANGEDEVENT(_to) \
  NS_IMETHOD GetParallelPort(IParallelPort * *aParallelPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParallelPort(aParallelPort); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IParallelPortChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IPARALLELPORTCHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IParallelPortChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute IParallelPort parallelPort; */
NS_IMETHODIMP _MYCLASS_::GetParallelPort(IParallelPort * *aParallelPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IParallelPortChangedEvent_GETTER_ParallelPort_TO(smth) NS_IMETHOD GetParallelPort (IParallelPort * * aParallelPort) { return smth GetParallelPort (aParallelPort); }
#define COM_FORWARD_IParallelPortChangedEvent_GETTER_ParallelPort_TO_OBJ(obj) COM_FORWARD_IParallelPortChangedEvent_GETTER_ParallelPort_TO ((obj)->)
#define COM_FORWARD_IParallelPortChangedEvent_GETTER_ParallelPort_TO_BASE(base) COM_FORWARD_IParallelPortChangedEvent_GETTER_ParallelPort_TO (base::)
#define COM_FORWARD_IParallelPortChangedEvent_TO(smth) NS_FORWARD_IPARALLELPORTCHANGEDEVENT (smth)
#define COM_FORWARD_IParallelPortChangedEvent_TO_OBJ(obj) COM_FORWARD_IParallelPortChangedEvent_TO ((obj)->)
#define COM_FORWARD_IParallelPortChangedEvent_TO_BASE(base) COM_FORWARD_IParallelPortChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IParallelPortChangedEvent;

/* starting interface:    IStorageControllerChangedEvent */
#define ISTORAGECONTROLLERCHANGEDEVENT_IID_STR "715212bf-da59-426e-8230-3831faa52c56"

#define ISTORAGECONTROLLERCHANGEDEVENT_IID \
  {0x715212bf, 0xda59, 0x426e, \
    { 0x82, 0x30, 0x38, 0x31, 0xfa, 0xa5, 0x2c, 0x56 }}

class NS_NO_VTABLE IStorageControllerChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISTORAGECONTROLLERCHANGEDEVENT_IID)

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISTORAGECONTROLLERCHANGEDEVENT \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISTORAGECONTROLLERCHANGEDEVENT(_to) \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISTORAGECONTROLLERCHANGEDEVENT(_to) \
  /* no methods! */

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IStorageControllerChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISTORAGECONTROLLERCHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IStorageControllerChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IStorageControllerChangedEvent_TO(smth) NS_FORWARD_ISTORAGECONTROLLERCHANGEDEVENT (smth)
#define COM_FORWARD_IStorageControllerChangedEvent_TO_OBJ(obj) COM_FORWARD_IStorageControllerChangedEvent_TO ((obj)->)
#define COM_FORWARD_IStorageControllerChangedEvent_TO_BASE(base) COM_FORWARD_IStorageControllerChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IStorageControllerChangedEvent;

/* starting interface:    IMediumChangedEvent */
#define IMEDIUMCHANGEDEVENT_IID_STR "0fe2da40-5637-472a-9736-72019eabd7de"

#define IMEDIUMCHANGEDEVENT_IID \
  {0x0fe2da40, 0x5637, 0x472a, \
    { 0x97, 0x36, 0x72, 0x01, 0x9e, 0xab, 0xd7, 0xde }}

class NS_NO_VTABLE IMediumChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMEDIUMCHANGEDEVENT_IID)

  /* readonly attribute IMediumAttachment mediumAttachment; */
  NS_IMETHOD GetMediumAttachment(IMediumAttachment * *aMediumAttachment) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMEDIUMCHANGEDEVENT \
  NS_IMETHOD GetMediumAttachment(IMediumAttachment * *aMediumAttachment); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMEDIUMCHANGEDEVENT(_to) \
  NS_IMETHOD GetMediumAttachment(IMediumAttachment * *aMediumAttachment) { return _to GetMediumAttachment(aMediumAttachment); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMEDIUMCHANGEDEVENT(_to) \
  NS_IMETHOD GetMediumAttachment(IMediumAttachment * *aMediumAttachment) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMediumAttachment(aMediumAttachment); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IMediumChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMEDIUMCHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IMediumChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute IMediumAttachment mediumAttachment; */
NS_IMETHODIMP _MYCLASS_::GetMediumAttachment(IMediumAttachment * *aMediumAttachment)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IMediumChangedEvent_GETTER_MediumAttachment_TO(smth) NS_IMETHOD GetMediumAttachment (IMediumAttachment * * aMediumAttachment) { return smth GetMediumAttachment (aMediumAttachment); }
#define COM_FORWARD_IMediumChangedEvent_GETTER_MediumAttachment_TO_OBJ(obj) COM_FORWARD_IMediumChangedEvent_GETTER_MediumAttachment_TO ((obj)->)
#define COM_FORWARD_IMediumChangedEvent_GETTER_MediumAttachment_TO_BASE(base) COM_FORWARD_IMediumChangedEvent_GETTER_MediumAttachment_TO (base::)
#define COM_FORWARD_IMediumChangedEvent_TO(smth) NS_FORWARD_IMEDIUMCHANGEDEVENT (smth)
#define COM_FORWARD_IMediumChangedEvent_TO_OBJ(obj) COM_FORWARD_IMediumChangedEvent_TO ((obj)->)
#define COM_FORWARD_IMediumChangedEvent_TO_BASE(base) COM_FORWARD_IMediumChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IMediumChangedEvent;

/* starting interface:    IClipboardModeChangedEvent */
#define ICLIPBOARDMODECHANGEDEVENT_IID_STR "cac21692-7997-4595-a731-3a509db604e5"

#define ICLIPBOARDMODECHANGEDEVENT_IID \
  {0xcac21692, 0x7997, 0x4595, \
    { 0xa7, 0x31, 0x3a, 0x50, 0x9d, 0xb6, 0x04, 0xe5 }}

class NS_NO_VTABLE IClipboardModeChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ICLIPBOARDMODECHANGEDEVENT_IID)

  /* readonly attribute PRUint32 clipboardMode; */
  NS_IMETHOD GetClipboardMode(PRUint32 *aClipboardMode) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ICLIPBOARDMODECHANGEDEVENT \
  NS_IMETHOD GetClipboardMode(PRUint32 *aClipboardMode); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ICLIPBOARDMODECHANGEDEVENT(_to) \
  NS_IMETHOD GetClipboardMode(PRUint32 *aClipboardMode) { return _to GetClipboardMode(aClipboardMode); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ICLIPBOARDMODECHANGEDEVENT(_to) \
  NS_IMETHOD GetClipboardMode(PRUint32 *aClipboardMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetClipboardMode(aClipboardMode); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IClipboardModeChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ICLIPBOARDMODECHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IClipboardModeChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute PRUint32 clipboardMode; */
NS_IMETHODIMP _MYCLASS_::GetClipboardMode(PRUint32 *aClipboardMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IClipboardModeChangedEvent_GETTER_ClipboardMode_TO(smth) NS_IMETHOD GetClipboardMode (PRUint32 * aClipboardMode) { return smth GetClipboardMode (aClipboardMode); }
#define COM_FORWARD_IClipboardModeChangedEvent_GETTER_ClipboardMode_TO_OBJ(obj) COM_FORWARD_IClipboardModeChangedEvent_GETTER_ClipboardMode_TO ((obj)->)
#define COM_FORWARD_IClipboardModeChangedEvent_GETTER_ClipboardMode_TO_BASE(base) COM_FORWARD_IClipboardModeChangedEvent_GETTER_ClipboardMode_TO (base::)
#define COM_FORWARD_IClipboardModeChangedEvent_TO(smth) NS_FORWARD_ICLIPBOARDMODECHANGEDEVENT (smth)
#define COM_FORWARD_IClipboardModeChangedEvent_TO_OBJ(obj) COM_FORWARD_IClipboardModeChangedEvent_TO ((obj)->)
#define COM_FORWARD_IClipboardModeChangedEvent_TO_BASE(base) COM_FORWARD_IClipboardModeChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IClipboardModeChangedEvent;

/* starting interface:    IDragAndDropModeChangedEvent */
#define IDRAGANDDROPMODECHANGEDEVENT_IID_STR "e90b8850-ac8e-4dff-8059-4100ae2c3c3d"

#define IDRAGANDDROPMODECHANGEDEVENT_IID \
  {0xe90b8850, 0xac8e, 0x4dff, \
    { 0x80, 0x59, 0x41, 0x00, 0xae, 0x2c, 0x3c, 0x3d }}

class NS_NO_VTABLE IDragAndDropModeChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IDRAGANDDROPMODECHANGEDEVENT_IID)

  /* readonly attribute PRUint32 dragAndDropMode; */
  NS_IMETHOD GetDragAndDropMode(PRUint32 *aDragAndDropMode) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IDRAGANDDROPMODECHANGEDEVENT \
  NS_IMETHOD GetDragAndDropMode(PRUint32 *aDragAndDropMode); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IDRAGANDDROPMODECHANGEDEVENT(_to) \
  NS_IMETHOD GetDragAndDropMode(PRUint32 *aDragAndDropMode) { return _to GetDragAndDropMode(aDragAndDropMode); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IDRAGANDDROPMODECHANGEDEVENT(_to) \
  NS_IMETHOD GetDragAndDropMode(PRUint32 *aDragAndDropMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDragAndDropMode(aDragAndDropMode); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IDragAndDropModeChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IDRAGANDDROPMODECHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IDragAndDropModeChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute PRUint32 dragAndDropMode; */
NS_IMETHODIMP _MYCLASS_::GetDragAndDropMode(PRUint32 *aDragAndDropMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IDragAndDropModeChangedEvent_GETTER_DragAndDropMode_TO(smth) NS_IMETHOD GetDragAndDropMode (PRUint32 * aDragAndDropMode) { return smth GetDragAndDropMode (aDragAndDropMode); }
#define COM_FORWARD_IDragAndDropModeChangedEvent_GETTER_DragAndDropMode_TO_OBJ(obj) COM_FORWARD_IDragAndDropModeChangedEvent_GETTER_DragAndDropMode_TO ((obj)->)
#define COM_FORWARD_IDragAndDropModeChangedEvent_GETTER_DragAndDropMode_TO_BASE(base) COM_FORWARD_IDragAndDropModeChangedEvent_GETTER_DragAndDropMode_TO (base::)
#define COM_FORWARD_IDragAndDropModeChangedEvent_TO(smth) NS_FORWARD_IDRAGANDDROPMODECHANGEDEVENT (smth)
#define COM_FORWARD_IDragAndDropModeChangedEvent_TO_OBJ(obj) COM_FORWARD_IDragAndDropModeChangedEvent_TO ((obj)->)
#define COM_FORWARD_IDragAndDropModeChangedEvent_TO_BASE(base) COM_FORWARD_IDragAndDropModeChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IDragAndDropModeChangedEvent;

/* starting interface:    ICPUChangedEvent */
#define ICPUCHANGEDEVENT_IID_STR "4da2dec7-71b2-4817-9a64-4ed12c17388e"

#define ICPUCHANGEDEVENT_IID \
  {0x4da2dec7, 0x71b2, 0x4817, \
    { 0x9a, 0x64, 0x4e, 0xd1, 0x2c, 0x17, 0x38, 0x8e }}

class NS_NO_VTABLE ICPUChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ICPUCHANGEDEVENT_IID)

  /* readonly attribute unsigned long CPU; */
  NS_IMETHOD GetCPU(PRUint32 *aCPU) = 0;

  /* readonly attribute boolean add; */
  NS_IMETHOD GetAdd(PRBool *aAdd) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ICPUCHANGEDEVENT \
  NS_IMETHOD GetCPU(PRUint32 *aCPU); \
  NS_IMETHOD GetAdd(PRBool *aAdd); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ICPUCHANGEDEVENT(_to) \
  NS_IMETHOD GetCPU(PRUint32 *aCPU) { return _to GetCPU(aCPU); } \
  NS_IMETHOD GetAdd(PRBool *aAdd) { return _to GetAdd(aAdd); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ICPUCHANGEDEVENT(_to) \
  NS_IMETHOD GetCPU(PRUint32 *aCPU) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCPU(aCPU); } \
  NS_IMETHOD GetAdd(PRBool *aAdd) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAdd(aAdd); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ICPUChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ICPUCHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ICPUChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute unsigned long CPU; */
NS_IMETHODIMP _MYCLASS_::GetCPU(PRUint32 *aCPU)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean add; */
NS_IMETHODIMP _MYCLASS_::GetAdd(PRBool *aAdd)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_ICPUChangedEvent_GETTER_CPU_TO(smth) NS_IMETHOD GetCPU (PRUint32 * aCPU) { return smth GetCPU (aCPU); }
#define COM_FORWARD_ICPUChangedEvent_GETTER_CPU_TO_OBJ(obj) COM_FORWARD_ICPUChangedEvent_GETTER_CPU_TO ((obj)->)
#define COM_FORWARD_ICPUChangedEvent_GETTER_CPU_TO_BASE(base) COM_FORWARD_ICPUChangedEvent_GETTER_CPU_TO (base::)
#define COM_FORWARD_ICPUChangedEvent_GETTER_Add_TO(smth) NS_IMETHOD GetAdd (PRBool * aAdd) { return smth GetAdd (aAdd); }
#define COM_FORWARD_ICPUChangedEvent_GETTER_Add_TO_OBJ(obj) COM_FORWARD_ICPUChangedEvent_GETTER_Add_TO ((obj)->)
#define COM_FORWARD_ICPUChangedEvent_GETTER_Add_TO_BASE(base) COM_FORWARD_ICPUChangedEvent_GETTER_Add_TO (base::)
#define COM_FORWARD_ICPUChangedEvent_TO(smth) NS_FORWARD_ICPUCHANGEDEVENT (smth)
#define COM_FORWARD_ICPUChangedEvent_TO_OBJ(obj) COM_FORWARD_ICPUChangedEvent_TO ((obj)->)
#define COM_FORWARD_ICPUChangedEvent_TO_BASE(base) COM_FORWARD_ICPUChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_ICPUChangedEvent;

/* starting interface:    ICPUExecutionCapChangedEvent */
#define ICPUEXECUTIONCAPCHANGEDEVENT_IID_STR "dfa7e4f5-b4a4-44ce-85a8-127ac5eb59dc"

#define ICPUEXECUTIONCAPCHANGEDEVENT_IID \
  {0xdfa7e4f5, 0xb4a4, 0x44ce, \
    { 0x85, 0xa8, 0x12, 0x7a, 0xc5, 0xeb, 0x59, 0xdc }}

class NS_NO_VTABLE ICPUExecutionCapChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ICPUEXECUTIONCAPCHANGEDEVENT_IID)

  /* readonly attribute unsigned long executionCap; */
  NS_IMETHOD GetExecutionCap(PRUint32 *aExecutionCap) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ICPUEXECUTIONCAPCHANGEDEVENT \
  NS_IMETHOD GetExecutionCap(PRUint32 *aExecutionCap); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ICPUEXECUTIONCAPCHANGEDEVENT(_to) \
  NS_IMETHOD GetExecutionCap(PRUint32 *aExecutionCap) { return _to GetExecutionCap(aExecutionCap); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ICPUEXECUTIONCAPCHANGEDEVENT(_to) \
  NS_IMETHOD GetExecutionCap(PRUint32 *aExecutionCap) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExecutionCap(aExecutionCap); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ICPUExecutionCapChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ICPUEXECUTIONCAPCHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ICPUExecutionCapChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute unsigned long executionCap; */
NS_IMETHODIMP _MYCLASS_::GetExecutionCap(PRUint32 *aExecutionCap)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_ICPUExecutionCapChangedEvent_GETTER_ExecutionCap_TO(smth) NS_IMETHOD GetExecutionCap (PRUint32 * aExecutionCap) { return smth GetExecutionCap (aExecutionCap); }
#define COM_FORWARD_ICPUExecutionCapChangedEvent_GETTER_ExecutionCap_TO_OBJ(obj) COM_FORWARD_ICPUExecutionCapChangedEvent_GETTER_ExecutionCap_TO ((obj)->)
#define COM_FORWARD_ICPUExecutionCapChangedEvent_GETTER_ExecutionCap_TO_BASE(base) COM_FORWARD_ICPUExecutionCapChangedEvent_GETTER_ExecutionCap_TO (base::)
#define COM_FORWARD_ICPUExecutionCapChangedEvent_TO(smth) NS_FORWARD_ICPUEXECUTIONCAPCHANGEDEVENT (smth)
#define COM_FORWARD_ICPUExecutionCapChangedEvent_TO_OBJ(obj) COM_FORWARD_ICPUExecutionCapChangedEvent_TO ((obj)->)
#define COM_FORWARD_ICPUExecutionCapChangedEvent_TO_BASE(base) COM_FORWARD_ICPUExecutionCapChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_ICPUExecutionCapChangedEvent;

/* starting interface:    IGuestKeyboardEvent */
#define IGUESTKEYBOARDEVENT_IID_STR "88394258-7006-40d4-b339-472ee3801844"

#define IGUESTKEYBOARDEVENT_IID \
  {0x88394258, 0x7006, 0x40d4, \
    { 0xb3, 0x39, 0x47, 0x2e, 0xe3, 0x80, 0x18, 0x44 }}

class NS_NO_VTABLE IGuestKeyboardEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTKEYBOARDEVENT_IID)

  /* void getScancodes (out unsigned long scancodesSize, [array, size_is (scancodesSize), retval] out long scancodes); */
  NS_IMETHOD GetScancodes(PRUint32 *scancodesSize, PRInt32 **scancodes) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTKEYBOARDEVENT \
  NS_IMETHOD GetScancodes(PRUint32 *scancodesSize, PRInt32 **scancodes); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTKEYBOARDEVENT(_to) \
  NS_IMETHOD GetScancodes(PRUint32 *scancodesSize, PRInt32 **scancodes) { return _to GetScancodes(scancodesSize, scancodes); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTKEYBOARDEVENT(_to) \
  NS_IMETHOD GetScancodes(PRUint32 *scancodesSize, PRInt32 **scancodes) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetScancodes(scancodesSize, scancodes); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestKeyboardEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTKEYBOARDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestKeyboardEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* void getScancodes (out unsigned long scancodesSize, [array, size_is (scancodesSize), retval] out long scancodes); */
NS_IMETHODIMP _MYCLASS_::GetScancodes(PRUint32 *scancodesSize, PRInt32 **scancodes)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestKeyboardEvent_GETTER_Scancodes_TO(smth) NS_IMETHOD GetScancodes (PRUint32 * aScancodesSize, PRInt32 * * aScancodes) { return smth GetScancodes (aScancodesSize, aScancodes); }
#define COM_FORWARD_IGuestKeyboardEvent_GETTER_Scancodes_TO_OBJ(obj) COM_FORWARD_IGuestKeyboardEvent_GETTER_Scancodes_TO ((obj)->)
#define COM_FORWARD_IGuestKeyboardEvent_GETTER_Scancodes_TO_BASE(base) COM_FORWARD_IGuestKeyboardEvent_GETTER_Scancodes_TO (base::)
#define COM_FORWARD_IGuestKeyboardEvent_TO(smth) NS_FORWARD_IGUESTKEYBOARDEVENT (smth)
#define COM_FORWARD_IGuestKeyboardEvent_TO_OBJ(obj) COM_FORWARD_IGuestKeyboardEvent_TO ((obj)->)
#define COM_FORWARD_IGuestKeyboardEvent_TO_BASE(base) COM_FORWARD_IGuestKeyboardEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestKeyboardEvent;

/* starting interface:    IGuestMouseEvent */
#define IGUESTMOUSEEVENT_IID_STR "179f8647-319c-4e7e-8150-c5837bd265f6"

#define IGUESTMOUSEEVENT_IID \
  {0x179f8647, 0x319c, 0x4e7e, \
    { 0x81, 0x50, 0xc5, 0x83, 0x7b, 0xd2, 0x65, 0xf6 }}

class NS_NO_VTABLE IGuestMouseEvent : public IReusableEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTMOUSEEVENT_IID)

  /* readonly attribute PRUint32 mode; */
  NS_IMETHOD GetMode(PRUint32 *aMode) = 0;

  /* readonly attribute long x; */
  NS_IMETHOD GetX(PRInt32 *aX) = 0;

  /* readonly attribute long y; */
  NS_IMETHOD GetY(PRInt32 *aY) = 0;

  /* readonly attribute long z; */
  NS_IMETHOD GetZ(PRInt32 *aZ) = 0;

  /* readonly attribute long w; */
  NS_IMETHOD GetW(PRInt32 *aW) = 0;

  /* readonly attribute long buttons; */
  NS_IMETHOD GetButtons(PRInt32 *aButtons) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTMOUSEEVENT \
  NS_IMETHOD GetMode(PRUint32 *aMode); \
  NS_IMETHOD GetX(PRInt32 *aX); \
  NS_IMETHOD GetY(PRInt32 *aY); \
  NS_IMETHOD GetZ(PRInt32 *aZ); \
  NS_IMETHOD GetW(PRInt32 *aW); \
  NS_IMETHOD GetButtons(PRInt32 *aButtons); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTMOUSEEVENT(_to) \
  NS_IMETHOD GetMode(PRUint32 *aMode) { return _to GetMode(aMode); } \
  NS_IMETHOD GetX(PRInt32 *aX) { return _to GetX(aX); } \
  NS_IMETHOD GetY(PRInt32 *aY) { return _to GetY(aY); } \
  NS_IMETHOD GetZ(PRInt32 *aZ) { return _to GetZ(aZ); } \
  NS_IMETHOD GetW(PRInt32 *aW) { return _to GetW(aW); } \
  NS_IMETHOD GetButtons(PRInt32 *aButtons) { return _to GetButtons(aButtons); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTMOUSEEVENT(_to) \
  NS_IMETHOD GetMode(PRUint32 *aMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMode(aMode); } \
  NS_IMETHOD GetX(PRInt32 *aX) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetX(aX); } \
  NS_IMETHOD GetY(PRInt32 *aY) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetY(aY); } \
  NS_IMETHOD GetZ(PRInt32 *aZ) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetZ(aZ); } \
  NS_IMETHOD GetW(PRInt32 *aW) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetW(aW); } \
  NS_IMETHOD GetButtons(PRInt32 *aButtons) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetButtons(aButtons); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestMouseEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTMOUSEEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestMouseEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute PRUint32 mode; */
NS_IMETHODIMP _MYCLASS_::GetMode(PRUint32 *aMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long x; */
NS_IMETHODIMP _MYCLASS_::GetX(PRInt32 *aX)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long y; */
NS_IMETHODIMP _MYCLASS_::GetY(PRInt32 *aY)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long z; */
NS_IMETHODIMP _MYCLASS_::GetZ(PRInt32 *aZ)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long w; */
NS_IMETHODIMP _MYCLASS_::GetW(PRInt32 *aW)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long buttons; */
NS_IMETHODIMP _MYCLASS_::GetButtons(PRInt32 *aButtons)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestMouseEvent_GETTER_Mode_TO(smth) NS_IMETHOD GetMode (PRUint32 * aMode) { return smth GetMode (aMode); }
#define COM_FORWARD_IGuestMouseEvent_GETTER_Mode_TO_OBJ(obj) COM_FORWARD_IGuestMouseEvent_GETTER_Mode_TO ((obj)->)
#define COM_FORWARD_IGuestMouseEvent_GETTER_Mode_TO_BASE(base) COM_FORWARD_IGuestMouseEvent_GETTER_Mode_TO (base::)
#define COM_FORWARD_IGuestMouseEvent_GETTER_X_TO(smth) NS_IMETHOD GetX (PRInt32 * aX) { return smth GetX (aX); }
#define COM_FORWARD_IGuestMouseEvent_GETTER_X_TO_OBJ(obj) COM_FORWARD_IGuestMouseEvent_GETTER_X_TO ((obj)->)
#define COM_FORWARD_IGuestMouseEvent_GETTER_X_TO_BASE(base) COM_FORWARD_IGuestMouseEvent_GETTER_X_TO (base::)
#define COM_FORWARD_IGuestMouseEvent_GETTER_Y_TO(smth) NS_IMETHOD GetY (PRInt32 * aY) { return smth GetY (aY); }
#define COM_FORWARD_IGuestMouseEvent_GETTER_Y_TO_OBJ(obj) COM_FORWARD_IGuestMouseEvent_GETTER_Y_TO ((obj)->)
#define COM_FORWARD_IGuestMouseEvent_GETTER_Y_TO_BASE(base) COM_FORWARD_IGuestMouseEvent_GETTER_Y_TO (base::)
#define COM_FORWARD_IGuestMouseEvent_GETTER_Z_TO(smth) NS_IMETHOD GetZ (PRInt32 * aZ) { return smth GetZ (aZ); }
#define COM_FORWARD_IGuestMouseEvent_GETTER_Z_TO_OBJ(obj) COM_FORWARD_IGuestMouseEvent_GETTER_Z_TO ((obj)->)
#define COM_FORWARD_IGuestMouseEvent_GETTER_Z_TO_BASE(base) COM_FORWARD_IGuestMouseEvent_GETTER_Z_TO (base::)
#define COM_FORWARD_IGuestMouseEvent_GETTER_W_TO(smth) NS_IMETHOD GetW (PRInt32 * aW) { return smth GetW (aW); }
#define COM_FORWARD_IGuestMouseEvent_GETTER_W_TO_OBJ(obj) COM_FORWARD_IGuestMouseEvent_GETTER_W_TO ((obj)->)
#define COM_FORWARD_IGuestMouseEvent_GETTER_W_TO_BASE(base) COM_FORWARD_IGuestMouseEvent_GETTER_W_TO (base::)
#define COM_FORWARD_IGuestMouseEvent_GETTER_Buttons_TO(smth) NS_IMETHOD GetButtons (PRInt32 * aButtons) { return smth GetButtons (aButtons); }
#define COM_FORWARD_IGuestMouseEvent_GETTER_Buttons_TO_OBJ(obj) COM_FORWARD_IGuestMouseEvent_GETTER_Buttons_TO ((obj)->)
#define COM_FORWARD_IGuestMouseEvent_GETTER_Buttons_TO_BASE(base) COM_FORWARD_IGuestMouseEvent_GETTER_Buttons_TO (base::)
#define COM_FORWARD_IGuestMouseEvent_TO(smth) NS_FORWARD_IGUESTMOUSEEVENT (smth)
#define COM_FORWARD_IGuestMouseEvent_TO_OBJ(obj) COM_FORWARD_IGuestMouseEvent_TO ((obj)->)
#define COM_FORWARD_IGuestMouseEvent_TO_BASE(base) COM_FORWARD_IGuestMouseEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestMouseEvent;

/* starting interface:    IGuestMultiTouchEvent */
#define IGUESTMULTITOUCHEVENT_IID_STR "be8a0eb5-f4f4-4dd0-9d30-c89b873247ec"

#define IGUESTMULTITOUCHEVENT_IID \
  {0xbe8a0eb5, 0xf4f4, 0x4dd0, \
    { 0x9d, 0x30, 0xc8, 0x9b, 0x87, 0x32, 0x47, 0xec }}

class NS_NO_VTABLE IGuestMultiTouchEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTMULTITOUCHEVENT_IID)

  /* readonly attribute long contactCount; */
  NS_IMETHOD GetContactCount(PRInt32 *aContactCount) = 0;

  /* void getXPositions (out unsigned long xPositionsSize, [array, size_is (xPositionsSize), retval] out short xPositions); */
  NS_IMETHOD GetXPositions(PRUint32 *xPositionsSize, PRInt16 **xPositions) = 0;

  /* void getYPositions (out unsigned long yPositionsSize, [array, size_is (yPositionsSize), retval] out short yPositions); */
  NS_IMETHOD GetYPositions(PRUint32 *yPositionsSize, PRInt16 **yPositions) = 0;

  /* void getContactIds (out unsigned long contactIdsSize, [array, size_is (contactIdsSize), retval] out unsigned short contactIds); */
  NS_IMETHOD GetContactIds(PRUint32 *contactIdsSize, PRUint16 **contactIds) = 0;

  /* void getContactFlags (out unsigned long contactFlagsSize, [array, size_is (contactFlagsSize), retval] out unsigned short contactFlags); */
  NS_IMETHOD GetContactFlags(PRUint32 *contactFlagsSize, PRUint16 **contactFlags) = 0;

  /* readonly attribute unsigned long scanTime; */
  NS_IMETHOD GetScanTime(PRUint32 *aScanTime) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTMULTITOUCHEVENT \
  NS_IMETHOD GetContactCount(PRInt32 *aContactCount); \
  NS_IMETHOD GetXPositions(PRUint32 *xPositionsSize, PRInt16 **xPositions); \
  NS_IMETHOD GetYPositions(PRUint32 *yPositionsSize, PRInt16 **yPositions); \
  NS_IMETHOD GetContactIds(PRUint32 *contactIdsSize, PRUint16 **contactIds); \
  NS_IMETHOD GetContactFlags(PRUint32 *contactFlagsSize, PRUint16 **contactFlags); \
  NS_IMETHOD GetScanTime(PRUint32 *aScanTime); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTMULTITOUCHEVENT(_to) \
  NS_IMETHOD GetContactCount(PRInt32 *aContactCount) { return _to GetContactCount(aContactCount); } \
  NS_IMETHOD GetXPositions(PRUint32 *xPositionsSize, PRInt16 **xPositions) { return _to GetXPositions(xPositionsSize, xPositions); } \
  NS_IMETHOD GetYPositions(PRUint32 *yPositionsSize, PRInt16 **yPositions) { return _to GetYPositions(yPositionsSize, yPositions); } \
  NS_IMETHOD GetContactIds(PRUint32 *contactIdsSize, PRUint16 **contactIds) { return _to GetContactIds(contactIdsSize, contactIds); } \
  NS_IMETHOD GetContactFlags(PRUint32 *contactFlagsSize, PRUint16 **contactFlags) { return _to GetContactFlags(contactFlagsSize, contactFlags); } \
  NS_IMETHOD GetScanTime(PRUint32 *aScanTime) { return _to GetScanTime(aScanTime); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTMULTITOUCHEVENT(_to) \
  NS_IMETHOD GetContactCount(PRInt32 *aContactCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetContactCount(aContactCount); } \
  NS_IMETHOD GetXPositions(PRUint32 *xPositionsSize, PRInt16 **xPositions) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetXPositions(xPositionsSize, xPositions); } \
  NS_IMETHOD GetYPositions(PRUint32 *yPositionsSize, PRInt16 **yPositions) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetYPositions(yPositionsSize, yPositions); } \
  NS_IMETHOD GetContactIds(PRUint32 *contactIdsSize, PRUint16 **contactIds) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetContactIds(contactIdsSize, contactIds); } \
  NS_IMETHOD GetContactFlags(PRUint32 *contactFlagsSize, PRUint16 **contactFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetContactFlags(contactFlagsSize, contactFlags); } \
  NS_IMETHOD GetScanTime(PRUint32 *aScanTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetScanTime(aScanTime); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestMultiTouchEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTMULTITOUCHEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestMultiTouchEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute long contactCount; */
NS_IMETHODIMP _MYCLASS_::GetContactCount(PRInt32 *aContactCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getXPositions (out unsigned long xPositionsSize, [array, size_is (xPositionsSize), retval] out short xPositions); */
NS_IMETHODIMP _MYCLASS_::GetXPositions(PRUint32 *xPositionsSize, PRInt16 **xPositions)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getYPositions (out unsigned long yPositionsSize, [array, size_is (yPositionsSize), retval] out short yPositions); */
NS_IMETHODIMP _MYCLASS_::GetYPositions(PRUint32 *yPositionsSize, PRInt16 **yPositions)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getContactIds (out unsigned long contactIdsSize, [array, size_is (contactIdsSize), retval] out unsigned short contactIds); */
NS_IMETHODIMP _MYCLASS_::GetContactIds(PRUint32 *contactIdsSize, PRUint16 **contactIds)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getContactFlags (out unsigned long contactFlagsSize, [array, size_is (contactFlagsSize), retval] out unsigned short contactFlags); */
NS_IMETHODIMP _MYCLASS_::GetContactFlags(PRUint32 *contactFlagsSize, PRUint16 **contactFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long scanTime; */
NS_IMETHODIMP _MYCLASS_::GetScanTime(PRUint32 *aScanTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestMultiTouchEvent_GETTER_ContactCount_TO(smth) NS_IMETHOD GetContactCount (PRInt32 * aContactCount) { return smth GetContactCount (aContactCount); }
#define COM_FORWARD_IGuestMultiTouchEvent_GETTER_ContactCount_TO_OBJ(obj) COM_FORWARD_IGuestMultiTouchEvent_GETTER_ContactCount_TO ((obj)->)
#define COM_FORWARD_IGuestMultiTouchEvent_GETTER_ContactCount_TO_BASE(base) COM_FORWARD_IGuestMultiTouchEvent_GETTER_ContactCount_TO (base::)
#define COM_FORWARD_IGuestMultiTouchEvent_GETTER_XPositions_TO(smth) NS_IMETHOD GetXPositions (PRUint32 * aXPositionsSize, PRInt16 * * aXPositions) { return smth GetXPositions (aXPositionsSize, aXPositions); }
#define COM_FORWARD_IGuestMultiTouchEvent_GETTER_XPositions_TO_OBJ(obj) COM_FORWARD_IGuestMultiTouchEvent_GETTER_XPositions_TO ((obj)->)
#define COM_FORWARD_IGuestMultiTouchEvent_GETTER_XPositions_TO_BASE(base) COM_FORWARD_IGuestMultiTouchEvent_GETTER_XPositions_TO (base::)
#define COM_FORWARD_IGuestMultiTouchEvent_GETTER_YPositions_TO(smth) NS_IMETHOD GetYPositions (PRUint32 * aYPositionsSize, PRInt16 * * aYPositions) { return smth GetYPositions (aYPositionsSize, aYPositions); }
#define COM_FORWARD_IGuestMultiTouchEvent_GETTER_YPositions_TO_OBJ(obj) COM_FORWARD_IGuestMultiTouchEvent_GETTER_YPositions_TO ((obj)->)
#define COM_FORWARD_IGuestMultiTouchEvent_GETTER_YPositions_TO_BASE(base) COM_FORWARD_IGuestMultiTouchEvent_GETTER_YPositions_TO (base::)
#define COM_FORWARD_IGuestMultiTouchEvent_GETTER_ContactIds_TO(smth) NS_IMETHOD GetContactIds (PRUint32 * aContactIdsSize, PRUint16 * * aContactIds) { return smth GetContactIds (aContactIdsSize, aContactIds); }
#define COM_FORWARD_IGuestMultiTouchEvent_GETTER_ContactIds_TO_OBJ(obj) COM_FORWARD_IGuestMultiTouchEvent_GETTER_ContactIds_TO ((obj)->)
#define COM_FORWARD_IGuestMultiTouchEvent_GETTER_ContactIds_TO_BASE(base) COM_FORWARD_IGuestMultiTouchEvent_GETTER_ContactIds_TO (base::)
#define COM_FORWARD_IGuestMultiTouchEvent_GETTER_ContactFlags_TO(smth) NS_IMETHOD GetContactFlags (PRUint32 * aContactFlagsSize, PRUint16 * * aContactFlags) { return smth GetContactFlags (aContactFlagsSize, aContactFlags); }
#define COM_FORWARD_IGuestMultiTouchEvent_GETTER_ContactFlags_TO_OBJ(obj) COM_FORWARD_IGuestMultiTouchEvent_GETTER_ContactFlags_TO ((obj)->)
#define COM_FORWARD_IGuestMultiTouchEvent_GETTER_ContactFlags_TO_BASE(base) COM_FORWARD_IGuestMultiTouchEvent_GETTER_ContactFlags_TO (base::)
#define COM_FORWARD_IGuestMultiTouchEvent_GETTER_ScanTime_TO(smth) NS_IMETHOD GetScanTime (PRUint32 * aScanTime) { return smth GetScanTime (aScanTime); }
#define COM_FORWARD_IGuestMultiTouchEvent_GETTER_ScanTime_TO_OBJ(obj) COM_FORWARD_IGuestMultiTouchEvent_GETTER_ScanTime_TO ((obj)->)
#define COM_FORWARD_IGuestMultiTouchEvent_GETTER_ScanTime_TO_BASE(base) COM_FORWARD_IGuestMultiTouchEvent_GETTER_ScanTime_TO (base::)
#define COM_FORWARD_IGuestMultiTouchEvent_TO(smth) NS_FORWARD_IGUESTMULTITOUCHEVENT (smth)
#define COM_FORWARD_IGuestMultiTouchEvent_TO_OBJ(obj) COM_FORWARD_IGuestMultiTouchEvent_TO ((obj)->)
#define COM_FORWARD_IGuestMultiTouchEvent_TO_BASE(base) COM_FORWARD_IGuestMultiTouchEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestMultiTouchEvent;

/* starting interface:    IGuestSessionEvent */
#define IGUESTSESSIONEVENT_IID_STR "b9acd33f-647d-45ac-8fe9-f49b3183ba37"

#define IGUESTSESSIONEVENT_IID \
  {0xb9acd33f, 0x647d, 0x45ac, \
    { 0x8f, 0xe9, 0xf4, 0x9b, 0x31, 0x83, 0xba, 0x37 }}

class NS_NO_VTABLE IGuestSessionEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTSESSIONEVENT_IID)

  /* readonly attribute IGuestSession session; */
  NS_IMETHOD GetSession(IGuestSession * *aSession) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTSESSIONEVENT \
  NS_IMETHOD GetSession(IGuestSession * *aSession); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTSESSIONEVENT(_to) \
  NS_IMETHOD GetSession(IGuestSession * *aSession) { return _to GetSession(aSession); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTSESSIONEVENT(_to) \
  NS_IMETHOD GetSession(IGuestSession * *aSession) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSession(aSession); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestSessionEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTSESSIONEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestSessionEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute IGuestSession session; */
NS_IMETHODIMP _MYCLASS_::GetSession(IGuestSession * *aSession)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestSessionEvent_GETTER_Session_TO(smth) NS_IMETHOD GetSession (IGuestSession * * aSession) { return smth GetSession (aSession); }
#define COM_FORWARD_IGuestSessionEvent_GETTER_Session_TO_OBJ(obj) COM_FORWARD_IGuestSessionEvent_GETTER_Session_TO ((obj)->)
#define COM_FORWARD_IGuestSessionEvent_GETTER_Session_TO_BASE(base) COM_FORWARD_IGuestSessionEvent_GETTER_Session_TO (base::)
#define COM_FORWARD_IGuestSessionEvent_TO(smth) NS_FORWARD_IGUESTSESSIONEVENT (smth)
#define COM_FORWARD_IGuestSessionEvent_TO_OBJ(obj) COM_FORWARD_IGuestSessionEvent_TO ((obj)->)
#define COM_FORWARD_IGuestSessionEvent_TO_BASE(base) COM_FORWARD_IGuestSessionEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestSessionEvent;

/* starting interface:    IGuestSessionStateChangedEvent */
#define IGUESTSESSIONSTATECHANGEDEVENT_IID_STR "327e3c00-ee61-462f-aed3-0dff6cbf9904"

#define IGUESTSESSIONSTATECHANGEDEVENT_IID \
  {0x327e3c00, 0xee61, 0x462f, \
    { 0xae, 0xd3, 0x0d, 0xff, 0x6c, 0xbf, 0x99, 0x04 }}

class NS_NO_VTABLE IGuestSessionStateChangedEvent : public IGuestSessionEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTSESSIONSTATECHANGEDEVENT_IID)

  /* readonly attribute unsigned long id; */
  NS_IMETHOD GetId(PRUint32 *aId) = 0;

  /* readonly attribute PRUint32 status; */
  NS_IMETHOD GetStatus(PRUint32 *aStatus) = 0;

  /* readonly attribute IVirtualBoxErrorInfo error; */
  NS_IMETHOD GetError(IVirtualBoxErrorInfo * *aError) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTSESSIONSTATECHANGEDEVENT \
  NS_IMETHOD GetId(PRUint32 *aId); \
  NS_IMETHOD GetStatus(PRUint32 *aStatus); \
  NS_IMETHOD GetError(IVirtualBoxErrorInfo * *aError); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTSESSIONSTATECHANGEDEVENT(_to) \
  NS_IMETHOD GetId(PRUint32 *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetStatus(PRUint32 *aStatus) { return _to GetStatus(aStatus); } \
  NS_IMETHOD GetError(IVirtualBoxErrorInfo * *aError) { return _to GetError(aError); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTSESSIONSTATECHANGEDEVENT(_to) \
  NS_IMETHOD GetId(PRUint32 *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetStatus(PRUint32 *aStatus) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStatus(aStatus); } \
  NS_IMETHOD GetError(IVirtualBoxErrorInfo * *aError) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetError(aError); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestSessionStateChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTSESSIONSTATECHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestSessionStateChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute unsigned long id; */
NS_IMETHODIMP _MYCLASS_::GetId(PRUint32 *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 status; */
NS_IMETHODIMP _MYCLASS_::GetStatus(PRUint32 *aStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IVirtualBoxErrorInfo error; */
NS_IMETHODIMP _MYCLASS_::GetError(IVirtualBoxErrorInfo * *aError)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestSessionStateChangedEvent_GETTER_Id_TO(smth) NS_IMETHOD GetId (PRUint32 * aId) { return smth GetId (aId); }
#define COM_FORWARD_IGuestSessionStateChangedEvent_GETTER_Id_TO_OBJ(obj) COM_FORWARD_IGuestSessionStateChangedEvent_GETTER_Id_TO ((obj)->)
#define COM_FORWARD_IGuestSessionStateChangedEvent_GETTER_Id_TO_BASE(base) COM_FORWARD_IGuestSessionStateChangedEvent_GETTER_Id_TO (base::)
#define COM_FORWARD_IGuestSessionStateChangedEvent_GETTER_Status_TO(smth) NS_IMETHOD GetStatus (PRUint32 * aStatus) { return smth GetStatus (aStatus); }
#define COM_FORWARD_IGuestSessionStateChangedEvent_GETTER_Status_TO_OBJ(obj) COM_FORWARD_IGuestSessionStateChangedEvent_GETTER_Status_TO ((obj)->)
#define COM_FORWARD_IGuestSessionStateChangedEvent_GETTER_Status_TO_BASE(base) COM_FORWARD_IGuestSessionStateChangedEvent_GETTER_Status_TO (base::)
#define COM_FORWARD_IGuestSessionStateChangedEvent_GETTER_Error_TO(smth) NS_IMETHOD GetError (IVirtualBoxErrorInfo * * aError) { return smth GetError (aError); }
#define COM_FORWARD_IGuestSessionStateChangedEvent_GETTER_Error_TO_OBJ(obj) COM_FORWARD_IGuestSessionStateChangedEvent_GETTER_Error_TO ((obj)->)
#define COM_FORWARD_IGuestSessionStateChangedEvent_GETTER_Error_TO_BASE(base) COM_FORWARD_IGuestSessionStateChangedEvent_GETTER_Error_TO (base::)
#define COM_FORWARD_IGuestSessionStateChangedEvent_TO(smth) NS_FORWARD_IGUESTSESSIONSTATECHANGEDEVENT (smth)
#define COM_FORWARD_IGuestSessionStateChangedEvent_TO_OBJ(obj) COM_FORWARD_IGuestSessionStateChangedEvent_TO ((obj)->)
#define COM_FORWARD_IGuestSessionStateChangedEvent_TO_BASE(base) COM_FORWARD_IGuestSessionStateChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestSessionStateChangedEvent;

/* starting interface:    IGuestSessionRegisteredEvent */
#define IGUESTSESSIONREGISTEREDEVENT_IID_STR "b79de686-eabd-4fa6-960a-f1756c99ea1c"

#define IGUESTSESSIONREGISTEREDEVENT_IID \
  {0xb79de686, 0xeabd, 0x4fa6, \
    { 0x96, 0x0a, 0xf1, 0x75, 0x6c, 0x99, 0xea, 0x1c }}

class NS_NO_VTABLE IGuestSessionRegisteredEvent : public IGuestSessionEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTSESSIONREGISTEREDEVENT_IID)

  /* readonly attribute boolean registered; */
  NS_IMETHOD GetRegistered(PRBool *aRegistered) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTSESSIONREGISTEREDEVENT \
  NS_IMETHOD GetRegistered(PRBool *aRegistered); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTSESSIONREGISTEREDEVENT(_to) \
  NS_IMETHOD GetRegistered(PRBool *aRegistered) { return _to GetRegistered(aRegistered); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTSESSIONREGISTEREDEVENT(_to) \
  NS_IMETHOD GetRegistered(PRBool *aRegistered) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRegistered(aRegistered); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestSessionRegisteredEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTSESSIONREGISTEREDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestSessionRegisteredEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute boolean registered; */
NS_IMETHODIMP _MYCLASS_::GetRegistered(PRBool *aRegistered)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestSessionRegisteredEvent_GETTER_Registered_TO(smth) NS_IMETHOD GetRegistered (PRBool * aRegistered) { return smth GetRegistered (aRegistered); }
#define COM_FORWARD_IGuestSessionRegisteredEvent_GETTER_Registered_TO_OBJ(obj) COM_FORWARD_IGuestSessionRegisteredEvent_GETTER_Registered_TO ((obj)->)
#define COM_FORWARD_IGuestSessionRegisteredEvent_GETTER_Registered_TO_BASE(base) COM_FORWARD_IGuestSessionRegisteredEvent_GETTER_Registered_TO (base::)
#define COM_FORWARD_IGuestSessionRegisteredEvent_TO(smth) NS_FORWARD_IGUESTSESSIONREGISTEREDEVENT (smth)
#define COM_FORWARD_IGuestSessionRegisteredEvent_TO_OBJ(obj) COM_FORWARD_IGuestSessionRegisteredEvent_TO ((obj)->)
#define COM_FORWARD_IGuestSessionRegisteredEvent_TO_BASE(base) COM_FORWARD_IGuestSessionRegisteredEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestSessionRegisteredEvent;

/* starting interface:    IGuestProcessEvent */
#define IGUESTPROCESSEVENT_IID_STR "2405f0e5-6588-40a3-9b0a-68c05ba52c4b"

#define IGUESTPROCESSEVENT_IID \
  {0x2405f0e5, 0x6588, 0x40a3, \
    { 0x9b, 0x0a, 0x68, 0xc0, 0x5b, 0xa5, 0x2c, 0x4b }}

class NS_NO_VTABLE IGuestProcessEvent : public IGuestSessionEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTPROCESSEVENT_IID)

  /* readonly attribute IGuestProcess process; */
  NS_IMETHOD GetProcess(IGuestProcess * *aProcess) = 0;

  /* readonly attribute unsigned long pid; */
  NS_IMETHOD GetPid(PRUint32 *aPid) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTPROCESSEVENT \
  NS_IMETHOD GetProcess(IGuestProcess * *aProcess); \
  NS_IMETHOD GetPid(PRUint32 *aPid); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTPROCESSEVENT(_to) \
  NS_IMETHOD GetProcess(IGuestProcess * *aProcess) { return _to GetProcess(aProcess); } \
  NS_IMETHOD GetPid(PRUint32 *aPid) { return _to GetPid(aPid); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTPROCESSEVENT(_to) \
  NS_IMETHOD GetProcess(IGuestProcess * *aProcess) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcess(aProcess); } \
  NS_IMETHOD GetPid(PRUint32 *aPid) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPid(aPid); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestProcessEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTPROCESSEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestProcessEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute IGuestProcess process; */
NS_IMETHODIMP _MYCLASS_::GetProcess(IGuestProcess * *aProcess)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long pid; */
NS_IMETHODIMP _MYCLASS_::GetPid(PRUint32 *aPid)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestProcessEvent_GETTER_Process_TO(smth) NS_IMETHOD GetProcess (IGuestProcess * * aProcess) { return smth GetProcess (aProcess); }
#define COM_FORWARD_IGuestProcessEvent_GETTER_Process_TO_OBJ(obj) COM_FORWARD_IGuestProcessEvent_GETTER_Process_TO ((obj)->)
#define COM_FORWARD_IGuestProcessEvent_GETTER_Process_TO_BASE(base) COM_FORWARD_IGuestProcessEvent_GETTER_Process_TO (base::)
#define COM_FORWARD_IGuestProcessEvent_GETTER_Pid_TO(smth) NS_IMETHOD GetPid (PRUint32 * aPid) { return smth GetPid (aPid); }
#define COM_FORWARD_IGuestProcessEvent_GETTER_Pid_TO_OBJ(obj) COM_FORWARD_IGuestProcessEvent_GETTER_Pid_TO ((obj)->)
#define COM_FORWARD_IGuestProcessEvent_GETTER_Pid_TO_BASE(base) COM_FORWARD_IGuestProcessEvent_GETTER_Pid_TO (base::)
#define COM_FORWARD_IGuestProcessEvent_TO(smth) NS_FORWARD_IGUESTPROCESSEVENT (smth)
#define COM_FORWARD_IGuestProcessEvent_TO_OBJ(obj) COM_FORWARD_IGuestProcessEvent_TO ((obj)->)
#define COM_FORWARD_IGuestProcessEvent_TO_BASE(base) COM_FORWARD_IGuestProcessEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestProcessEvent;

/* starting interface:    IGuestProcessRegisteredEvent */
#define IGUESTPROCESSREGISTEREDEVENT_IID_STR "1d89e2b3-c6ea-45b6-9d43-dc6f70cc9f02"

#define IGUESTPROCESSREGISTEREDEVENT_IID \
  {0x1d89e2b3, 0xc6ea, 0x45b6, \
    { 0x9d, 0x43, 0xdc, 0x6f, 0x70, 0xcc, 0x9f, 0x02 }}

class NS_NO_VTABLE IGuestProcessRegisteredEvent : public IGuestProcessEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTPROCESSREGISTEREDEVENT_IID)

  /* readonly attribute boolean registered; */
  NS_IMETHOD GetRegistered(PRBool *aRegistered) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTPROCESSREGISTEREDEVENT \
  NS_IMETHOD GetRegistered(PRBool *aRegistered); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTPROCESSREGISTEREDEVENT(_to) \
  NS_IMETHOD GetRegistered(PRBool *aRegistered) { return _to GetRegistered(aRegistered); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTPROCESSREGISTEREDEVENT(_to) \
  NS_IMETHOD GetRegistered(PRBool *aRegistered) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRegistered(aRegistered); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestProcessRegisteredEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTPROCESSREGISTEREDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestProcessRegisteredEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute boolean registered; */
NS_IMETHODIMP _MYCLASS_::GetRegistered(PRBool *aRegistered)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestProcessRegisteredEvent_GETTER_Registered_TO(smth) NS_IMETHOD GetRegistered (PRBool * aRegistered) { return smth GetRegistered (aRegistered); }
#define COM_FORWARD_IGuestProcessRegisteredEvent_GETTER_Registered_TO_OBJ(obj) COM_FORWARD_IGuestProcessRegisteredEvent_GETTER_Registered_TO ((obj)->)
#define COM_FORWARD_IGuestProcessRegisteredEvent_GETTER_Registered_TO_BASE(base) COM_FORWARD_IGuestProcessRegisteredEvent_GETTER_Registered_TO (base::)
#define COM_FORWARD_IGuestProcessRegisteredEvent_TO(smth) NS_FORWARD_IGUESTPROCESSREGISTEREDEVENT (smth)
#define COM_FORWARD_IGuestProcessRegisteredEvent_TO_OBJ(obj) COM_FORWARD_IGuestProcessRegisteredEvent_TO ((obj)->)
#define COM_FORWARD_IGuestProcessRegisteredEvent_TO_BASE(base) COM_FORWARD_IGuestProcessRegisteredEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestProcessRegisteredEvent;

/* starting interface:    IGuestProcessStateChangedEvent */
#define IGUESTPROCESSSTATECHANGEDEVENT_IID_STR "c365fb7b-4430-499f-92c8-8bed814a567a"

#define IGUESTPROCESSSTATECHANGEDEVENT_IID \
  {0xc365fb7b, 0x4430, 0x499f, \
    { 0x92, 0xc8, 0x8b, 0xed, 0x81, 0x4a, 0x56, 0x7a }}

class NS_NO_VTABLE IGuestProcessStateChangedEvent : public IGuestProcessEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTPROCESSSTATECHANGEDEVENT_IID)

  /* readonly attribute PRUint32 status; */
  NS_IMETHOD GetStatus(PRUint32 *aStatus) = 0;

  /* readonly attribute IVirtualBoxErrorInfo error; */
  NS_IMETHOD GetError(IVirtualBoxErrorInfo * *aError) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTPROCESSSTATECHANGEDEVENT \
  NS_IMETHOD GetStatus(PRUint32 *aStatus); \
  NS_IMETHOD GetError(IVirtualBoxErrorInfo * *aError); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTPROCESSSTATECHANGEDEVENT(_to) \
  NS_IMETHOD GetStatus(PRUint32 *aStatus) { return _to GetStatus(aStatus); } \
  NS_IMETHOD GetError(IVirtualBoxErrorInfo * *aError) { return _to GetError(aError); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTPROCESSSTATECHANGEDEVENT(_to) \
  NS_IMETHOD GetStatus(PRUint32 *aStatus) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStatus(aStatus); } \
  NS_IMETHOD GetError(IVirtualBoxErrorInfo * *aError) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetError(aError); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestProcessStateChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTPROCESSSTATECHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestProcessStateChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute PRUint32 status; */
NS_IMETHODIMP _MYCLASS_::GetStatus(PRUint32 *aStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IVirtualBoxErrorInfo error; */
NS_IMETHODIMP _MYCLASS_::GetError(IVirtualBoxErrorInfo * *aError)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestProcessStateChangedEvent_GETTER_Status_TO(smth) NS_IMETHOD GetStatus (PRUint32 * aStatus) { return smth GetStatus (aStatus); }
#define COM_FORWARD_IGuestProcessStateChangedEvent_GETTER_Status_TO_OBJ(obj) COM_FORWARD_IGuestProcessStateChangedEvent_GETTER_Status_TO ((obj)->)
#define COM_FORWARD_IGuestProcessStateChangedEvent_GETTER_Status_TO_BASE(base) COM_FORWARD_IGuestProcessStateChangedEvent_GETTER_Status_TO (base::)
#define COM_FORWARD_IGuestProcessStateChangedEvent_GETTER_Error_TO(smth) NS_IMETHOD GetError (IVirtualBoxErrorInfo * * aError) { return smth GetError (aError); }
#define COM_FORWARD_IGuestProcessStateChangedEvent_GETTER_Error_TO_OBJ(obj) COM_FORWARD_IGuestProcessStateChangedEvent_GETTER_Error_TO ((obj)->)
#define COM_FORWARD_IGuestProcessStateChangedEvent_GETTER_Error_TO_BASE(base) COM_FORWARD_IGuestProcessStateChangedEvent_GETTER_Error_TO (base::)
#define COM_FORWARD_IGuestProcessStateChangedEvent_TO(smth) NS_FORWARD_IGUESTPROCESSSTATECHANGEDEVENT (smth)
#define COM_FORWARD_IGuestProcessStateChangedEvent_TO_OBJ(obj) COM_FORWARD_IGuestProcessStateChangedEvent_TO ((obj)->)
#define COM_FORWARD_IGuestProcessStateChangedEvent_TO_BASE(base) COM_FORWARD_IGuestProcessStateChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestProcessStateChangedEvent;

/* starting interface:    IGuestProcessIOEvent */
#define IGUESTPROCESSIOEVENT_IID_STR "9ea9227c-e9bb-49b3-bfc7-c5171e93ef38"

#define IGUESTPROCESSIOEVENT_IID \
  {0x9ea9227c, 0xe9bb, 0x49b3, \
    { 0xbf, 0xc7, 0xc5, 0x17, 0x1e, 0x93, 0xef, 0x38 }}

class NS_NO_VTABLE IGuestProcessIOEvent : public IGuestProcessEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTPROCESSIOEVENT_IID)

  /* readonly attribute unsigned long handle; */
  NS_IMETHOD GetHandle(PRUint32 *aHandle) = 0;

  /* readonly attribute unsigned long processed; */
  NS_IMETHOD GetProcessed(PRUint32 *aProcessed) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTPROCESSIOEVENT \
  NS_IMETHOD GetHandle(PRUint32 *aHandle); \
  NS_IMETHOD GetProcessed(PRUint32 *aProcessed); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTPROCESSIOEVENT(_to) \
  NS_IMETHOD GetHandle(PRUint32 *aHandle) { return _to GetHandle(aHandle); } \
  NS_IMETHOD GetProcessed(PRUint32 *aProcessed) { return _to GetProcessed(aProcessed); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTPROCESSIOEVENT(_to) \
  NS_IMETHOD GetHandle(PRUint32 *aHandle) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHandle(aHandle); } \
  NS_IMETHOD GetProcessed(PRUint32 *aProcessed) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessed(aProcessed); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestProcessIOEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTPROCESSIOEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestProcessIOEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute unsigned long handle; */
NS_IMETHODIMP _MYCLASS_::GetHandle(PRUint32 *aHandle)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long processed; */
NS_IMETHODIMP _MYCLASS_::GetProcessed(PRUint32 *aProcessed)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestProcessIOEvent_GETTER_Handle_TO(smth) NS_IMETHOD GetHandle (PRUint32 * aHandle) { return smth GetHandle (aHandle); }
#define COM_FORWARD_IGuestProcessIOEvent_GETTER_Handle_TO_OBJ(obj) COM_FORWARD_IGuestProcessIOEvent_GETTER_Handle_TO ((obj)->)
#define COM_FORWARD_IGuestProcessIOEvent_GETTER_Handle_TO_BASE(base) COM_FORWARD_IGuestProcessIOEvent_GETTER_Handle_TO (base::)
#define COM_FORWARD_IGuestProcessIOEvent_GETTER_Processed_TO(smth) NS_IMETHOD GetProcessed (PRUint32 * aProcessed) { return smth GetProcessed (aProcessed); }
#define COM_FORWARD_IGuestProcessIOEvent_GETTER_Processed_TO_OBJ(obj) COM_FORWARD_IGuestProcessIOEvent_GETTER_Processed_TO ((obj)->)
#define COM_FORWARD_IGuestProcessIOEvent_GETTER_Processed_TO_BASE(base) COM_FORWARD_IGuestProcessIOEvent_GETTER_Processed_TO (base::)
#define COM_FORWARD_IGuestProcessIOEvent_TO(smth) NS_FORWARD_IGUESTPROCESSIOEVENT (smth)
#define COM_FORWARD_IGuestProcessIOEvent_TO_OBJ(obj) COM_FORWARD_IGuestProcessIOEvent_TO ((obj)->)
#define COM_FORWARD_IGuestProcessIOEvent_TO_BASE(base) COM_FORWARD_IGuestProcessIOEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestProcessIOEvent;

/* starting interface:    IGuestProcessInputNotifyEvent */
#define IGUESTPROCESSINPUTNOTIFYEVENT_IID_STR "0de887f2-b7db-4616-aac6-cfb94d89ba78"

#define IGUESTPROCESSINPUTNOTIFYEVENT_IID \
  {0x0de887f2, 0xb7db, 0x4616, \
    { 0xaa, 0xc6, 0xcf, 0xb9, 0x4d, 0x89, 0xba, 0x78 }}

class NS_NO_VTABLE IGuestProcessInputNotifyEvent : public IGuestProcessIOEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTPROCESSINPUTNOTIFYEVENT_IID)

  /* readonly attribute PRUint32 status; */
  NS_IMETHOD GetStatus(PRUint32 *aStatus) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTPROCESSINPUTNOTIFYEVENT \
  NS_IMETHOD GetStatus(PRUint32 *aStatus); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTPROCESSINPUTNOTIFYEVENT(_to) \
  NS_IMETHOD GetStatus(PRUint32 *aStatus) { return _to GetStatus(aStatus); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTPROCESSINPUTNOTIFYEVENT(_to) \
  NS_IMETHOD GetStatus(PRUint32 *aStatus) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStatus(aStatus); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestProcessInputNotifyEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTPROCESSINPUTNOTIFYEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestProcessInputNotifyEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute PRUint32 status; */
NS_IMETHODIMP _MYCLASS_::GetStatus(PRUint32 *aStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestProcessInputNotifyEvent_GETTER_Status_TO(smth) NS_IMETHOD GetStatus (PRUint32 * aStatus) { return smth GetStatus (aStatus); }
#define COM_FORWARD_IGuestProcessInputNotifyEvent_GETTER_Status_TO_OBJ(obj) COM_FORWARD_IGuestProcessInputNotifyEvent_GETTER_Status_TO ((obj)->)
#define COM_FORWARD_IGuestProcessInputNotifyEvent_GETTER_Status_TO_BASE(base) COM_FORWARD_IGuestProcessInputNotifyEvent_GETTER_Status_TO (base::)
#define COM_FORWARD_IGuestProcessInputNotifyEvent_TO(smth) NS_FORWARD_IGUESTPROCESSINPUTNOTIFYEVENT (smth)
#define COM_FORWARD_IGuestProcessInputNotifyEvent_TO_OBJ(obj) COM_FORWARD_IGuestProcessInputNotifyEvent_TO ((obj)->)
#define COM_FORWARD_IGuestProcessInputNotifyEvent_TO_BASE(base) COM_FORWARD_IGuestProcessInputNotifyEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestProcessInputNotifyEvent;

/* starting interface:    IGuestProcessOutputEvent */
#define IGUESTPROCESSOUTPUTEVENT_IID_STR "d3d5f1ee-bcb2-4905-a7ab-cc85448a742b"

#define IGUESTPROCESSOUTPUTEVENT_IID \
  {0xd3d5f1ee, 0xbcb2, 0x4905, \
    { 0xa7, 0xab, 0xcc, 0x85, 0x44, 0x8a, 0x74, 0x2b }}

class NS_NO_VTABLE IGuestProcessOutputEvent : public IGuestProcessIOEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTPROCESSOUTPUTEVENT_IID)

  /* void getData (out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
  NS_IMETHOD GetData(PRUint32 *dataSize, PRUint8 **data) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTPROCESSOUTPUTEVENT \
  NS_IMETHOD GetData(PRUint32 *dataSize, PRUint8 **data); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTPROCESSOUTPUTEVENT(_to) \
  NS_IMETHOD GetData(PRUint32 *dataSize, PRUint8 **data) { return _to GetData(dataSize, data); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTPROCESSOUTPUTEVENT(_to) \
  NS_IMETHOD GetData(PRUint32 *dataSize, PRUint8 **data) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetData(dataSize, data); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestProcessOutputEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTPROCESSOUTPUTEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestProcessOutputEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* void getData (out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
NS_IMETHODIMP _MYCLASS_::GetData(PRUint32 *dataSize, PRUint8 **data)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestProcessOutputEvent_GETTER_Data_TO(smth) NS_IMETHOD GetData (PRUint32 * aDataSize, PRUint8 * * aData) { return smth GetData (aDataSize, aData); }
#define COM_FORWARD_IGuestProcessOutputEvent_GETTER_Data_TO_OBJ(obj) COM_FORWARD_IGuestProcessOutputEvent_GETTER_Data_TO ((obj)->)
#define COM_FORWARD_IGuestProcessOutputEvent_GETTER_Data_TO_BASE(base) COM_FORWARD_IGuestProcessOutputEvent_GETTER_Data_TO (base::)
#define COM_FORWARD_IGuestProcessOutputEvent_TO(smth) NS_FORWARD_IGUESTPROCESSOUTPUTEVENT (smth)
#define COM_FORWARD_IGuestProcessOutputEvent_TO_OBJ(obj) COM_FORWARD_IGuestProcessOutputEvent_TO ((obj)->)
#define COM_FORWARD_IGuestProcessOutputEvent_TO_BASE(base) COM_FORWARD_IGuestProcessOutputEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestProcessOutputEvent;

/* starting interface:    IGuestFileEvent */
#define IGUESTFILEEVENT_IID_STR "c8adb7b0-057d-4391-b928-f14b06b710c5"

#define IGUESTFILEEVENT_IID \
  {0xc8adb7b0, 0x057d, 0x4391, \
    { 0xb9, 0x28, 0xf1, 0x4b, 0x06, 0xb7, 0x10, 0xc5 }}

class NS_NO_VTABLE IGuestFileEvent : public IGuestSessionEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTFILEEVENT_IID)

  /* readonly attribute IGuestFile file; */
  NS_IMETHOD GetFile(IGuestFile * *aFile) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTFILEEVENT \
  NS_IMETHOD GetFile(IGuestFile * *aFile); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTFILEEVENT(_to) \
  NS_IMETHOD GetFile(IGuestFile * *aFile) { return _to GetFile(aFile); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTFILEEVENT(_to) \
  NS_IMETHOD GetFile(IGuestFile * *aFile) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFile(aFile); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestFileEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTFILEEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestFileEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute IGuestFile file; */
NS_IMETHODIMP _MYCLASS_::GetFile(IGuestFile * *aFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestFileEvent_GETTER_File_TO(smth) NS_IMETHOD GetFile (IGuestFile * * aFile) { return smth GetFile (aFile); }
#define COM_FORWARD_IGuestFileEvent_GETTER_File_TO_OBJ(obj) COM_FORWARD_IGuestFileEvent_GETTER_File_TO ((obj)->)
#define COM_FORWARD_IGuestFileEvent_GETTER_File_TO_BASE(base) COM_FORWARD_IGuestFileEvent_GETTER_File_TO (base::)
#define COM_FORWARD_IGuestFileEvent_TO(smth) NS_FORWARD_IGUESTFILEEVENT (smth)
#define COM_FORWARD_IGuestFileEvent_TO_OBJ(obj) COM_FORWARD_IGuestFileEvent_TO ((obj)->)
#define COM_FORWARD_IGuestFileEvent_TO_BASE(base) COM_FORWARD_IGuestFileEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestFileEvent;

/* starting interface:    IGuestFileRegisteredEvent */
#define IGUESTFILEREGISTEREDEVENT_IID_STR "d0d93830-70a2-487e-895e-d3fc9679f7b3"

#define IGUESTFILEREGISTEREDEVENT_IID \
  {0xd0d93830, 0x70a2, 0x487e, \
    { 0x89, 0x5e, 0xd3, 0xfc, 0x96, 0x79, 0xf7, 0xb3 }}

class NS_NO_VTABLE IGuestFileRegisteredEvent : public IGuestFileEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTFILEREGISTEREDEVENT_IID)

  /* readonly attribute boolean registered; */
  NS_IMETHOD GetRegistered(PRBool *aRegistered) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTFILEREGISTEREDEVENT \
  NS_IMETHOD GetRegistered(PRBool *aRegistered); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTFILEREGISTEREDEVENT(_to) \
  NS_IMETHOD GetRegistered(PRBool *aRegistered) { return _to GetRegistered(aRegistered); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTFILEREGISTEREDEVENT(_to) \
  NS_IMETHOD GetRegistered(PRBool *aRegistered) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRegistered(aRegistered); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestFileRegisteredEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTFILEREGISTEREDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestFileRegisteredEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute boolean registered; */
NS_IMETHODIMP _MYCLASS_::GetRegistered(PRBool *aRegistered)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestFileRegisteredEvent_GETTER_Registered_TO(smth) NS_IMETHOD GetRegistered (PRBool * aRegistered) { return smth GetRegistered (aRegistered); }
#define COM_FORWARD_IGuestFileRegisteredEvent_GETTER_Registered_TO_OBJ(obj) COM_FORWARD_IGuestFileRegisteredEvent_GETTER_Registered_TO ((obj)->)
#define COM_FORWARD_IGuestFileRegisteredEvent_GETTER_Registered_TO_BASE(base) COM_FORWARD_IGuestFileRegisteredEvent_GETTER_Registered_TO (base::)
#define COM_FORWARD_IGuestFileRegisteredEvent_TO(smth) NS_FORWARD_IGUESTFILEREGISTEREDEVENT (smth)
#define COM_FORWARD_IGuestFileRegisteredEvent_TO_OBJ(obj) COM_FORWARD_IGuestFileRegisteredEvent_TO ((obj)->)
#define COM_FORWARD_IGuestFileRegisteredEvent_TO_BASE(base) COM_FORWARD_IGuestFileRegisteredEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestFileRegisteredEvent;

/* starting interface:    IGuestFileStateChangedEvent */
#define IGUESTFILESTATECHANGEDEVENT_IID_STR "d37fe88f-0979-486c-baa1-3abb144dc82d"

#define IGUESTFILESTATECHANGEDEVENT_IID \
  {0xd37fe88f, 0x0979, 0x486c, \
    { 0xba, 0xa1, 0x3a, 0xbb, 0x14, 0x4d, 0xc8, 0x2d }}

class NS_NO_VTABLE IGuestFileStateChangedEvent : public IGuestFileEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTFILESTATECHANGEDEVENT_IID)

  /* readonly attribute PRUint32 status; */
  NS_IMETHOD GetStatus(PRUint32 *aStatus) = 0;

  /* readonly attribute IVirtualBoxErrorInfo error; */
  NS_IMETHOD GetError(IVirtualBoxErrorInfo * *aError) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTFILESTATECHANGEDEVENT \
  NS_IMETHOD GetStatus(PRUint32 *aStatus); \
  NS_IMETHOD GetError(IVirtualBoxErrorInfo * *aError); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTFILESTATECHANGEDEVENT(_to) \
  NS_IMETHOD GetStatus(PRUint32 *aStatus) { return _to GetStatus(aStatus); } \
  NS_IMETHOD GetError(IVirtualBoxErrorInfo * *aError) { return _to GetError(aError); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTFILESTATECHANGEDEVENT(_to) \
  NS_IMETHOD GetStatus(PRUint32 *aStatus) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStatus(aStatus); } \
  NS_IMETHOD GetError(IVirtualBoxErrorInfo * *aError) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetError(aError); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestFileStateChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTFILESTATECHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestFileStateChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute PRUint32 status; */
NS_IMETHODIMP _MYCLASS_::GetStatus(PRUint32 *aStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IVirtualBoxErrorInfo error; */
NS_IMETHODIMP _MYCLASS_::GetError(IVirtualBoxErrorInfo * *aError)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestFileStateChangedEvent_GETTER_Status_TO(smth) NS_IMETHOD GetStatus (PRUint32 * aStatus) { return smth GetStatus (aStatus); }
#define COM_FORWARD_IGuestFileStateChangedEvent_GETTER_Status_TO_OBJ(obj) COM_FORWARD_IGuestFileStateChangedEvent_GETTER_Status_TO ((obj)->)
#define COM_FORWARD_IGuestFileStateChangedEvent_GETTER_Status_TO_BASE(base) COM_FORWARD_IGuestFileStateChangedEvent_GETTER_Status_TO (base::)
#define COM_FORWARD_IGuestFileStateChangedEvent_GETTER_Error_TO(smth) NS_IMETHOD GetError (IVirtualBoxErrorInfo * * aError) { return smth GetError (aError); }
#define COM_FORWARD_IGuestFileStateChangedEvent_GETTER_Error_TO_OBJ(obj) COM_FORWARD_IGuestFileStateChangedEvent_GETTER_Error_TO ((obj)->)
#define COM_FORWARD_IGuestFileStateChangedEvent_GETTER_Error_TO_BASE(base) COM_FORWARD_IGuestFileStateChangedEvent_GETTER_Error_TO (base::)
#define COM_FORWARD_IGuestFileStateChangedEvent_TO(smth) NS_FORWARD_IGUESTFILESTATECHANGEDEVENT (smth)
#define COM_FORWARD_IGuestFileStateChangedEvent_TO_OBJ(obj) COM_FORWARD_IGuestFileStateChangedEvent_TO ((obj)->)
#define COM_FORWARD_IGuestFileStateChangedEvent_TO_BASE(base) COM_FORWARD_IGuestFileStateChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestFileStateChangedEvent;

/* starting interface:    IGuestFileIOEvent */
#define IGUESTFILEIOEVENT_IID_STR "b5191a7c-9536-4ef8-820e-3b0e17e5bbc8"

#define IGUESTFILEIOEVENT_IID \
  {0xb5191a7c, 0x9536, 0x4ef8, \
    { 0x82, 0x0e, 0x3b, 0x0e, 0x17, 0xe5, 0xbb, 0xc8 }}

class NS_NO_VTABLE IGuestFileIOEvent : public IGuestFileEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTFILEIOEVENT_IID)

  /* readonly attribute long long offset; */
  NS_IMETHOD GetOffset(PRInt64 *aOffset) = 0;

  /* readonly attribute unsigned long processed; */
  NS_IMETHOD GetProcessed(PRUint32 *aProcessed) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTFILEIOEVENT \
  NS_IMETHOD GetOffset(PRInt64 *aOffset); \
  NS_IMETHOD GetProcessed(PRUint32 *aProcessed); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTFILEIOEVENT(_to) \
  NS_IMETHOD GetOffset(PRInt64 *aOffset) { return _to GetOffset(aOffset); } \
  NS_IMETHOD GetProcessed(PRUint32 *aProcessed) { return _to GetProcessed(aProcessed); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTFILEIOEVENT(_to) \
  NS_IMETHOD GetOffset(PRInt64 *aOffset) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOffset(aOffset); } \
  NS_IMETHOD GetProcessed(PRUint32 *aProcessed) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessed(aProcessed); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestFileIOEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTFILEIOEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestFileIOEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute long long offset; */
NS_IMETHODIMP _MYCLASS_::GetOffset(PRInt64 *aOffset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long processed; */
NS_IMETHODIMP _MYCLASS_::GetProcessed(PRUint32 *aProcessed)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestFileIOEvent_GETTER_Offset_TO(smth) NS_IMETHOD GetOffset (PRInt64 * aOffset) { return smth GetOffset (aOffset); }
#define COM_FORWARD_IGuestFileIOEvent_GETTER_Offset_TO_OBJ(obj) COM_FORWARD_IGuestFileIOEvent_GETTER_Offset_TO ((obj)->)
#define COM_FORWARD_IGuestFileIOEvent_GETTER_Offset_TO_BASE(base) COM_FORWARD_IGuestFileIOEvent_GETTER_Offset_TO (base::)
#define COM_FORWARD_IGuestFileIOEvent_GETTER_Processed_TO(smth) NS_IMETHOD GetProcessed (PRUint32 * aProcessed) { return smth GetProcessed (aProcessed); }
#define COM_FORWARD_IGuestFileIOEvent_GETTER_Processed_TO_OBJ(obj) COM_FORWARD_IGuestFileIOEvent_GETTER_Processed_TO ((obj)->)
#define COM_FORWARD_IGuestFileIOEvent_GETTER_Processed_TO_BASE(base) COM_FORWARD_IGuestFileIOEvent_GETTER_Processed_TO (base::)
#define COM_FORWARD_IGuestFileIOEvent_TO(smth) NS_FORWARD_IGUESTFILEIOEVENT (smth)
#define COM_FORWARD_IGuestFileIOEvent_TO_OBJ(obj) COM_FORWARD_IGuestFileIOEvent_TO ((obj)->)
#define COM_FORWARD_IGuestFileIOEvent_TO_BASE(base) COM_FORWARD_IGuestFileIOEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestFileIOEvent;

/* starting interface:    IGuestFileOffsetChangedEvent */
#define IGUESTFILEOFFSETCHANGEDEVENT_IID_STR "e8f79a21-1207-4179-94cf-ca250036308f"

#define IGUESTFILEOFFSETCHANGEDEVENT_IID \
  {0xe8f79a21, 0x1207, 0x4179, \
    { 0x94, 0xcf, 0xca, 0x25, 0x00, 0x36, 0x30, 0x8f }}

class NS_NO_VTABLE IGuestFileOffsetChangedEvent : public IGuestFileIOEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTFILEOFFSETCHANGEDEVENT_IID)

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTFILEOFFSETCHANGEDEVENT \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTFILEOFFSETCHANGEDEVENT(_to) \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTFILEOFFSETCHANGEDEVENT(_to) \
  /* no methods! */

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestFileOffsetChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTFILEOFFSETCHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestFileOffsetChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestFileOffsetChangedEvent_TO(smth) NS_FORWARD_IGUESTFILEOFFSETCHANGEDEVENT (smth)
#define COM_FORWARD_IGuestFileOffsetChangedEvent_TO_OBJ(obj) COM_FORWARD_IGuestFileOffsetChangedEvent_TO ((obj)->)
#define COM_FORWARD_IGuestFileOffsetChangedEvent_TO_BASE(base) COM_FORWARD_IGuestFileOffsetChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestFileOffsetChangedEvent;

/* starting interface:    IGuestFileReadEvent */
#define IGUESTFILEREADEVENT_IID_STR "4ee3cbcb-486f-40db-9150-deee3fd24189"

#define IGUESTFILEREADEVENT_IID \
  {0x4ee3cbcb, 0x486f, 0x40db, \
    { 0x91, 0x50, 0xde, 0xee, 0x3f, 0xd2, 0x41, 0x89 }}

class NS_NO_VTABLE IGuestFileReadEvent : public IGuestFileIOEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTFILEREADEVENT_IID)

  /* void getData (out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
  NS_IMETHOD GetData(PRUint32 *dataSize, PRUint8 **data) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTFILEREADEVENT \
  NS_IMETHOD GetData(PRUint32 *dataSize, PRUint8 **data); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTFILEREADEVENT(_to) \
  NS_IMETHOD GetData(PRUint32 *dataSize, PRUint8 **data) { return _to GetData(dataSize, data); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTFILEREADEVENT(_to) \
  NS_IMETHOD GetData(PRUint32 *dataSize, PRUint8 **data) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetData(dataSize, data); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestFileReadEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTFILEREADEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestFileReadEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* void getData (out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
NS_IMETHODIMP _MYCLASS_::GetData(PRUint32 *dataSize, PRUint8 **data)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestFileReadEvent_GETTER_Data_TO(smth) NS_IMETHOD GetData (PRUint32 * aDataSize, PRUint8 * * aData) { return smth GetData (aDataSize, aData); }
#define COM_FORWARD_IGuestFileReadEvent_GETTER_Data_TO_OBJ(obj) COM_FORWARD_IGuestFileReadEvent_GETTER_Data_TO ((obj)->)
#define COM_FORWARD_IGuestFileReadEvent_GETTER_Data_TO_BASE(base) COM_FORWARD_IGuestFileReadEvent_GETTER_Data_TO (base::)
#define COM_FORWARD_IGuestFileReadEvent_TO(smth) NS_FORWARD_IGUESTFILEREADEVENT (smth)
#define COM_FORWARD_IGuestFileReadEvent_TO_OBJ(obj) COM_FORWARD_IGuestFileReadEvent_TO ((obj)->)
#define COM_FORWARD_IGuestFileReadEvent_TO_BASE(base) COM_FORWARD_IGuestFileReadEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestFileReadEvent;

/* starting interface:    IGuestFileWriteEvent */
#define IGUESTFILEWRITEEVENT_IID_STR "e062a915-3cf5-4c0a-bc90-9b8d4cc94d89"

#define IGUESTFILEWRITEEVENT_IID \
  {0xe062a915, 0x3cf5, 0x4c0a, \
    { 0xbc, 0x90, 0x9b, 0x8d, 0x4c, 0xc9, 0x4d, 0x89 }}

class NS_NO_VTABLE IGuestFileWriteEvent : public IGuestFileIOEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTFILEWRITEEVENT_IID)

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTFILEWRITEEVENT \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTFILEWRITEEVENT(_to) \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTFILEWRITEEVENT(_to) \
  /* no methods! */

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestFileWriteEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTFILEWRITEEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestFileWriteEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestFileWriteEvent_TO(smth) NS_FORWARD_IGUESTFILEWRITEEVENT (smth)
#define COM_FORWARD_IGuestFileWriteEvent_TO_OBJ(obj) COM_FORWARD_IGuestFileWriteEvent_TO ((obj)->)
#define COM_FORWARD_IGuestFileWriteEvent_TO_BASE(base) COM_FORWARD_IGuestFileWriteEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestFileWriteEvent;

/* starting interface:    IVRDEServerChangedEvent */
#define IVRDESERVERCHANGEDEVENT_IID_STR "a06fd66a-3188-4c8c-8756-1395e8cb691c"

#define IVRDESERVERCHANGEDEVENT_IID \
  {0xa06fd66a, 0x3188, 0x4c8c, \
    { 0x87, 0x56, 0x13, 0x95, 0xe8, 0xcb, 0x69, 0x1c }}

class NS_NO_VTABLE IVRDEServerChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVRDESERVERCHANGEDEVENT_IID)

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVRDESERVERCHANGEDEVENT \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IVRDESERVERCHANGEDEVENT(_to) \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IVRDESERVERCHANGEDEVENT(_to) \
  /* no methods! */

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IVRDEServerChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IVRDESERVERCHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IVRDEServerChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IVRDEServerChangedEvent_TO(smth) NS_FORWARD_IVRDESERVERCHANGEDEVENT (smth)
#define COM_FORWARD_IVRDEServerChangedEvent_TO_OBJ(obj) COM_FORWARD_IVRDEServerChangedEvent_TO ((obj)->)
#define COM_FORWARD_IVRDEServerChangedEvent_TO_BASE(base) COM_FORWARD_IVRDEServerChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IVRDEServerChangedEvent;

/* starting interface:    IVRDEServerInfoChangedEvent */
#define IVRDESERVERINFOCHANGEDEVENT_IID_STR "dd6a1080-e1b7-4339-a549-f0878115596e"

#define IVRDESERVERINFOCHANGEDEVENT_IID \
  {0xdd6a1080, 0xe1b7, 0x4339, \
    { 0xa5, 0x49, 0xf0, 0x87, 0x81, 0x15, 0x59, 0x6e }}

class NS_NO_VTABLE IVRDEServerInfoChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVRDESERVERINFOCHANGEDEVENT_IID)

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVRDESERVERINFOCHANGEDEVENT \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IVRDESERVERINFOCHANGEDEVENT(_to) \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IVRDESERVERINFOCHANGEDEVENT(_to) \
  /* no methods! */

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IVRDEServerInfoChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IVRDESERVERINFOCHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IVRDEServerInfoChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IVRDEServerInfoChangedEvent_TO(smth) NS_FORWARD_IVRDESERVERINFOCHANGEDEVENT (smth)
#define COM_FORWARD_IVRDEServerInfoChangedEvent_TO_OBJ(obj) COM_FORWARD_IVRDEServerInfoChangedEvent_TO ((obj)->)
#define COM_FORWARD_IVRDEServerInfoChangedEvent_TO_BASE(base) COM_FORWARD_IVRDEServerInfoChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IVRDEServerInfoChangedEvent;

/* starting interface:    IVideoCaptureChangedEvent */
#define IVIDEOCAPTURECHANGEDEVENT_IID_STR "6215d169-25dd-4719-ab34-c908701efb58"

#define IVIDEOCAPTURECHANGEDEVENT_IID \
  {0x6215d169, 0x25dd, 0x4719, \
    { 0xab, 0x34, 0xc9, 0x08, 0x70, 0x1e, 0xfb, 0x58 }}

class NS_NO_VTABLE IVideoCaptureChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVIDEOCAPTURECHANGEDEVENT_IID)

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVIDEOCAPTURECHANGEDEVENT \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IVIDEOCAPTURECHANGEDEVENT(_to) \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IVIDEOCAPTURECHANGEDEVENT(_to) \
  /* no methods! */

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IVideoCaptureChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IVIDEOCAPTURECHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IVideoCaptureChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IVideoCaptureChangedEvent_TO(smth) NS_FORWARD_IVIDEOCAPTURECHANGEDEVENT (smth)
#define COM_FORWARD_IVideoCaptureChangedEvent_TO_OBJ(obj) COM_FORWARD_IVideoCaptureChangedEvent_TO ((obj)->)
#define COM_FORWARD_IVideoCaptureChangedEvent_TO_BASE(base) COM_FORWARD_IVideoCaptureChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IVideoCaptureChangedEvent;

/* starting interface:    IUSBControllerChangedEvent */
#define IUSBCONTROLLERCHANGEDEVENT_IID_STR "93badc0c-61d9-4940-a084-e6bb29af3d83"

#define IUSBCONTROLLERCHANGEDEVENT_IID \
  {0x93badc0c, 0x61d9, 0x4940, \
    { 0xa0, 0x84, 0xe6, 0xbb, 0x29, 0xaf, 0x3d, 0x83 }}

class NS_NO_VTABLE IUSBControllerChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IUSBCONTROLLERCHANGEDEVENT_IID)

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IUSBCONTROLLERCHANGEDEVENT \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IUSBCONTROLLERCHANGEDEVENT(_to) \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IUSBCONTROLLERCHANGEDEVENT(_to) \
  /* no methods! */

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IUSBControllerChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IUSBCONTROLLERCHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IUSBControllerChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IUSBControllerChangedEvent_TO(smth) NS_FORWARD_IUSBCONTROLLERCHANGEDEVENT (smth)
#define COM_FORWARD_IUSBControllerChangedEvent_TO_OBJ(obj) COM_FORWARD_IUSBControllerChangedEvent_TO ((obj)->)
#define COM_FORWARD_IUSBControllerChangedEvent_TO_BASE(base) COM_FORWARD_IUSBControllerChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IUSBControllerChangedEvent;

/* starting interface:    IUSBDeviceStateChangedEvent */
#define IUSBDEVICESTATECHANGEDEVENT_IID_STR "806da61b-6679-422a-b629-51b06b0c6d93"

#define IUSBDEVICESTATECHANGEDEVENT_IID \
  {0x806da61b, 0x6679, 0x422a, \
    { 0xb6, 0x29, 0x51, 0xb0, 0x6b, 0x0c, 0x6d, 0x93 }}

class NS_NO_VTABLE IUSBDeviceStateChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IUSBDEVICESTATECHANGEDEVENT_IID)

  /* readonly attribute IUSBDevice device; */
  NS_IMETHOD GetDevice(IUSBDevice * *aDevice) = 0;

  /* readonly attribute boolean attached; */
  NS_IMETHOD GetAttached(PRBool *aAttached) = 0;

  /* readonly attribute IVirtualBoxErrorInfo error; */
  NS_IMETHOD GetError(IVirtualBoxErrorInfo * *aError) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IUSBDEVICESTATECHANGEDEVENT \
  NS_IMETHOD GetDevice(IUSBDevice * *aDevice); \
  NS_IMETHOD GetAttached(PRBool *aAttached); \
  NS_IMETHOD GetError(IVirtualBoxErrorInfo * *aError); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IUSBDEVICESTATECHANGEDEVENT(_to) \
  NS_IMETHOD GetDevice(IUSBDevice * *aDevice) { return _to GetDevice(aDevice); } \
  NS_IMETHOD GetAttached(PRBool *aAttached) { return _to GetAttached(aAttached); } \
  NS_IMETHOD GetError(IVirtualBoxErrorInfo * *aError) { return _to GetError(aError); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IUSBDEVICESTATECHANGEDEVENT(_to) \
  NS_IMETHOD GetDevice(IUSBDevice * *aDevice) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDevice(aDevice); } \
  NS_IMETHOD GetAttached(PRBool *aAttached) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAttached(aAttached); } \
  NS_IMETHOD GetError(IVirtualBoxErrorInfo * *aError) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetError(aError); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IUSBDeviceStateChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IUSBDEVICESTATECHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IUSBDeviceStateChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute IUSBDevice device; */
NS_IMETHODIMP _MYCLASS_::GetDevice(IUSBDevice * *aDevice)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean attached; */
NS_IMETHODIMP _MYCLASS_::GetAttached(PRBool *aAttached)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IVirtualBoxErrorInfo error; */
NS_IMETHODIMP _MYCLASS_::GetError(IVirtualBoxErrorInfo * *aError)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IUSBDeviceStateChangedEvent_GETTER_Device_TO(smth) NS_IMETHOD GetDevice (IUSBDevice * * aDevice) { return smth GetDevice (aDevice); }
#define COM_FORWARD_IUSBDeviceStateChangedEvent_GETTER_Device_TO_OBJ(obj) COM_FORWARD_IUSBDeviceStateChangedEvent_GETTER_Device_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceStateChangedEvent_GETTER_Device_TO_BASE(base) COM_FORWARD_IUSBDeviceStateChangedEvent_GETTER_Device_TO (base::)
#define COM_FORWARD_IUSBDeviceStateChangedEvent_GETTER_Attached_TO(smth) NS_IMETHOD GetAttached (PRBool * aAttached) { return smth GetAttached (aAttached); }
#define COM_FORWARD_IUSBDeviceStateChangedEvent_GETTER_Attached_TO_OBJ(obj) COM_FORWARD_IUSBDeviceStateChangedEvent_GETTER_Attached_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceStateChangedEvent_GETTER_Attached_TO_BASE(base) COM_FORWARD_IUSBDeviceStateChangedEvent_GETTER_Attached_TO (base::)
#define COM_FORWARD_IUSBDeviceStateChangedEvent_GETTER_Error_TO(smth) NS_IMETHOD GetError (IVirtualBoxErrorInfo * * aError) { return smth GetError (aError); }
#define COM_FORWARD_IUSBDeviceStateChangedEvent_GETTER_Error_TO_OBJ(obj) COM_FORWARD_IUSBDeviceStateChangedEvent_GETTER_Error_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceStateChangedEvent_GETTER_Error_TO_BASE(base) COM_FORWARD_IUSBDeviceStateChangedEvent_GETTER_Error_TO (base::)
#define COM_FORWARD_IUSBDeviceStateChangedEvent_TO(smth) NS_FORWARD_IUSBDEVICESTATECHANGEDEVENT (smth)
#define COM_FORWARD_IUSBDeviceStateChangedEvent_TO_OBJ(obj) COM_FORWARD_IUSBDeviceStateChangedEvent_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceStateChangedEvent_TO_BASE(base) COM_FORWARD_IUSBDeviceStateChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IUSBDeviceStateChangedEvent;

/* starting interface:    ISharedFolderChangedEvent */
#define ISHAREDFOLDERCHANGEDEVENT_IID_STR "b66349b5-3534-4239-b2de-8e1535d94c0b"

#define ISHAREDFOLDERCHANGEDEVENT_IID \
  {0xb66349b5, 0x3534, 0x4239, \
    { 0xb2, 0xde, 0x8e, 0x15, 0x35, 0xd9, 0x4c, 0x0b }}

class NS_NO_VTABLE ISharedFolderChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISHAREDFOLDERCHANGEDEVENT_IID)

  /* readonly attribute PRUint32 scope; */
  NS_IMETHOD GetScope(PRUint32 *aScope) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISHAREDFOLDERCHANGEDEVENT \
  NS_IMETHOD GetScope(PRUint32 *aScope); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISHAREDFOLDERCHANGEDEVENT(_to) \
  NS_IMETHOD GetScope(PRUint32 *aScope) { return _to GetScope(aScope); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISHAREDFOLDERCHANGEDEVENT(_to) \
  NS_IMETHOD GetScope(PRUint32 *aScope) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetScope(aScope); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ISharedFolderChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISHAREDFOLDERCHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ISharedFolderChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute PRUint32 scope; */
NS_IMETHODIMP _MYCLASS_::GetScope(PRUint32 *aScope)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_ISharedFolderChangedEvent_GETTER_Scope_TO(smth) NS_IMETHOD GetScope (PRUint32 * aScope) { return smth GetScope (aScope); }
#define COM_FORWARD_ISharedFolderChangedEvent_GETTER_Scope_TO_OBJ(obj) COM_FORWARD_ISharedFolderChangedEvent_GETTER_Scope_TO ((obj)->)
#define COM_FORWARD_ISharedFolderChangedEvent_GETTER_Scope_TO_BASE(base) COM_FORWARD_ISharedFolderChangedEvent_GETTER_Scope_TO (base::)
#define COM_FORWARD_ISharedFolderChangedEvent_TO(smth) NS_FORWARD_ISHAREDFOLDERCHANGEDEVENT (smth)
#define COM_FORWARD_ISharedFolderChangedEvent_TO_OBJ(obj) COM_FORWARD_ISharedFolderChangedEvent_TO ((obj)->)
#define COM_FORWARD_ISharedFolderChangedEvent_TO_BASE(base) COM_FORWARD_ISharedFolderChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_ISharedFolderChangedEvent;

/* starting interface:    IRuntimeErrorEvent */
#define IRUNTIMEERROREVENT_IID_STR "883dd18b-0721-4cde-867c-1a82abaf914c"

#define IRUNTIMEERROREVENT_IID \
  {0x883dd18b, 0x0721, 0x4cde, \
    { 0x86, 0x7c, 0x1a, 0x82, 0xab, 0xaf, 0x91, 0x4c }}

class NS_NO_VTABLE IRuntimeErrorEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IRUNTIMEERROREVENT_IID)

  /* readonly attribute boolean fatal; */
  NS_IMETHOD GetFatal(PRBool *aFatal) = 0;

  /* readonly attribute wstring id; */
  NS_IMETHOD GetId(PRUnichar * *aId) = 0;

  /* readonly attribute wstring message; */
  NS_IMETHOD GetMessage(PRUnichar * *aMessage) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IRUNTIMEERROREVENT \
  NS_IMETHOD GetFatal(PRBool *aFatal); \
  NS_IMETHOD GetId(PRUnichar * *aId); \
  NS_IMETHOD GetMessage(PRUnichar * *aMessage); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IRUNTIMEERROREVENT(_to) \
  NS_IMETHOD GetFatal(PRBool *aFatal) { return _to GetFatal(aFatal); } \
  NS_IMETHOD GetId(PRUnichar * *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetMessage(PRUnichar * *aMessage) { return _to GetMessage(aMessage); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IRUNTIMEERROREVENT(_to) \
  NS_IMETHOD GetFatal(PRBool *aFatal) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFatal(aFatal); } \
  NS_IMETHOD GetId(PRUnichar * *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetMessage(PRUnichar * *aMessage) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMessage(aMessage); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IRuntimeErrorEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IRUNTIMEERROREVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IRuntimeErrorEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute boolean fatal; */
NS_IMETHODIMP _MYCLASS_::GetFatal(PRBool *aFatal)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring id; */
NS_IMETHODIMP _MYCLASS_::GetId(PRUnichar * *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring message; */
NS_IMETHODIMP _MYCLASS_::GetMessage(PRUnichar * *aMessage)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IRuntimeErrorEvent_GETTER_Fatal_TO(smth) NS_IMETHOD GetFatal (PRBool * aFatal) { return smth GetFatal (aFatal); }
#define COM_FORWARD_IRuntimeErrorEvent_GETTER_Fatal_TO_OBJ(obj) COM_FORWARD_IRuntimeErrorEvent_GETTER_Fatal_TO ((obj)->)
#define COM_FORWARD_IRuntimeErrorEvent_GETTER_Fatal_TO_BASE(base) COM_FORWARD_IRuntimeErrorEvent_GETTER_Fatal_TO (base::)
#define COM_FORWARD_IRuntimeErrorEvent_GETTER_Id_TO(smth) NS_IMETHOD GetId (PRUnichar * * aId) { return smth GetId (aId); }
#define COM_FORWARD_IRuntimeErrorEvent_GETTER_Id_TO_OBJ(obj) COM_FORWARD_IRuntimeErrorEvent_GETTER_Id_TO ((obj)->)
#define COM_FORWARD_IRuntimeErrorEvent_GETTER_Id_TO_BASE(base) COM_FORWARD_IRuntimeErrorEvent_GETTER_Id_TO (base::)
#define COM_FORWARD_IRuntimeErrorEvent_GETTER_Message_TO(smth) NS_IMETHOD GetMessage (PRUnichar * * aMessage) { return smth GetMessage (aMessage); }
#define COM_FORWARD_IRuntimeErrorEvent_GETTER_Message_TO_OBJ(obj) COM_FORWARD_IRuntimeErrorEvent_GETTER_Message_TO ((obj)->)
#define COM_FORWARD_IRuntimeErrorEvent_GETTER_Message_TO_BASE(base) COM_FORWARD_IRuntimeErrorEvent_GETTER_Message_TO (base::)
#define COM_FORWARD_IRuntimeErrorEvent_TO(smth) NS_FORWARD_IRUNTIMEERROREVENT (smth)
#define COM_FORWARD_IRuntimeErrorEvent_TO_OBJ(obj) COM_FORWARD_IRuntimeErrorEvent_TO ((obj)->)
#define COM_FORWARD_IRuntimeErrorEvent_TO_BASE(base) COM_FORWARD_IRuntimeErrorEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IRuntimeErrorEvent;

/* starting interface:    IEventSourceChangedEvent */
#define IEVENTSOURCECHANGEDEVENT_IID_STR "e7932cb8-f6d4-4ab6-9cbf-558eb8959a6a"

#define IEVENTSOURCECHANGEDEVENT_IID \
  {0xe7932cb8, 0xf6d4, 0x4ab6, \
    { 0x9c, 0xbf, 0x55, 0x8e, 0xb8, 0x95, 0x9a, 0x6a }}

class NS_NO_VTABLE IEventSourceChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IEVENTSOURCECHANGEDEVENT_IID)

  /* readonly attribute IEventListener listener; */
  NS_IMETHOD GetListener(IEventListener * *aListener) = 0;

  /* readonly attribute boolean add; */
  NS_IMETHOD GetAdd(PRBool *aAdd) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IEVENTSOURCECHANGEDEVENT \
  NS_IMETHOD GetListener(IEventListener * *aListener); \
  NS_IMETHOD GetAdd(PRBool *aAdd); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IEVENTSOURCECHANGEDEVENT(_to) \
  NS_IMETHOD GetListener(IEventListener * *aListener) { return _to GetListener(aListener); } \
  NS_IMETHOD GetAdd(PRBool *aAdd) { return _to GetAdd(aAdd); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IEVENTSOURCECHANGEDEVENT(_to) \
  NS_IMETHOD GetListener(IEventListener * *aListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetListener(aListener); } \
  NS_IMETHOD GetAdd(PRBool *aAdd) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAdd(aAdd); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IEventSourceChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IEVENTSOURCECHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IEventSourceChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute IEventListener listener; */
NS_IMETHODIMP _MYCLASS_::GetListener(IEventListener * *aListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean add; */
NS_IMETHODIMP _MYCLASS_::GetAdd(PRBool *aAdd)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IEventSourceChangedEvent_GETTER_Listener_TO(smth) NS_IMETHOD GetListener (IEventListener * * aListener) { return smth GetListener (aListener); }
#define COM_FORWARD_IEventSourceChangedEvent_GETTER_Listener_TO_OBJ(obj) COM_FORWARD_IEventSourceChangedEvent_GETTER_Listener_TO ((obj)->)
#define COM_FORWARD_IEventSourceChangedEvent_GETTER_Listener_TO_BASE(base) COM_FORWARD_IEventSourceChangedEvent_GETTER_Listener_TO (base::)
#define COM_FORWARD_IEventSourceChangedEvent_GETTER_Add_TO(smth) NS_IMETHOD GetAdd (PRBool * aAdd) { return smth GetAdd (aAdd); }
#define COM_FORWARD_IEventSourceChangedEvent_GETTER_Add_TO_OBJ(obj) COM_FORWARD_IEventSourceChangedEvent_GETTER_Add_TO ((obj)->)
#define COM_FORWARD_IEventSourceChangedEvent_GETTER_Add_TO_BASE(base) COM_FORWARD_IEventSourceChangedEvent_GETTER_Add_TO (base::)
#define COM_FORWARD_IEventSourceChangedEvent_TO(smth) NS_FORWARD_IEVENTSOURCECHANGEDEVENT (smth)
#define COM_FORWARD_IEventSourceChangedEvent_TO_OBJ(obj) COM_FORWARD_IEventSourceChangedEvent_TO ((obj)->)
#define COM_FORWARD_IEventSourceChangedEvent_TO_BASE(base) COM_FORWARD_IEventSourceChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IEventSourceChangedEvent;

/* starting interface:    IExtraDataChangedEvent */
#define IEXTRADATACHANGEDEVENT_IID_STR "024f00ce-6e0b-492a-a8d0-968472a94dc7"

#define IEXTRADATACHANGEDEVENT_IID \
  {0x024f00ce, 0x6e0b, 0x492a, \
    { 0xa8, 0xd0, 0x96, 0x84, 0x72, 0xa9, 0x4d, 0xc7 }}

class NS_NO_VTABLE IExtraDataChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IEXTRADATACHANGEDEVENT_IID)

  /* readonly attribute wstring machineId; */
  NS_IMETHOD GetMachineId(PRUnichar * *aMachineId) = 0;

  /* readonly attribute wstring key; */
  NS_IMETHOD GetKey(PRUnichar * *aKey) = 0;

  /* readonly attribute wstring value; */
  NS_IMETHOD GetValue(PRUnichar * *aValue) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IEXTRADATACHANGEDEVENT \
  NS_IMETHOD GetMachineId(PRUnichar * *aMachineId); \
  NS_IMETHOD GetKey(PRUnichar * *aKey); \
  NS_IMETHOD GetValue(PRUnichar * *aValue); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IEXTRADATACHANGEDEVENT(_to) \
  NS_IMETHOD GetMachineId(PRUnichar * *aMachineId) { return _to GetMachineId(aMachineId); } \
  NS_IMETHOD GetKey(PRUnichar * *aKey) { return _to GetKey(aKey); } \
  NS_IMETHOD GetValue(PRUnichar * *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_IEXTRADATACHANGEDEVENT(_to) \
  NS_IMETHOD GetMachineId(PRUnichar * *aMachineId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMachineId(aMachineId); } \
  NS_IMETHOD GetKey(PRUnichar * *aKey) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetKey(aKey); } \
  NS_IMETHOD GetValue(PRUnichar * *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 IExtraDataChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IEXTRADATACHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IExtraDataChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring machineId; */
NS_IMETHODIMP _MYCLASS_::GetMachineId(PRUnichar * *aMachineId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring key; */
NS_IMETHODIMP _MYCLASS_::GetKey(PRUnichar * *aKey)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring value; */
NS_IMETHODIMP _MYCLASS_::GetValue(PRUnichar * *aValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IExtraDataChangedEvent_GETTER_MachineId_TO(smth) NS_IMETHOD GetMachineId (PRUnichar * * aMachineId) { return smth GetMachineId (aMachineId); }
#define COM_FORWARD_IExtraDataChangedEvent_GETTER_MachineId_TO_OBJ(obj) COM_FORWARD_IExtraDataChangedEvent_GETTER_MachineId_TO ((obj)->)
#define COM_FORWARD_IExtraDataChangedEvent_GETTER_MachineId_TO_BASE(base) COM_FORWARD_IExtraDataChangedEvent_GETTER_MachineId_TO (base::)
#define COM_FORWARD_IExtraDataChangedEvent_GETTER_Key_TO(smth) NS_IMETHOD GetKey (PRUnichar * * aKey) { return smth GetKey (aKey); }
#define COM_FORWARD_IExtraDataChangedEvent_GETTER_Key_TO_OBJ(obj) COM_FORWARD_IExtraDataChangedEvent_GETTER_Key_TO ((obj)->)
#define COM_FORWARD_IExtraDataChangedEvent_GETTER_Key_TO_BASE(base) COM_FORWARD_IExtraDataChangedEvent_GETTER_Key_TO (base::)
#define COM_FORWARD_IExtraDataChangedEvent_GETTER_Value_TO(smth) NS_IMETHOD GetValue (PRUnichar * * aValue) { return smth GetValue (aValue); }
#define COM_FORWARD_IExtraDataChangedEvent_GETTER_Value_TO_OBJ(obj) COM_FORWARD_IExtraDataChangedEvent_GETTER_Value_TO ((obj)->)
#define COM_FORWARD_IExtraDataChangedEvent_GETTER_Value_TO_BASE(base) COM_FORWARD_IExtraDataChangedEvent_GETTER_Value_TO (base::)
#define COM_FORWARD_IExtraDataChangedEvent_TO(smth) NS_FORWARD_IEXTRADATACHANGEDEVENT (smth)
#define COM_FORWARD_IExtraDataChangedEvent_TO_OBJ(obj) COM_FORWARD_IExtraDataChangedEvent_TO ((obj)->)
#define COM_FORWARD_IExtraDataChangedEvent_TO_BASE(base) COM_FORWARD_IExtraDataChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IExtraDataChangedEvent;

/* starting interface:    IVetoEvent */
#define IVETOEVENT_IID_STR "9a1a4130-69fe-472f-ac10-c6fa25d75007"

#define IVETOEVENT_IID \
  {0x9a1a4130, 0x69fe, 0x472f, \
    { 0xac, 0x10, 0xc6, 0xfa, 0x25, 0xd7, 0x50, 0x07 }}

class NS_NO_VTABLE IVetoEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVETOEVENT_IID)

  /* void addVeto (in wstring reason); */
  NS_IMETHOD AddVeto(const PRUnichar *reason) = 0;

  /* void isVetoed ([retval] out boolean result); */
  NS_IMETHOD IsVetoed(PRBool *result) = 0;

  /* void getVetos (out unsigned long resultSize, [array, size_is (resultSize), retval] out wstring result); */
  NS_IMETHOD GetVetos(PRUint32 *resultSize, PRUnichar ***result) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVETOEVENT \
  NS_IMETHOD AddVeto(const PRUnichar *reason); \
  NS_IMETHOD IsVetoed(PRBool *result); \
  NS_IMETHOD GetVetos(PRUint32 *resultSize, PRUnichar ***result); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IVETOEVENT(_to) \
  NS_IMETHOD AddVeto(const PRUnichar *reason) { return _to AddVeto(reason); } \
  NS_IMETHOD IsVetoed(PRBool *result) { return _to IsVetoed(result); } \
  NS_IMETHOD GetVetos(PRUint32 *resultSize, PRUnichar ***result) { return _to GetVetos(resultSize, result); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IVETOEVENT(_to) \
  NS_IMETHOD AddVeto(const PRUnichar *reason) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddVeto(reason); } \
  NS_IMETHOD IsVetoed(PRBool *result) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsVetoed(result); } \
  NS_IMETHOD GetVetos(PRUint32 *resultSize, PRUnichar ***result) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVetos(resultSize, result); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IVetoEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IVETOEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IVetoEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* void addVeto (in wstring reason); */
NS_IMETHODIMP _MYCLASS_::AddVeto(const PRUnichar *reason)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void isVetoed ([retval] out boolean result); */
NS_IMETHODIMP _MYCLASS_::IsVetoed(PRBool *result)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getVetos (out unsigned long resultSize, [array, size_is (resultSize), retval] out wstring result); */
NS_IMETHODIMP _MYCLASS_::GetVetos(PRUint32 *resultSize, PRUnichar ***result)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IVetoEvent_AddVeto_TO(smth) NS_IMETHOD AddVeto (PRUnichar * aReason) { return smth AddVeto (aReason); }
#define COM_FORWARD_IVetoEvent_AddVeto_TO_OBJ(obj) COM_FORWARD_IVetoEvent_AddVeto_TO ((obj)->)
#define COM_FORWARD_IVetoEvent_AddVeto_TO_BASE(base) COM_FORWARD_IVetoEvent_AddVeto_TO (base::)
#define COM_FORWARD_IVetoEvent_IsVetoed_TO(smth) NS_IMETHOD IsVetoed (PRBool * aResult) { return smth IsVetoed (aResult); }
#define COM_FORWARD_IVetoEvent_IsVetoed_TO_OBJ(obj) COM_FORWARD_IVetoEvent_IsVetoed_TO ((obj)->)
#define COM_FORWARD_IVetoEvent_IsVetoed_TO_BASE(base) COM_FORWARD_IVetoEvent_IsVetoed_TO (base::)
#define COM_FORWARD_IVetoEvent_GetVetos_TO(smth) NS_IMETHOD GetVetos (PRUint32 * aResultSize, PRUnichar * * * aResult) { return smth GetVetos (aResultSize, aResult); }
#define COM_FORWARD_IVetoEvent_GetVetos_TO_OBJ(obj) COM_FORWARD_IVetoEvent_GetVetos_TO ((obj)->)
#define COM_FORWARD_IVetoEvent_GetVetos_TO_BASE(base) COM_FORWARD_IVetoEvent_GetVetos_TO (base::)
#define COM_FORWARD_IVetoEvent_TO(smth) NS_FORWARD_IVETOEVENT (smth)
#define COM_FORWARD_IVetoEvent_TO_OBJ(obj) COM_FORWARD_IVetoEvent_TO ((obj)->)
#define COM_FORWARD_IVetoEvent_TO_BASE(base) COM_FORWARD_IVetoEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IVetoEvent;

/* starting interface:    IExtraDataCanChangeEvent */
#define IEXTRADATACANCHANGEEVENT_IID_STR "245d88bd-800a-40f8-87a6-170d02249a55"

#define IEXTRADATACANCHANGEEVENT_IID \
  {0x245d88bd, 0x800a, 0x40f8, \
    { 0x87, 0xa6, 0x17, 0x0d, 0x02, 0x24, 0x9a, 0x55 }}

class NS_NO_VTABLE IExtraDataCanChangeEvent : public IVetoEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IEXTRADATACANCHANGEEVENT_IID)

  /* readonly attribute wstring machineId; */
  NS_IMETHOD GetMachineId(PRUnichar * *aMachineId) = 0;

  /* readonly attribute wstring key; */
  NS_IMETHOD GetKey(PRUnichar * *aKey) = 0;

  /* readonly attribute wstring value; */
  NS_IMETHOD GetValue(PRUnichar * *aValue) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IEXTRADATACANCHANGEEVENT \
  NS_IMETHOD GetMachineId(PRUnichar * *aMachineId); \
  NS_IMETHOD GetKey(PRUnichar * *aKey); \
  NS_IMETHOD GetValue(PRUnichar * *aValue); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IEXTRADATACANCHANGEEVENT(_to) \
  NS_IMETHOD GetMachineId(PRUnichar * *aMachineId) { return _to GetMachineId(aMachineId); } \
  NS_IMETHOD GetKey(PRUnichar * *aKey) { return _to GetKey(aKey); } \
  NS_IMETHOD GetValue(PRUnichar * *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_IEXTRADATACANCHANGEEVENT(_to) \
  NS_IMETHOD GetMachineId(PRUnichar * *aMachineId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMachineId(aMachineId); } \
  NS_IMETHOD GetKey(PRUnichar * *aKey) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetKey(aKey); } \
  NS_IMETHOD GetValue(PRUnichar * *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 IExtraDataCanChangeEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IEXTRADATACANCHANGEEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IExtraDataCanChangeEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring machineId; */
NS_IMETHODIMP _MYCLASS_::GetMachineId(PRUnichar * *aMachineId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring key; */
NS_IMETHODIMP _MYCLASS_::GetKey(PRUnichar * *aKey)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring value; */
NS_IMETHODIMP _MYCLASS_::GetValue(PRUnichar * *aValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IExtraDataCanChangeEvent_GETTER_MachineId_TO(smth) NS_IMETHOD GetMachineId (PRUnichar * * aMachineId) { return smth GetMachineId (aMachineId); }
#define COM_FORWARD_IExtraDataCanChangeEvent_GETTER_MachineId_TO_OBJ(obj) COM_FORWARD_IExtraDataCanChangeEvent_GETTER_MachineId_TO ((obj)->)
#define COM_FORWARD_IExtraDataCanChangeEvent_GETTER_MachineId_TO_BASE(base) COM_FORWARD_IExtraDataCanChangeEvent_GETTER_MachineId_TO (base::)
#define COM_FORWARD_IExtraDataCanChangeEvent_GETTER_Key_TO(smth) NS_IMETHOD GetKey (PRUnichar * * aKey) { return smth GetKey (aKey); }
#define COM_FORWARD_IExtraDataCanChangeEvent_GETTER_Key_TO_OBJ(obj) COM_FORWARD_IExtraDataCanChangeEvent_GETTER_Key_TO ((obj)->)
#define COM_FORWARD_IExtraDataCanChangeEvent_GETTER_Key_TO_BASE(base) COM_FORWARD_IExtraDataCanChangeEvent_GETTER_Key_TO (base::)
#define COM_FORWARD_IExtraDataCanChangeEvent_GETTER_Value_TO(smth) NS_IMETHOD GetValue (PRUnichar * * aValue) { return smth GetValue (aValue); }
#define COM_FORWARD_IExtraDataCanChangeEvent_GETTER_Value_TO_OBJ(obj) COM_FORWARD_IExtraDataCanChangeEvent_GETTER_Value_TO ((obj)->)
#define COM_FORWARD_IExtraDataCanChangeEvent_GETTER_Value_TO_BASE(base) COM_FORWARD_IExtraDataCanChangeEvent_GETTER_Value_TO (base::)
#define COM_FORWARD_IExtraDataCanChangeEvent_TO(smth) NS_FORWARD_IEXTRADATACANCHANGEEVENT (smth)
#define COM_FORWARD_IExtraDataCanChangeEvent_TO_OBJ(obj) COM_FORWARD_IExtraDataCanChangeEvent_TO ((obj)->)
#define COM_FORWARD_IExtraDataCanChangeEvent_TO_BASE(base) COM_FORWARD_IExtraDataCanChangeEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IExtraDataCanChangeEvent;

/* starting interface:    ICanShowWindowEvent */
#define ICANSHOWWINDOWEVENT_IID_STR "adf292b0-92c9-4a77-9d35-e058b39fe0b9"

#define ICANSHOWWINDOWEVENT_IID \
  {0xadf292b0, 0x92c9, 0x4a77, \
    { 0x9d, 0x35, 0xe0, 0x58, 0xb3, 0x9f, 0xe0, 0xb9 }}

class NS_NO_VTABLE ICanShowWindowEvent : public IVetoEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ICANSHOWWINDOWEVENT_IID)

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ICANSHOWWINDOWEVENT \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ICANSHOWWINDOWEVENT(_to) \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ICANSHOWWINDOWEVENT(_to) \
  /* no methods! */

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public ICanShowWindowEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ICANSHOWWINDOWEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, ICanShowWindowEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_ICanShowWindowEvent_TO(smth) NS_FORWARD_ICANSHOWWINDOWEVENT (smth)
#define COM_FORWARD_ICanShowWindowEvent_TO_OBJ(obj) COM_FORWARD_ICanShowWindowEvent_TO ((obj)->)
#define COM_FORWARD_ICanShowWindowEvent_TO_BASE(base) COM_FORWARD_ICanShowWindowEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_ICanShowWindowEvent;

/* starting interface:    IShowWindowEvent */
#define ISHOWWINDOWEVENT_IID_STR "b0a0904d-2f05-4d28-855f-488f96bad2b2"

#define ISHOWWINDOWEVENT_IID \
  {0xb0a0904d, 0x2f05, 0x4d28, \
    { 0x85, 0x5f, 0x48, 0x8f, 0x96, 0xba, 0xd2, 0xb2 }}

class NS_NO_VTABLE IShowWindowEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISHOWWINDOWEVENT_IID)

  /* attribute long long winId; */
  NS_IMETHOD GetWinId(PRInt64 *aWinId) = 0;
  NS_IMETHOD SetWinId(PRInt64 aWinId) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISHOWWINDOWEVENT \
  NS_IMETHOD GetWinId(PRInt64 *aWinId); \
  NS_IMETHOD SetWinId(PRInt64 aWinId); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISHOWWINDOWEVENT(_to) \
  NS_IMETHOD GetWinId(PRInt64 *aWinId) { return _to GetWinId(aWinId); } \
  NS_IMETHOD SetWinId(PRInt64 aWinId) { return _to SetWinId(aWinId); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISHOWWINDOWEVENT(_to) \
  NS_IMETHOD GetWinId(PRInt64 *aWinId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWinId(aWinId); } \
  NS_IMETHOD SetWinId(PRInt64 aWinId) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetWinId(aWinId); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IShowWindowEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISHOWWINDOWEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IShowWindowEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* attribute long long winId; */
NS_IMETHODIMP _MYCLASS_::GetWinId(PRInt64 *aWinId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetWinId(PRInt64 aWinId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IShowWindowEvent_GETTER_WinId_TO(smth) NS_IMETHOD GetWinId (PRInt64 * aWinId) { return smth GetWinId (aWinId); }
#define COM_FORWARD_IShowWindowEvent_GETTER_WinId_TO_OBJ(obj) COM_FORWARD_IShowWindowEvent_GETTER_WinId_TO ((obj)->)
#define COM_FORWARD_IShowWindowEvent_GETTER_WinId_TO_BASE(base) COM_FORWARD_IShowWindowEvent_GETTER_WinId_TO (base::)
#define COM_FORWARD_IShowWindowEvent_SETTER_WinId_TO(smth) NS_IMETHOD SetWinId (PRInt64 aWinId) { return smth SetWinId (aWinId); }
#define COM_FORWARD_IShowWindowEvent_SETTER_WinId_TO_OBJ(obj) COM_FORWARD_IShowWindowEvent_SETTER_WinId_TO ((obj)->)
#define COM_FORWARD_IShowWindowEvent_SETTER_WinId_TO_BASE(base) COM_FORWARD_IShowWindowEvent_SETTER_WinId_TO (base::)
#define COM_FORWARD_IShowWindowEvent_TO(smth) NS_FORWARD_ISHOWWINDOWEVENT (smth)
#define COM_FORWARD_IShowWindowEvent_TO_OBJ(obj) COM_FORWARD_IShowWindowEvent_TO ((obj)->)
#define COM_FORWARD_IShowWindowEvent_TO_BASE(base) COM_FORWARD_IShowWindowEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IShowWindowEvent;

/* starting interface:    INATRedirectEvent */
#define INATREDIRECTEVENT_IID_STR "24eef068-c380-4510-bc7c-19314a7352f1"

#define INATREDIRECTEVENT_IID \
  {0x24eef068, 0xc380, 0x4510, \
    { 0xbc, 0x7c, 0x19, 0x31, 0x4a, 0x73, 0x52, 0xf1 }}

class NS_NO_VTABLE INATRedirectEvent : public IMachineEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(INATREDIRECTEVENT_IID)

  /* readonly attribute unsigned long slot; */
  NS_IMETHOD GetSlot(PRUint32 *aSlot) = 0;

  /* readonly attribute boolean remove; */
  NS_IMETHOD GetRemove(PRBool *aRemove) = 0;

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* readonly attribute PRUint32 proto; */
  NS_IMETHOD GetProto(PRUint32 *aProto) = 0;

  /* readonly attribute wstring hostIP; */
  NS_IMETHOD GetHostIP(PRUnichar * *aHostIP) = 0;

  /* readonly attribute long hostPort; */
  NS_IMETHOD GetHostPort(PRInt32 *aHostPort) = 0;

  /* readonly attribute wstring guestIP; */
  NS_IMETHOD GetGuestIP(PRUnichar * *aGuestIP) = 0;

  /* readonly attribute long guestPort; */
  NS_IMETHOD GetGuestPort(PRInt32 *aGuestPort) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_INATREDIRECTEVENT \
  NS_IMETHOD GetSlot(PRUint32 *aSlot); \
  NS_IMETHOD GetRemove(PRBool *aRemove); \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetProto(PRUint32 *aProto); \
  NS_IMETHOD GetHostIP(PRUnichar * *aHostIP); \
  NS_IMETHOD GetHostPort(PRInt32 *aHostPort); \
  NS_IMETHOD GetGuestIP(PRUnichar * *aGuestIP); \
  NS_IMETHOD GetGuestPort(PRInt32 *aGuestPort); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_INATREDIRECTEVENT(_to) \
  NS_IMETHOD GetSlot(PRUint32 *aSlot) { return _to GetSlot(aSlot); } \
  NS_IMETHOD GetRemove(PRBool *aRemove) { return _to GetRemove(aRemove); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetProto(PRUint32 *aProto) { return _to GetProto(aProto); } \
  NS_IMETHOD GetHostIP(PRUnichar * *aHostIP) { return _to GetHostIP(aHostIP); } \
  NS_IMETHOD GetHostPort(PRInt32 *aHostPort) { return _to GetHostPort(aHostPort); } \
  NS_IMETHOD GetGuestIP(PRUnichar * *aGuestIP) { return _to GetGuestIP(aGuestIP); } \
  NS_IMETHOD GetGuestPort(PRInt32 *aGuestPort) { return _to GetGuestPort(aGuestPort); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_INATREDIRECTEVENT(_to) \
  NS_IMETHOD GetSlot(PRUint32 *aSlot) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSlot(aSlot); } \
  NS_IMETHOD GetRemove(PRBool *aRemove) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRemove(aRemove); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetProto(PRUint32 *aProto) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProto(aProto); } \
  NS_IMETHOD GetHostIP(PRUnichar * *aHostIP) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHostIP(aHostIP); } \
  NS_IMETHOD GetHostPort(PRInt32 *aHostPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHostPort(aHostPort); } \
  NS_IMETHOD GetGuestIP(PRUnichar * *aGuestIP) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGuestIP(aGuestIP); } \
  NS_IMETHOD GetGuestPort(PRInt32 *aGuestPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGuestPort(aGuestPort); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public INATRedirectEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_INATREDIRECTEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, INATRedirectEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute unsigned long slot; */
NS_IMETHODIMP _MYCLASS_::GetSlot(PRUint32 *aSlot)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean remove; */
NS_IMETHODIMP _MYCLASS_::GetRemove(PRBool *aRemove)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 proto; */
NS_IMETHODIMP _MYCLASS_::GetProto(PRUint32 *aProto)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring hostIP; */
NS_IMETHODIMP _MYCLASS_::GetHostIP(PRUnichar * *aHostIP)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long hostPort; */
NS_IMETHODIMP _MYCLASS_::GetHostPort(PRInt32 *aHostPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring guestIP; */
NS_IMETHODIMP _MYCLASS_::GetGuestIP(PRUnichar * *aGuestIP)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long guestPort; */
NS_IMETHODIMP _MYCLASS_::GetGuestPort(PRInt32 *aGuestPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_INATRedirectEvent_GETTER_Slot_TO(smth) NS_IMETHOD GetSlot (PRUint32 * aSlot) { return smth GetSlot (aSlot); }
#define COM_FORWARD_INATRedirectEvent_GETTER_Slot_TO_OBJ(obj) COM_FORWARD_INATRedirectEvent_GETTER_Slot_TO ((obj)->)
#define COM_FORWARD_INATRedirectEvent_GETTER_Slot_TO_BASE(base) COM_FORWARD_INATRedirectEvent_GETTER_Slot_TO (base::)
#define COM_FORWARD_INATRedirectEvent_GETTER_Remove_TO(smth) NS_IMETHOD GetRemove (PRBool * aRemove) { return smth GetRemove (aRemove); }
#define COM_FORWARD_INATRedirectEvent_GETTER_Remove_TO_OBJ(obj) COM_FORWARD_INATRedirectEvent_GETTER_Remove_TO ((obj)->)
#define COM_FORWARD_INATRedirectEvent_GETTER_Remove_TO_BASE(base) COM_FORWARD_INATRedirectEvent_GETTER_Remove_TO (base::)
#define COM_FORWARD_INATRedirectEvent_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_INATRedirectEvent_GETTER_Name_TO_OBJ(obj) COM_FORWARD_INATRedirectEvent_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_INATRedirectEvent_GETTER_Name_TO_BASE(base) COM_FORWARD_INATRedirectEvent_GETTER_Name_TO (base::)
#define COM_FORWARD_INATRedirectEvent_GETTER_Proto_TO(smth) NS_IMETHOD GetProto (PRUint32 * aProto) { return smth GetProto (aProto); }
#define COM_FORWARD_INATRedirectEvent_GETTER_Proto_TO_OBJ(obj) COM_FORWARD_INATRedirectEvent_GETTER_Proto_TO ((obj)->)
#define COM_FORWARD_INATRedirectEvent_GETTER_Proto_TO_BASE(base) COM_FORWARD_INATRedirectEvent_GETTER_Proto_TO (base::)
#define COM_FORWARD_INATRedirectEvent_GETTER_HostIP_TO(smth) NS_IMETHOD GetHostIP (PRUnichar * * aHostIP) { return smth GetHostIP (aHostIP); }
#define COM_FORWARD_INATRedirectEvent_GETTER_HostIP_TO_OBJ(obj) COM_FORWARD_INATRedirectEvent_GETTER_HostIP_TO ((obj)->)
#define COM_FORWARD_INATRedirectEvent_GETTER_HostIP_TO_BASE(base) COM_FORWARD_INATRedirectEvent_GETTER_HostIP_TO (base::)
#define COM_FORWARD_INATRedirectEvent_GETTER_HostPort_TO(smth) NS_IMETHOD GetHostPort (PRInt32 * aHostPort) { return smth GetHostPort (aHostPort); }
#define COM_FORWARD_INATRedirectEvent_GETTER_HostPort_TO_OBJ(obj) COM_FORWARD_INATRedirectEvent_GETTER_HostPort_TO ((obj)->)
#define COM_FORWARD_INATRedirectEvent_GETTER_HostPort_TO_BASE(base) COM_FORWARD_INATRedirectEvent_GETTER_HostPort_TO (base::)
#define COM_FORWARD_INATRedirectEvent_GETTER_GuestIP_TO(smth) NS_IMETHOD GetGuestIP (PRUnichar * * aGuestIP) { return smth GetGuestIP (aGuestIP); }
#define COM_FORWARD_INATRedirectEvent_GETTER_GuestIP_TO_OBJ(obj) COM_FORWARD_INATRedirectEvent_GETTER_GuestIP_TO ((obj)->)
#define COM_FORWARD_INATRedirectEvent_GETTER_GuestIP_TO_BASE(base) COM_FORWARD_INATRedirectEvent_GETTER_GuestIP_TO (base::)
#define COM_FORWARD_INATRedirectEvent_GETTER_GuestPort_TO(smth) NS_IMETHOD GetGuestPort (PRInt32 * aGuestPort) { return smth GetGuestPort (aGuestPort); }
#define COM_FORWARD_INATRedirectEvent_GETTER_GuestPort_TO_OBJ(obj) COM_FORWARD_INATRedirectEvent_GETTER_GuestPort_TO ((obj)->)
#define COM_FORWARD_INATRedirectEvent_GETTER_GuestPort_TO_BASE(base) COM_FORWARD_INATRedirectEvent_GETTER_GuestPort_TO (base::)
#define COM_FORWARD_INATRedirectEvent_TO(smth) NS_FORWARD_INATREDIRECTEVENT (smth)
#define COM_FORWARD_INATRedirectEvent_TO_OBJ(obj) COM_FORWARD_INATRedirectEvent_TO ((obj)->)
#define COM_FORWARD_INATRedirectEvent_TO_BASE(base) COM_FORWARD_INATRedirectEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_INATRedirectEvent;

/* starting interface:    IHostPCIDevicePlugEvent */
#define IHOSTPCIDEVICEPLUGEVENT_IID_STR "a0bad6df-d612-47d3-89d4-db3992533948"

#define IHOSTPCIDEVICEPLUGEVENT_IID \
  {0xa0bad6df, 0xd612, 0x47d3, \
    { 0x89, 0xd4, 0xdb, 0x39, 0x92, 0x53, 0x39, 0x48 }}

class NS_NO_VTABLE IHostPCIDevicePlugEvent : public IMachineEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOSTPCIDEVICEPLUGEVENT_IID)

  /* readonly attribute boolean plugged; */
  NS_IMETHOD GetPlugged(PRBool *aPlugged) = 0;

  /* readonly attribute boolean success; */
  NS_IMETHOD GetSuccess(PRBool *aSuccess) = 0;

  /* readonly attribute IPCIDeviceAttachment attachment; */
  NS_IMETHOD GetAttachment(IPCIDeviceAttachment * *aAttachment) = 0;

  /* readonly attribute wstring message; */
  NS_IMETHOD GetMessage(PRUnichar * *aMessage) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOSTPCIDEVICEPLUGEVENT \
  NS_IMETHOD GetPlugged(PRBool *aPlugged); \
  NS_IMETHOD GetSuccess(PRBool *aSuccess); \
  NS_IMETHOD GetAttachment(IPCIDeviceAttachment * *aAttachment); \
  NS_IMETHOD GetMessage(PRUnichar * *aMessage); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOSTPCIDEVICEPLUGEVENT(_to) \
  NS_IMETHOD GetPlugged(PRBool *aPlugged) { return _to GetPlugged(aPlugged); } \
  NS_IMETHOD GetSuccess(PRBool *aSuccess) { return _to GetSuccess(aSuccess); } \
  NS_IMETHOD GetAttachment(IPCIDeviceAttachment * *aAttachment) { return _to GetAttachment(aAttachment); } \
  NS_IMETHOD GetMessage(PRUnichar * *aMessage) { return _to GetMessage(aMessage); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHOSTPCIDEVICEPLUGEVENT(_to) \
  NS_IMETHOD GetPlugged(PRBool *aPlugged) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPlugged(aPlugged); } \
  NS_IMETHOD GetSuccess(PRBool *aSuccess) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSuccess(aSuccess); } \
  NS_IMETHOD GetAttachment(IPCIDeviceAttachment * *aAttachment) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAttachment(aAttachment); } \
  NS_IMETHOD GetMessage(PRUnichar * *aMessage) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMessage(aMessage); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IHostPCIDevicePlugEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHOSTPCIDEVICEPLUGEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IHostPCIDevicePlugEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute boolean plugged; */
NS_IMETHODIMP _MYCLASS_::GetPlugged(PRBool *aPlugged)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean success; */
NS_IMETHODIMP _MYCLASS_::GetSuccess(PRBool *aSuccess)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IPCIDeviceAttachment attachment; */
NS_IMETHODIMP _MYCLASS_::GetAttachment(IPCIDeviceAttachment * *aAttachment)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring message; */
NS_IMETHODIMP _MYCLASS_::GetMessage(PRUnichar * *aMessage)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IHostPCIDevicePlugEvent_GETTER_Plugged_TO(smth) NS_IMETHOD GetPlugged (PRBool * aPlugged) { return smth GetPlugged (aPlugged); }
#define COM_FORWARD_IHostPCIDevicePlugEvent_GETTER_Plugged_TO_OBJ(obj) COM_FORWARD_IHostPCIDevicePlugEvent_GETTER_Plugged_TO ((obj)->)
#define COM_FORWARD_IHostPCIDevicePlugEvent_GETTER_Plugged_TO_BASE(base) COM_FORWARD_IHostPCIDevicePlugEvent_GETTER_Plugged_TO (base::)
#define COM_FORWARD_IHostPCIDevicePlugEvent_GETTER_Success_TO(smth) NS_IMETHOD GetSuccess (PRBool * aSuccess) { return smth GetSuccess (aSuccess); }
#define COM_FORWARD_IHostPCIDevicePlugEvent_GETTER_Success_TO_OBJ(obj) COM_FORWARD_IHostPCIDevicePlugEvent_GETTER_Success_TO ((obj)->)
#define COM_FORWARD_IHostPCIDevicePlugEvent_GETTER_Success_TO_BASE(base) COM_FORWARD_IHostPCIDevicePlugEvent_GETTER_Success_TO (base::)
#define COM_FORWARD_IHostPCIDevicePlugEvent_GETTER_Attachment_TO(smth) NS_IMETHOD GetAttachment (IPCIDeviceAttachment * * aAttachment) { return smth GetAttachment (aAttachment); }
#define COM_FORWARD_IHostPCIDevicePlugEvent_GETTER_Attachment_TO_OBJ(obj) COM_FORWARD_IHostPCIDevicePlugEvent_GETTER_Attachment_TO ((obj)->)
#define COM_FORWARD_IHostPCIDevicePlugEvent_GETTER_Attachment_TO_BASE(base) COM_FORWARD_IHostPCIDevicePlugEvent_GETTER_Attachment_TO (base::)
#define COM_FORWARD_IHostPCIDevicePlugEvent_GETTER_Message_TO(smth) NS_IMETHOD GetMessage (PRUnichar * * aMessage) { return smth GetMessage (aMessage); }
#define COM_FORWARD_IHostPCIDevicePlugEvent_GETTER_Message_TO_OBJ(obj) COM_FORWARD_IHostPCIDevicePlugEvent_GETTER_Message_TO ((obj)->)
#define COM_FORWARD_IHostPCIDevicePlugEvent_GETTER_Message_TO_BASE(base) COM_FORWARD_IHostPCIDevicePlugEvent_GETTER_Message_TO (base::)
#define COM_FORWARD_IHostPCIDevicePlugEvent_TO(smth) NS_FORWARD_IHOSTPCIDEVICEPLUGEVENT (smth)
#define COM_FORWARD_IHostPCIDevicePlugEvent_TO_OBJ(obj) COM_FORWARD_IHostPCIDevicePlugEvent_TO ((obj)->)
#define COM_FORWARD_IHostPCIDevicePlugEvent_TO_BASE(base) COM_FORWARD_IHostPCIDevicePlugEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IHostPCIDevicePlugEvent;

/* starting interface:    IVBoxSVCAvailabilityChangedEvent */
#define IVBOXSVCAVAILABILITYCHANGEDEVENT_IID_STR "97c78fcd-d4fc-485f-8613-5af88bfcfcdc"

#define IVBOXSVCAVAILABILITYCHANGEDEVENT_IID \
  {0x97c78fcd, 0xd4fc, 0x485f, \
    { 0x86, 0x13, 0x5a, 0xf8, 0x8b, 0xfc, 0xfc, 0xdc }}

class NS_NO_VTABLE IVBoxSVCAvailabilityChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVBOXSVCAVAILABILITYCHANGEDEVENT_IID)

  /* readonly attribute boolean available; */
  NS_IMETHOD GetAvailable(PRBool *aAvailable) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVBOXSVCAVAILABILITYCHANGEDEVENT \
  NS_IMETHOD GetAvailable(PRBool *aAvailable); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IVBOXSVCAVAILABILITYCHANGEDEVENT(_to) \
  NS_IMETHOD GetAvailable(PRBool *aAvailable) { return _to GetAvailable(aAvailable); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IVBOXSVCAVAILABILITYCHANGEDEVENT(_to) \
  NS_IMETHOD GetAvailable(PRBool *aAvailable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAvailable(aAvailable); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IVBoxSVCAvailabilityChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IVBOXSVCAVAILABILITYCHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IVBoxSVCAvailabilityChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute boolean available; */
NS_IMETHODIMP _MYCLASS_::GetAvailable(PRBool *aAvailable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IVBoxSVCAvailabilityChangedEvent_GETTER_Available_TO(smth) NS_IMETHOD GetAvailable (PRBool * aAvailable) { return smth GetAvailable (aAvailable); }
#define COM_FORWARD_IVBoxSVCAvailabilityChangedEvent_GETTER_Available_TO_OBJ(obj) COM_FORWARD_IVBoxSVCAvailabilityChangedEvent_GETTER_Available_TO ((obj)->)
#define COM_FORWARD_IVBoxSVCAvailabilityChangedEvent_GETTER_Available_TO_BASE(base) COM_FORWARD_IVBoxSVCAvailabilityChangedEvent_GETTER_Available_TO (base::)
#define COM_FORWARD_IVBoxSVCAvailabilityChangedEvent_TO(smth) NS_FORWARD_IVBOXSVCAVAILABILITYCHANGEDEVENT (smth)
#define COM_FORWARD_IVBoxSVCAvailabilityChangedEvent_TO_OBJ(obj) COM_FORWARD_IVBoxSVCAvailabilityChangedEvent_TO ((obj)->)
#define COM_FORWARD_IVBoxSVCAvailabilityChangedEvent_TO_BASE(base) COM_FORWARD_IVBoxSVCAvailabilityChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IVBoxSVCAvailabilityChangedEvent;

/* starting interface:    IBandwidthGroupChangedEvent */
#define IBANDWIDTHGROUPCHANGEDEVENT_IID_STR "334df94a-7556-4cbc-8c04-043096b02d82"

#define IBANDWIDTHGROUPCHANGEDEVENT_IID \
  {0x334df94a, 0x7556, 0x4cbc, \
    { 0x8c, 0x04, 0x04, 0x30, 0x96, 0xb0, 0x2d, 0x82 }}

class NS_NO_VTABLE IBandwidthGroupChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IBANDWIDTHGROUPCHANGEDEVENT_IID)

  /* readonly attribute IBandwidthGroup bandwidthGroup; */
  NS_IMETHOD GetBandwidthGroup(IBandwidthGroup * *aBandwidthGroup) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IBANDWIDTHGROUPCHANGEDEVENT \
  NS_IMETHOD GetBandwidthGroup(IBandwidthGroup * *aBandwidthGroup); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IBANDWIDTHGROUPCHANGEDEVENT(_to) \
  NS_IMETHOD GetBandwidthGroup(IBandwidthGroup * *aBandwidthGroup) { return _to GetBandwidthGroup(aBandwidthGroup); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IBANDWIDTHGROUPCHANGEDEVENT(_to) \
  NS_IMETHOD GetBandwidthGroup(IBandwidthGroup * *aBandwidthGroup) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBandwidthGroup(aBandwidthGroup); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IBandwidthGroupChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IBANDWIDTHGROUPCHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IBandwidthGroupChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute IBandwidthGroup bandwidthGroup; */
NS_IMETHODIMP _MYCLASS_::GetBandwidthGroup(IBandwidthGroup * *aBandwidthGroup)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IBandwidthGroupChangedEvent_GETTER_BandwidthGroup_TO(smth) NS_IMETHOD GetBandwidthGroup (IBandwidthGroup * * aBandwidthGroup) { return smth GetBandwidthGroup (aBandwidthGroup); }
#define COM_FORWARD_IBandwidthGroupChangedEvent_GETTER_BandwidthGroup_TO_OBJ(obj) COM_FORWARD_IBandwidthGroupChangedEvent_GETTER_BandwidthGroup_TO ((obj)->)
#define COM_FORWARD_IBandwidthGroupChangedEvent_GETTER_BandwidthGroup_TO_BASE(base) COM_FORWARD_IBandwidthGroupChangedEvent_GETTER_BandwidthGroup_TO (base::)
#define COM_FORWARD_IBandwidthGroupChangedEvent_TO(smth) NS_FORWARD_IBANDWIDTHGROUPCHANGEDEVENT (smth)
#define COM_FORWARD_IBandwidthGroupChangedEvent_TO_OBJ(obj) COM_FORWARD_IBandwidthGroupChangedEvent_TO ((obj)->)
#define COM_FORWARD_IBandwidthGroupChangedEvent_TO_BASE(base) COM_FORWARD_IBandwidthGroupChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IBandwidthGroupChangedEvent;

/* starting interface:    IGuestMonitorChangedEvent */
#define IGUESTMONITORCHANGEDEVENT_IID_STR "0f7b8a22-c71f-4a36-8e5f-a77d01d76090"

#define IGUESTMONITORCHANGEDEVENT_IID \
  {0x0f7b8a22, 0xc71f, 0x4a36, \
    { 0x8e, 0x5f, 0xa7, 0x7d, 0x01, 0xd7, 0x60, 0x90 }}

class NS_NO_VTABLE IGuestMonitorChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTMONITORCHANGEDEVENT_IID)

  /* readonly attribute PRUint32 changeType; */
  NS_IMETHOD GetChangeType(PRUint32 *aChangeType) = 0;

  /* readonly attribute unsigned long screenId; */
  NS_IMETHOD GetScreenId(PRUint32 *aScreenId) = 0;

  /* readonly attribute unsigned long originX; */
  NS_IMETHOD GetOriginX(PRUint32 *aOriginX) = 0;

  /* readonly attribute unsigned long originY; */
  NS_IMETHOD GetOriginY(PRUint32 *aOriginY) = 0;

  /* readonly attribute unsigned long width; */
  NS_IMETHOD GetWidth(PRUint32 *aWidth) = 0;

  /* readonly attribute unsigned long height; */
  NS_IMETHOD GetHeight(PRUint32 *aHeight) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTMONITORCHANGEDEVENT \
  NS_IMETHOD GetChangeType(PRUint32 *aChangeType); \
  NS_IMETHOD GetScreenId(PRUint32 *aScreenId); \
  NS_IMETHOD GetOriginX(PRUint32 *aOriginX); \
  NS_IMETHOD GetOriginY(PRUint32 *aOriginY); \
  NS_IMETHOD GetWidth(PRUint32 *aWidth); \
  NS_IMETHOD GetHeight(PRUint32 *aHeight); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTMONITORCHANGEDEVENT(_to) \
  NS_IMETHOD GetChangeType(PRUint32 *aChangeType) { return _to GetChangeType(aChangeType); } \
  NS_IMETHOD GetScreenId(PRUint32 *aScreenId) { return _to GetScreenId(aScreenId); } \
  NS_IMETHOD GetOriginX(PRUint32 *aOriginX) { return _to GetOriginX(aOriginX); } \
  NS_IMETHOD GetOriginY(PRUint32 *aOriginY) { return _to GetOriginY(aOriginY); } \
  NS_IMETHOD GetWidth(PRUint32 *aWidth) { return _to GetWidth(aWidth); } \
  NS_IMETHOD GetHeight(PRUint32 *aHeight) { return _to GetHeight(aHeight); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTMONITORCHANGEDEVENT(_to) \
  NS_IMETHOD GetChangeType(PRUint32 *aChangeType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChangeType(aChangeType); } \
  NS_IMETHOD GetScreenId(PRUint32 *aScreenId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetScreenId(aScreenId); } \
  NS_IMETHOD GetOriginX(PRUint32 *aOriginX) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOriginX(aOriginX); } \
  NS_IMETHOD GetOriginY(PRUint32 *aOriginY) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOriginY(aOriginY); } \
  NS_IMETHOD GetWidth(PRUint32 *aWidth) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWidth(aWidth); } \
  NS_IMETHOD GetHeight(PRUint32 *aHeight) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHeight(aHeight); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestMonitorChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTMONITORCHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestMonitorChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute PRUint32 changeType; */
NS_IMETHODIMP _MYCLASS_::GetChangeType(PRUint32 *aChangeType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long screenId; */
NS_IMETHODIMP _MYCLASS_::GetScreenId(PRUint32 *aScreenId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long originX; */
NS_IMETHODIMP _MYCLASS_::GetOriginX(PRUint32 *aOriginX)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long originY; */
NS_IMETHODIMP _MYCLASS_::GetOriginY(PRUint32 *aOriginY)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long width; */
NS_IMETHODIMP _MYCLASS_::GetWidth(PRUint32 *aWidth)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long height; */
NS_IMETHODIMP _MYCLASS_::GetHeight(PRUint32 *aHeight)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestMonitorChangedEvent_GETTER_ChangeType_TO(smth) NS_IMETHOD GetChangeType (PRUint32 * aChangeType) { return smth GetChangeType (aChangeType); }
#define COM_FORWARD_IGuestMonitorChangedEvent_GETTER_ChangeType_TO_OBJ(obj) COM_FORWARD_IGuestMonitorChangedEvent_GETTER_ChangeType_TO ((obj)->)
#define COM_FORWARD_IGuestMonitorChangedEvent_GETTER_ChangeType_TO_BASE(base) COM_FORWARD_IGuestMonitorChangedEvent_GETTER_ChangeType_TO (base::)
#define COM_FORWARD_IGuestMonitorChangedEvent_GETTER_ScreenId_TO(smth) NS_IMETHOD GetScreenId (PRUint32 * aScreenId) { return smth GetScreenId (aScreenId); }
#define COM_FORWARD_IGuestMonitorChangedEvent_GETTER_ScreenId_TO_OBJ(obj) COM_FORWARD_IGuestMonitorChangedEvent_GETTER_ScreenId_TO ((obj)->)
#define COM_FORWARD_IGuestMonitorChangedEvent_GETTER_ScreenId_TO_BASE(base) COM_FORWARD_IGuestMonitorChangedEvent_GETTER_ScreenId_TO (base::)
#define COM_FORWARD_IGuestMonitorChangedEvent_GETTER_OriginX_TO(smth) NS_IMETHOD GetOriginX (PRUint32 * aOriginX) { return smth GetOriginX (aOriginX); }
#define COM_FORWARD_IGuestMonitorChangedEvent_GETTER_OriginX_TO_OBJ(obj) COM_FORWARD_IGuestMonitorChangedEvent_GETTER_OriginX_TO ((obj)->)
#define COM_FORWARD_IGuestMonitorChangedEvent_GETTER_OriginX_TO_BASE(base) COM_FORWARD_IGuestMonitorChangedEvent_GETTER_OriginX_TO (base::)
#define COM_FORWARD_IGuestMonitorChangedEvent_GETTER_OriginY_TO(smth) NS_IMETHOD GetOriginY (PRUint32 * aOriginY) { return smth GetOriginY (aOriginY); }
#define COM_FORWARD_IGuestMonitorChangedEvent_GETTER_OriginY_TO_OBJ(obj) COM_FORWARD_IGuestMonitorChangedEvent_GETTER_OriginY_TO ((obj)->)
#define COM_FORWARD_IGuestMonitorChangedEvent_GETTER_OriginY_TO_BASE(base) COM_FORWARD_IGuestMonitorChangedEvent_GETTER_OriginY_TO (base::)
#define COM_FORWARD_IGuestMonitorChangedEvent_GETTER_Width_TO(smth) NS_IMETHOD GetWidth (PRUint32 * aWidth) { return smth GetWidth (aWidth); }
#define COM_FORWARD_IGuestMonitorChangedEvent_GETTER_Width_TO_OBJ(obj) COM_FORWARD_IGuestMonitorChangedEvent_GETTER_Width_TO ((obj)->)
#define COM_FORWARD_IGuestMonitorChangedEvent_GETTER_Width_TO_BASE(base) COM_FORWARD_IGuestMonitorChangedEvent_GETTER_Width_TO (base::)
#define COM_FORWARD_IGuestMonitorChangedEvent_GETTER_Height_TO(smth) NS_IMETHOD GetHeight (PRUint32 * aHeight) { return smth GetHeight (aHeight); }
#define COM_FORWARD_IGuestMonitorChangedEvent_GETTER_Height_TO_OBJ(obj) COM_FORWARD_IGuestMonitorChangedEvent_GETTER_Height_TO ((obj)->)
#define COM_FORWARD_IGuestMonitorChangedEvent_GETTER_Height_TO_BASE(base) COM_FORWARD_IGuestMonitorChangedEvent_GETTER_Height_TO (base::)
#define COM_FORWARD_IGuestMonitorChangedEvent_TO(smth) NS_FORWARD_IGUESTMONITORCHANGEDEVENT (smth)
#define COM_FORWARD_IGuestMonitorChangedEvent_TO_OBJ(obj) COM_FORWARD_IGuestMonitorChangedEvent_TO ((obj)->)
#define COM_FORWARD_IGuestMonitorChangedEvent_TO_BASE(base) COM_FORWARD_IGuestMonitorChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestMonitorChangedEvent;

/* starting interface:    IGuestUserStateChangedEvent */
#define IGUESTUSERSTATECHANGEDEVENT_IID_STR "39b4e759-1ec0-4c0f-857f-fbe2a737a256"

#define IGUESTUSERSTATECHANGEDEVENT_IID \
  {0x39b4e759, 0x1ec0, 0x4c0f, \
    { 0x85, 0x7f, 0xfb, 0xe2, 0xa7, 0x37, 0xa2, 0x56 }}

class NS_NO_VTABLE IGuestUserStateChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTUSERSTATECHANGEDEVENT_IID)

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* readonly attribute wstring domain; */
  NS_IMETHOD GetDomain(PRUnichar * *aDomain) = 0;

  /* readonly attribute PRUint32 state; */
  NS_IMETHOD GetState(PRUint32 *aState) = 0;

  /* readonly attribute wstring stateDetails; */
  NS_IMETHOD GetStateDetails(PRUnichar * *aStateDetails) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTUSERSTATECHANGEDEVENT \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetDomain(PRUnichar * *aDomain); \
  NS_IMETHOD GetState(PRUint32 *aState); \
  NS_IMETHOD GetStateDetails(PRUnichar * *aStateDetails); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTUSERSTATECHANGEDEVENT(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetDomain(PRUnichar * *aDomain) { return _to GetDomain(aDomain); } \
  NS_IMETHOD GetState(PRUint32 *aState) { return _to GetState(aState); } \
  NS_IMETHOD GetStateDetails(PRUnichar * *aStateDetails) { return _to GetStateDetails(aStateDetails); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTUSERSTATECHANGEDEVENT(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetDomain(PRUnichar * *aDomain) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDomain(aDomain); } \
  NS_IMETHOD GetState(PRUint32 *aState) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetState(aState); } \
  NS_IMETHOD GetStateDetails(PRUnichar * *aStateDetails) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStateDetails(aStateDetails); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IGuestUserStateChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTUSERSTATECHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IGuestUserStateChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring domain; */
NS_IMETHODIMP _MYCLASS_::GetDomain(PRUnichar * *aDomain)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 state; */
NS_IMETHODIMP _MYCLASS_::GetState(PRUint32 *aState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring stateDetails; */
NS_IMETHODIMP _MYCLASS_::GetStateDetails(PRUnichar * *aStateDetails)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IGuestUserStateChangedEvent_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IGuestUserStateChangedEvent_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IGuestUserStateChangedEvent_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IGuestUserStateChangedEvent_GETTER_Name_TO_BASE(base) COM_FORWARD_IGuestUserStateChangedEvent_GETTER_Name_TO (base::)
#define COM_FORWARD_IGuestUserStateChangedEvent_GETTER_Domain_TO(smth) NS_IMETHOD GetDomain (PRUnichar * * aDomain) { return smth GetDomain (aDomain); }
#define COM_FORWARD_IGuestUserStateChangedEvent_GETTER_Domain_TO_OBJ(obj) COM_FORWARD_IGuestUserStateChangedEvent_GETTER_Domain_TO ((obj)->)
#define COM_FORWARD_IGuestUserStateChangedEvent_GETTER_Domain_TO_BASE(base) COM_FORWARD_IGuestUserStateChangedEvent_GETTER_Domain_TO (base::)
#define COM_FORWARD_IGuestUserStateChangedEvent_GETTER_State_TO(smth) NS_IMETHOD GetState (PRUint32 * aState) { return smth GetState (aState); }
#define COM_FORWARD_IGuestUserStateChangedEvent_GETTER_State_TO_OBJ(obj) COM_FORWARD_IGuestUserStateChangedEvent_GETTER_State_TO ((obj)->)
#define COM_FORWARD_IGuestUserStateChangedEvent_GETTER_State_TO_BASE(base) COM_FORWARD_IGuestUserStateChangedEvent_GETTER_State_TO (base::)
#define COM_FORWARD_IGuestUserStateChangedEvent_GETTER_StateDetails_TO(smth) NS_IMETHOD GetStateDetails (PRUnichar * * aStateDetails) { return smth GetStateDetails (aStateDetails); }
#define COM_FORWARD_IGuestUserStateChangedEvent_GETTER_StateDetails_TO_OBJ(obj) COM_FORWARD_IGuestUserStateChangedEvent_GETTER_StateDetails_TO ((obj)->)
#define COM_FORWARD_IGuestUserStateChangedEvent_GETTER_StateDetails_TO_BASE(base) COM_FORWARD_IGuestUserStateChangedEvent_GETTER_StateDetails_TO (base::)
#define COM_FORWARD_IGuestUserStateChangedEvent_TO(smth) NS_FORWARD_IGUESTUSERSTATECHANGEDEVENT (smth)
#define COM_FORWARD_IGuestUserStateChangedEvent_TO_OBJ(obj) COM_FORWARD_IGuestUserStateChangedEvent_TO ((obj)->)
#define COM_FORWARD_IGuestUserStateChangedEvent_TO_BASE(base) COM_FORWARD_IGuestUserStateChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IGuestUserStateChangedEvent;

/* starting interface:    IStorageDeviceChangedEvent */
#define ISTORAGEDEVICECHANGEDEVENT_IID_STR "232e9151-ae84-4b8e-b0f3-5c20c35caac9"

#define ISTORAGEDEVICECHANGEDEVENT_IID \
  {0x232e9151, 0xae84, 0x4b8e, \
    { 0xb0, 0xf3, 0x5c, 0x20, 0xc3, 0x5c, 0xaa, 0xc9 }}

class NS_NO_VTABLE IStorageDeviceChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISTORAGEDEVICECHANGEDEVENT_IID)

  /* readonly attribute IMediumAttachment storageDevice; */
  NS_IMETHOD GetStorageDevice(IMediumAttachment * *aStorageDevice) = 0;

  /* readonly attribute boolean removed; */
  NS_IMETHOD GetRemoved(PRBool *aRemoved) = 0;

  /* readonly attribute boolean silent; */
  NS_IMETHOD GetSilent(PRBool *aSilent) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISTORAGEDEVICECHANGEDEVENT \
  NS_IMETHOD GetStorageDevice(IMediumAttachment * *aStorageDevice); \
  NS_IMETHOD GetRemoved(PRBool *aRemoved); \
  NS_IMETHOD GetSilent(PRBool *aSilent); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISTORAGEDEVICECHANGEDEVENT(_to) \
  NS_IMETHOD GetStorageDevice(IMediumAttachment * *aStorageDevice) { return _to GetStorageDevice(aStorageDevice); } \
  NS_IMETHOD GetRemoved(PRBool *aRemoved) { return _to GetRemoved(aRemoved); } \
  NS_IMETHOD GetSilent(PRBool *aSilent) { return _to GetSilent(aSilent); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISTORAGEDEVICECHANGEDEVENT(_to) \
  NS_IMETHOD GetStorageDevice(IMediumAttachment * *aStorageDevice) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStorageDevice(aStorageDevice); } \
  NS_IMETHOD GetRemoved(PRBool *aRemoved) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRemoved(aRemoved); } \
  NS_IMETHOD GetSilent(PRBool *aSilent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSilent(aSilent); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IStorageDeviceChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISTORAGEDEVICECHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IStorageDeviceChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute IMediumAttachment storageDevice; */
NS_IMETHODIMP _MYCLASS_::GetStorageDevice(IMediumAttachment * *aStorageDevice)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean removed; */
NS_IMETHODIMP _MYCLASS_::GetRemoved(PRBool *aRemoved)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean silent; */
NS_IMETHODIMP _MYCLASS_::GetSilent(PRBool *aSilent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IStorageDeviceChangedEvent_GETTER_StorageDevice_TO(smth) NS_IMETHOD GetStorageDevice (IMediumAttachment * * aStorageDevice) { return smth GetStorageDevice (aStorageDevice); }
#define COM_FORWARD_IStorageDeviceChangedEvent_GETTER_StorageDevice_TO_OBJ(obj) COM_FORWARD_IStorageDeviceChangedEvent_GETTER_StorageDevice_TO ((obj)->)
#define COM_FORWARD_IStorageDeviceChangedEvent_GETTER_StorageDevice_TO_BASE(base) COM_FORWARD_IStorageDeviceChangedEvent_GETTER_StorageDevice_TO (base::)
#define COM_FORWARD_IStorageDeviceChangedEvent_GETTER_Removed_TO(smth) NS_IMETHOD GetRemoved (PRBool * aRemoved) { return smth GetRemoved (aRemoved); }
#define COM_FORWARD_IStorageDeviceChangedEvent_GETTER_Removed_TO_OBJ(obj) COM_FORWARD_IStorageDeviceChangedEvent_GETTER_Removed_TO ((obj)->)
#define COM_FORWARD_IStorageDeviceChangedEvent_GETTER_Removed_TO_BASE(base) COM_FORWARD_IStorageDeviceChangedEvent_GETTER_Removed_TO (base::)
#define COM_FORWARD_IStorageDeviceChangedEvent_GETTER_Silent_TO(smth) NS_IMETHOD GetSilent (PRBool * aSilent) { return smth GetSilent (aSilent); }
#define COM_FORWARD_IStorageDeviceChangedEvent_GETTER_Silent_TO_OBJ(obj) COM_FORWARD_IStorageDeviceChangedEvent_GETTER_Silent_TO ((obj)->)
#define COM_FORWARD_IStorageDeviceChangedEvent_GETTER_Silent_TO_BASE(base) COM_FORWARD_IStorageDeviceChangedEvent_GETTER_Silent_TO (base::)
#define COM_FORWARD_IStorageDeviceChangedEvent_TO(smth) NS_FORWARD_ISTORAGEDEVICECHANGEDEVENT (smth)
#define COM_FORWARD_IStorageDeviceChangedEvent_TO_OBJ(obj) COM_FORWARD_IStorageDeviceChangedEvent_TO ((obj)->)
#define COM_FORWARD_IStorageDeviceChangedEvent_TO_BASE(base) COM_FORWARD_IStorageDeviceChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IStorageDeviceChangedEvent;

/* starting interface:    INATNetworkChangedEvent */
#define INATNETWORKCHANGEDEVENT_IID_STR "101ae042-1a29-4a19-92cf-02285773f3b5"

#define INATNETWORKCHANGEDEVENT_IID \
  {0x101ae042, 0x1a29, 0x4a19, \
    { 0x92, 0xcf, 0x02, 0x28, 0x57, 0x73, 0xf3, 0xb5 }}

class NS_NO_VTABLE INATNetworkChangedEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(INATNETWORKCHANGEDEVENT_IID)

  /* readonly attribute wstring networkName; */
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_INATNETWORKCHANGEDEVENT \
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_INATNETWORKCHANGEDEVENT(_to) \
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName) { return _to GetNetworkName(aNetworkName); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_INATNETWORKCHANGEDEVENT(_to) \
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworkName(aNetworkName); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public INATNetworkChangedEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_INATNETWORKCHANGEDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, INATNetworkChangedEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute wstring networkName; */
NS_IMETHODIMP _MYCLASS_::GetNetworkName(PRUnichar * *aNetworkName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_INATNetworkChangedEvent_GETTER_NetworkName_TO(smth) NS_IMETHOD GetNetworkName (PRUnichar * * aNetworkName) { return smth GetNetworkName (aNetworkName); }
#define COM_FORWARD_INATNetworkChangedEvent_GETTER_NetworkName_TO_OBJ(obj) COM_FORWARD_INATNetworkChangedEvent_GETTER_NetworkName_TO ((obj)->)
#define COM_FORWARD_INATNetworkChangedEvent_GETTER_NetworkName_TO_BASE(base) COM_FORWARD_INATNetworkChangedEvent_GETTER_NetworkName_TO (base::)
#define COM_FORWARD_INATNetworkChangedEvent_TO(smth) NS_FORWARD_INATNETWORKCHANGEDEVENT (smth)
#define COM_FORWARD_INATNetworkChangedEvent_TO_OBJ(obj) COM_FORWARD_INATNetworkChangedEvent_TO ((obj)->)
#define COM_FORWARD_INATNetworkChangedEvent_TO_BASE(base) COM_FORWARD_INATNetworkChangedEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_INATNetworkChangedEvent;

/* starting interface:    INATNetworkStartStopEvent */
#define INATNETWORKSTARTSTOPEVENT_IID_STR "269d8f6b-fa1e-4cee-91c7-6d8496bea3c1"

#define INATNETWORKSTARTSTOPEVENT_IID \
  {0x269d8f6b, 0xfa1e, 0x4cee, \
    { 0x91, 0xc7, 0x6d, 0x84, 0x96, 0xbe, 0xa3, 0xc1 }}

class NS_NO_VTABLE INATNetworkStartStopEvent : public INATNetworkChangedEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(INATNETWORKSTARTSTOPEVENT_IID)

  /* readonly attribute boolean startEvent; */
  NS_IMETHOD GetStartEvent(PRBool *aStartEvent) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_INATNETWORKSTARTSTOPEVENT \
  NS_IMETHOD GetStartEvent(PRBool *aStartEvent); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_INATNETWORKSTARTSTOPEVENT(_to) \
  NS_IMETHOD GetStartEvent(PRBool *aStartEvent) { return _to GetStartEvent(aStartEvent); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_INATNETWORKSTARTSTOPEVENT(_to) \
  NS_IMETHOD GetStartEvent(PRBool *aStartEvent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStartEvent(aStartEvent); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public INATNetworkStartStopEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_INATNETWORKSTARTSTOPEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, INATNetworkStartStopEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute boolean startEvent; */
NS_IMETHODIMP _MYCLASS_::GetStartEvent(PRBool *aStartEvent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_INATNetworkStartStopEvent_GETTER_StartEvent_TO(smth) NS_IMETHOD GetStartEvent (PRBool * aStartEvent) { return smth GetStartEvent (aStartEvent); }
#define COM_FORWARD_INATNetworkStartStopEvent_GETTER_StartEvent_TO_OBJ(obj) COM_FORWARD_INATNetworkStartStopEvent_GETTER_StartEvent_TO ((obj)->)
#define COM_FORWARD_INATNetworkStartStopEvent_GETTER_StartEvent_TO_BASE(base) COM_FORWARD_INATNetworkStartStopEvent_GETTER_StartEvent_TO (base::)
#define COM_FORWARD_INATNetworkStartStopEvent_TO(smth) NS_FORWARD_INATNETWORKSTARTSTOPEVENT (smth)
#define COM_FORWARD_INATNetworkStartStopEvent_TO_OBJ(obj) COM_FORWARD_INATNetworkStartStopEvent_TO ((obj)->)
#define COM_FORWARD_INATNetworkStartStopEvent_TO_BASE(base) COM_FORWARD_INATNetworkStartStopEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_INATNetworkStartStopEvent;

/* starting interface:    INATNetworkAlterEvent */
#define INATNETWORKALTEREVENT_IID_STR "3f5a0822-163a-43b1-ad16-8d58b0ef6e75"

#define INATNETWORKALTEREVENT_IID \
  {0x3f5a0822, 0x163a, 0x43b1, \
    { 0xad, 0x16, 0x8d, 0x58, 0xb0, 0xef, 0x6e, 0x75 }}

class NS_NO_VTABLE INATNetworkAlterEvent : public INATNetworkChangedEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(INATNETWORKALTEREVENT_IID)

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_INATNETWORKALTEREVENT \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_INATNETWORKALTEREVENT(_to) \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_INATNETWORKALTEREVENT(_to) \
  /* no methods! */

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public INATNetworkAlterEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_INATNETWORKALTEREVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, INATNetworkAlterEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_INATNetworkAlterEvent_TO(smth) NS_FORWARD_INATNETWORKALTEREVENT (smth)
#define COM_FORWARD_INATNetworkAlterEvent_TO_OBJ(obj) COM_FORWARD_INATNetworkAlterEvent_TO ((obj)->)
#define COM_FORWARD_INATNetworkAlterEvent_TO_BASE(base) COM_FORWARD_INATNetworkAlterEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_INATNetworkAlterEvent;

/* starting interface:    INATNetworkCreationDeletionEvent */
#define INATNETWORKCREATIONDELETIONEVENT_IID_STR "8d984a7e-b855-40b8-ab0c-44d3515b4528"

#define INATNETWORKCREATIONDELETIONEVENT_IID \
  {0x8d984a7e, 0xb855, 0x40b8, \
    { 0xab, 0x0c, 0x44, 0xd3, 0x51, 0x5b, 0x45, 0x28 }}

class NS_NO_VTABLE INATNetworkCreationDeletionEvent : public INATNetworkAlterEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(INATNETWORKCREATIONDELETIONEVENT_IID)

  /* readonly attribute boolean creationEvent; */
  NS_IMETHOD GetCreationEvent(PRBool *aCreationEvent) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_INATNETWORKCREATIONDELETIONEVENT \
  NS_IMETHOD GetCreationEvent(PRBool *aCreationEvent); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_INATNETWORKCREATIONDELETIONEVENT(_to) \
  NS_IMETHOD GetCreationEvent(PRBool *aCreationEvent) { return _to GetCreationEvent(aCreationEvent); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_INATNETWORKCREATIONDELETIONEVENT(_to) \
  NS_IMETHOD GetCreationEvent(PRBool *aCreationEvent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCreationEvent(aCreationEvent); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public INATNetworkCreationDeletionEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_INATNETWORKCREATIONDELETIONEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, INATNetworkCreationDeletionEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute boolean creationEvent; */
NS_IMETHODIMP _MYCLASS_::GetCreationEvent(PRBool *aCreationEvent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_INATNetworkCreationDeletionEvent_GETTER_CreationEvent_TO(smth) NS_IMETHOD GetCreationEvent (PRBool * aCreationEvent) { return smth GetCreationEvent (aCreationEvent); }
#define COM_FORWARD_INATNetworkCreationDeletionEvent_GETTER_CreationEvent_TO_OBJ(obj) COM_FORWARD_INATNetworkCreationDeletionEvent_GETTER_CreationEvent_TO ((obj)->)
#define COM_FORWARD_INATNetworkCreationDeletionEvent_GETTER_CreationEvent_TO_BASE(base) COM_FORWARD_INATNetworkCreationDeletionEvent_GETTER_CreationEvent_TO (base::)
#define COM_FORWARD_INATNetworkCreationDeletionEvent_TO(smth) NS_FORWARD_INATNETWORKCREATIONDELETIONEVENT (smth)
#define COM_FORWARD_INATNetworkCreationDeletionEvent_TO_OBJ(obj) COM_FORWARD_INATNetworkCreationDeletionEvent_TO ((obj)->)
#define COM_FORWARD_INATNetworkCreationDeletionEvent_TO_BASE(base) COM_FORWARD_INATNetworkCreationDeletionEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_INATNetworkCreationDeletionEvent;

/* starting interface:    INATNetworkSettingEvent */
#define INATNETWORKSETTINGEVENT_IID_STR "9db3a9e6-7f29-4aae-a627-5a282c83092c"

#define INATNETWORKSETTINGEVENT_IID \
  {0x9db3a9e6, 0x7f29, 0x4aae, \
    { 0xa6, 0x27, 0x5a, 0x28, 0x2c, 0x83, 0x09, 0x2c }}

class NS_NO_VTABLE INATNetworkSettingEvent : public INATNetworkAlterEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(INATNETWORKSETTINGEVENT_IID)

  /* readonly attribute boolean enabled; */
  NS_IMETHOD GetEnabled(PRBool *aEnabled) = 0;

  /* readonly attribute wstring network; */
  NS_IMETHOD GetNetwork(PRUnichar * *aNetwork) = 0;

  /* readonly attribute wstring gateway; */
  NS_IMETHOD GetGateway(PRUnichar * *aGateway) = 0;

  /* readonly attribute boolean advertiseDefaultIPv6RouteEnabled; */
  NS_IMETHOD GetAdvertiseDefaultIPv6RouteEnabled(PRBool *aAdvertiseDefaultIPv6RouteEnabled) = 0;

  /* readonly attribute boolean needDhcpServer; */
  NS_IMETHOD GetNeedDhcpServer(PRBool *aNeedDhcpServer) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_INATNETWORKSETTINGEVENT \
  NS_IMETHOD GetEnabled(PRBool *aEnabled); \
  NS_IMETHOD GetNetwork(PRUnichar * *aNetwork); \
  NS_IMETHOD GetGateway(PRUnichar * *aGateway); \
  NS_IMETHOD GetAdvertiseDefaultIPv6RouteEnabled(PRBool *aAdvertiseDefaultIPv6RouteEnabled); \
  NS_IMETHOD GetNeedDhcpServer(PRBool *aNeedDhcpServer); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_INATNETWORKSETTINGEVENT(_to) \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return _to GetEnabled(aEnabled); } \
  NS_IMETHOD GetNetwork(PRUnichar * *aNetwork) { return _to GetNetwork(aNetwork); } \
  NS_IMETHOD GetGateway(PRUnichar * *aGateway) { return _to GetGateway(aGateway); } \
  NS_IMETHOD GetAdvertiseDefaultIPv6RouteEnabled(PRBool *aAdvertiseDefaultIPv6RouteEnabled) { return _to GetAdvertiseDefaultIPv6RouteEnabled(aAdvertiseDefaultIPv6RouteEnabled); } \
  NS_IMETHOD GetNeedDhcpServer(PRBool *aNeedDhcpServer) { return _to GetNeedDhcpServer(aNeedDhcpServer); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_INATNETWORKSETTINGEVENT(_to) \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnabled(aEnabled); } \
  NS_IMETHOD GetNetwork(PRUnichar * *aNetwork) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetwork(aNetwork); } \
  NS_IMETHOD GetGateway(PRUnichar * *aGateway) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGateway(aGateway); } \
  NS_IMETHOD GetAdvertiseDefaultIPv6RouteEnabled(PRBool *aAdvertiseDefaultIPv6RouteEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAdvertiseDefaultIPv6RouteEnabled(aAdvertiseDefaultIPv6RouteEnabled); } \
  NS_IMETHOD GetNeedDhcpServer(PRBool *aNeedDhcpServer) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNeedDhcpServer(aNeedDhcpServer); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public INATNetworkSettingEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_INATNETWORKSETTINGEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, INATNetworkSettingEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute boolean enabled; */
NS_IMETHODIMP _MYCLASS_::GetEnabled(PRBool *aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring network; */
NS_IMETHODIMP _MYCLASS_::GetNetwork(PRUnichar * *aNetwork)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring gateway; */
NS_IMETHODIMP _MYCLASS_::GetGateway(PRUnichar * *aGateway)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean advertiseDefaultIPv6RouteEnabled; */
NS_IMETHODIMP _MYCLASS_::GetAdvertiseDefaultIPv6RouteEnabled(PRBool *aAdvertiseDefaultIPv6RouteEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean needDhcpServer; */
NS_IMETHODIMP _MYCLASS_::GetNeedDhcpServer(PRBool *aNeedDhcpServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_INATNetworkSettingEvent_GETTER_Enabled_TO(smth) NS_IMETHOD GetEnabled (PRBool * aEnabled) { return smth GetEnabled (aEnabled); }
#define COM_FORWARD_INATNetworkSettingEvent_GETTER_Enabled_TO_OBJ(obj) COM_FORWARD_INATNetworkSettingEvent_GETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_INATNetworkSettingEvent_GETTER_Enabled_TO_BASE(base) COM_FORWARD_INATNetworkSettingEvent_GETTER_Enabled_TO (base::)
#define COM_FORWARD_INATNetworkSettingEvent_GETTER_Network_TO(smth) NS_IMETHOD GetNetwork (PRUnichar * * aNetwork) { return smth GetNetwork (aNetwork); }
#define COM_FORWARD_INATNetworkSettingEvent_GETTER_Network_TO_OBJ(obj) COM_FORWARD_INATNetworkSettingEvent_GETTER_Network_TO ((obj)->)
#define COM_FORWARD_INATNetworkSettingEvent_GETTER_Network_TO_BASE(base) COM_FORWARD_INATNetworkSettingEvent_GETTER_Network_TO (base::)
#define COM_FORWARD_INATNetworkSettingEvent_GETTER_Gateway_TO(smth) NS_IMETHOD GetGateway (PRUnichar * * aGateway) { return smth GetGateway (aGateway); }
#define COM_FORWARD_INATNetworkSettingEvent_GETTER_Gateway_TO_OBJ(obj) COM_FORWARD_INATNetworkSettingEvent_GETTER_Gateway_TO ((obj)->)
#define COM_FORWARD_INATNetworkSettingEvent_GETTER_Gateway_TO_BASE(base) COM_FORWARD_INATNetworkSettingEvent_GETTER_Gateway_TO (base::)
#define COM_FORWARD_INATNetworkSettingEvent_GETTER_AdvertiseDefaultIPv6RouteEnabled_TO(smth) NS_IMETHOD GetAdvertiseDefaultIPv6RouteEnabled (PRBool * aAdvertiseDefaultIPv6RouteEnabled) { return smth GetAdvertiseDefaultIPv6RouteEnabled (aAdvertiseDefaultIPv6RouteEnabled); }
#define COM_FORWARD_INATNetworkSettingEvent_GETTER_AdvertiseDefaultIPv6RouteEnabled_TO_OBJ(obj) COM_FORWARD_INATNetworkSettingEvent_GETTER_AdvertiseDefaultIPv6RouteEnabled_TO ((obj)->)
#define COM_FORWARD_INATNetworkSettingEvent_GETTER_AdvertiseDefaultIPv6RouteEnabled_TO_BASE(base) COM_FORWARD_INATNetworkSettingEvent_GETTER_AdvertiseDefaultIPv6RouteEnabled_TO (base::)
#define COM_FORWARD_INATNetworkSettingEvent_GETTER_NeedDhcpServer_TO(smth) NS_IMETHOD GetNeedDhcpServer (PRBool * aNeedDhcpServer) { return smth GetNeedDhcpServer (aNeedDhcpServer); }
#define COM_FORWARD_INATNetworkSettingEvent_GETTER_NeedDhcpServer_TO_OBJ(obj) COM_FORWARD_INATNetworkSettingEvent_GETTER_NeedDhcpServer_TO ((obj)->)
#define COM_FORWARD_INATNetworkSettingEvent_GETTER_NeedDhcpServer_TO_BASE(base) COM_FORWARD_INATNetworkSettingEvent_GETTER_NeedDhcpServer_TO (base::)
#define COM_FORWARD_INATNetworkSettingEvent_TO(smth) NS_FORWARD_INATNETWORKSETTINGEVENT (smth)
#define COM_FORWARD_INATNetworkSettingEvent_TO_OBJ(obj) COM_FORWARD_INATNetworkSettingEvent_TO ((obj)->)
#define COM_FORWARD_INATNetworkSettingEvent_TO_BASE(base) COM_FORWARD_INATNetworkSettingEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_INATNetworkSettingEvent;

/* starting interface:    INATNetworkPortForwardEvent */
#define INATNETWORKPORTFORWARDEVENT_IID_STR "2514881b-23d0-430a-a7ff-7ed7f05534bc"

#define INATNETWORKPORTFORWARDEVENT_IID \
  {0x2514881b, 0x23d0, 0x430a, \
    { 0xa7, 0xff, 0x7e, 0xd7, 0xf0, 0x55, 0x34, 0xbc }}

class NS_NO_VTABLE INATNetworkPortForwardEvent : public INATNetworkAlterEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(INATNETWORKPORTFORWARDEVENT_IID)

  /* readonly attribute boolean create; */
  NS_IMETHOD GetCreate(PRBool *aCreate) = 0;

  /* readonly attribute boolean ipv6; */
  NS_IMETHOD GetIpv6(PRBool *aIpv6) = 0;

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* readonly attribute PRUint32 proto; */
  NS_IMETHOD GetProto(PRUint32 *aProto) = 0;

  /* readonly attribute wstring hostIp; */
  NS_IMETHOD GetHostIp(PRUnichar * *aHostIp) = 0;

  /* readonly attribute long hostPort; */
  NS_IMETHOD GetHostPort(PRInt32 *aHostPort) = 0;

  /* readonly attribute wstring guestIp; */
  NS_IMETHOD GetGuestIp(PRUnichar * *aGuestIp) = 0;

  /* readonly attribute long guestPort; */
  NS_IMETHOD GetGuestPort(PRInt32 *aGuestPort) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_INATNETWORKPORTFORWARDEVENT \
  NS_IMETHOD GetCreate(PRBool *aCreate); \
  NS_IMETHOD GetIpv6(PRBool *aIpv6); \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetProto(PRUint32 *aProto); \
  NS_IMETHOD GetHostIp(PRUnichar * *aHostIp); \
  NS_IMETHOD GetHostPort(PRInt32 *aHostPort); \
  NS_IMETHOD GetGuestIp(PRUnichar * *aGuestIp); \
  NS_IMETHOD GetGuestPort(PRInt32 *aGuestPort); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_INATNETWORKPORTFORWARDEVENT(_to) \
  NS_IMETHOD GetCreate(PRBool *aCreate) { return _to GetCreate(aCreate); } \
  NS_IMETHOD GetIpv6(PRBool *aIpv6) { return _to GetIpv6(aIpv6); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetProto(PRUint32 *aProto) { return _to GetProto(aProto); } \
  NS_IMETHOD GetHostIp(PRUnichar * *aHostIp) { return _to GetHostIp(aHostIp); } \
  NS_IMETHOD GetHostPort(PRInt32 *aHostPort) { return _to GetHostPort(aHostPort); } \
  NS_IMETHOD GetGuestIp(PRUnichar * *aGuestIp) { return _to GetGuestIp(aGuestIp); } \
  NS_IMETHOD GetGuestPort(PRInt32 *aGuestPort) { return _to GetGuestPort(aGuestPort); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_INATNETWORKPORTFORWARDEVENT(_to) \
  NS_IMETHOD GetCreate(PRBool *aCreate) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCreate(aCreate); } \
  NS_IMETHOD GetIpv6(PRBool *aIpv6) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIpv6(aIpv6); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetProto(PRUint32 *aProto) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProto(aProto); } \
  NS_IMETHOD GetHostIp(PRUnichar * *aHostIp) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHostIp(aHostIp); } \
  NS_IMETHOD GetHostPort(PRInt32 *aHostPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHostPort(aHostPort); } \
  NS_IMETHOD GetGuestIp(PRUnichar * *aGuestIp) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGuestIp(aGuestIp); } \
  NS_IMETHOD GetGuestPort(PRInt32 *aGuestPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGuestPort(aGuestPort); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public INATNetworkPortForwardEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_INATNETWORKPORTFORWARDEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, INATNetworkPortForwardEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* readonly attribute boolean create; */
NS_IMETHODIMP _MYCLASS_::GetCreate(PRBool *aCreate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean ipv6; */
NS_IMETHODIMP _MYCLASS_::GetIpv6(PRBool *aIpv6)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 proto; */
NS_IMETHODIMP _MYCLASS_::GetProto(PRUint32 *aProto)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring hostIp; */
NS_IMETHODIMP _MYCLASS_::GetHostIp(PRUnichar * *aHostIp)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long hostPort; */
NS_IMETHODIMP _MYCLASS_::GetHostPort(PRInt32 *aHostPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring guestIp; */
NS_IMETHODIMP _MYCLASS_::GetGuestIp(PRUnichar * *aGuestIp)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long guestPort; */
NS_IMETHODIMP _MYCLASS_::GetGuestPort(PRInt32 *aGuestPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_Create_TO(smth) NS_IMETHOD GetCreate (PRBool * aCreate) { return smth GetCreate (aCreate); }
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_Create_TO_OBJ(obj) COM_FORWARD_INATNetworkPortForwardEvent_GETTER_Create_TO ((obj)->)
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_Create_TO_BASE(base) COM_FORWARD_INATNetworkPortForwardEvent_GETTER_Create_TO (base::)
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_Ipv6_TO(smth) NS_IMETHOD GetIpv6 (PRBool * aIpv6) { return smth GetIpv6 (aIpv6); }
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_Ipv6_TO_OBJ(obj) COM_FORWARD_INATNetworkPortForwardEvent_GETTER_Ipv6_TO ((obj)->)
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_Ipv6_TO_BASE(base) COM_FORWARD_INATNetworkPortForwardEvent_GETTER_Ipv6_TO (base::)
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_Name_TO_OBJ(obj) COM_FORWARD_INATNetworkPortForwardEvent_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_Name_TO_BASE(base) COM_FORWARD_INATNetworkPortForwardEvent_GETTER_Name_TO (base::)
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_Proto_TO(smth) NS_IMETHOD GetProto (PRUint32 * aProto) { return smth GetProto (aProto); }
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_Proto_TO_OBJ(obj) COM_FORWARD_INATNetworkPortForwardEvent_GETTER_Proto_TO ((obj)->)
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_Proto_TO_BASE(base) COM_FORWARD_INATNetworkPortForwardEvent_GETTER_Proto_TO (base::)
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_HostIp_TO(smth) NS_IMETHOD GetHostIp (PRUnichar * * aHostIp) { return smth GetHostIp (aHostIp); }
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_HostIp_TO_OBJ(obj) COM_FORWARD_INATNetworkPortForwardEvent_GETTER_HostIp_TO ((obj)->)
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_HostIp_TO_BASE(base) COM_FORWARD_INATNetworkPortForwardEvent_GETTER_HostIp_TO (base::)
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_HostPort_TO(smth) NS_IMETHOD GetHostPort (PRInt32 * aHostPort) { return smth GetHostPort (aHostPort); }
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_HostPort_TO_OBJ(obj) COM_FORWARD_INATNetworkPortForwardEvent_GETTER_HostPort_TO ((obj)->)
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_HostPort_TO_BASE(base) COM_FORWARD_INATNetworkPortForwardEvent_GETTER_HostPort_TO (base::)
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_GuestIp_TO(smth) NS_IMETHOD GetGuestIp (PRUnichar * * aGuestIp) { return smth GetGuestIp (aGuestIp); }
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_GuestIp_TO_OBJ(obj) COM_FORWARD_INATNetworkPortForwardEvent_GETTER_GuestIp_TO ((obj)->)
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_GuestIp_TO_BASE(base) COM_FORWARD_INATNetworkPortForwardEvent_GETTER_GuestIp_TO (base::)
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_GuestPort_TO(smth) NS_IMETHOD GetGuestPort (PRInt32 * aGuestPort) { return smth GetGuestPort (aGuestPort); }
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_GuestPort_TO_OBJ(obj) COM_FORWARD_INATNetworkPortForwardEvent_GETTER_GuestPort_TO ((obj)->)
#define COM_FORWARD_INATNetworkPortForwardEvent_GETTER_GuestPort_TO_BASE(base) COM_FORWARD_INATNetworkPortForwardEvent_GETTER_GuestPort_TO (base::)
#define COM_FORWARD_INATNetworkPortForwardEvent_TO(smth) NS_FORWARD_INATNETWORKPORTFORWARDEVENT (smth)
#define COM_FORWARD_INATNetworkPortForwardEvent_TO_OBJ(obj) COM_FORWARD_INATNetworkPortForwardEvent_TO ((obj)->)
#define COM_FORWARD_INATNetworkPortForwardEvent_TO_BASE(base) COM_FORWARD_INATNetworkPortForwardEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_INATNetworkPortForwardEvent;

/* starting interface:    IHostNameResolutionConfigurationChangeEvent */
#define IHOSTNAMERESOLUTIONCONFIGURATIONCHANGEEVENT_IID_STR "f9b9e1cf-cb63-47a1-84fb-02c4894b89a9"

#define IHOSTNAMERESOLUTIONCONFIGURATIONCHANGEEVENT_IID \
  {0xf9b9e1cf, 0xcb63, 0x47a1, \
    { 0x84, 0xfb, 0x02, 0xc4, 0x89, 0x4b, 0x89, 0xa9 }}

class NS_NO_VTABLE IHostNameResolutionConfigurationChangeEvent : public IEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOSTNAMERESOLUTIONCONFIGURATIONCHANGEEVENT_IID)

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOSTNAMERESOLUTIONCONFIGURATIONCHANGEEVENT \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOSTNAMERESOLUTIONCONFIGURATIONCHANGEEVENT(_to) \
  /* no methods! */

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHOSTNAMERESOLUTIONCONFIGURATIONCHANGEEVENT(_to) \
  /* no methods! */

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class _MYCLASS_ : public IHostNameResolutionConfigurationChangeEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHOSTNAMERESOLUTIONCONFIGURATIONCHANGEEVENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, IHostNameResolutionConfigurationChangeEvent)

_MYCLASS_::_MYCLASS_()
{
  /* member initializers and constructor code */
}

_MYCLASS_::~_MYCLASS_()
{
  /* destructor code */
}

/* End of implementation class template. */
#endif

#define COM_FORWARD_IHostNameResolutionConfigurationChangeEvent_TO(smth) NS_FORWARD_IHOSTNAMERESOLUTIONCONFIGURATIONCHANGEEVENT (smth)
#define COM_FORWARD_IHostNameResolutionConfigurationChangeEvent_TO_OBJ(obj) COM_FORWARD_IHostNameResolutionConfigurationChangeEvent_TO ((obj)->)
#define COM_FORWARD_IHostNameResolutionConfigurationChangeEvent_TO_BASE(base) COM_FORWARD_IHostNameResolutionConfigurationChangeEvent_TO (base::)
// for compatibility with Win32
VBOX_EXTERN_C const nsID IID_IHostNameResolutionConfigurationChangeEvent;
// Definitions for module VBoxSVC, class VirtualBox:
#define NS_VIRTUALBOX_CID { \
    0xB1A7A4F2, 0x47B9, 0x4A1E, \
    { 0x82, 0xB2, 0x07, 0xCC, 0xD5, 0x32, 0x3C, 0x3F } \
}
#define NS_VIRTUALBOX_CONTRACTID "@virtualbox.org/VirtualBox;1"
// for compatibility with Win32
VBOX_EXTERN_C const nsCID CLSID_VirtualBox;
// Definitions for module VBoxC, class VirtualBoxClient:
#define NS_VIRTUALBOXCLIENT_CID { \
    0xdd3fc71d, 0x26c0, 0x4fe1, \
    { 0xbf, 0x6f, 0x67, 0xf6, 0x33, 0x26, 0x5b, 0xba } \
}
#define NS_VIRTUALBOXCLIENT_CONTRACTID "@virtualbox.org/VirtualBoxClient;1"
// for compatibility with Win32
VBOX_EXTERN_C const nsCID CLSID_VirtualBoxClient;
// Definitions for module VBoxC, class Session:
#define NS_SESSION_CID { \
    0x3C02F46D, 0xC9D2, 0x4F11, \
    { 0xA3, 0x84, 0x53, 0xF0, 0xCF, 0x91, 0x72, 0x14 } \
}
#define NS_SESSION_CONTRACTID "@virtualbox.org/Session;1"
// for compatibility with Win32
VBOX_EXTERN_C const nsCID CLSID_Session;

#endif /* __gen_VirtualBox_XPCOM_h__ */
