/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM /home/vbox/tinderbox/4.1-sdk/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
/**
 * For escaping compound expression so they don't cause trouble when -pedantic
 * is used.
 * @internal
 */
#if defined(__cplusplus) && defined(__GNUC__)
# define VBOX_GCC_EXTENSION __extension__
#endif
#ifndef VBOX_GCC_EXTENSION
# define VBOX_GCC_EXTENSION
#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
#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_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
  
#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 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 IVRDEServerInfo; /* forward declaration */

class IConsole; /* forward declaration */

class IHostNetworkInterface; /* forward declaration */

class IHost; /* forward declaration */

class ISystemProperties; /* forward declaration */

class IGuestOSType; /* forward declaration */

class IAdditionsFacility; /* forward declaration */

class IGuestDirEntry; /* 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 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 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 ICPUChangedEvent; /* forward declaration */

class ICPUExecutionCapChangedEvent; /* forward declaration */

class IGuestKeyboardEvent; /* forward declaration */

class IGuestMouseEvent; /* forward declaration */

class IVRDEServerChangedEvent; /* forward declaration */

class IVRDEServerInfoChangedEvent; /* 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 IStorageDeviceChangedEvent; /* forward declaration */


/* starting interface:    SettingsVersion */
#define SETTINGSVERSION_IID_STR "52bd6f5f-1adb-4493-975d-581a9c4b803f"

#define SETTINGSVERSION_IID \
  {0x52bd6f5f, 0x1adb, 0x4493, \
    { 0x97, 0x5d, 0x58, 0x1a, 0x9c, 0x4b, 0x80, 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 { 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_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 "24d356a6-2f45-4abd-b977-1cbe9c4701f5"

#define CPUPROPERTYTYPE_IID \
  {0x24d356a6, 0x2f45, 0x4abd, \
    { 0xb9, 0x77, 0x1c, 0xbe, 0x9c, 0x47, 0x01, 0xf5 }}

class NS_NO_VTABLE CPUPropertyType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(CPUPROPERTYTYPE_IID)

  enum { Null = 0U };

  enum { PAE = 1U };

  enum { Synthetic = 2U };

};

/* 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

/* starting interface:    HWVirtExPropertyType */
#define HWVIRTEXPROPERTYTYPE_IID_STR "ce81dfdd-d2b8-4a90-bbea-40ee8b7ffcee"

#define HWVIRTEXPROPERTYTYPE_IID \
  {0xce81dfdd, 0xd2b8, 0x4a90, \
    { 0xbb, 0xea, 0x40, 0xee, 0x8b, 0x7f, 0xfc, 0xee }}

class NS_NO_VTABLE HWVirtExPropertyType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(HWVIRTEXPROPERTYTYPE_IID)

  enum { Null = 0U };

  enum { Enabled = 1U };

  enum { Exclusive = 2U };

  enum { VPID = 3U };

  enum { NestedPaging = 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_Exclusive HWVirtExPropertyType::Exclusive
#define HWVirtExPropertyType_VPID HWVirtExPropertyType::VPID
#define HWVirtExPropertyType_NestedPaging HWVirtExPropertyType::NestedPaging
#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 "138b53f8-db4b-47c5-b32b-4ef52f769413"

#define LOCKTYPE_IID \
  {0x138b53f8, 0xdb4b, 0x47c5, \
    { 0xb3, 0x2b, 0x4e, 0xf5, 0x2f, 0x76, 0x94, 0x13 }}

class NS_NO_VTABLE LockType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(LOCKTYPE_IID)

  enum { Write = 2U };

  enum { Shared = 1U };

};

/* 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

/* 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:    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 "0d3c17a2-821a-4b2e-ae41-890c6c60aa97"

#define POINTINGHIDTYPE_IID \
  {0x0d3c17a2, 0x821a, 0x4b2e, \
    { 0xae, 0x41, 0x89, 0x0c, 0x6c, 0x60, 0xaa, 0x97 }}

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 };

};

/* 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

/* starting interface:    KeyboardHidType */
#define KEYBOARDHIDTYPE_IID_STR "5a5b0996-3a3e-44bb-9019-56979812cbcc"

#define KEYBOARDHIDTYPE_IID \
  {0x5a5b0996, 0x3a3e, 0x44bb, \
    { 0x90, 0x19, 0x56, 0x97, 0x98, 0x12, 0xcb, 0xcc }}

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:    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:    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:    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:    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 { 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_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:    ExecuteProcessFlag */
#define EXECUTEPROCESSFLAG_IID_STR "286ceb91-5f66-4c96-9845-4483e90e00ae"

#define EXECUTEPROCESSFLAG_IID \
  {0x286ceb91, 0x5f66, 0x4c96, \
    { 0x98, 0x45, 0x44, 0x83, 0xe9, 0x0e, 0x00, 0xae }}

class NS_NO_VTABLE ExecuteProcessFlag {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(EXECUTEPROCESSFLAG_IID)

  enum { None = 0U };

  enum { WaitForProcessStartOnly = 1U };

  enum { IgnoreOrphanedProcesses = 2U };

  enum { Hidden = 4U };

  enum { NoProfile = 8U };

};

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

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_EXECUTEPROCESSFLAG(_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_EXECUTEPROCESSFLAG(_to) \

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

/* Header file */
class _MYCLASS_ : public ExecuteProcessFlag
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_EXECUTEPROCESSFLAG

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define ExecuteProcessFlag_T PRUint32
#define ExecuteProcessFlag_None ExecuteProcessFlag::None
#define ExecuteProcessFlag_WaitForProcessStartOnly ExecuteProcessFlag::WaitForProcessStartOnly
#define ExecuteProcessFlag_IgnoreOrphanedProcesses ExecuteProcessFlag::IgnoreOrphanedProcesses
#define ExecuteProcessFlag_Hidden ExecuteProcessFlag::Hidden
#define ExecuteProcessFlag_NoProfile ExecuteProcessFlag::NoProfile

/* starting interface:    ExecuteProcessStatus */
#define EXECUTEPROCESSSTATUS_IID_STR "153768d9-d971-4098-8b5a-c5cb1ab9ea88"

#define EXECUTEPROCESSSTATUS_IID \
  {0x153768d9, 0xd971, 0x4098, \
    { 0x8b, 0x5a, 0xc5, 0xcb, 0x1a, 0xb9, 0xea, 0x88 }}

class NS_NO_VTABLE ExecuteProcessStatus {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(EXECUTEPROCESSSTATUS_IID)

  enum { Undefined = 0U };

  enum { Started = 1U };

  enum { TerminatedNormally = 2U };

  enum { TerminatedSignal = 3U };

  enum { TerminatedAbnormally = 4U };

  enum { TimedOutKilled = 5U };

  enum { TimedOutAbnormally = 6U };

  enum { Down = 7U };

  enum { Error = 8U };

};

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

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_EXECUTEPROCESSSTATUS(_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_EXECUTEPROCESSSTATUS(_to) \

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

/* Header file */
class _MYCLASS_ : public ExecuteProcessStatus
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_EXECUTEPROCESSSTATUS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define ExecuteProcessStatus_T PRUint32
#define ExecuteProcessStatus_Undefined ExecuteProcessStatus::Undefined
#define ExecuteProcessStatus_Started ExecuteProcessStatus::Started
#define ExecuteProcessStatus_TerminatedNormally ExecuteProcessStatus::TerminatedNormally
#define ExecuteProcessStatus_TerminatedSignal ExecuteProcessStatus::TerminatedSignal
#define ExecuteProcessStatus_TerminatedAbnormally ExecuteProcessStatus::TerminatedAbnormally
#define ExecuteProcessStatus_TimedOutKilled ExecuteProcessStatus::TimedOutKilled
#define ExecuteProcessStatus_TimedOutAbnormally ExecuteProcessStatus::TimedOutAbnormally
#define ExecuteProcessStatus_Down ExecuteProcessStatus::Down
#define ExecuteProcessStatus_Error ExecuteProcessStatus::Error

/* 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:    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:    DirectoryOpenFlag */
#define DIRECTORYOPENFLAG_IID_STR "fc8f6203-0072-4f34-bd08-0b35e50bf071"

#define DIRECTORYOPENFLAG_IID \
  {0xfc8f6203, 0x0072, 0x4f34, \
    { 0xbd, 0x08, 0x0b, 0x35, 0xe5, 0x0b, 0xf0, 0x71 }}

class NS_NO_VTABLE DirectoryOpenFlag {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(DIRECTORYOPENFLAG_IID)

  enum { None = 0U };

};

/* 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

/* starting interface:    GuestDirEntryType */
#define GUESTDIRENTRYTYPE_IID_STR "6d19d924-1b77-4fc8-b369-a3b2c85c8241"

#define GUESTDIRENTRYTYPE_IID \
  {0x6d19d924, 0x1b77, 0x4fc8, \
    { 0xb3, 0x69, 0xa3, 0xb2, 0xc8, 0x5c, 0x82, 0x41 }}

class NS_NO_VTABLE GuestDirEntryType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(GUESTDIRENTRYTYPE_IID)

  enum { Unknown = 0U };

  enum { Directory = 4U };

  enum { File = 10U };

  enum { Symlink = 12U };

};

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

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_GUESTDIRENTRYTYPE(_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_GUESTDIRENTRYTYPE(_to) \

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

/* Header file */
class _MYCLASS_ : public GuestDirEntryType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_GUESTDIRENTRYTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define GuestDirEntryType_T PRUint32
#define GuestDirEntryType_Unknown GuestDirEntryType::Unknown
#define GuestDirEntryType_Directory GuestDirEntryType::Directory
#define GuestDirEntryType_File GuestDirEntryType::File
#define GuestDirEntryType_Symlink GuestDirEntryType::Symlink

/* 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 "584ea502-143b-4ab0-ad14-d1028fdf0316"

#define MEDIUMVARIANT_IID \
  {0x584ea502, 0x143b, 0x4ab0, \
    { 0xad, 0x14, 0xd1, 0x02, 0x8f, 0xdf, 0x03, 0x16 }}

class NS_NO_VTABLE MediumVariant {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(MEDIUMVARIANT_IID)

  enum { Standard = 0U };

  enum { VmdkSplit2G = 1U };

  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_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:    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 "2ac4bc71-6b82-417a-acd1-f7426d2570d6"

#define NETWORKATTACHMENTTYPE_IID \
  {0x2ac4bc71, 0x6b82, 0x417a, \
    { 0xac, 0xd1, 0xf7, 0x42, 0x6d, 0x25, 0x70, 0xd6 }}

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 };

};

/* 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

/* 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:    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:    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 "cce48db6-8561-479d-8d46-1358bab45d4e"

#define VBOXEVENTTYPE_IID \
  {0xcce48db6, 0x8561, 0x479d, \
    { 0x8d, 0x46, 0x13, 0x58, 0xba, 0xb4, 0x5d, 0x4e }}

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 { Last = 72U };

};

/* 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_Last VBoxEventType::Last

/* 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 "e053d3c0-f493-491b-a735-3a9f0b1feed4"

#define IVIRTUALBOXERRORINFO_IID \
  {0xe053d3c0, 0xf493, 0x491b, \
    { 0xa7, 0x35, 0x3a, 0x9f, 0x0b, 0x1f, 0xee, 0xd4 }}

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 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 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 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 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 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_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::)

/* starting interface:    IDHCPServer */
#define IDHCPSERVER_IID_STR "6cfe387c-74fb-4ca7-bff6-973bec8af7a3"

#define IDHCPSERVER_IID \
  {0x6cfe387c, 0x74fb, 0x4ca7, \
    { 0xbf, 0xf6, 0x97, 0x3b, 0xec, 0x8a, 0xf7, 0xa3 }}

class NS_NO_VTABLE IDHCPServer : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IDHCPSERVER_IID)

  /* 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 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 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 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 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 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 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 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 */
}

/* 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 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_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_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::)

/* starting interface:    IVirtualBox */
#define IVIRTUALBOX_IID_STR "c28be65f-1a8f-43b4-81f1-eb60cb516e66"

#define IVIRTUALBOX_IID \
  {0xc28be65f, 0x1a8f, 0x43b4, \
    { 0x81, 0xf1, 0xeb, 0x60, 0xcb, 0x51, 0x6e, 0x66 }}

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 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 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;

  /* 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 baseFolder, [retval] out wstring file); */
  NS_IMETHOD ComposeMachineFilename(const PRUnichar *name, const PRUnichar *baseFolder, PRUnichar **file) = 0;

  /* void createMachine (in wstring settingsFile, in wstring name, in wstring osTypeId, in wstring id, in boolean forceOverwrite, [retval] out IMachine machine); */
  NS_IMETHOD CreateMachine(const PRUnichar *settingsFile, const PRUnichar *name, const PRUnichar *osTypeId, const PRUnichar *id, PRBool forceOverwrite, 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 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 findMedium (in wstring location, in PRUint32 type, [retval] out IMedium medium); */
  NS_IMETHOD FindMedium(const PRUnichar *location, PRUint32 type, 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 valueSize, [array, size_is (valueSize), retval] out wstring value); */
  NS_IMETHOD GetExtraDataKeys(PRUint32 *valueSize, PRUnichar ***value) = 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 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 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 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 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 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 *baseFolder, PRUnichar **file); \
  NS_IMETHOD CreateMachine(const PRUnichar *settingsFile, const PRUnichar *name, const PRUnichar *osTypeId, const PRUnichar *id, PRBool forceOverwrite, 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 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 FindMedium(const PRUnichar *location, PRUint32 type, 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 *valueSize, PRUnichar ***value); \
  NS_IMETHOD GetExtraData(const PRUnichar *key, PRUnichar **value); \
  NS_IMETHOD SetExtraData(const PRUnichar *key, const PRUnichar *value); \
  NS_IMETHOD CreateDHCPServer(const PRUnichar *name, IDHCPServer **server); \
  NS_IMETHOD FindDHCPServerByNetworkName(const PRUnichar *name, IDHCPServer **server); \
  NS_IMETHOD RemoveDHCPServer(IDHCPServer *server); \
  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 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 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 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 *baseFolder, PRUnichar **file) { return _to ComposeMachineFilename(name, baseFolder, file); } \
  NS_IMETHOD CreateMachine(const PRUnichar *settingsFile, const PRUnichar *name, const PRUnichar *osTypeId, const PRUnichar *id, PRBool forceOverwrite, IMachine **machine) { return _to CreateMachine(settingsFile, name, osTypeId, id, forceOverwrite, 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 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 FindMedium(const PRUnichar *location, PRUint32 type, IMedium **medium) { return _to FindMedium(location, type, 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 *valueSize, PRUnichar ***value) { return _to GetExtraDataKeys(valueSize, value); } \
  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 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 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 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 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 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 *baseFolder, PRUnichar **file) { return !_to ? NS_ERROR_NULL_POINTER : _to->ComposeMachineFilename(name, baseFolder, file); } \
  NS_IMETHOD CreateMachine(const PRUnichar *settingsFile, const PRUnichar *name, const PRUnichar *osTypeId, const PRUnichar *id, PRBool forceOverwrite, IMachine **machine) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateMachine(settingsFile, name, osTypeId, id, forceOverwrite, 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 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 FindMedium(const PRUnichar *location, PRUint32 type, IMedium **medium) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindMedium(location, type, 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 *valueSize, PRUnichar ***value) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExtraDataKeys(valueSize, value); } \
  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 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 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 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 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;
}

/* 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 baseFolder, [retval] out wstring file); */
NS_IMETHODIMP _MYCLASS_::ComposeMachineFilename(const PRUnichar *name, const PRUnichar *baseFolder, PRUnichar **file)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createMachine (in wstring settingsFile, in wstring name, in wstring osTypeId, in wstring id, in boolean forceOverwrite, [retval] out IMachine machine); */
NS_IMETHODIMP _MYCLASS_::CreateMachine(const PRUnichar *settingsFile, const PRUnichar *name, const PRUnichar *osTypeId, const PRUnichar *id, PRBool forceOverwrite, 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 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 findMedium (in wstring location, in PRUint32 type, [retval] out IMedium medium); */
NS_IMETHODIMP _MYCLASS_::FindMedium(const PRUnichar *location, PRUint32 type, 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 valueSize, [array, size_is (valueSize), retval] out wstring value); */
NS_IMETHODIMP _MYCLASS_::GetExtraDataKeys(PRUint32 *valueSize, PRUnichar ***value)
{
    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 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 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_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_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_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 * aBaseFolder, PRUnichar * * aFile) { return smth ComposeMachineFilename (aName, 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, PRUnichar * aOsTypeId, PRUnichar * aId, PRBool aForceOverwrite, IMachine * * aMachine) { return smth CreateMachine (aSettingsFile, aName, aOsTypeId, aId, aForceOverwrite, 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_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_FindMedium_TO(smth) NS_IMETHOD FindMedium (PRUnichar * aLocation, PRUint32 aType, IMedium * * aMedium) { return smth FindMedium (aLocation, aType, aMedium); }
#define COM_FORWARD_IVirtualBox_FindMedium_TO_OBJ(obj) COM_FORWARD_IVirtualBox_FindMedium_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_FindMedium_TO_BASE(base) COM_FORWARD_IVirtualBox_FindMedium_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 * aValueSize, PRUnichar * * * aValue) { return smth GetExtraDataKeys (aValueSize, aValue); }
#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_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_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::)

/* starting interface:    IVFSExplorer */
#define IVFSEXPLORER_IID_STR "003d7f92-d38e-487f-b790-8c5e8631cb2f"

#define IVFSEXPLORER_IID \
  {0x003d7f92, 0xd38e, 0x487f, \
    { 0xb7, 0x90, 0x8c, 0x5e, 0x86, 0x31, 0xcb, 0x2f }}

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 aProgress); */
  NS_IMETHOD Update(IProgress **aProgress) = 0;

  /* void cd (in wstring aDir, [retval] out IProgress aProgress); */
  NS_IMETHOD Cd(const PRUnichar *aDir, IProgress **aProgress) = 0;

  /* void cdUp ([retval] out IProgress aProgress); */
  NS_IMETHOD CdUp(IProgress **aProgress) = 0;

  /* void entryList (out unsigned long aNamesSize, [array, size_is (aNamesSize)] out wstring aNames, out unsigned long aTypesSize, [array, size_is (aTypesSize)] out unsigned long aTypes, out unsigned long aSizesSize, [array, size_is (aSizesSize)] out unsigned long aSizes, out unsigned long aModesSize, [array, size_is (aModesSize)] out unsigned long aModes); */
  NS_IMETHOD EntryList(PRUint32 *aNamesSize, PRUnichar ***aNames, PRUint32 *aTypesSize, PRUint32 **aTypes, PRUint32 *aSizesSize, PRUint32 **aSizes, PRUint32 *aModesSize, PRUint32 **aModes) = 0;

  /* void exists (in unsigned long aNamesSize, [array, size_is (aNamesSize)] in wstring aNames, out unsigned long aExistsSize, [array, size_is (aExistsSize), retval] out wstring aExists); */
  NS_IMETHOD Exists(PRUint32 aNamesSize, const PRUnichar **aNames, PRUint32 *aExistsSize, PRUnichar ***aExists) = 0;

  /* void remove (in unsigned long aNamesSize, [array, size_is (aNamesSize)] in wstring aNames, [retval] out IProgress aProgress); */
  NS_IMETHOD Remove(PRUint32 aNamesSize, const PRUnichar **aNames, IProgress **aProgress) = 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 **aProgress); \
  NS_IMETHOD Cd(const PRUnichar *aDir, IProgress **aProgress); \
  NS_IMETHOD CdUp(IProgress **aProgress); \
  NS_IMETHOD EntryList(PRUint32 *aNamesSize, PRUnichar ***aNames, PRUint32 *aTypesSize, PRUint32 **aTypes, PRUint32 *aSizesSize, PRUint32 **aSizes, PRUint32 *aModesSize, PRUint32 **aModes); \
  NS_IMETHOD Exists(PRUint32 aNamesSize, const PRUnichar **aNames, PRUint32 *aExistsSize, PRUnichar ***aExists); \
  NS_IMETHOD Remove(PRUint32 aNamesSize, const PRUnichar **aNames, IProgress **aProgress); 

/* 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 **aProgress) { return _to Update(aProgress); } \
  NS_IMETHOD Cd(const PRUnichar *aDir, IProgress **aProgress) { return _to Cd(aDir, aProgress); } \
  NS_IMETHOD CdUp(IProgress **aProgress) { return _to CdUp(aProgress); } \
  NS_IMETHOD EntryList(PRUint32 *aNamesSize, PRUnichar ***aNames, PRUint32 *aTypesSize, PRUint32 **aTypes, PRUint32 *aSizesSize, PRUint32 **aSizes, PRUint32 *aModesSize, PRUint32 **aModes) { return _to EntryList(aNamesSize, aNames, aTypesSize, aTypes, aSizesSize, aSizes, aModesSize, aModes); } \
  NS_IMETHOD Exists(PRUint32 aNamesSize, const PRUnichar **aNames, PRUint32 *aExistsSize, PRUnichar ***aExists) { return _to Exists(aNamesSize, aNames, aExistsSize, aExists); } \
  NS_IMETHOD Remove(PRUint32 aNamesSize, const PRUnichar **aNames, IProgress **aProgress) { return _to Remove(aNamesSize, aNames, aProgress); } 

/* 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 **aProgress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Update(aProgress); } \
  NS_IMETHOD Cd(const PRUnichar *aDir, IProgress **aProgress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Cd(aDir, aProgress); } \
  NS_IMETHOD CdUp(IProgress **aProgress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CdUp(aProgress); } \
  NS_IMETHOD EntryList(PRUint32 *aNamesSize, PRUnichar ***aNames, PRUint32 *aTypesSize, PRUint32 **aTypes, PRUint32 *aSizesSize, PRUint32 **aSizes, PRUint32 *aModesSize, PRUint32 **aModes) { return !_to ? NS_ERROR_NULL_POINTER : _to->EntryList(aNamesSize, aNames, aTypesSize, aTypes, aSizesSize, aSizes, aModesSize, aModes); } \
  NS_IMETHOD Exists(PRUint32 aNamesSize, const PRUnichar **aNames, PRUint32 *aExistsSize, PRUnichar ***aExists) { return !_to ? NS_ERROR_NULL_POINTER : _to->Exists(aNamesSize, aNames, aExistsSize, aExists); } \
  NS_IMETHOD Remove(PRUint32 aNamesSize, const PRUnichar **aNames, IProgress **aProgress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Remove(aNamesSize, aNames, aProgress); } 

#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 aProgress); */
NS_IMETHODIMP _MYCLASS_::Update(IProgress **aProgress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void cd (in wstring aDir, [retval] out IProgress aProgress); */
NS_IMETHODIMP _MYCLASS_::Cd(const PRUnichar *aDir, IProgress **aProgress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void cdUp ([retval] out IProgress aProgress); */
NS_IMETHODIMP _MYCLASS_::CdUp(IProgress **aProgress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void entryList (out unsigned long aNamesSize, [array, size_is (aNamesSize)] out wstring aNames, out unsigned long aTypesSize, [array, size_is (aTypesSize)] out unsigned long aTypes, out unsigned long aSizesSize, [array, size_is (aSizesSize)] out unsigned long aSizes, out unsigned long aModesSize, [array, size_is (aModesSize)] out unsigned long aModes); */
NS_IMETHODIMP _MYCLASS_::EntryList(PRUint32 *aNamesSize, PRUnichar ***aNames, PRUint32 *aTypesSize, PRUint32 **aTypes, PRUint32 *aSizesSize, PRUint32 **aSizes, PRUint32 *aModesSize, PRUint32 **aModes)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void exists (in unsigned long aNamesSize, [array, size_is (aNamesSize)] in wstring aNames, out unsigned long aExistsSize, [array, size_is (aExistsSize), retval] out wstring aExists); */
NS_IMETHODIMP _MYCLASS_::Exists(PRUint32 aNamesSize, const PRUnichar **aNames, PRUint32 *aExistsSize, PRUnichar ***aExists)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void remove (in unsigned long aNamesSize, [array, size_is (aNamesSize)] in wstring aNames, [retval] out IProgress aProgress); */
NS_IMETHODIMP _MYCLASS_::Remove(PRUint32 aNamesSize, const PRUnichar **aNames, IProgress **aProgress)
{
    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 * * aAProgress) { return smth Update (aAProgress); }
#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 * aADir, IProgress * * aAProgress) { return smth Cd (aADir, aAProgress); }
#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 * * aAProgress) { return smth CdUp (aAProgress); }
#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 * aANamesSize, PRUnichar * * * aANames, PRUint32 * aATypesSize, PRUint32 * * aATypes, PRUint32 * aASizesSize, PRUint32 * * aASizes, PRUint32 * aAModesSize, PRUint32 * * aAModes) { return smth EntryList (aANamesSize+++, aANames, aATypesSize+++, aATypes, aASizesSize+++, aASizes, aAModesSize, aAModes); }
#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 aANamesSize, PRUnichar * * aANames, PRUint32 * aAExistsSize, PRUnichar * * * aAExists) { return smth Exists (aANamesSize+++, aANames, aAExistsSize, aAExists); }
#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 aANamesSize, PRUnichar * * aANames, IProgress * * aAProgress) { return smth Remove (aANamesSize+++, aANames, aAProgress); }
#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::)

/* 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 aProgress); */
  NS_IMETHOD Read(const PRUnichar *file, IProgress **aProgress) = 0;

  /* void interpret (); */
  NS_IMETHOD Interpret(void) = 0;

  /* void importMachines (in unsigned long optionsSize, [array, size_is (optionsSize)] in PRUint32 options, [retval] out IProgress aProgress); */
  NS_IMETHOD ImportMachines(PRUint32 optionsSize, PRUint32 *options, IProgress **aProgress) = 0;

  /* void createVFSExplorer (in wstring aUri, [retval] out IVFSExplorer aExplorer); */
  NS_IMETHOD CreateVFSExplorer(const PRUnichar *aUri, IVFSExplorer **aExplorer) = 0;

  /* void write (in wstring format, in boolean manifest, in wstring path, [retval] out IProgress progress); */
  NS_IMETHOD Write(const PRUnichar *format, PRBool manifest, const PRUnichar *path, IProgress **progress) = 0;

  /* void getWarnings (out unsigned long aWarningsSize, [array, size_is (aWarningsSize), retval] out wstring aWarnings); */
  NS_IMETHOD GetWarnings(PRUint32 *aWarningsSize, PRUnichar ***aWarnings) = 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 **aProgress); \
  NS_IMETHOD Interpret(void); \
  NS_IMETHOD ImportMachines(PRUint32 optionsSize, PRUint32 *options, IProgress **aProgress); \
  NS_IMETHOD CreateVFSExplorer(const PRUnichar *aUri, IVFSExplorer **aExplorer); \
  NS_IMETHOD Write(const PRUnichar *format, PRBool manifest, const PRUnichar *path, IProgress **progress); \
  NS_IMETHOD GetWarnings(PRUint32 *aWarningsSize, PRUnichar ***aWarnings); 

/* 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 **aProgress) { return _to Read(file, aProgress); } \
  NS_IMETHOD Interpret(void) { return _to Interpret(); } \
  NS_IMETHOD ImportMachines(PRUint32 optionsSize, PRUint32 *options, IProgress **aProgress) { return _to ImportMachines(optionsSize, options, aProgress); } \
  NS_IMETHOD CreateVFSExplorer(const PRUnichar *aUri, IVFSExplorer **aExplorer) { return _to CreateVFSExplorer(aUri, aExplorer); } \
  NS_IMETHOD Write(const PRUnichar *format, PRBool manifest, const PRUnichar *path, IProgress **progress) { return _to Write(format, manifest, path, progress); } \
  NS_IMETHOD GetWarnings(PRUint32 *aWarningsSize, PRUnichar ***aWarnings) { return _to GetWarnings(aWarningsSize, aWarnings); } 

/* 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 **aProgress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Read(file, aProgress); } \
  NS_IMETHOD Interpret(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Interpret(); } \
  NS_IMETHOD ImportMachines(PRUint32 optionsSize, PRUint32 *options, IProgress **aProgress) { return !_to ? NS_ERROR_NULL_POINTER : _to->ImportMachines(optionsSize, options, aProgress); } \
  NS_IMETHOD CreateVFSExplorer(const PRUnichar *aUri, IVFSExplorer **aExplorer) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateVFSExplorer(aUri, aExplorer); } \
  NS_IMETHOD Write(const PRUnichar *format, PRBool manifest, const PRUnichar *path, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Write(format, manifest, path, progress); } \
  NS_IMETHOD GetWarnings(PRUint32 *aWarningsSize, PRUnichar ***aWarnings) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWarnings(aWarningsSize, aWarnings); } 

#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 aProgress); */
NS_IMETHODIMP _MYCLASS_::Read(const PRUnichar *file, IProgress **aProgress)
{
    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 aProgress); */
NS_IMETHODIMP _MYCLASS_::ImportMachines(PRUint32 optionsSize, PRUint32 *options, IProgress **aProgress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createVFSExplorer (in wstring aUri, [retval] out IVFSExplorer aExplorer); */
NS_IMETHODIMP _MYCLASS_::CreateVFSExplorer(const PRUnichar *aUri, IVFSExplorer **aExplorer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void write (in wstring format, in boolean manifest, in wstring path, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::Write(const PRUnichar *format, PRBool manifest, const PRUnichar *path, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getWarnings (out unsigned long aWarningsSize, [array, size_is (aWarningsSize), retval] out wstring aWarnings); */
NS_IMETHODIMP _MYCLASS_::GetWarnings(PRUint32 *aWarningsSize, PRUnichar ***aWarnings)
{
    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 * * aAProgress) { return smth Read (aFile, aAProgress); }
#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 * * aAProgress) { return smth ImportMachines (aOptionsSize+++, aOptions, aAProgress); }
#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 * aAUri, IVFSExplorer * * aAExplorer) { return smth CreateVFSExplorer (aAUri, aAExplorer); }
#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, PRBool aManifest, PRUnichar * aPath, IProgress * * aProgress) { return smth Write (aFormat, aManifest, 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 * aAWarningsSize, PRUnichar * * * aAWarnings) { return smth GetWarnings (aAWarningsSize, aAWarnings); }
#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::)

/* 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 aTypesSize, [array, size_is (aTypesSize)] out PRUint32 aTypes, out unsigned long aRefsSize, [array, size_is (aRefsSize)] out wstring aRefs, out unsigned long aOvfValuesSize, [array, size_is (aOvfValuesSize)] out wstring aOvfValues, out unsigned long aVBoxValuesSize, [array, size_is (aVBoxValuesSize)] out wstring aVBoxValues, out unsigned long aExtraConfigValuesSize, [array, size_is (aExtraConfigValuesSize)] out wstring aExtraConfigValues); */
  NS_IMETHOD GetDescription(PRUint32 *aTypesSize, PRUint32 **aTypes, PRUint32 *aRefsSize, PRUnichar ***aRefs, PRUint32 *aOvfValuesSize, PRUnichar ***aOvfValues, PRUint32 *aVBoxValuesSize, PRUnichar ***aVBoxValues, PRUint32 *aExtraConfigValuesSize, PRUnichar ***aExtraConfigValues) = 0;

  /* void getDescriptionByType (in PRUint32 aType, out unsigned long aTypesSize, [array, size_is (aTypesSize)] out PRUint32 aTypes, out unsigned long aRefsSize, [array, size_is (aRefsSize)] out wstring aRefs, out unsigned long aOvfValuesSize, [array, size_is (aOvfValuesSize)] out wstring aOvfValues, out unsigned long aVBoxValuesSize, [array, size_is (aVBoxValuesSize)] out wstring aVBoxValues, out unsigned long aExtraConfigValuesSize, [array, size_is (aExtraConfigValuesSize)] out wstring aExtraConfigValues); */
  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) = 0;

  /* void getValuesByType (in PRUint32 aType, in PRUint32 aWhich, out unsigned long aValuesSize, [array, size_is (aValuesSize), retval] out wstring aValues); */
  NS_IMETHOD GetValuesByType(PRUint32 aType, PRUint32 aWhich, PRUint32 *aValuesSize, PRUnichar ***aValues) = 0;

  /* void setFinalValues (in unsigned long aEnabledSize, [array, size_is (aEnabledSize)] in boolean aEnabled, in unsigned long aVBoxValuesSize, [array, size_is (aVBoxValuesSize)] in wstring aVBoxValues, in unsigned long aExtraConfigValuesSize, [array, size_is (aExtraConfigValuesSize)] in wstring aExtraConfigValues); */
  NS_IMETHOD SetFinalValues(PRUint32 aEnabledSize, PRBool *aEnabled, PRUint32 aVBoxValuesSize, const PRUnichar **aVBoxValues, PRUint32 aExtraConfigValuesSize, const PRUnichar **aExtraConfigValues) = 0;

  /* void addDescription (in PRUint32 aType, in wstring aVBoxValue, in wstring aExtraConfigValue); */
  NS_IMETHOD AddDescription(PRUint32 aType, const PRUnichar *aVBoxValue, const PRUnichar *aExtraConfigValue) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVIRTUALSYSTEMDESCRIPTION \
  NS_IMETHOD GetCount(PRUint32 *aCount); \
  NS_IMETHOD GetDescription(PRUint32 *aTypesSize, PRUint32 **aTypes, PRUint32 *aRefsSize, PRUnichar ***aRefs, PRUint32 *aOvfValuesSize, PRUnichar ***aOvfValues, PRUint32 *aVBoxValuesSize, PRUnichar ***aVBoxValues, PRUint32 *aExtraConfigValuesSize, PRUnichar ***aExtraConfigValues); \
  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); \
  NS_IMETHOD GetValuesByType(PRUint32 aType, PRUint32 aWhich, PRUint32 *aValuesSize, PRUnichar ***aValues); \
  NS_IMETHOD SetFinalValues(PRUint32 aEnabledSize, PRBool *aEnabled, PRUint32 aVBoxValuesSize, const PRUnichar **aVBoxValues, PRUint32 aExtraConfigValuesSize, const PRUnichar **aExtraConfigValues); \
  NS_IMETHOD AddDescription(PRUint32 aType, const PRUnichar *aVBoxValue, const PRUnichar *aExtraConfigValue); 

/* 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 *aTypesSize, PRUint32 **aTypes, PRUint32 *aRefsSize, PRUnichar ***aRefs, PRUint32 *aOvfValuesSize, PRUnichar ***aOvfValues, PRUint32 *aVBoxValuesSize, PRUnichar ***aVBoxValues, PRUint32 *aExtraConfigValuesSize, PRUnichar ***aExtraConfigValues) { return _to GetDescription(aTypesSize, aTypes, aRefsSize, aRefs, aOvfValuesSize, aOvfValues, aVBoxValuesSize, aVBoxValues, aExtraConfigValuesSize, aExtraConfigValues); } \
  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 _to GetDescriptionByType(aType, aTypesSize, aTypes, aRefsSize, aRefs, aOvfValuesSize, aOvfValues, aVBoxValuesSize, aVBoxValues, aExtraConfigValuesSize, aExtraConfigValues); } \
  NS_IMETHOD GetValuesByType(PRUint32 aType, PRUint32 aWhich, PRUint32 *aValuesSize, PRUnichar ***aValues) { return _to GetValuesByType(aType, aWhich, aValuesSize, aValues); } \
  NS_IMETHOD SetFinalValues(PRUint32 aEnabledSize, PRBool *aEnabled, PRUint32 aVBoxValuesSize, const PRUnichar **aVBoxValues, PRUint32 aExtraConfigValuesSize, const PRUnichar **aExtraConfigValues) { return _to SetFinalValues(aEnabledSize, aEnabled, aVBoxValuesSize, aVBoxValues, aExtraConfigValuesSize, aExtraConfigValues); } \
  NS_IMETHOD AddDescription(PRUint32 aType, const PRUnichar *aVBoxValue, const PRUnichar *aExtraConfigValue) { return _to AddDescription(aType, aVBoxValue, aExtraConfigValue); } 

/* 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 *aTypesSize, PRUint32 **aTypes, PRUint32 *aRefsSize, PRUnichar ***aRefs, PRUint32 *aOvfValuesSize, PRUnichar ***aOvfValues, PRUint32 *aVBoxValuesSize, PRUnichar ***aVBoxValues, PRUint32 *aExtraConfigValuesSize, PRUnichar ***aExtraConfigValues) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aTypesSize, aTypes, aRefsSize, aRefs, aOvfValuesSize, aOvfValues, aVBoxValuesSize, aVBoxValues, aExtraConfigValuesSize, aExtraConfigValues); } \
  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 !_to ? NS_ERROR_NULL_POINTER : _to->GetDescriptionByType(aType, aTypesSize, aTypes, aRefsSize, aRefs, aOvfValuesSize, aOvfValues, aVBoxValuesSize, aVBoxValues, aExtraConfigValuesSize, aExtraConfigValues); } \
  NS_IMETHOD GetValuesByType(PRUint32 aType, PRUint32 aWhich, PRUint32 *aValuesSize, PRUnichar ***aValues) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetValuesByType(aType, aWhich, aValuesSize, aValues); } \
  NS_IMETHOD SetFinalValues(PRUint32 aEnabledSize, PRBool *aEnabled, PRUint32 aVBoxValuesSize, const PRUnichar **aVBoxValues, PRUint32 aExtraConfigValuesSize, const PRUnichar **aExtraConfigValues) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFinalValues(aEnabledSize, aEnabled, aVBoxValuesSize, aVBoxValues, aExtraConfigValuesSize, aExtraConfigValues); } \
  NS_IMETHOD AddDescription(PRUint32 aType, const PRUnichar *aVBoxValue, const PRUnichar *aExtraConfigValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddDescription(aType, aVBoxValue, aExtraConfigValue); } 

#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 aTypesSize, [array, size_is (aTypesSize)] out PRUint32 aTypes, out unsigned long aRefsSize, [array, size_is (aRefsSize)] out wstring aRefs, out unsigned long aOvfValuesSize, [array, size_is (aOvfValuesSize)] out wstring aOvfValues, out unsigned long aVBoxValuesSize, [array, size_is (aVBoxValuesSize)] out wstring aVBoxValues, out unsigned long aExtraConfigValuesSize, [array, size_is (aExtraConfigValuesSize)] out wstring aExtraConfigValues); */
NS_IMETHODIMP _MYCLASS_::GetDescription(PRUint32 *aTypesSize, PRUint32 **aTypes, PRUint32 *aRefsSize, PRUnichar ***aRefs, PRUint32 *aOvfValuesSize, PRUnichar ***aOvfValues, PRUint32 *aVBoxValuesSize, PRUnichar ***aVBoxValues, PRUint32 *aExtraConfigValuesSize, PRUnichar ***aExtraConfigValues)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getDescriptionByType (in PRUint32 aType, out unsigned long aTypesSize, [array, size_is (aTypesSize)] out PRUint32 aTypes, out unsigned long aRefsSize, [array, size_is (aRefsSize)] out wstring aRefs, out unsigned long aOvfValuesSize, [array, size_is (aOvfValuesSize)] out wstring aOvfValues, out unsigned long aVBoxValuesSize, [array, size_is (aVBoxValuesSize)] out wstring aVBoxValues, out unsigned long aExtraConfigValuesSize, [array, size_is (aExtraConfigValuesSize)] out wstring aExtraConfigValues); */
NS_IMETHODIMP _MYCLASS_::GetDescriptionByType(PRUint32 aType, PRUint32 *aTypesSize, PRUint32 **aTypes, PRUint32 *aRefsSize, PRUnichar ***aRefs, PRUint32 *aOvfValuesSize, PRUnichar ***aOvfValues, PRUint32 *aVBoxValuesSize, PRUnichar ***aVBoxValues, PRUint32 *aExtraConfigValuesSize, PRUnichar ***aExtraConfigValues)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getValuesByType (in PRUint32 aType, in PRUint32 aWhich, out unsigned long aValuesSize, [array, size_is (aValuesSize), retval] out wstring aValues); */
NS_IMETHODIMP _MYCLASS_::GetValuesByType(PRUint32 aType, PRUint32 aWhich, PRUint32 *aValuesSize, PRUnichar ***aValues)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setFinalValues (in unsigned long aEnabledSize, [array, size_is (aEnabledSize)] in boolean aEnabled, in unsigned long aVBoxValuesSize, [array, size_is (aVBoxValuesSize)] in wstring aVBoxValues, in unsigned long aExtraConfigValuesSize, [array, size_is (aExtraConfigValuesSize)] in wstring aExtraConfigValues); */
NS_IMETHODIMP _MYCLASS_::SetFinalValues(PRUint32 aEnabledSize, PRBool *aEnabled, PRUint32 aVBoxValuesSize, const PRUnichar **aVBoxValues, PRUint32 aExtraConfigValuesSize, const PRUnichar **aExtraConfigValues)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addDescription (in PRUint32 aType, in wstring aVBoxValue, in wstring aExtraConfigValue); */
NS_IMETHODIMP _MYCLASS_::AddDescription(PRUint32 aType, const PRUnichar *aVBoxValue, const PRUnichar *aExtraConfigValue)
{
    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 * aATypesSize, PRUint32 * * aATypes, PRUint32 * aARefsSize, PRUnichar * * * aARefs, PRUint32 * aAOvfValuesSize, PRUnichar * * * aAOvfValues, PRUint32 * aAVBoxValuesSize, PRUnichar * * * aAVBoxValues, PRUint32 * aAExtraConfigValuesSize, PRUnichar * * * aAExtraConfigValues) { return smth GetDescription (aATypesSize+++, aATypes, aARefsSize+++, aARefs, aAOvfValuesSize+++, aAOvfValues, aAVBoxValuesSize+++, aAVBoxValues, aAExtraConfigValuesSize, aAExtraConfigValues); }
#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 aAType, PRUint32 * aATypesSize, PRUint32 * * aATypes, PRUint32 * aARefsSize, PRUnichar * * * aARefs, PRUint32 * aAOvfValuesSize, PRUnichar * * * aAOvfValues, PRUint32 * aAVBoxValuesSize, PRUnichar * * * aAVBoxValues, PRUint32 * aAExtraConfigValuesSize, PRUnichar * * * aAExtraConfigValues) { return smth GetDescriptionByType (aAType, aATypesSize+++, aATypes, aARefsSize+++, aARefs, aAOvfValuesSize+++, aAOvfValues, aAVBoxValuesSize+++, aAVBoxValues, aAExtraConfigValuesSize, aAExtraConfigValues); }
#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 aAType, PRUint32 aAWhich, PRUint32 * aAValuesSize, PRUnichar * * * aAValues) { return smth GetValuesByType (aAType, aAWhich, aAValuesSize, aAValues); }
#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 aAEnabledSize, PRBool * aAEnabled, PRUint32 aAVBoxValuesSize, PRUnichar * * aAVBoxValues, PRUint32 aAExtraConfigValuesSize, PRUnichar * * aAExtraConfigValues) { return smth SetFinalValues (aAEnabledSize+++, aAEnabled, aAVBoxValuesSize+++, aAVBoxValues, aAExtraConfigValuesSize, aAExtraConfigValues); }
#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 aAType, PRUnichar * aAVBoxValue, PRUnichar * aAExtraConfigValue) { return smth AddDescription (aAType, aAVBoxValue, aAExtraConfigValue); }
#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::)

/* starting interface:    IInternalMachineControl */
#define IINTERNALMACHINECONTROL_IID_STR "2087906d-bb92-43a0-8014-4cab009e4888"

#define IINTERNALMACHINECONTROL_IID \
  {0x2087906d, 0xbb92, 0x43a0, \
    { 0x80, 0x14, 0x4c, 0xab, 0x00, 0x9e, 0x48, 0x88 }}

class NS_NO_VTABLE IInternalMachineControl : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IINTERNALMACHINECONTROL_IID)

  /* void setRemoveSavedStateFile (in boolean aRemove); */
  NS_IMETHOD SetRemoveSavedStateFile(PRBool aRemove) = 0;

  /* void updateState (in PRUint32 state); */
  NS_IMETHOD UpdateState(PRUint32 state) = 0;

  /* void getIPCId ([retval] out wstring id); */
  NS_IMETHOD GetIPCId(PRUnichar **id) = 0;

  /* void beginPowerUp (in IProgress aProgress); */
  NS_IMETHOD BeginPowerUp(IProgress *aProgress) = 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 (in IMediumAttachment mediumAttachment, in IMedium source, in IMedium target, in boolean mergeForward, in IMedium parentForTarget, in unsigned long childrenToReparentSize, [array, size_is (childrenToReparentSize)] in IMedium childrenToReparent); */
  NS_IMETHOD FinishOnlineMergeMedium(IMediumAttachment *mediumAttachment, IMedium *source, IMedium *target, PRBool mergeForward, IMedium *parentForTarget, PRUint32 childrenToReparentSize, IMedium **childrenToReparent) = 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 nameSize, [array, size_is (nameSize)] out wstring name, out unsigned long valueSize, [array, size_is (valueSize)] out wstring value, out unsigned long timestampSize, [array, size_is (timestampSize)] out long long timestamp, out unsigned long flagsSize, [array, size_is (flagsSize)] out wstring flags); */
  NS_IMETHOD PullGuestProperties(PRUint32 *nameSize, PRUnichar ***name, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRInt64 **timestamp, 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;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IINTERNALMACHINECONTROL \
  NS_IMETHOD SetRemoveSavedStateFile(PRBool aRemove); \
  NS_IMETHOD UpdateState(PRUint32 state); \
  NS_IMETHOD GetIPCId(PRUnichar **id); \
  NS_IMETHOD BeginPowerUp(IProgress *aProgress); \
  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(IMediumAttachment *mediumAttachment, IMedium *source, IMedium *target, PRBool mergeForward, IMedium *parentForTarget, PRUint32 childrenToReparentSize, IMedium **childrenToReparent); \
  NS_IMETHOD RestoreSnapshot(IConsole *initiator, ISnapshot *snapshot, PRUint32 *machineState, IProgress **progress); \
  NS_IMETHOD PullGuestProperties(PRUint32 *nameSize, PRUnichar ***name, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRInt64 **timestamp, 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); 

/* 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 aRemove) { return _to SetRemoveSavedStateFile(aRemove); } \
  NS_IMETHOD UpdateState(PRUint32 state) { return _to UpdateState(state); } \
  NS_IMETHOD GetIPCId(PRUnichar **id) { return _to GetIPCId(id); } \
  NS_IMETHOD BeginPowerUp(IProgress *aProgress) { return _to BeginPowerUp(aProgress); } \
  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(IMediumAttachment *mediumAttachment, IMedium *source, IMedium *target, PRBool mergeForward, IMedium *parentForTarget, PRUint32 childrenToReparentSize, IMedium **childrenToReparent) { return _to FinishOnlineMergeMedium(mediumAttachment, source, target, mergeForward, parentForTarget, childrenToReparentSize, childrenToReparent); } \
  NS_IMETHOD RestoreSnapshot(IConsole *initiator, ISnapshot *snapshot, PRUint32 *machineState, IProgress **progress) { return _to RestoreSnapshot(initiator, snapshot, machineState, progress); } \
  NS_IMETHOD PullGuestProperties(PRUint32 *nameSize, PRUnichar ***name, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRInt64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags) { return _to PullGuestProperties(nameSize, name, valueSize, value, timestampSize, timestamp, 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); } 

/* 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 aRemove) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRemoveSavedStateFile(aRemove); } \
  NS_IMETHOD UpdateState(PRUint32 state) { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateState(state); } \
  NS_IMETHOD GetIPCId(PRUnichar **id) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIPCId(id); } \
  NS_IMETHOD BeginPowerUp(IProgress *aProgress) { return !_to ? NS_ERROR_NULL_POINTER : _to->BeginPowerUp(aProgress); } \
  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(IMediumAttachment *mediumAttachment, IMedium *source, IMedium *target, PRBool mergeForward, IMedium *parentForTarget, PRUint32 childrenToReparentSize, IMedium **childrenToReparent) { return !_to ? NS_ERROR_NULL_POINTER : _to->FinishOnlineMergeMedium(mediumAttachment, source, target, mergeForward, parentForTarget, childrenToReparentSize, childrenToReparent); } \
  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 *nameSize, PRUnichar ***name, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRInt64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags) { return !_to ? NS_ERROR_NULL_POINTER : _to->PullGuestProperties(nameSize, name, valueSize, value, timestampSize, timestamp, 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); } 

#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 aRemove); */
NS_IMETHODIMP _MYCLASS_::SetRemoveSavedStateFile(PRBool aRemove)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void updateState (in PRUint32 state); */
NS_IMETHODIMP _MYCLASS_::UpdateState(PRUint32 state)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getIPCId ([retval] out wstring id); */
NS_IMETHODIMP _MYCLASS_::GetIPCId(PRUnichar **id)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void beginPowerUp (in IProgress aProgress); */
NS_IMETHODIMP _MYCLASS_::BeginPowerUp(IProgress *aProgress)
{
    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 (in IMediumAttachment mediumAttachment, in IMedium source, in IMedium target, in boolean mergeForward, in IMedium parentForTarget, in unsigned long childrenToReparentSize, [array, size_is (childrenToReparentSize)] in IMedium childrenToReparent); */
NS_IMETHODIMP _MYCLASS_::FinishOnlineMergeMedium(IMediumAttachment *mediumAttachment, IMedium *source, IMedium *target, PRBool mergeForward, IMedium *parentForTarget, PRUint32 childrenToReparentSize, IMedium **childrenToReparent)
{
    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 nameSize, [array, size_is (nameSize)] out wstring name, out unsigned long valueSize, [array, size_is (valueSize)] out wstring value, out unsigned long timestampSize, [array, size_is (timestampSize)] out long long timestamp, out unsigned long flagsSize, [array, size_is (flagsSize)] out wstring flags); */
NS_IMETHODIMP _MYCLASS_::PullGuestProperties(PRUint32 *nameSize, PRUnichar ***name, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRInt64 **timestamp, 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;
}

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

#define COM_FORWARD_IInternalMachineControl_SetRemoveSavedStateFile_TO(smth) NS_IMETHOD SetRemoveSavedStateFile (PRBool aARemove) { return smth SetRemoveSavedStateFile (aARemove); }
#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_GetIPCId_TO(smth) NS_IMETHOD GetIPCId (PRUnichar * * aId) { return smth GetIPCId (aId); }
#define COM_FORWARD_IInternalMachineControl_GetIPCId_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_GetIPCId_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_GetIPCId_TO_BASE(base) COM_FORWARD_IInternalMachineControl_GetIPCId_TO (base::)
#define COM_FORWARD_IInternalMachineControl_BeginPowerUp_TO(smth) NS_IMETHOD BeginPowerUp (IProgress * aAProgress) { return smth BeginPowerUp (aAProgress); }
#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 (IMediumAttachment * aMediumAttachment, IMedium * aSource, IMedium * aTarget, PRBool aMergeForward, IMedium * aParentForTarget, PRUint32 aChildrenToReparentSize, IMedium * * aChildrenToReparent) { return smth FinishOnlineMergeMedium (aMediumAttachment, aSource, aTarget, aMergeForward, aParentForTarget, aChildrenToReparentSize, aChildrenToReparent); }
#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 * aNameSize, PRUnichar * * * aName, PRUint32 * aValueSize, PRUnichar * * * aValue, PRUint32 * aTimestampSize, PRInt64 * * aTimestamp, PRUint32 * aFlagsSize, PRUnichar * * * aFlags) { return smth PullGuestProperties (aNameSize+++, aName, aValueSize+++, aValue, aTimestampSize+++, aTimestamp, 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_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::)

/* 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;

};

/* 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); 

/* 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); } 

/* 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); } 

#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;
}

/* 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_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::)

/* starting interface:    IPciAddress */
#define IPCIADDRESS_IID_STR "d88b324f-db19-4d3b-a1a9-bf5b127199a8"

#define IPCIADDRESS_IID \
  {0xd88b324f, 0xdb19, 0x4d3b, \
    { 0xa1, 0xa9, 0xbf, 0x5b, 0x12, 0x71, 0x99, 0xa8 }}

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::)

/* 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::)

/* starting interface:    IMachine */
#define IMACHINE_IID_STR "5eaa9319-62fc-4b0a-843c-0cb1940f8a91"

#define IMACHINE_IID \
  {0x5eaa9319, 0x62fc, 0x4b0a, \
    { 0x84, 0x3c, 0x0c, 0xb1, 0x94, 0x0f, 0x8a, 0x91 }}

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;

  /* 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;

  /* 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 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;

  /* 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 emulatedUSBWebcameraEnabled; */
  NS_IMETHOD GetEmulatedUSBWebcameraEnabled(PRBool *aEmulatedUSBWebcameraEnabled) = 0;
  NS_IMETHOD SetEmulatedUSBWebcameraEnabled(PRBool aEmulatedUSBWebcameraEnabled) = 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;

  /* readonly attribute IUSBController USBController; */
  NS_IMETHOD GetUSBController(IUSBController * *aUSBController) = 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 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;

  /* readonly attribute IBandwidthControl bandwidthControl; */
  NS_IMETHOD GetBandwidthControl(IBandwidthControl * *aBandwidthControl) = 0;

  /* void getPciDeviceAssignments (out unsigned long pciDeviceAssignmentsSize, [array, size_is (pciDeviceAssignmentsSize), retval] out IPciDeviceAttachment pciDeviceAssignments); */
  NS_IMETHOD GetPciDeviceAssignments(PRUint32 *pciDeviceAssignmentsSize, IPciDeviceAttachment ***pciDeviceAssignments) = 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 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 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 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 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 valueSize, [array, size_is (valueSize), retval] out wstring value); */
  NS_IMETHOD GetExtraDataKeys(PRUint32 *valueSize, PRUnichar ***value) = 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 saveSettings (); */
  NS_IMETHOD SaveSettings(void) = 0;

  /* void discardSettings (); */
  NS_IMETHOD DiscardSettings(void) = 0;

  /* void unregister (in PRUint32 cleanupMode, out unsigned long aMediaSize, [array, size_is (aMediaSize), retval] out IMedium aMedia); */
  NS_IMETHOD Unregister(PRUint32 cleanupMode, PRUint32 *aMediaSize, IMedium ***aMedia) = 0;

  /* void delete (in unsigned long aMediaSize, [array, size_is (aMediaSize)] in IMedium aMedia, [retval] out IProgress aProgress); */
  NS_IMETHOD Delete(PRUint32 aMediaSize, IMedium **aMedia, IProgress **aProgress) = 0;

  /* void export (in IAppliance aAppliance, in wstring location, [retval] out IVirtualSystemDescription aDescription); */
  NS_IMETHOD Export(IAppliance *aAppliance, const PRUnichar *location, IVirtualSystemDescription **aDescription) = 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 enumerateGuestProperties (in wstring patterns, out unsigned long nameSize, [array, size_is (nameSize)] out wstring name, out unsigned long valueSize, [array, size_is (valueSize)] out wstring value, out unsigned long timestampSize, [array, size_is (timestampSize)] out long long timestamp, out unsigned long flagsSize, [array, size_is (flagsSize)] out wstring flags); */
  NS_IMETHOD EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *nameSize, PRUnichar ***name, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRInt64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags) = 0;

  /* void querySavedGuestSize (in unsigned long screenId, out unsigned long width, out unsigned long height); */
  NS_IMETHOD QuerySavedGuestSize(PRUint32 screenId, PRUint32 *width, PRUint32 *height) = 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 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 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 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 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 GetEmulatedUSBWebcameraEnabled(PRBool *aEmulatedUSBWebcameraEnabled); \
  NS_IMETHOD SetEmulatedUSBWebcameraEnabled(PRBool aEmulatedUSBWebcameraEnabled); \
  NS_IMETHOD GetEmulatedUSBCardReaderEnabled(PRBool *aEmulatedUSBCardReaderEnabled); \
  NS_IMETHOD SetEmulatedUSBCardReaderEnabled(PRBool aEmulatedUSBCardReaderEnabled); \
  NS_IMETHOD GetMediumAttachments(PRUint32 *mediumAttachmentsSize, IMediumAttachment ***mediumAttachments); \
  NS_IMETHOD GetUSBController(IUSBController * *aUSBController); \
  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 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 GetBandwidthControl(IBandwidthControl * *aBandwidthControl); \
  NS_IMETHOD GetPciDeviceAssignments(PRUint32 *pciDeviceAssignmentsSize, IPciDeviceAttachment ***pciDeviceAssignments); \
  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 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 SetBandwidthGroupForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IBandwidthGroup *bandwidthGroup); \
  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 GetSerialPort(PRUint32 slot, ISerialPort **port); \
  NS_IMETHOD GetParallelPort(PRUint32 slot, IParallelPort **port); \
  NS_IMETHOD GetExtraDataKeys(PRUint32 *valueSize, PRUnichar ***value); \
  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 SaveSettings(void); \
  NS_IMETHOD DiscardSettings(void); \
  NS_IMETHOD Unregister(PRUint32 cleanupMode, PRUint32 *aMediaSize, IMedium ***aMedia); \
  NS_IMETHOD Delete(PRUint32 aMediaSize, IMedium **aMedia, IProgress **aProgress); \
  NS_IMETHOD Export(IAppliance *aAppliance, const PRUnichar *location, IVirtualSystemDescription **aDescription); \
  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 EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *nameSize, PRUnichar ***name, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRInt64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags); \
  NS_IMETHOD QuerySavedGuestSize(PRUint32 screenId, PRUint32 *width, PRUint32 *height); \
  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 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 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 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 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 GetEmulatedUSBWebcameraEnabled(PRBool *aEmulatedUSBWebcameraEnabled) { return _to GetEmulatedUSBWebcameraEnabled(aEmulatedUSBWebcameraEnabled); } \
  NS_IMETHOD SetEmulatedUSBWebcameraEnabled(PRBool aEmulatedUSBWebcameraEnabled) { return _to SetEmulatedUSBWebcameraEnabled(aEmulatedUSBWebcameraEnabled); } \
  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 GetUSBController(IUSBController * *aUSBController) { return _to GetUSBController(aUSBController); } \
  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 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 GetBandwidthControl(IBandwidthControl * *aBandwidthControl) { return _to GetBandwidthControl(aBandwidthControl); } \
  NS_IMETHOD GetPciDeviceAssignments(PRUint32 *pciDeviceAssignmentsSize, IPciDeviceAttachment ***pciDeviceAssignments) { return _to GetPciDeviceAssignments(pciDeviceAssignmentsSize, pciDeviceAssignments); } \
  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 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 SetBandwidthGroupForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IBandwidthGroup *bandwidthGroup) { return _to SetBandwidthGroupForDevice(name, controllerPort, device, bandwidthGroup); } \
  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 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 *valueSize, PRUnichar ***value) { return _to GetExtraDataKeys(valueSize, value); } \
  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 SaveSettings(void) { return _to SaveSettings(); } \
  NS_IMETHOD DiscardSettings(void) { return _to DiscardSettings(); } \
  NS_IMETHOD Unregister(PRUint32 cleanupMode, PRUint32 *aMediaSize, IMedium ***aMedia) { return _to Unregister(cleanupMode, aMediaSize, aMedia); } \
  NS_IMETHOD Delete(PRUint32 aMediaSize, IMedium **aMedia, IProgress **aProgress) { return _to Delete(aMediaSize, aMedia, aProgress); } \
  NS_IMETHOD Export(IAppliance *aAppliance, const PRUnichar *location, IVirtualSystemDescription **aDescription) { return _to Export(aAppliance, location, aDescription); } \
  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 EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *nameSize, PRUnichar ***name, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRInt64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags) { return _to EnumerateGuestProperties(patterns, nameSize, name, valueSize, value, timestampSize, timestamp, flagsSize, flags); } \
  NS_IMETHOD QuerySavedGuestSize(PRUint32 screenId, PRUint32 *width, PRUint32 *height) { return _to QuerySavedGuestSize(screenId, width, height); } \
  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 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 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 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 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 GetEmulatedUSBWebcameraEnabled(PRBool *aEmulatedUSBWebcameraEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEmulatedUSBWebcameraEnabled(aEmulatedUSBWebcameraEnabled); } \
  NS_IMETHOD SetEmulatedUSBWebcameraEnabled(PRBool aEmulatedUSBWebcameraEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEmulatedUSBWebcameraEnabled(aEmulatedUSBWebcameraEnabled); } \
  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 GetUSBController(IUSBController * *aUSBController) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUSBController(aUSBController); } \
  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 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 GetBandwidthControl(IBandwidthControl * *aBandwidthControl) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBandwidthControl(aBandwidthControl); } \
  NS_IMETHOD GetPciDeviceAssignments(PRUint32 *pciDeviceAssignmentsSize, IPciDeviceAttachment ***pciDeviceAssignments) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPciDeviceAssignments(pciDeviceAssignmentsSize, pciDeviceAssignments); } \
  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 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 SetBandwidthGroupForDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IBandwidthGroup *bandwidthGroup) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBandwidthGroupForDevice(name, controllerPort, device, bandwidthGroup); } \
  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 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 *valueSize, PRUnichar ***value) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExtraDataKeys(valueSize, value); } \
  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 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 *aMediaSize, IMedium ***aMedia) { return !_to ? NS_ERROR_NULL_POINTER : _to->Unregister(cleanupMode, aMediaSize, aMedia); } \
  NS_IMETHOD Delete(PRUint32 aMediaSize, IMedium **aMedia, IProgress **aProgress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Delete(aMediaSize, aMedia, aProgress); } \
  NS_IMETHOD Export(IAppliance *aAppliance, const PRUnichar *location, IVirtualSystemDescription **aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->Export(aAppliance, location, aDescription); } \
  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 EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *nameSize, PRUnichar ***name, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRInt64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnumerateGuestProperties(patterns, nameSize, name, valueSize, value, timestampSize, timestamp, flagsSize, flags); } \
  NS_IMETHOD QuerySavedGuestSize(PRUint32 screenId, PRUint32 *width, PRUint32 *height) { return !_to ? NS_ERROR_NULL_POINTER : _to->QuerySavedGuestSize(screenId, width, height); } \
  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;
}

/* 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;
}

/* 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 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;
}

/* 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 emulatedUSBWebcameraEnabled; */
NS_IMETHODIMP _MYCLASS_::GetEmulatedUSBWebcameraEnabled(PRBool *aEmulatedUSBWebcameraEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetEmulatedUSBWebcameraEnabled(PRBool aEmulatedUSBWebcameraEnabled)
{
    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;
}

/* readonly attribute IUSBController USBController; */
NS_IMETHODIMP _MYCLASS_::GetUSBController(IUSBController * *aUSBController)
{
    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 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;
}

/* readonly attribute IBandwidthControl bandwidthControl; */
NS_IMETHODIMP _MYCLASS_::GetBandwidthControl(IBandwidthControl * *aBandwidthControl)
{
    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;
}

/* 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 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 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 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 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 valueSize, [array, size_is (valueSize), retval] out wstring value); */
NS_IMETHODIMP _MYCLASS_::GetExtraDataKeys(PRUint32 *valueSize, PRUnichar ***value)
{
    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 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 aMediaSize, [array, size_is (aMediaSize), retval] out IMedium aMedia); */
NS_IMETHODIMP _MYCLASS_::Unregister(PRUint32 cleanupMode, PRUint32 *aMediaSize, IMedium ***aMedia)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void delete (in unsigned long aMediaSize, [array, size_is (aMediaSize)] in IMedium aMedia, [retval] out IProgress aProgress); */
NS_IMETHODIMP _MYCLASS_::Delete(PRUint32 aMediaSize, IMedium **aMedia, IProgress **aProgress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void export (in IAppliance aAppliance, in wstring location, [retval] out IVirtualSystemDescription aDescription); */
NS_IMETHODIMP _MYCLASS_::Export(IAppliance *aAppliance, const PRUnichar *location, IVirtualSystemDescription **aDescription)
{
    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 enumerateGuestProperties (in wstring patterns, out unsigned long nameSize, [array, size_is (nameSize)] out wstring name, out unsigned long valueSize, [array, size_is (valueSize)] out wstring value, out unsigned long timestampSize, [array, size_is (timestampSize)] out long long timestamp, out unsigned long flagsSize, [array, size_is (flagsSize)] out wstring flags); */
NS_IMETHODIMP _MYCLASS_::EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *nameSize, PRUnichar ***name, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRInt64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void querySavedGuestSize (in unsigned long screenId, out unsigned long width, out unsigned long height); */
NS_IMETHODIMP _MYCLASS_::QuerySavedGuestSize(PRUint32 screenId, PRUint32 *width, PRUint32 *height)
{
    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_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_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_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_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_EmulatedUSBWebcameraEnabled_TO(smth) NS_IMETHOD GetEmulatedUSBWebcameraEnabled (PRBool * aEmulatedUSBWebcameraEnabled) { return smth GetEmulatedUSBWebcameraEnabled (aEmulatedUSBWebcameraEnabled); }
#define COM_FORWARD_IMachine_GETTER_EmulatedUSBWebcameraEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_EmulatedUSBWebcameraEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_EmulatedUSBWebcameraEnabled_TO_BASE(base) COM_FORWARD_IMachine_GETTER_EmulatedUSBWebcameraEnabled_TO (base::)
#define COM_FORWARD_IMachine_SETTER_EmulatedUSBWebcameraEnabled_TO(smth) NS_IMETHOD SetEmulatedUSBWebcameraEnabled (PRBool aEmulatedUSBWebcameraEnabled) { return smth SetEmulatedUSBWebcameraEnabled (aEmulatedUSBWebcameraEnabled); }
#define COM_FORWARD_IMachine_SETTER_EmulatedUSBWebcameraEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_EmulatedUSBWebcameraEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_EmulatedUSBWebcameraEnabled_TO_BASE(base) COM_FORWARD_IMachine_SETTER_EmulatedUSBWebcameraEnabled_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_USBController_TO(smth) NS_IMETHOD GetUSBController (IUSBController * * aUSBController) { return smth GetUSBController (aUSBController); }
#define COM_FORWARD_IMachine_GETTER_USBController_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_USBController_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_USBController_TO_BASE(base) COM_FORWARD_IMachine_GETTER_USBController_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_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_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_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_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_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_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_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_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 * aValueSize, PRUnichar * * * aValue) { return smth GetExtraDataKeys (aValueSize, aValue); }
#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_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 * aAMediaSize, IMedium * * * aAMedia) { return smth Unregister (aCleanupMode, aAMediaSize, aAMedia); }
#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_Delete_TO(smth) NS_IMETHOD Delete (PRUint32 aAMediaSize, IMedium * * aAMedia, IProgress * * aAProgress) { return smth Delete (aAMediaSize+++, aAMedia, aAProgress); }
#define COM_FORWARD_IMachine_Delete_TO_OBJ(obj) COM_FORWARD_IMachine_Delete_TO ((obj)->)
#define COM_FORWARD_IMachine_Delete_TO_BASE(base) COM_FORWARD_IMachine_Delete_TO (base::)
#define COM_FORWARD_IMachine_Export_TO(smth) NS_IMETHOD Export (IAppliance * aAAppliance, PRUnichar * aLocation, IVirtualSystemDescription * * aADescription) { return smth Export (aAAppliance, aLocation, aADescription); }
#define COM_FORWARD_IMachine_Export_TO_OBJ(obj) COM_FORWARD_IMachine_Export_TO ((obj)->)
#define COM_FORWARD_IMachine_Export_TO_BASE(base) COM_FORWARD_IMachine_Export_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_EnumerateGuestProperties_TO(smth) NS_IMETHOD EnumerateGuestProperties (PRUnichar * aPatterns, PRUint32 * aNameSize, PRUnichar * * * aName, PRUint32 * aValueSize, PRUnichar * * * aValue, PRUint32 * aTimestampSize, PRInt64 * * aTimestamp, PRUint32 * aFlagsSize, PRUnichar * * * aFlags) { return smth EnumerateGuestProperties (aPatterns, aNameSize+++, aName, aValueSize+++, aValue, aTimestampSize+++, aTimestamp, 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_QuerySavedGuestSize_TO(smth) NS_IMETHOD QuerySavedGuestSize (PRUint32 aScreenId, PRUint32 * aWidth, PRUint32 * aHeight) { return smth QuerySavedGuestSize (aScreenId, aWidth, aHeight); }
#define COM_FORWARD_IMachine_QuerySavedGuestSize_TO_OBJ(obj) COM_FORWARD_IMachine_QuerySavedGuestSize_TO ((obj)->)
#define COM_FORWARD_IMachine_QuerySavedGuestSize_TO_BASE(base) COM_FORWARD_IMachine_QuerySavedGuestSize_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::)

/* 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::)

/* starting interface:    IConsole */
#define ICONSOLE_IID_STR "1968b7d3-e3bf-4ceb-99e0-cb7c913317bb"

#define ICONSOLE_IID \
  {0x1968b7d3, 0xe3bf, 0x4ceb, \
    { 0x99, 0xe0, 0xcb, 0x7c, 0x91, 0x33, 0x17, 0xbb }}

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;

  /* 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 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 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 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;
}

/* 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_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::)

/* starting interface:    IHostNetworkInterface */
#define IHOSTNETWORKINTERFACE_IID_STR "ce6fae58-7642-4102-b5db-c9005c2320a8"

#define IHOSTNETWORKINTERFACE_IID \
  {0xce6fae58, 0x7642, 0x4102, \
    { 0xb5, 0xdb, 0xc9, 0x00, 0x5c, 0x23, 0x20, 0xa8 }}

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 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 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 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 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 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_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::)

/* starting interface:    IHost */
#define IHOST_IID_STR "dab4a2b8-c735-4f08-94fc-9bec84182e2f"

#define IHOST_IID \
  {0xdab4a2b8, 0xc735, 0x4f08, \
    { 0x94, 0xfc, 0x9b, 0xec, 0x84, 0x18, 0x2e, 0x2f }}

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;

  /* 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 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 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 GetProcessorCount(PRUint32 *aProcessorCount); \
  NS_IMETHOD GetProcessorOnlineCount(PRUint32 *aProcessorOnlineCount); \
  NS_IMETHOD GetProcessorCoreCount(PRUint32 *aProcessorCoreCount); \
  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 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 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 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 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 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 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 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;
}

/* 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 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 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_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_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_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::)

/* starting interface:    ISystemProperties */
#define ISYSTEMPROPERTIES_IID_STR "8a0ab9ab-48c1-4d04-954b-4a751413d084"

#define ISYSTEMPROPERTIES_IID \
  {0x8a0ab9ab, 0x48c1, 0x4d04, \
    { 0x95, 0x4b, 0x4a, 0x75, 0x14, 0x13, 0xd0, 0x84 }}

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 wstring defaultMachineFolder; */
  NS_IMETHOD GetDefaultMachineFolder(PRUnichar * *aDefaultMachineFolder) = 0;
  NS_IMETHOD SetDefaultMachineFolder(const PRUnichar * aDefaultMachineFolder) = 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;

  /* 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;

};

/* 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 GetDefaultMachineFolder(PRUnichar * *aDefaultMachineFolder); \
  NS_IMETHOD SetDefaultMachineFolder(const PRUnichar * aDefaultMachineFolder); \
  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 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); 

/* 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 GetDefaultMachineFolder(PRUnichar * *aDefaultMachineFolder) { return _to GetDefaultMachineFolder(aDefaultMachineFolder); } \
  NS_IMETHOD SetDefaultMachineFolder(const PRUnichar * aDefaultMachineFolder) { return _to SetDefaultMachineFolder(aDefaultMachineFolder); } \
  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 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); } 

/* 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 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 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 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); } 

#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 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;
}

/* 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;
}

/* 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;
}

/* 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_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_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_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_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::)

/* starting interface:    IGuestOSType */
#define IGUESTOSTYPE_IID_STR "432c1546-1354-4abf-bf08-878a32a373f5"

#define IGUESTOSTYPE_IID \
  {0x432c1546, 0x1354, 0x4abf, \
    { 0xbf, 0x08, 0x87, 0x8a, 0x32, 0xa3, 0x73, 0xf5 }}

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 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;

};

/* 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 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); 

/* 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 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); } 

/* 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 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); } 

#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 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;
}

/* 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_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_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::)

/* 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::)

/* starting interface:    IGuestDirEntry */
#define IGUESTDIRENTRY_IID_STR "20a66efc-c2f6-4438-826f-38454c04369e"

#define IGUESTDIRENTRY_IID \
  {0x20a66efc, 0xc2f6, 0x4438, \
    { 0x82, 0x6f, 0x38, 0x45, 0x4c, 0x04, 0x36, 0x9e }}

class NS_NO_VTABLE IGuestDirEntry : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTDIRENTRY_IID)

  /* readonly attribute long long nodeId; */
  NS_IMETHOD GetNodeId(PRInt64 *aNodeId) = 0;

  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /* readonly attribute PRUint32 type; */
  NS_IMETHOD GetType(PRUint32 *aType) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTDIRENTRY \
  NS_IMETHOD GetNodeId(PRInt64 *aNodeId); \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetType(PRUint32 *aType); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTDIRENTRY(_to) \
  NS_IMETHOD GetNodeId(PRInt64 *aNodeId) { return _to GetNodeId(aNodeId); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  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_IGUESTDIRENTRY(_to) \
  NS_IMETHOD GetNodeId(PRInt64 *aNodeId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNodeId(aNodeId); } \
  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); } 

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

/* Header file */
class _MYCLASS_ : public IGuestDirEntry
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTDIRENTRY

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute long long nodeId; */
NS_IMETHODIMP _MYCLASS_::GetNodeId(PRInt64 *aNodeId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* 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;
}

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

#define COM_FORWARD_IGuestDirEntry_GETTER_NodeId_TO(smth) NS_IMETHOD GetNodeId (PRInt64 * aNodeId) { return smth GetNodeId (aNodeId); }
#define COM_FORWARD_IGuestDirEntry_GETTER_NodeId_TO_OBJ(obj) COM_FORWARD_IGuestDirEntry_GETTER_NodeId_TO ((obj)->)
#define COM_FORWARD_IGuestDirEntry_GETTER_NodeId_TO_BASE(base) COM_FORWARD_IGuestDirEntry_GETTER_NodeId_TO (base::)
#define COM_FORWARD_IGuestDirEntry_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IGuestDirEntry_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IGuestDirEntry_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IGuestDirEntry_GETTER_Name_TO_BASE(base) COM_FORWARD_IGuestDirEntry_GETTER_Name_TO (base::)
#define COM_FORWARD_IGuestDirEntry_GETTER_Type_TO(smth) NS_IMETHOD GetType (PRUint32 * aType) { return smth GetType (aType); }
#define COM_FORWARD_IGuestDirEntry_GETTER_Type_TO_OBJ(obj) COM_FORWARD_IGuestDirEntry_GETTER_Type_TO ((obj)->)
#define COM_FORWARD_IGuestDirEntry_GETTER_Type_TO_BASE(base) COM_FORWARD_IGuestDirEntry_GETTER_Type_TO (base::)
#define COM_FORWARD_IGuestDirEntry_TO(smth) NS_FORWARD_IGUESTDIRENTRY (smth)
#define COM_FORWARD_IGuestDirEntry_TO_OBJ(obj) COM_FORWARD_IGuestDirEntry_TO ((obj)->)
#define COM_FORWARD_IGuestDirEntry_TO_BASE(base) COM_FORWARD_IGuestDirEntry_TO (base::)

/* starting interface:    IGuest */
#define IGUEST_IID_STR "ed109b6e-0578-4b17-8ace-52646789f1a0"

#define IGUEST_IID \
  {0xed109b6e, 0x0578, 0x4b17, \
    { 0x8a, 0xce, 0x52, 0x64, 0x67, 0x89, 0xf1, 0xa0 }}

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;

  /* void getFacilities (out unsigned long facilitiesSize, [array, size_is (facilitiesSize), retval] out IAdditionsFacility facilities); */
  NS_IMETHOD GetFacilities(PRUint32 *facilitiesSize, IAdditionsFacility ***facilities) = 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 executeProcess (in wstring execName, in unsigned long flags, in unsigned long argumentsSize, [array, size_is (argumentsSize)] in wstring arguments, in unsigned long environmentSize, [array, size_is (environmentSize)] in wstring environment, in wstring userName, in wstring password, in unsigned long timeoutMS, out unsigned long pid, [retval] out IProgress progress); */
  NS_IMETHOD ExecuteProcess(const PRUnichar *execName, PRUint32 flags, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 environmentSize, const PRUnichar **environment, const PRUnichar *userName, const PRUnichar *password, PRUint32 timeoutMS, PRUint32 *pid, IProgress **progress) = 0;

  /* void getProcessOutput (in unsigned long pid, in unsigned long flags, in unsigned long timeoutMS, in long long size, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
  NS_IMETHOD GetProcessOutput(PRUint32 pid, PRUint32 flags, PRUint32 timeoutMS, PRInt64 size, PRUint32 *dataSize, PRUint8 **data) = 0;

  /* void getProcessStatus (in unsigned long pid, out unsigned long exitcode, out unsigned long flags, [retval] out PRUint32 reason); */
  NS_IMETHOD GetProcessStatus(PRUint32 pid, PRUint32 *exitcode, PRUint32 *flags, PRUint32 *reason) = 0;

  /* void copyFromGuest (in wstring source, in wstring dest, in wstring userName, in wstring password, in unsigned long flags, [retval] out IProgress progress); */
  NS_IMETHOD CopyFromGuest(const PRUnichar *source, const PRUnichar *dest, const PRUnichar *userName, const PRUnichar *password, PRUint32 flags, IProgress **progress) = 0;

  /* void copyToGuest (in wstring source, in wstring dest, in wstring userName, in wstring password, in unsigned long flags, [retval] out IProgress progress); */
  NS_IMETHOD CopyToGuest(const PRUnichar *source, const PRUnichar *dest, const PRUnichar *userName, const PRUnichar *password, PRUint32 flags, IProgress **progress) = 0;

  /* void directoryClose (in unsigned long handle); */
  NS_IMETHOD DirectoryClose(PRUint32 handle) = 0;

  /* void directoryCreate (in wstring directory, in wstring userName, in wstring password, in unsigned long mode, in unsigned long flags); */
  NS_IMETHOD DirectoryCreate(const PRUnichar *directory, const PRUnichar *userName, const PRUnichar *password, PRUint32 mode, PRUint32 flags) = 0;

  /* void directoryOpen (in wstring directory, in wstring filter, in unsigned long flags, in wstring userName, in wstring password, [retval] out unsigned long handle); */
  NS_IMETHOD DirectoryOpen(const PRUnichar *directory, const PRUnichar *filter, PRUint32 flags, const PRUnichar *userName, const PRUnichar *password, PRUint32 *handle) = 0;

  /* void directoryRead (in unsigned long handle, [retval] out IGuestDirEntry entry); */
  NS_IMETHOD DirectoryRead(PRUint32 handle, IGuestDirEntry **entry) = 0;

  /* void fileExists (in wstring file, in wstring userName, in wstring password, [retval] out boolean exists); */
  NS_IMETHOD FileExists(const PRUnichar *file, const PRUnichar *userName, const PRUnichar *password, PRBool *exists) = 0;

  /* void fileQuerySize (in wstring file, in wstring userName, in wstring password, [retval] out long long size); */
  NS_IMETHOD FileQuerySize(const PRUnichar *file, const PRUnichar *userName, const PRUnichar *password, PRInt64 *size) = 0;

  /* void setProcessInput (in unsigned long pid, in unsigned long flags, in unsigned long timeoutMS, in unsigned long dataSize, [array, size_is (dataSize)] in octet data, [retval] out unsigned long written); */
  NS_IMETHOD SetProcessInput(PRUint32 pid, PRUint32 flags, PRUint32 timeoutMS, PRUint32 dataSize, PRUint8 *data, PRUint32 *written) = 0;

  /* void updateGuestAdditions (in wstring source, in unsigned long flags, [retval] out IProgress progress); */
  NS_IMETHOD UpdateGuestAdditions(const PRUnichar *source, 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 GetFacilities(PRUint32 *facilitiesSize, IAdditionsFacility ***facilities); \
  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 ExecuteProcess(const PRUnichar *execName, PRUint32 flags, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 environmentSize, const PRUnichar **environment, const PRUnichar *userName, const PRUnichar *password, PRUint32 timeoutMS, PRUint32 *pid, IProgress **progress); \
  NS_IMETHOD GetProcessOutput(PRUint32 pid, PRUint32 flags, PRUint32 timeoutMS, PRInt64 size, PRUint32 *dataSize, PRUint8 **data); \
  NS_IMETHOD GetProcessStatus(PRUint32 pid, PRUint32 *exitcode, PRUint32 *flags, PRUint32 *reason); \
  NS_IMETHOD CopyFromGuest(const PRUnichar *source, const PRUnichar *dest, const PRUnichar *userName, const PRUnichar *password, PRUint32 flags, IProgress **progress); \
  NS_IMETHOD CopyToGuest(const PRUnichar *source, const PRUnichar *dest, const PRUnichar *userName, const PRUnichar *password, PRUint32 flags, IProgress **progress); \
  NS_IMETHOD DirectoryClose(PRUint32 handle); \
  NS_IMETHOD DirectoryCreate(const PRUnichar *directory, const PRUnichar *userName, const PRUnichar *password, PRUint32 mode, PRUint32 flags); \
  NS_IMETHOD DirectoryOpen(const PRUnichar *directory, const PRUnichar *filter, PRUint32 flags, const PRUnichar *userName, const PRUnichar *password, PRUint32 *handle); \
  NS_IMETHOD DirectoryRead(PRUint32 handle, IGuestDirEntry **entry); \
  NS_IMETHOD FileExists(const PRUnichar *file, const PRUnichar *userName, const PRUnichar *password, PRBool *exists); \
  NS_IMETHOD FileQuerySize(const PRUnichar *file, const PRUnichar *userName, const PRUnichar *password, PRInt64 *size); \
  NS_IMETHOD SetProcessInput(PRUint32 pid, PRUint32 flags, PRUint32 timeoutMS, PRUint32 dataSize, PRUint8 *data, PRUint32 *written); \
  NS_IMETHOD UpdateGuestAdditions(const PRUnichar *source, 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 GetFacilities(PRUint32 *facilitiesSize, IAdditionsFacility ***facilities) { return _to GetFacilities(facilitiesSize, facilities); } \
  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 ExecuteProcess(const PRUnichar *execName, PRUint32 flags, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 environmentSize, const PRUnichar **environment, const PRUnichar *userName, const PRUnichar *password, PRUint32 timeoutMS, PRUint32 *pid, IProgress **progress) { return _to ExecuteProcess(execName, flags, argumentsSize, arguments, environmentSize, environment, userName, password, timeoutMS, pid, progress); } \
  NS_IMETHOD GetProcessOutput(PRUint32 pid, PRUint32 flags, PRUint32 timeoutMS, PRInt64 size, PRUint32 *dataSize, PRUint8 **data) { return _to GetProcessOutput(pid, flags, timeoutMS, size, dataSize, data); } \
  NS_IMETHOD GetProcessStatus(PRUint32 pid, PRUint32 *exitcode, PRUint32 *flags, PRUint32 *reason) { return _to GetProcessStatus(pid, exitcode, flags, reason); } \
  NS_IMETHOD CopyFromGuest(const PRUnichar *source, const PRUnichar *dest, const PRUnichar *userName, const PRUnichar *password, PRUint32 flags, IProgress **progress) { return _to CopyFromGuest(source, dest, userName, password, flags, progress); } \
  NS_IMETHOD CopyToGuest(const PRUnichar *source, const PRUnichar *dest, const PRUnichar *userName, const PRUnichar *password, PRUint32 flags, IProgress **progress) { return _to CopyToGuest(source, dest, userName, password, flags, progress); } \
  NS_IMETHOD DirectoryClose(PRUint32 handle) { return _to DirectoryClose(handle); } \
  NS_IMETHOD DirectoryCreate(const PRUnichar *directory, const PRUnichar *userName, const PRUnichar *password, PRUint32 mode, PRUint32 flags) { return _to DirectoryCreate(directory, userName, password, mode, flags); } \
  NS_IMETHOD DirectoryOpen(const PRUnichar *directory, const PRUnichar *filter, PRUint32 flags, const PRUnichar *userName, const PRUnichar *password, PRUint32 *handle) { return _to DirectoryOpen(directory, filter, flags, userName, password, handle); } \
  NS_IMETHOD DirectoryRead(PRUint32 handle, IGuestDirEntry **entry) { return _to DirectoryRead(handle, entry); } \
  NS_IMETHOD FileExists(const PRUnichar *file, const PRUnichar *userName, const PRUnichar *password, PRBool *exists) { return _to FileExists(file, userName, password, exists); } \
  NS_IMETHOD FileQuerySize(const PRUnichar *file, const PRUnichar *userName, const PRUnichar *password, PRInt64 *size) { return _to FileQuerySize(file, userName, password, size); } \
  NS_IMETHOD SetProcessInput(PRUint32 pid, PRUint32 flags, PRUint32 timeoutMS, PRUint32 dataSize, PRUint8 *data, PRUint32 *written) { return _to SetProcessInput(pid, flags, timeoutMS, dataSize, data, written); } \
  NS_IMETHOD UpdateGuestAdditions(const PRUnichar *source, PRUint32 flags, IProgress **progress) { return _to UpdateGuestAdditions(source, 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 GetFacilities(PRUint32 *facilitiesSize, IAdditionsFacility ***facilities) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFacilities(facilitiesSize, facilities); } \
  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 ExecuteProcess(const PRUnichar *execName, PRUint32 flags, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 environmentSize, const PRUnichar **environment, const PRUnichar *userName, const PRUnichar *password, PRUint32 timeoutMS, PRUint32 *pid, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->ExecuteProcess(execName, flags, argumentsSize, arguments, environmentSize, environment, userName, password, timeoutMS, pid, progress); } \
  NS_IMETHOD GetProcessOutput(PRUint32 pid, PRUint32 flags, PRUint32 timeoutMS, PRInt64 size, PRUint32 *dataSize, PRUint8 **data) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessOutput(pid, flags, timeoutMS, size, dataSize, data); } \
  NS_IMETHOD GetProcessStatus(PRUint32 pid, PRUint32 *exitcode, PRUint32 *flags, PRUint32 *reason) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessStatus(pid, exitcode, flags, reason); } \
  NS_IMETHOD CopyFromGuest(const PRUnichar *source, const PRUnichar *dest, const PRUnichar *userName, const PRUnichar *password, PRUint32 flags, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyFromGuest(source, dest, userName, password, flags, progress); } \
  NS_IMETHOD CopyToGuest(const PRUnichar *source, const PRUnichar *dest, const PRUnichar *userName, const PRUnichar *password, PRUint32 flags, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyToGuest(source, dest, userName, password, flags, progress); } \
  NS_IMETHOD DirectoryClose(PRUint32 handle) { return !_to ? NS_ERROR_NULL_POINTER : _to->DirectoryClose(handle); } \
  NS_IMETHOD DirectoryCreate(const PRUnichar *directory, const PRUnichar *userName, const PRUnichar *password, PRUint32 mode, PRUint32 flags) { return !_to ? NS_ERROR_NULL_POINTER : _to->DirectoryCreate(directory, userName, password, mode, flags); } \
  NS_IMETHOD DirectoryOpen(const PRUnichar *directory, const PRUnichar *filter, PRUint32 flags, const PRUnichar *userName, const PRUnichar *password, PRUint32 *handle) { return !_to ? NS_ERROR_NULL_POINTER : _to->DirectoryOpen(directory, filter, flags, userName, password, handle); } \
  NS_IMETHOD DirectoryRead(PRUint32 handle, IGuestDirEntry **entry) { return !_to ? NS_ERROR_NULL_POINTER : _to->DirectoryRead(handle, entry); } \
  NS_IMETHOD FileExists(const PRUnichar *file, const PRUnichar *userName, const PRUnichar *password, PRBool *exists) { return !_to ? NS_ERROR_NULL_POINTER : _to->FileExists(file, userName, password, exists); } \
  NS_IMETHOD FileQuerySize(const PRUnichar *file, const PRUnichar *userName, const PRUnichar *password, PRInt64 *size) { return !_to ? NS_ERROR_NULL_POINTER : _to->FileQuerySize(file, userName, password, size); } \
  NS_IMETHOD SetProcessInput(PRUint32 pid, PRUint32 flags, PRUint32 timeoutMS, PRUint32 dataSize, PRUint8 *data, PRUint32 *written) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetProcessInput(pid, flags, timeoutMS, dataSize, data, written); } \
  NS_IMETHOD UpdateGuestAdditions(const PRUnichar *source, PRUint32 flags, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateGuestAdditions(source, 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;
}

/* 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;
}

/* 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 executeProcess (in wstring execName, in unsigned long flags, in unsigned long argumentsSize, [array, size_is (argumentsSize)] in wstring arguments, in unsigned long environmentSize, [array, size_is (environmentSize)] in wstring environment, in wstring userName, in wstring password, in unsigned long timeoutMS, out unsigned long pid, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::ExecuteProcess(const PRUnichar *execName, PRUint32 flags, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 environmentSize, const PRUnichar **environment, const PRUnichar *userName, const PRUnichar *password, PRUint32 timeoutMS, PRUint32 *pid, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getProcessOutput (in unsigned long pid, in unsigned long flags, in unsigned long timeoutMS, in long long size, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
NS_IMETHODIMP _MYCLASS_::GetProcessOutput(PRUint32 pid, PRUint32 flags, PRUint32 timeoutMS, PRInt64 size, PRUint32 *dataSize, PRUint8 **data)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getProcessStatus (in unsigned long pid, out unsigned long exitcode, out unsigned long flags, [retval] out PRUint32 reason); */
NS_IMETHODIMP _MYCLASS_::GetProcessStatus(PRUint32 pid, PRUint32 *exitcode, PRUint32 *flags, PRUint32 *reason)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void copyFromGuest (in wstring source, in wstring dest, in wstring userName, in wstring password, in unsigned long flags, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CopyFromGuest(const PRUnichar *source, const PRUnichar *dest, const PRUnichar *userName, const PRUnichar *password, PRUint32 flags, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void copyToGuest (in wstring source, in wstring dest, in wstring userName, in wstring password, in unsigned long flags, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CopyToGuest(const PRUnichar *source, const PRUnichar *dest, const PRUnichar *userName, const PRUnichar *password, PRUint32 flags, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void directoryClose (in unsigned long handle); */
NS_IMETHODIMP _MYCLASS_::DirectoryClose(PRUint32 handle)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void directoryCreate (in wstring directory, in wstring userName, in wstring password, in unsigned long mode, in unsigned long flags); */
NS_IMETHODIMP _MYCLASS_::DirectoryCreate(const PRUnichar *directory, const PRUnichar *userName, const PRUnichar *password, PRUint32 mode, PRUint32 flags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void directoryOpen (in wstring directory, in wstring filter, in unsigned long flags, in wstring userName, in wstring password, [retval] out unsigned long handle); */
NS_IMETHODIMP _MYCLASS_::DirectoryOpen(const PRUnichar *directory, const PRUnichar *filter, PRUint32 flags, const PRUnichar *userName, const PRUnichar *password, PRUint32 *handle)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void directoryRead (in unsigned long handle, [retval] out IGuestDirEntry entry); */
NS_IMETHODIMP _MYCLASS_::DirectoryRead(PRUint32 handle, IGuestDirEntry **entry)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void fileExists (in wstring file, in wstring userName, in wstring password, [retval] out boolean exists); */
NS_IMETHODIMP _MYCLASS_::FileExists(const PRUnichar *file, const PRUnichar *userName, const PRUnichar *password, PRBool *exists)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void fileQuerySize (in wstring file, in wstring userName, in wstring password, [retval] out long long size); */
NS_IMETHODIMP _MYCLASS_::FileQuerySize(const PRUnichar *file, const PRUnichar *userName, const PRUnichar *password, PRInt64 *size)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setProcessInput (in unsigned long pid, in unsigned long flags, in unsigned long timeoutMS, in unsigned long dataSize, [array, size_is (dataSize)] in octet data, [retval] out unsigned long written); */
NS_IMETHODIMP _MYCLASS_::SetProcessInput(PRUint32 pid, PRUint32 flags, PRUint32 timeoutMS, PRUint32 dataSize, PRUint8 *data, PRUint32 *written)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void updateGuestAdditions (in wstring source, in unsigned long flags, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::UpdateGuestAdditions(const PRUnichar *source, 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_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_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_ExecuteProcess_TO(smth) NS_IMETHOD ExecuteProcess (PRUnichar * aExecName, PRUint32 aFlags, PRUint32 aArgumentsSize, PRUnichar * * aArguments, PRUint32 aEnvironmentSize, PRUnichar * * aEnvironment, PRUnichar * aUserName, PRUnichar * aPassword, PRUint32 aTimeoutMS, PRUint32 * aPid, IProgress * * aProgress) { return smth ExecuteProcess (aExecName, aFlags, aArgumentsSize+++, aArguments, aEnvironmentSize+++, aEnvironment, aUserName, aPassword, aTimeoutMS, aPid, aProgress); }
#define COM_FORWARD_IGuest_ExecuteProcess_TO_OBJ(obj) COM_FORWARD_IGuest_ExecuteProcess_TO ((obj)->)
#define COM_FORWARD_IGuest_ExecuteProcess_TO_BASE(base) COM_FORWARD_IGuest_ExecuteProcess_TO (base::)
#define COM_FORWARD_IGuest_GetProcessOutput_TO(smth) NS_IMETHOD GetProcessOutput (PRUint32 aPid, PRUint32 aFlags, PRUint32 aTimeoutMS, PRInt64 aSize, PRUint32 * aDataSize, PRUint8 * * aData) { return smth GetProcessOutput (aPid, aFlags, aTimeoutMS, aSize, aDataSize, aData); }
#define COM_FORWARD_IGuest_GetProcessOutput_TO_OBJ(obj) COM_FORWARD_IGuest_GetProcessOutput_TO ((obj)->)
#define COM_FORWARD_IGuest_GetProcessOutput_TO_BASE(base) COM_FORWARD_IGuest_GetProcessOutput_TO (base::)
#define COM_FORWARD_IGuest_GetProcessStatus_TO(smth) NS_IMETHOD GetProcessStatus (PRUint32 aPid, PRUint32 * aExitcode, PRUint32 * aFlags, PRUint32 * aReason) { return smth GetProcessStatus (aPid, aExitcode, aFlags, aReason); }
#define COM_FORWARD_IGuest_GetProcessStatus_TO_OBJ(obj) COM_FORWARD_IGuest_GetProcessStatus_TO ((obj)->)
#define COM_FORWARD_IGuest_GetProcessStatus_TO_BASE(base) COM_FORWARD_IGuest_GetProcessStatus_TO (base::)
#define COM_FORWARD_IGuest_CopyFromGuest_TO(smth) NS_IMETHOD CopyFromGuest (PRUnichar * aSource, PRUnichar * aDest, PRUnichar * aUserName, PRUnichar * aPassword, PRUint32 aFlags, IProgress * * aProgress) { return smth CopyFromGuest (aSource, aDest, aUserName, aPassword, aFlags, aProgress); }
#define COM_FORWARD_IGuest_CopyFromGuest_TO_OBJ(obj) COM_FORWARD_IGuest_CopyFromGuest_TO ((obj)->)
#define COM_FORWARD_IGuest_CopyFromGuest_TO_BASE(base) COM_FORWARD_IGuest_CopyFromGuest_TO (base::)
#define COM_FORWARD_IGuest_CopyToGuest_TO(smth) NS_IMETHOD CopyToGuest (PRUnichar * aSource, PRUnichar * aDest, PRUnichar * aUserName, PRUnichar * aPassword, PRUint32 aFlags, IProgress * * aProgress) { return smth CopyToGuest (aSource, aDest, aUserName, aPassword, aFlags, aProgress); }
#define COM_FORWARD_IGuest_CopyToGuest_TO_OBJ(obj) COM_FORWARD_IGuest_CopyToGuest_TO ((obj)->)
#define COM_FORWARD_IGuest_CopyToGuest_TO_BASE(base) COM_FORWARD_IGuest_CopyToGuest_TO (base::)
#define COM_FORWARD_IGuest_DirectoryClose_TO(smth) NS_IMETHOD DirectoryClose (PRUint32 aHandle) { return smth DirectoryClose (aHandle); }
#define COM_FORWARD_IGuest_DirectoryClose_TO_OBJ(obj) COM_FORWARD_IGuest_DirectoryClose_TO ((obj)->)
#define COM_FORWARD_IGuest_DirectoryClose_TO_BASE(base) COM_FORWARD_IGuest_DirectoryClose_TO (base::)
#define COM_FORWARD_IGuest_DirectoryCreate_TO(smth) NS_IMETHOD DirectoryCreate (PRUnichar * aDirectory, PRUnichar * aUserName, PRUnichar * aPassword, PRUint32 aMode, PRUint32 aFlags) { return smth DirectoryCreate (aDirectory, aUserName, aPassword, aMode, aFlags); }
#define COM_FORWARD_IGuest_DirectoryCreate_TO_OBJ(obj) COM_FORWARD_IGuest_DirectoryCreate_TO ((obj)->)
#define COM_FORWARD_IGuest_DirectoryCreate_TO_BASE(base) COM_FORWARD_IGuest_DirectoryCreate_TO (base::)
#define COM_FORWARD_IGuest_DirectoryOpen_TO(smth) NS_IMETHOD DirectoryOpen (PRUnichar * aDirectory, PRUnichar * aFilter, PRUint32 aFlags, PRUnichar * aUserName, PRUnichar * aPassword, PRUint32 * aHandle) { return smth DirectoryOpen (aDirectory, aFilter, aFlags, aUserName, aPassword, aHandle); }
#define COM_FORWARD_IGuest_DirectoryOpen_TO_OBJ(obj) COM_FORWARD_IGuest_DirectoryOpen_TO ((obj)->)
#define COM_FORWARD_IGuest_DirectoryOpen_TO_BASE(base) COM_FORWARD_IGuest_DirectoryOpen_TO (base::)
#define COM_FORWARD_IGuest_DirectoryRead_TO(smth) NS_IMETHOD DirectoryRead (PRUint32 aHandle, IGuestDirEntry * * aEntry) { return smth DirectoryRead (aHandle, aEntry); }
#define COM_FORWARD_IGuest_DirectoryRead_TO_OBJ(obj) COM_FORWARD_IGuest_DirectoryRead_TO ((obj)->)
#define COM_FORWARD_IGuest_DirectoryRead_TO_BASE(base) COM_FORWARD_IGuest_DirectoryRead_TO (base::)
#define COM_FORWARD_IGuest_FileExists_TO(smth) NS_IMETHOD FileExists (PRUnichar * aFile, PRUnichar * aUserName, PRUnichar * aPassword, PRBool * aExists) { return smth FileExists (aFile, aUserName, aPassword, aExists); }
#define COM_FORWARD_IGuest_FileExists_TO_OBJ(obj) COM_FORWARD_IGuest_FileExists_TO ((obj)->)
#define COM_FORWARD_IGuest_FileExists_TO_BASE(base) COM_FORWARD_IGuest_FileExists_TO (base::)
#define COM_FORWARD_IGuest_FileQuerySize_TO(smth) NS_IMETHOD FileQuerySize (PRUnichar * aFile, PRUnichar * aUserName, PRUnichar * aPassword, PRInt64 * aSize) { return smth FileQuerySize (aFile, aUserName, aPassword, aSize); }
#define COM_FORWARD_IGuest_FileQuerySize_TO_OBJ(obj) COM_FORWARD_IGuest_FileQuerySize_TO ((obj)->)
#define COM_FORWARD_IGuest_FileQuerySize_TO_BASE(base) COM_FORWARD_IGuest_FileQuerySize_TO (base::)
#define COM_FORWARD_IGuest_SetProcessInput_TO(smth) NS_IMETHOD SetProcessInput (PRUint32 aPid, PRUint32 aFlags, PRUint32 aTimeoutMS, PRUint32 aDataSize, PRUint8 * aData, PRUint32 * aWritten) { return smth SetProcessInput (aPid, aFlags, aTimeoutMS, aDataSize+++, aData, aWritten); }
#define COM_FORWARD_IGuest_SetProcessInput_TO_OBJ(obj) COM_FORWARD_IGuest_SetProcessInput_TO ((obj)->)
#define COM_FORWARD_IGuest_SetProcessInput_TO_BASE(base) COM_FORWARD_IGuest_SetProcessInput_TO (base::)
#define COM_FORWARD_IGuest_UpdateGuestAdditions_TO(smth) NS_IMETHOD UpdateGuestAdditions (PRUnichar * aSource, PRUint32 aFlags, IProgress * * aProgress) { return smth UpdateGuestAdditions (aSource, 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::)

/* 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::)

/* 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::)

/* starting interface:    IMediumAttachment */
#define IMEDIUMATTACHMENT_IID_STR "b5dfbb8c-7498-48c3-bf10-78fc60f064e1"

#define IMEDIUMATTACHMENT_IID \
  {0xb5dfbb8c, 0x7498, 0x48c3, \
    { 0xbf, 0x10, 0x78, 0xfc, 0x60, 0xf0, 0x64, 0xe1 }}

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 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 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 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 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 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_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::)

/* starting interface:    IMedium */
#define IMEDIUM_IID_STR "53f9cc0c-e0fd-40a5-a404-a7a5272082cd"

#define IMEDIUM_IID \
  {0x53f9cc0c, 0xe0fd, 0x40a5, \
    { 0xa4, 0x04, 0xa7, 0xa5, 0x27, 0x20, 0x82, 0xcd }}

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;

  /* readonly attribute unsigned long variant; */
  NS_IMETHOD GetVariant(PRUint32 *aVariant) = 0;

  /* attribute wstring location; */
  NS_IMETHOD GetLocation(PRUnichar * *aLocation) = 0;
  NS_IMETHOD SetLocation(const 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 PRUint32 state); */
  NS_IMETHOD LockRead(PRUint32 *state) = 0;

  /* void unlockRead ([retval] out PRUint32 state); */
  NS_IMETHOD UnlockRead(PRUint32 *state) = 0;

  /* void lockWrite ([retval] out PRUint32 state); */
  NS_IMETHOD LockWrite(PRUint32 *state) = 0;

  /* void unlockWrite ([retval] out PRUint32 state); */
  NS_IMETHOD UnlockWrite(PRUint32 *state) = 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 variant, [retval] out IProgress progress); */
  NS_IMETHOD CreateBaseStorage(PRInt64 logicalSize, 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 variant, [retval] out IProgress progress); */
  NS_IMETHOD CreateDiffStorage(IMedium *target, 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 variant, in IMedium parent, [retval] out IProgress progress); */
  NS_IMETHOD CloneTo(IMedium *target, PRUint32 variant, IMedium *parent, 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 *aVariant); \
  NS_IMETHOD GetLocation(PRUnichar * *aLocation); \
  NS_IMETHOD SetLocation(const 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(PRUint32 *state); \
  NS_IMETHOD UnlockRead(PRUint32 *state); \
  NS_IMETHOD LockWrite(PRUint32 *state); \
  NS_IMETHOD UnlockWrite(PRUint32 *state); \
  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 variant, IProgress **progress); \
  NS_IMETHOD DeleteStorage(IProgress **progress); \
  NS_IMETHOD CreateDiffStorage(IMedium *target, PRUint32 variant, IProgress **progress); \
  NS_IMETHOD MergeTo(IMedium *target, IProgress **progress); \
  NS_IMETHOD CloneTo(IMedium *target, PRUint32 variant, IMedium *parent, 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 *aVariant) { return _to GetVariant(aVariant); } \
  NS_IMETHOD GetLocation(PRUnichar * *aLocation) { return _to GetLocation(aLocation); } \
  NS_IMETHOD SetLocation(const PRUnichar * aLocation) { return _to SetLocation(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(PRUint32 *state) { return _to LockRead(state); } \
  NS_IMETHOD UnlockRead(PRUint32 *state) { return _to UnlockRead(state); } \
  NS_IMETHOD LockWrite(PRUint32 *state) { return _to LockWrite(state); } \
  NS_IMETHOD UnlockWrite(PRUint32 *state) { return _to UnlockWrite(state); } \
  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 variant, IProgress **progress) { return _to CreateBaseStorage(logicalSize, variant, progress); } \
  NS_IMETHOD DeleteStorage(IProgress **progress) { return _to DeleteStorage(progress); } \
  NS_IMETHOD CreateDiffStorage(IMedium *target, PRUint32 variant, IProgress **progress) { return _to CreateDiffStorage(target, variant, progress); } \
  NS_IMETHOD MergeTo(IMedium *target, IProgress **progress) { return _to MergeTo(target, progress); } \
  NS_IMETHOD CloneTo(IMedium *target, PRUint32 variant, IMedium *parent, IProgress **progress) { return _to CloneTo(target, variant, parent, 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 *aVariant) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVariant(aVariant); } \
  NS_IMETHOD GetLocation(PRUnichar * *aLocation) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLocation(aLocation); } \
  NS_IMETHOD SetLocation(const PRUnichar * aLocation) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLocation(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(PRUint32 *state) { return !_to ? NS_ERROR_NULL_POINTER : _to->LockRead(state); } \
  NS_IMETHOD UnlockRead(PRUint32 *state) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnlockRead(state); } \
  NS_IMETHOD LockWrite(PRUint32 *state) { return !_to ? NS_ERROR_NULL_POINTER : _to->LockWrite(state); } \
  NS_IMETHOD UnlockWrite(PRUint32 *state) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnlockWrite(state); } \
  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 variant, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateBaseStorage(logicalSize, variant, progress); } \
  NS_IMETHOD DeleteStorage(IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteStorage(progress); } \
  NS_IMETHOD CreateDiffStorage(IMedium *target, PRUint32 variant, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateDiffStorage(target, 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 variant, IMedium *parent, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CloneTo(target, variant, parent, 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;
}

/* readonly attribute unsigned long variant; */
NS_IMETHODIMP _MYCLASS_::GetVariant(PRUint32 *aVariant)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring location; */
NS_IMETHODIMP _MYCLASS_::GetLocation(PRUnichar * *aLocation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetLocation(const 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 PRUint32 state); */
NS_IMETHODIMP _MYCLASS_::LockRead(PRUint32 *state)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unlockRead ([retval] out PRUint32 state); */
NS_IMETHODIMP _MYCLASS_::UnlockRead(PRUint32 *state)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void lockWrite ([retval] out PRUint32 state); */
NS_IMETHODIMP _MYCLASS_::LockWrite(PRUint32 *state)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unlockWrite ([retval] out PRUint32 state); */
NS_IMETHODIMP _MYCLASS_::UnlockWrite(PRUint32 *state)
{
    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 variant, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CreateBaseStorage(PRInt64 logicalSize, 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 variant, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CreateDiffStorage(IMedium *target, 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 variant, in IMedium parent, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CloneTo(IMedium *target, PRUint32 variant, IMedium *parent, 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 * aVariant) { return smth GetVariant (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_SETTER_Location_TO(smth) NS_IMETHOD SetLocation (const PRUnichar * aLocation) { return smth SetLocation (aLocation); }
#define COM_FORWARD_IMedium_SETTER_Location_TO_OBJ(obj) COM_FORWARD_IMedium_SETTER_Location_TO ((obj)->)
#define COM_FORWARD_IMedium_SETTER_Location_TO_BASE(base) COM_FORWARD_IMedium_SETTER_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 (PRUint32 * aState) { return smth LockRead (aState); }
#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_UnlockRead_TO(smth) NS_IMETHOD UnlockRead (PRUint32 * aState) { return smth UnlockRead (aState); }
#define COM_FORWARD_IMedium_UnlockRead_TO_OBJ(obj) COM_FORWARD_IMedium_UnlockRead_TO ((obj)->)
#define COM_FORWARD_IMedium_UnlockRead_TO_BASE(base) COM_FORWARD_IMedium_UnlockRead_TO (base::)
#define COM_FORWARD_IMedium_LockWrite_TO(smth) NS_IMETHOD LockWrite (PRUint32 * aState) { return smth LockWrite (aState); }
#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_UnlockWrite_TO(smth) NS_IMETHOD UnlockWrite (PRUint32 * aState) { return smth UnlockWrite (aState); }
#define COM_FORWARD_IMedium_UnlockWrite_TO_OBJ(obj) COM_FORWARD_IMedium_UnlockWrite_TO ((obj)->)
#define COM_FORWARD_IMedium_UnlockWrite_TO_BASE(base) COM_FORWARD_IMedium_UnlockWrite_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 aVariant, IProgress * * aProgress) { return smth CreateBaseStorage (aLogicalSize, 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 aVariant, IProgress * * aProgress) { return smth CreateDiffStorage (aTarget, 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 aVariant, IMedium * aParent, IProgress * * aProgress) { return smth CloneTo (aTarget, 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_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::)

/* starting interface:    IMediumFormat */
#define IMEDIUMFORMAT_IID_STR "9bd5b655-ea47-4637-99f3-aad0948be35b"

#define IMEDIUMFORMAT_IID \
  {0x9bd5b655, 0xea47, 0x4637, \
    { 0x99, 0xf3, 0xaa, 0xd0, 0x94, 0x8b, 0xe3, 0x5b }}

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;

  /* readonly attribute unsigned long capabilities; */
  NS_IMETHOD GetCapabilities(PRUint32 *aCapabilities) = 0;

  /* void describeFileExtensions (out unsigned long extensionsSize, [array, size_is (extensionsSize)] out wstring extensions, out unsigned long typeSize, [array, size_is (typeSize)] out PRUint32 type); */
  NS_IMETHOD DescribeFileExtensions(PRUint32 *extensionsSize, PRUnichar ***extensions, PRUint32 *typeSize, PRUint32 **type) = 0;

  /* void describeProperties (out unsigned long namesSize, [array, size_is (namesSize)] out wstring names, out unsigned long descriptionSize, [array, size_is (descriptionSize)] out wstring description, 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 *descriptionSize, PRUnichar ***description, 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 *aCapabilities); \
  NS_IMETHOD DescribeFileExtensions(PRUint32 *extensionsSize, PRUnichar ***extensions, PRUint32 *typeSize, PRUint32 **type); \
  NS_IMETHOD DescribeProperties(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *descriptionSize, PRUnichar ***description, 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 *aCapabilities) { return _to GetCapabilities(aCapabilities); } \
  NS_IMETHOD DescribeFileExtensions(PRUint32 *extensionsSize, PRUnichar ***extensions, PRUint32 *typeSize, PRUint32 **type) { return _to DescribeFileExtensions(extensionsSize, extensions, typeSize, type); } \
  NS_IMETHOD DescribeProperties(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *descriptionSize, PRUnichar ***description, PRUint32 *typesSize, PRUint32 **types, PRUint32 *flagsSize, PRUint32 **flags, PRUint32 *defaultsSize, PRUnichar ***defaults) { return _to DescribeProperties(namesSize, names, descriptionSize, description, 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 *aCapabilities) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCapabilities(aCapabilities); } \
  NS_IMETHOD DescribeFileExtensions(PRUint32 *extensionsSize, PRUnichar ***extensions, PRUint32 *typeSize, PRUint32 **type) { return !_to ? NS_ERROR_NULL_POINTER : _to->DescribeFileExtensions(extensionsSize, extensions, typeSize, type); } \
  NS_IMETHOD DescribeProperties(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *descriptionSize, PRUnichar ***description, PRUint32 *typesSize, PRUint32 **types, PRUint32 *flagsSize, PRUint32 **flags, PRUint32 *defaultsSize, PRUnichar ***defaults) { return !_to ? NS_ERROR_NULL_POINTER : _to->DescribeProperties(namesSize, names, descriptionSize, description, 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;
}

/* readonly attribute unsigned long capabilities; */
NS_IMETHODIMP _MYCLASS_::GetCapabilities(PRUint32 *aCapabilities)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void describeFileExtensions (out unsigned long extensionsSize, [array, size_is (extensionsSize)] out wstring extensions, out unsigned long typeSize, [array, size_is (typeSize)] out PRUint32 type); */
NS_IMETHODIMP _MYCLASS_::DescribeFileExtensions(PRUint32 *extensionsSize, PRUnichar ***extensions, PRUint32 *typeSize, PRUint32 **type)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void describeProperties (out unsigned long namesSize, [array, size_is (namesSize)] out wstring names, out unsigned long descriptionSize, [array, size_is (descriptionSize)] out wstring description, 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 *descriptionSize, PRUnichar ***description, 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 * aCapabilities) { return smth GetCapabilities (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 * aTypeSize, PRUint32 * * aType) { return smth DescribeFileExtensions (aExtensionsSize+++, aExtensions, aTypeSize, aType); }
#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 * aDescriptionSize, PRUnichar * * * aDescription, PRUint32 * aTypesSize, PRUint32 * * aTypes, PRUint32 * aFlagsSize, PRUint32 * * aFlags, PRUint32 * aDefaultsSize, PRUnichar * * * aDefaults) { return smth DescribeProperties (aNamesSize+++, aNames, aDescriptionSize+++, aDescription, 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::)

/* 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::)

/* starting interface:    IMouse */
#define IMOUSE_IID_STR "05044a52-7811-4f00-ae3a-0ab7ff707b10"

#define IMOUSE_IID \
  {0x05044a52, 0x7811, 0x4f00, \
    { 0xae, 0x3a, 0x0a, 0xb7, 0xff, 0x70, 0x7b, 0x10 }}

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 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;

};

/* 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 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); 

/* 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 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); } 

/* 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 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); } 

#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 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;
}

/* 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_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_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::)

/* starting interface:    IFramebuffer */
#define IFRAMEBUFFER_IID_STR "b7ed347a-5765-40a0-ae1c-f543eb4ddeaf"

#define IFRAMEBUFFER_IID \
  {0xb7ed347a, 0x5765, 0x40a0, \
    { 0xae, 0x1c, 0xf5, 0x43, 0xeb, 0x4d, 0xde, 0xaf }}

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;

};

/* 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); 

/* 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); } 

/* 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); } 

#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;
}

/* 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_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::)

/* 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::)

/* starting interface:    IDisplay */
#define IDISPLAY_IID_STR "09eed313-cd56-4d06-bd56-fac0f716b5dd"

#define IDISPLAY_IID \
  {0x09eed313, 0xcd56, 0x4d06, \
    { 0xbd, 0x56, 0xfa, 0xc0, 0xf7, 0x16, 0xb5, 0xdd }}

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); */
  NS_IMETHOD GetScreenResolution(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *bitsPerPixel) = 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 width, in unsigned long height, in unsigned long bitsPerPixel, in unsigned long display); */
  NS_IMETHOD SetVideoModeHint(PRUint32 width, PRUint32 height, PRUint32 bitsPerPixel, PRUint32 display) = 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;

};

/* 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); \
  NS_IMETHOD SetFramebuffer(PRUint32 screenId, IFramebuffer *framebuffer); \
  NS_IMETHOD GetFramebuffer(PRUint32 screenId, IFramebuffer **framebuffer, PRInt32 *xOrigin, PRInt32 *yOrigin); \
  NS_IMETHOD SetVideoModeHint(PRUint32 width, PRUint32 height, PRUint32 bitsPerPixel, PRUint32 display); \
  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); 

/* 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) { return _to GetScreenResolution(screenId, width, height, bitsPerPixel); } \
  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 width, PRUint32 height, PRUint32 bitsPerPixel, PRUint32 display) { return _to SetVideoModeHint(width, height, bitsPerPixel, display); } \
  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); } 

/* 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) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetScreenResolution(screenId, width, height, bitsPerPixel); } \
  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 width, PRUint32 height, PRUint32 bitsPerPixel, PRUint32 display) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVideoModeHint(width, height, bitsPerPixel, display); } \
  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); } 

#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); */
NS_IMETHODIMP _MYCLASS_::GetScreenResolution(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *bitsPerPixel)
{
    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 width, in unsigned long height, in unsigned long bitsPerPixel, in unsigned long display); */
NS_IMETHODIMP _MYCLASS_::SetVideoModeHint(PRUint32 width, PRUint32 height, PRUint32 bitsPerPixel, PRUint32 display)
{
    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;
}

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

#define COM_FORWARD_IDisplay_GetScreenResolution_TO(smth) NS_IMETHOD GetScreenResolution (PRUint32 aScreenId, PRUint32 * aWidth, PRUint32 * aHeight, PRUint32 * aBitsPerPixel) { return smth GetScreenResolution (aScreenId, aWidth, aHeight, aBitsPerPixel); }
#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 aWidth, PRUint32 aHeight, PRUint32 aBitsPerPixel, PRUint32 aDisplay) { return smth SetVideoModeHint (aWidth, aHeight, aBitsPerPixel, aDisplay); }
#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_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::)

/* starting interface:    INetworkAdapter */
#define INETWORKADAPTER_IID_STR "8b2e705c-0547-4008-b7bc-788757346092"

#define INETWORKADAPTER_IID \
  {0x8b2e705c, 0x0547, 0x4008, \
    { 0xb7, 0xbc, 0x78, 0x87, 0x57, 0x34, 0x60, 0x92 }}

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 natDriver; */
  NS_IMETHOD GetNatDriver(INATEngine * *aNatDriver) = 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 GetNatDriver(INATEngine * *aNatDriver); \
  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 GetNatDriver(INATEngine * *aNatDriver) { return _to GetNatDriver(aNatDriver); } \
  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 GetNatDriver(INATEngine * *aNatDriver) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNatDriver(aNatDriver); } \
  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 natDriver; */
NS_IMETHODIMP _MYCLASS_::GetNatDriver(INATEngine * *aNatDriver)
{
    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_NatDriver_TO(smth) NS_IMETHOD GetNatDriver (INATEngine * * aNatDriver) { return smth GetNatDriver (aNatDriver); }
#define COM_FORWARD_INetworkAdapter_GETTER_NatDriver_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_NatDriver_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_NatDriver_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_NatDriver_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::)

/* 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::)

/* 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::)

/* starting interface:    IMachineDebugger */
#define IMACHINEDEBUGGER_IID_STR "1bfd2fa9-0d91-44d3-9515-368dcbb3eb4d"

#define IMACHINEDEBUGGER_IID \
  {0x1bfd2fa9, 0x0d91, 0x44d3, \
    { 0x95, 0x15, 0x36, 0x8d, 0xcb, 0xb3, 0xeb, 0x4d }}

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 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 logFlags; */
  NS_IMETHOD GetLogFlags(PRUnichar * *aLogFlags) = 0;

  /* readonly attribute wstring logGroups; */
  NS_IMETHOD GetLogGroups(PRUnichar * *aLogGroups) = 0;

  /* readonly attribute wstring logDestinations; */
  NS_IMETHOD GetLogDestinations(PRUnichar * *aLogDestinations) = 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 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, 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 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 GetLogFlags(PRUnichar * *aLogFlags); \
  NS_IMETHOD GetLogGroups(PRUnichar * *aLogGroups); \
  NS_IMETHOD GetLogDestinations(PRUnichar * *aLogDestinations); \
  NS_IMETHOD GetHWVirtExEnabled(PRBool *aHWVirtExEnabled); \
  NS_IMETHOD GetHWVirtExNestedPagingEnabled(PRBool *aHWVirtExNestedPagingEnabled); \
  NS_IMETHOD GetHWVirtExVPIDEnabled(PRBool *aHWVirtExVPIDEnabled); \
  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 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 GetLogFlags(PRUnichar * *aLogFlags) { return _to GetLogFlags(aLogFlags); } \
  NS_IMETHOD GetLogGroups(PRUnichar * *aLogGroups) { return _to GetLogGroups(aLogGroups); } \
  NS_IMETHOD GetLogDestinations(PRUnichar * *aLogDestinations) { return _to GetLogDestinations(aLogDestinations); } \
  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 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 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 GetLogFlags(PRUnichar * *aLogFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogFlags(aLogFlags); } \
  NS_IMETHOD GetLogGroups(PRUnichar * *aLogGroups) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogGroups(aLogGroups); } \
  NS_IMETHOD GetLogDestinations(PRUnichar * *aLogDestinations) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogDestinations(aLogDestinations); } \
  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 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 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 logFlags; */
NS_IMETHODIMP _MYCLASS_::GetLogFlags(PRUnichar * *aLogFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring logGroups; */
NS_IMETHODIMP _MYCLASS_::GetLogGroups(PRUnichar * *aLogGroups)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring logDestinations; */
NS_IMETHODIMP _MYCLASS_::GetLogDestinations(PRUnichar * *aLogDestinations)
{
    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 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, 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_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_LogFlags_TO(smth) NS_IMETHOD GetLogFlags (PRUnichar * * aLogFlags) { return smth GetLogFlags (aLogFlags); }
#define COM_FORWARD_IMachineDebugger_GETTER_LogFlags_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_LogFlags_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_LogFlags_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_LogFlags_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_LogGroups_TO(smth) NS_IMETHOD GetLogGroups (PRUnichar * * aLogGroups) { return smth GetLogGroups (aLogGroups); }
#define COM_FORWARD_IMachineDebugger_GETTER_LogGroups_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_LogGroups_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_LogGroups_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_LogGroups_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_LogDestinations_TO(smth) NS_IMETHOD GetLogDestinations (PRUnichar * * aLogDestinations) { return smth GetLogDestinations (aLogDestinations); }
#define COM_FORWARD_IMachineDebugger_GETTER_LogDestinations_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_LogDestinations_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_LogDestinations_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_LogDestinations_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_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::)

/* starting interface:    IUSBController */
#define IUSBCONTROLLER_IID_STR "6fdcccc5-abd3-4fec-9387-2ad3914fc4a8"

#define IUSBCONTROLLER_IID \
  {0x6fdcccc5, 0xabd3, 0x4fec, \
    { 0x93, 0x87, 0x2a, 0xd3, 0x91, 0x4f, 0xc4, 0xa8 }}

class NS_NO_VTABLE IUSBController : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IUSBCONTROLLER_IID)

  /* attribute boolean enabled; */
  NS_IMETHOD GetEnabled(PRBool *aEnabled) = 0;
  NS_IMETHOD SetEnabled(PRBool aEnabled) = 0;

  /* attribute boolean enabledEhci; */
  NS_IMETHOD GetEnabledEhci(PRBool *aEnabledEhci) = 0;
  NS_IMETHOD SetEnabledEhci(PRBool aEnabledEhci) = 0;

  /* readonly attribute boolean proxyAvailable; */
  NS_IMETHOD GetProxyAvailable(PRBool *aProxyAvailable) = 0;

  /* readonly attribute unsigned short USBStandard; */
  NS_IMETHOD GetUSBStandard(PRUint16 *aUSBStandard) = 0;

  /* 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_IUSBCONTROLLER \
  NS_IMETHOD GetEnabled(PRBool *aEnabled); \
  NS_IMETHOD SetEnabled(PRBool aEnabled); \
  NS_IMETHOD GetEnabledEhci(PRBool *aEnabledEhci); \
  NS_IMETHOD SetEnabledEhci(PRBool aEnabledEhci); \
  NS_IMETHOD GetProxyAvailable(PRBool *aProxyAvailable); \
  NS_IMETHOD GetUSBStandard(PRUint16 *aUSBStandard); \
  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_IUSBCONTROLLER(_to) \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return _to GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return _to SetEnabled(aEnabled); } \
  NS_IMETHOD GetEnabledEhci(PRBool *aEnabledEhci) { return _to GetEnabledEhci(aEnabledEhci); } \
  NS_IMETHOD SetEnabledEhci(PRBool aEnabledEhci) { return _to SetEnabledEhci(aEnabledEhci); } \
  NS_IMETHOD GetProxyAvailable(PRBool *aProxyAvailable) { return _to GetProxyAvailable(aProxyAvailable); } \
  NS_IMETHOD GetUSBStandard(PRUint16 *aUSBStandard) { return _to GetUSBStandard(aUSBStandard); } \
  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_IUSBCONTROLLER(_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 GetEnabledEhci(PRBool *aEnabledEhci) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnabledEhci(aEnabledEhci); } \
  NS_IMETHOD SetEnabledEhci(PRBool aEnabledEhci) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEnabledEhci(aEnabledEhci); } \
  NS_IMETHOD GetProxyAvailable(PRBool *aProxyAvailable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProxyAvailable(aProxyAvailable); } \
  NS_IMETHOD GetUSBStandard(PRUint16 *aUSBStandard) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUSBStandard(aUSBStandard); } \
  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 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 */
}

/* 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 boolean enabledEhci; */
NS_IMETHODIMP _MYCLASS_::GetEnabledEhci(PRBool *aEnabledEhci)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetEnabledEhci(PRBool aEnabledEhci)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean proxyAvailable; */
NS_IMETHODIMP _MYCLASS_::GetProxyAvailable(PRBool *aProxyAvailable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned short USBStandard; */
NS_IMETHODIMP _MYCLASS_::GetUSBStandard(PRUint16 *aUSBStandard)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* 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_IUSBController_GETTER_Enabled_TO(smth) NS_IMETHOD GetEnabled (PRBool * aEnabled) { return smth GetEnabled (aEnabled); }
#define COM_FORWARD_IUSBController_GETTER_Enabled_TO_OBJ(obj) COM_FORWARD_IUSBController_GETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_IUSBController_GETTER_Enabled_TO_BASE(base) COM_FORWARD_IUSBController_GETTER_Enabled_TO (base::)
#define COM_FORWARD_IUSBController_SETTER_Enabled_TO(smth) NS_IMETHOD SetEnabled (PRBool aEnabled) { return smth SetEnabled (aEnabled); }
#define COM_FORWARD_IUSBController_SETTER_Enabled_TO_OBJ(obj) COM_FORWARD_IUSBController_SETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_IUSBController_SETTER_Enabled_TO_BASE(base) COM_FORWARD_IUSBController_SETTER_Enabled_TO (base::)
#define COM_FORWARD_IUSBController_GETTER_EnabledEhci_TO(smth) NS_IMETHOD GetEnabledEhci (PRBool * aEnabledEhci) { return smth GetEnabledEhci (aEnabledEhci); }
#define COM_FORWARD_IUSBController_GETTER_EnabledEhci_TO_OBJ(obj) COM_FORWARD_IUSBController_GETTER_EnabledEhci_TO ((obj)->)
#define COM_FORWARD_IUSBController_GETTER_EnabledEhci_TO_BASE(base) COM_FORWARD_IUSBController_GETTER_EnabledEhci_TO (base::)
#define COM_FORWARD_IUSBController_SETTER_EnabledEhci_TO(smth) NS_IMETHOD SetEnabledEhci (PRBool aEnabledEhci) { return smth SetEnabledEhci (aEnabledEhci); }
#define COM_FORWARD_IUSBController_SETTER_EnabledEhci_TO_OBJ(obj) COM_FORWARD_IUSBController_SETTER_EnabledEhci_TO ((obj)->)
#define COM_FORWARD_IUSBController_SETTER_EnabledEhci_TO_BASE(base) COM_FORWARD_IUSBController_SETTER_EnabledEhci_TO (base::)
#define COM_FORWARD_IUSBController_GETTER_ProxyAvailable_TO(smth) NS_IMETHOD GetProxyAvailable (PRBool * aProxyAvailable) { return smth GetProxyAvailable (aProxyAvailable); }
#define COM_FORWARD_IUSBController_GETTER_ProxyAvailable_TO_OBJ(obj) COM_FORWARD_IUSBController_GETTER_ProxyAvailable_TO ((obj)->)
#define COM_FORWARD_IUSBController_GETTER_ProxyAvailable_TO_BASE(base) COM_FORWARD_IUSBController_GETTER_ProxyAvailable_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_GETTER_DeviceFilters_TO(smth) NS_IMETHOD GetDeviceFilters (PRUint32 * aDeviceFiltersSize, IUSBDeviceFilter * * * aDeviceFilters) { return smth GetDeviceFilters (aDeviceFiltersSize, aDeviceFilters); }
#define COM_FORWARD_IUSBController_GETTER_DeviceFilters_TO_OBJ(obj) COM_FORWARD_IUSBController_GETTER_DeviceFilters_TO ((obj)->)
#define COM_FORWARD_IUSBController_GETTER_DeviceFilters_TO_BASE(base) COM_FORWARD_IUSBController_GETTER_DeviceFilters_TO (base::)
#define COM_FORWARD_IUSBController_CreateDeviceFilter_TO(smth) NS_IMETHOD CreateDeviceFilter (PRUnichar * aName, IUSBDeviceFilter * * aFilter) { return smth CreateDeviceFilter (aName, aFilter); }
#define COM_FORWARD_IUSBController_CreateDeviceFilter_TO_OBJ(obj) COM_FORWARD_IUSBController_CreateDeviceFilter_TO ((obj)->)
#define COM_FORWARD_IUSBController_CreateDeviceFilter_TO_BASE(base) COM_FORWARD_IUSBController_CreateDeviceFilter_TO (base::)
#define COM_FORWARD_IUSBController_InsertDeviceFilter_TO(smth) NS_IMETHOD InsertDeviceFilter (PRUint32 aPosition, IUSBDeviceFilter * aFilter) { return smth InsertDeviceFilter (aPosition, aFilter); }
#define COM_FORWARD_IUSBController_InsertDeviceFilter_TO_OBJ(obj) COM_FORWARD_IUSBController_InsertDeviceFilter_TO ((obj)->)
#define COM_FORWARD_IUSBController_InsertDeviceFilter_TO_BASE(base) COM_FORWARD_IUSBController_InsertDeviceFilter_TO (base::)
#define COM_FORWARD_IUSBController_RemoveDeviceFilter_TO(smth) NS_IMETHOD RemoveDeviceFilter (PRUint32 aPosition, IUSBDeviceFilter * * aFilter) { return smth RemoveDeviceFilter (aPosition, aFilter); }
#define COM_FORWARD_IUSBController_RemoveDeviceFilter_TO_OBJ(obj) COM_FORWARD_IUSBController_RemoveDeviceFilter_TO ((obj)->)
#define COM_FORWARD_IUSBController_RemoveDeviceFilter_TO_BASE(base) COM_FORWARD_IUSBController_RemoveDeviceFilter_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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* starting interface:    IInternalSessionControl */
#define IINTERNALSESSIONCONTROL_IID_STR "0bdda5da-67c8-47be-a610-b83a7fa3e8b6"

#define IINTERNALSESSIONCONTROL_IID \
  {0x0bdda5da, 0x67c8, 0x47be, \
    { 0xa6, 0x10, 0xb8, 0x3a, 0x7f, 0xa3, 0xe8, 0xb6 }}

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 assignMachine (in IMachine machine); */
  NS_IMETHOD AssignMachine(IMachine *machine) = 0;

  /* void assignRemoteMachine (in IMachine machine, in IConsole console); */
  NS_IMETHOD AssignRemoteMachine(IMachine *machine, IConsole *console) = 0;

  /* void updateMachineState (in PRUint32 aMachineState); */
  NS_IMETHOD UpdateMachineState(PRUint32 aMachineState) = 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); */
  NS_IMETHOD OnStorageDeviceChange(IMediumAttachment *mediumAttachment, PRBool remove) = 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 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 keySize, [array, size_is (keySize)] out wstring key, out unsigned long valueSize, [array, size_is (valueSize)] out wstring value, out unsigned long timestampSize, [array, size_is (timestampSize)] out long long timestamp, out unsigned long flagsSize, [array, size_is (flagsSize)] out wstring flags); */
  NS_IMETHOD EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *keySize, PRUnichar ***key, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRInt64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags) = 0;

  /* void onlineMergeMedium (in IMediumAttachment mediumAttachment, in unsigned long sourceIdx, in unsigned long targetIdx, in IMedium source, in IMedium target, in boolean mergeForward, in IMedium parentForTarget, in unsigned long childrenToReparentSize, [array, size_is (childrenToReparentSize)] in IMedium childrenToReparent, in IProgress progress); */
  NS_IMETHOD OnlineMergeMedium(IMediumAttachment *mediumAttachment, PRUint32 sourceIdx, PRUint32 targetIdx, IMedium *source, IMedium *target, PRBool mergeForward, IMedium *parentForTarget, PRUint32 childrenToReparentSize, IMedium **childrenToReparent, IProgress *progress) = 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 AssignMachine(IMachine *machine); \
  NS_IMETHOD AssignRemoteMachine(IMachine *machine, IConsole *console); \
  NS_IMETHOD UpdateMachineState(PRUint32 aMachineState); \
  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); \
  NS_IMETHOD OnCPUChange(PRUint32 cpu, PRBool add); \
  NS_IMETHOD OnCPUExecutionCapChange(PRUint32 executionCap); \
  NS_IMETHOD OnVRDEServerChange(PRBool restart); \
  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 *keySize, PRUnichar ***key, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRInt64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags); \
  NS_IMETHOD OnlineMergeMedium(IMediumAttachment *mediumAttachment, PRUint32 sourceIdx, PRUint32 targetIdx, IMedium *source, IMedium *target, PRBool mergeForward, IMedium *parentForTarget, PRUint32 childrenToReparentSize, IMedium **childrenToReparent, IProgress *progress); 

/* 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 AssignMachine(IMachine *machine) { return _to AssignMachine(machine); } \
  NS_IMETHOD AssignRemoteMachine(IMachine *machine, IConsole *console) { return _to AssignRemoteMachine(machine, console); } \
  NS_IMETHOD UpdateMachineState(PRUint32 aMachineState) { return _to UpdateMachineState(aMachineState); } \
  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) { return _to OnStorageDeviceChange(mediumAttachment, remove); } \
  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 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 *keySize, PRUnichar ***key, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRInt64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags) { return _to EnumerateGuestProperties(patterns, keySize, key, valueSize, value, timestampSize, timestamp, flagsSize, flags); } \
  NS_IMETHOD OnlineMergeMedium(IMediumAttachment *mediumAttachment, PRUint32 sourceIdx, PRUint32 targetIdx, IMedium *source, IMedium *target, PRBool mergeForward, IMedium *parentForTarget, PRUint32 childrenToReparentSize, IMedium **childrenToReparent, IProgress *progress) { return _to OnlineMergeMedium(mediumAttachment, sourceIdx, targetIdx, source, target, mergeForward, parentForTarget, childrenToReparentSize, childrenToReparent, 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_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 AssignMachine(IMachine *machine) { return !_to ? NS_ERROR_NULL_POINTER : _to->AssignMachine(machine); } \
  NS_IMETHOD AssignRemoteMachine(IMachine *machine, IConsole *console) { return !_to ? NS_ERROR_NULL_POINTER : _to->AssignRemoteMachine(machine, console); } \
  NS_IMETHOD UpdateMachineState(PRUint32 aMachineState) { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateMachineState(aMachineState); } \
  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) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnStorageDeviceChange(mediumAttachment, remove); } \
  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 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 *keySize, PRUnichar ***key, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRInt64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnumerateGuestProperties(patterns, keySize, key, valueSize, value, timestampSize, timestamp, flagsSize, flags); } \
  NS_IMETHOD OnlineMergeMedium(IMediumAttachment *mediumAttachment, PRUint32 sourceIdx, PRUint32 targetIdx, IMedium *source, IMedium *target, PRBool mergeForward, IMedium *parentForTarget, PRUint32 childrenToReparentSize, IMedium **childrenToReparent, IProgress *progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnlineMergeMedium(mediumAttachment, sourceIdx, targetIdx, source, target, mergeForward, parentForTarget, childrenToReparentSize, childrenToReparent, progress); } 

#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 assignMachine (in IMachine machine); */
NS_IMETHODIMP _MYCLASS_::AssignMachine(IMachine *machine)
{
    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 aMachineState); */
NS_IMETHODIMP _MYCLASS_::UpdateMachineState(PRUint32 aMachineState)
{
    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); */
NS_IMETHODIMP _MYCLASS_::OnStorageDeviceChange(IMediumAttachment *mediumAttachment, PRBool remove)
{
    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 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 keySize, [array, size_is (keySize)] out wstring key, out unsigned long valueSize, [array, size_is (valueSize)] out wstring value, out unsigned long timestampSize, [array, size_is (timestampSize)] out long long timestamp, out unsigned long flagsSize, [array, size_is (flagsSize)] out wstring flags); */
NS_IMETHODIMP _MYCLASS_::EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *keySize, PRUnichar ***key, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRInt64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onlineMergeMedium (in IMediumAttachment mediumAttachment, in unsigned long sourceIdx, in unsigned long targetIdx, in IMedium source, in IMedium target, in boolean mergeForward, in IMedium parentForTarget, in unsigned long childrenToReparentSize, [array, size_is (childrenToReparentSize)] in IMedium childrenToReparent, in IProgress progress); */
NS_IMETHODIMP _MYCLASS_::OnlineMergeMedium(IMediumAttachment *mediumAttachment, PRUint32 sourceIdx, PRUint32 targetIdx, IMedium *source, IMedium *target, PRBool mergeForward, IMedium *parentForTarget, PRUint32 childrenToReparentSize, IMedium **childrenToReparent, IProgress *progress)
{
    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_AssignMachine_TO(smth) NS_IMETHOD AssignMachine (IMachine * aMachine) { return smth AssignMachine (aMachine); }
#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_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 aAMachineState) { return smth UpdateMachineState (aAMachineState); }
#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) { return smth OnStorageDeviceChange (aMediumAttachment, aRemove); }
#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_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_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 * aKeySize, PRUnichar * * * aKey, PRUint32 * aValueSize, PRUnichar * * * aValue, PRUint32 * aTimestampSize, PRInt64 * * aTimestamp, PRUint32 * aFlagsSize, PRUnichar * * * aFlags) { return smth EnumerateGuestProperties (aPatterns, aKeySize+++, aKey, aValueSize+++, aValue, aTimestampSize+++, aTimestamp, 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, IMedium * aSource, IMedium * aTarget, PRBool aMergeForward, IMedium * aParentForTarget, PRUint32 aChildrenToReparentSize, IMedium * * aChildrenToReparent, IProgress * aProgress) { return smth OnlineMergeMedium (aMediumAttachment, aSourceIdx, aTargetIdx, aSource, aTarget, aMergeForward, aParentForTarget, aChildrenToReparentSize+++, aChildrenToReparent, 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_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::)

/* 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::)

/* 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;

  /* void getIDEEmulationPort (in long devicePosition, [retval] out long portNumber); */
  NS_IMETHOD GetIDEEmulationPort(PRInt32 devicePosition, PRInt32 *portNumber) = 0;

  /* void setIDEEmulationPort (in long devicePosition, in long portNumber); */
  NS_IMETHOD SetIDEEmulationPort(PRInt32 devicePosition, PRInt32 portNumber) = 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); \
  NS_IMETHOD GetIDEEmulationPort(PRInt32 devicePosition, PRInt32 *portNumber); \
  NS_IMETHOD SetIDEEmulationPort(PRInt32 devicePosition, PRInt32 portNumber); 

/* 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); } \
  NS_IMETHOD GetIDEEmulationPort(PRInt32 devicePosition, PRInt32 *portNumber) { return _to GetIDEEmulationPort(devicePosition, portNumber); } \
  NS_IMETHOD SetIDEEmulationPort(PRInt32 devicePosition, PRInt32 portNumber) { return _to SetIDEEmulationPort(devicePosition, portNumber); } 

/* 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); } \
  NS_IMETHOD GetIDEEmulationPort(PRInt32 devicePosition, PRInt32 *portNumber) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIDEEmulationPort(devicePosition, portNumber); } \
  NS_IMETHOD SetIDEEmulationPort(PRInt32 devicePosition, PRInt32 portNumber) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIDEEmulationPort(devicePosition, portNumber); } 

#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;
}

/* void getIDEEmulationPort (in long devicePosition, [retval] out long portNumber); */
NS_IMETHODIMP _MYCLASS_::GetIDEEmulationPort(PRInt32 devicePosition, PRInt32 *portNumber)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setIDEEmulationPort (in long devicePosition, in long portNumber); */
NS_IMETHODIMP _MYCLASS_::SetIDEEmulationPort(PRInt32 devicePosition, PRInt32 portNumber)
{
    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_GetIDEEmulationPort_TO(smth) NS_IMETHOD GetIDEEmulationPort (PRInt32 aDevicePosition, PRInt32 * aPortNumber) { return smth GetIDEEmulationPort (aDevicePosition, aPortNumber); }
#define COM_FORWARD_IStorageController_GetIDEEmulationPort_TO_OBJ(obj) COM_FORWARD_IStorageController_GetIDEEmulationPort_TO ((obj)->)
#define COM_FORWARD_IStorageController_GetIDEEmulationPort_TO_BASE(base) COM_FORWARD_IStorageController_GetIDEEmulationPort_TO (base::)
#define COM_FORWARD_IStorageController_SetIDEEmulationPort_TO(smth) NS_IMETHOD SetIDEEmulationPort (PRInt32 aDevicePosition, PRInt32 aPortNumber) { return smth SetIDEEmulationPort (aDevicePosition, aPortNumber); }
#define COM_FORWARD_IStorageController_SetIDEEmulationPort_TO_OBJ(obj) COM_FORWARD_IStorageController_SetIDEEmulationPort_TO ((obj)->)
#define COM_FORWARD_IStorageController_SetIDEEmulationPort_TO_BASE(base) COM_FORWARD_IStorageController_SetIDEEmulationPort_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::)

/* 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::)

/* 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::)

/* starting interface:    INATEngine */
#define INATENGINE_IID_STR "4b286616-eb03-11de-b0fb-1701eca42246"

#define INATENGINE_IID \
  {0x4b286616, 0xeb03, 0x11de, \
    { 0xb0, 0xfb, 0x17, 0x01, 0xec, 0xa4, 0x22, 0x46 }}

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::)

/* 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::)

/* starting interface:    IExtPackBase */
#define IEXTPACKBASE_IID_STR "5ffb0b64-0ad6-467d-af62-1157e7dc3c99"

#define IEXTPACKBASE_IID \
  {0x5ffb0b64, 0x0ad6, 0x467d, \
    { 0xaf, 0x62, 0x11, 0x57, 0xe7, 0xdc, 0x3c, 0x99 }}

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 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 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 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 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 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_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::)

/* 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::)

/* 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::)

/* 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::)

/* 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 unsigned long maxMbPerSec; */
  NS_IMETHOD GetMaxMbPerSec(PRUint32 *aMaxMbPerSec) = 0;
  NS_IMETHOD SetMaxMbPerSec(PRUint32 aMaxMbPerSec) = 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 GetMaxMbPerSec(PRUint32 *aMaxMbPerSec); \
  NS_IMETHOD SetMaxMbPerSec(PRUint32 aMaxMbPerSec); 

/* 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 GetMaxMbPerSec(PRUint32 *aMaxMbPerSec) { return _to GetMaxMbPerSec(aMaxMbPerSec); } \
  NS_IMETHOD SetMaxMbPerSec(PRUint32 aMaxMbPerSec) { return _to SetMaxMbPerSec(aMaxMbPerSec); } 

/* 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 GetMaxMbPerSec(PRUint32 *aMaxMbPerSec) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxMbPerSec(aMaxMbPerSec); } \
  NS_IMETHOD SetMaxMbPerSec(PRUint32 aMaxMbPerSec) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMaxMbPerSec(aMaxMbPerSec); } 

#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 unsigned long maxMbPerSec; */
NS_IMETHODIMP _MYCLASS_::GetMaxMbPerSec(PRUint32 *aMaxMbPerSec)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetMaxMbPerSec(PRUint32 aMaxMbPerSec)
{
    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_MaxMbPerSec_TO(smth) NS_IMETHOD GetMaxMbPerSec (PRUint32 * aMaxMbPerSec) { return smth GetMaxMbPerSec (aMaxMbPerSec); }
#define COM_FORWARD_IBandwidthGroup_GETTER_MaxMbPerSec_TO_OBJ(obj) COM_FORWARD_IBandwidthGroup_GETTER_MaxMbPerSec_TO ((obj)->)
#define COM_FORWARD_IBandwidthGroup_GETTER_MaxMbPerSec_TO_BASE(base) COM_FORWARD_IBandwidthGroup_GETTER_MaxMbPerSec_TO (base::)
#define COM_FORWARD_IBandwidthGroup_SETTER_MaxMbPerSec_TO(smth) NS_IMETHOD SetMaxMbPerSec (PRUint32 aMaxMbPerSec) { return smth SetMaxMbPerSec (aMaxMbPerSec); }
#define COM_FORWARD_IBandwidthGroup_SETTER_MaxMbPerSec_TO_OBJ(obj) COM_FORWARD_IBandwidthGroup_SETTER_MaxMbPerSec_TO ((obj)->)
#define COM_FORWARD_IBandwidthGroup_SETTER_MaxMbPerSec_TO_BASE(base) COM_FORWARD_IBandwidthGroup_SETTER_MaxMbPerSec_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::)

/* 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 unsigned long maxMbPerSec); */
  NS_IMETHOD CreateBandwidthGroup(const PRUnichar *name, PRUint32 type, PRUint32 maxMbPerSec) = 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, PRUint32 maxMbPerSec); \
  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, PRUint32 maxMbPerSec) { return _to CreateBandwidthGroup(name, type, maxMbPerSec); } \
  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, PRUint32 maxMbPerSec) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateBandwidthGroup(name, type, maxMbPerSec); } \
  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 unsigned long maxMbPerSec); */
NS_IMETHODIMP _MYCLASS_::CreateBandwidthGroup(const PRUnichar *name, PRUint32 type, PRUint32 maxMbPerSec)
{
    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, PRUint32 aMaxMbPerSec) { return smth CreateBandwidthGroup (aName, aType, aMaxMbPerSec); }
#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::)

/* starting interface:    IVirtualBoxClient */
#define IVIRTUALBOXCLIENT_IID_STR "5fe0bd48-1181-40d1-991f-3b02f269a823"

#define IVIRTUALBOXCLIENT_IID \
  {0x5fe0bd48, 0x1181, 0x40d1, \
    { 0x99, 0x1f, 0x3b, 0x02, 0xf2, 0x69, 0xa8, 0x23 }}

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;

};

/* 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); 

/* 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); } 

/* 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); } 

#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;
}

/* 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_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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* starting interface:    IMouseCapabilityChangedEvent */
#define IMOUSECAPABILITYCHANGEDEVENT_IID_STR "d633ad48-820c-4207-b46c-6bd3596640d5"

#define IMOUSECAPABILITYCHANGEDEVENT_IID \
  {0xd633ad48, 0x820c, 0x4207, \
    { 0xb4, 0x6c, 0x6b, 0xd3, 0x59, 0x66, 0x40, 0xd5 }}

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 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 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 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 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 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_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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* starting interface:    ICPUChangedEvent */
#define ICPUCHANGEDEVENT_IID_STR "d0f0becc-ee17-4d17-a8cc-383b0eb55e9d"

#define ICPUCHANGEDEVENT_IID \
  {0xd0f0becc, 0xee17, 0x4d17, \
    { 0xa8, 0xcc, 0x38, 0x3b, 0x0e, 0xb5, 0x5e, 0x9d }}

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::)

/* 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::)

/* 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::)

/* starting interface:    IGuestMouseEvent */
#define IGUESTMOUSEEVENT_IID_STR "1f85d35c-c524-40ff-8e98-307000df0992"

#define IGUESTMOUSEEVENT_IID \
  {0x1f85d35c, 0xc524, 0x40ff, \
    { 0x8e, 0x98, 0x30, 0x70, 0x00, 0xdf, 0x09, 0x92 }}

class NS_NO_VTABLE IGuestMouseEvent : public IReusableEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTMOUSEEVENT_IID)

  /* readonly attribute boolean absolute; */
  NS_IMETHOD GetAbsolute(PRBool *aAbsolute) = 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 GetAbsolute(PRBool *aAbsolute); \
  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 GetAbsolute(PRBool *aAbsolute) { return _to GetAbsolute(aAbsolute); } \
  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 GetAbsolute(PRBool *aAbsolute) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAbsolute(aAbsolute); } \
  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 boolean absolute; */
NS_IMETHODIMP _MYCLASS_::GetAbsolute(PRBool *aAbsolute)
{
    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_Absolute_TO(smth) NS_IMETHOD GetAbsolute (PRBool * aAbsolute) { return smth GetAbsolute (aAbsolute); }
#define COM_FORWARD_IGuestMouseEvent_GETTER_Absolute_TO_OBJ(obj) COM_FORWARD_IGuestMouseEvent_GETTER_Absolute_TO ((obj)->)
#define COM_FORWARD_IGuestMouseEvent_GETTER_Absolute_TO_BASE(base) COM_FORWARD_IGuestMouseEvent_GETTER_Absolute_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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* 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::)

/* starting interface:    INATRedirectEvent */
#define INATREDIRECTEVENT_IID_STR "57de97d7-3cbb-42a0-888f-610d5832d16b"

#define INATREDIRECTEVENT_IID \
  {0x57de97d7, 0x3cbb, 0x42a0, \
    { 0x88, 0x8f, 0x61, 0x0d, 0x58, 0x32, 0xd1, 0x6b }}

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::)

/* starting interface:    IHostPciDevicePlugEvent */
#define IHOSTPCIDEVICEPLUGEVENT_IID_STR "9cebfc27-c579-4965-8eb7-d31794cd7dcf"

#define IHOSTPCIDEVICEPLUGEVENT_IID \
  {0x9cebfc27, 0xc579, 0x4965, \
    { 0x8e, 0xb7, 0xd3, 0x17, 0x94, 0xcd, 0x7d, 0xcf }}

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::)

/* 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::)

/* 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::)

/* 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::)

/* starting interface:    IStorageDeviceChangedEvent */
#define ISTORAGEDEVICECHANGEDEVENT_IID_STR "8a5c2dce-e341-49d4-afce-c95979f7d70c"

#define ISTORAGEDEVICECHANGEDEVENT_IID \
  {0x8a5c2dce, 0xe341, 0x49d4, \
    { 0xaf, 0xce, 0xc9, 0x59, 0x79, 0xf7, 0xd7, 0x0c }}

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;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISTORAGEDEVICECHANGEDEVENT \
  NS_IMETHOD GetStorageDevice(IMediumAttachment * *aStorageDevice); \
  NS_IMETHOD GetRemoved(PRBool *aRemoved); 

/* 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); } 

/* 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); } 

#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;
}

/* 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_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::)
#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
#define CLSID_VirtualBox VBOX_GCC_EXTENSION (nsCID) NS_VIRTUALBOX_CID
#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
#define CLSID_VirtualBoxClient VBOX_GCC_EXTENSION (nsCID) NS_VIRTUALBOXCLIENT_CID
#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
#define CLSID_Session VBOX_GCC_EXTENSION (nsCID) NS_SESSION_CID

#endif /* __gen_VirtualBox_XPCOM_h__ */
