/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM U:/dev/virtualbox/vbox/out/os2.x86/release/bin/sdk/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
// currenty, nsISupportsImpl.h lacks the below-like macros
#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_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_QUERY_INTERFACE2_CI(_class, _i1, _i2)                               \
  NS_IMPL_CI_INTERFACE_GETTER2(_class, _i1, _i2)
#endif
  
class IVirtualBoxErrorInfo; /* forward declaration */

class IVirtualBoxCallback; /* forward declaration */

class IVirtualBox; /* forward declaration */

class IMachineEnumerator; /* forward declaration */

class IMachineCollection; /* forward declaration */

class IInternalMachineControl; /* forward declaration */

class IBIOSSettings; /* forward declaration */

class IMachine; /* forward declaration */

class IConsoleCallback; /* forward declaration */

class IRemoteDisplayInfo; /* forward declaration */

class IConsole; /* forward declaration */

class IHostDVDDrive; /* forward declaration */

class IHostDVDDriveEnumerator; /* forward declaration */

class IHostDVDDriveCollection; /* forward declaration */

class IHostFloppyDrive; /* forward declaration */

class IHostFloppyDriveEnumerator; /* forward declaration */

class IHostFloppyDriveCollection; /* forward declaration */

class IHost; /* forward declaration */

class ISystemProperties; /* forward declaration */

class IGuestOSType; /* forward declaration */

class IGuestOSTypeEnumerator; /* forward declaration */

class IGuestOSTypeCollection; /* forward declaration */

class IGuest; /* forward declaration */

class IProgressEnumerator; /* forward declaration */

class IProgressCollection; /* forward declaration */

class IProgress; /* forward declaration */

class ISnapshotEnumerator; /* forward declaration */

class ISnapshotCollection; /* forward declaration */

class ISnapshot; /* forward declaration */

class IHardDiskAttachment; /* forward declaration */

class IHardDiskAttachmentEnumerator; /* forward declaration */

class IHardDiskAttachmentCollection; /* forward declaration */

class IHardDiskEnumerator; /* forward declaration */

class IHardDiskCollection; /* forward declaration */

class IHardDisk; /* forward declaration */

class IVirtualDiskImage; /* forward declaration */

class IISCSIHardDisk; /* forward declaration */

class IVMDKImage; /* forward declaration */

class ICustomHardDisk; /* forward declaration */

class IVHDImage; /* forward declaration */

class IDVDImageEnumerator; /* forward declaration */

class IDVDImageCollection; /* forward declaration */

class IDVDImage; /* forward declaration */

class IDVDDrive; /* forward declaration */

class IFloppyImageEnumerator; /* forward declaration */

class IFloppyImageCollection; /* forward declaration */

class IFloppyImage; /* forward declaration */

class IFloppyDrive; /* 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 IUSBDeviceEnumerator; /* forward declaration */

class IUSBDeviceCollection; /* forward declaration */

class IUSBDevice; /* forward declaration */

class IUSBDeviceFilterEnumerator; /* forward declaration */

class IUSBDeviceFilterCollection; /* forward declaration */

class IUSBDeviceFilter; /* forward declaration */

class IHostUSBDeviceEnumerator; /* forward declaration */

class IHostUSBDeviceCollection; /* forward declaration */

class IHostUSBDevice; /* forward declaration */

class IHostUSBDeviceFilterEnumerator; /* forward declaration */

class IHostUSBDeviceFilterCollection; /* forward declaration */

class IHostUSBDeviceFilter; /* forward declaration */

class IAudioAdapter; /* forward declaration */

class IVRDPServer; /* forward declaration */

class ISharedFolderEnumerator; /* forward declaration */

class ISharedFolderCollection; /* forward declaration */

class ISharedFolder; /* forward declaration */

class IInternalSessionControl; /* forward declaration */

class ISession; /* forward declaration */

class ISATAController; /* forward declaration */


/* starting interface:    TSBool */
#define TSBOOL_IID_STR "523ff64d-842a-4b1a-80e7-c311b028cb3a"

#define TSBOOL_IID \
  {0x523ff64d, 0x842a, 0x4b1a, \
    { 0x80, 0xe7, 0xc3, 0x11, 0xb0, 0x28, 0xcb, 0x3a }}

class NS_NO_VTABLE TSBool {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(TSBOOL_IID)

  enum { False = 0U };

  enum { True = 1U };

  enum { Default = 2U };

};

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

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

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

/* Header file */
class _MYCLASS_ : public TSBool
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_TSBOOL

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define TSBool_T PRUint32
#define TSBool_False TSBool::False
#define TSBool_True TSBool::True
#define TSBool_Default TSBool::Default

/* starting interface:    MachineState */
#define MACHINESTATE_IID_STR "73bf04d0-7c4f-4684-9abf-d65a9ad74343"

#define MACHINESTATE_IID \
  {0x73bf04d0, 0x7c4f, 0x4684, \
    { 0x9a, 0xbf, 0xd6, 0x5a, 0x9a, 0xd7, 0x43, 0x43 }}

class NS_NO_VTABLE MachineState {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(MACHINESTATE_IID)

  enum { Null = 0U };

  enum { PoweredOff = 1U };

  enum { Saved = 2U };

  enum { Aborted = 3U };

  enum { Running = 4U };

  enum { Paused = 5U };

  enum { Stuck = 6U };

  enum { Starting = 7U };

  enum { Stopping = 8U };

  enum { Saving = 9U };

  enum { Restoring = 10U };

  enum { Discarding = 11U };

};

/* 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_Aborted MachineState::Aborted
#define MachineState_Running MachineState::Running
#define MachineState_Paused MachineState::Paused
#define MachineState_Stuck MachineState::Stuck
#define MachineState_Starting MachineState::Starting
#define MachineState_Stopping MachineState::Stopping
#define MachineState_Saving MachineState::Saving
#define MachineState_Restoring MachineState::Restoring
#define MachineState_Discarding MachineState::Discarding

/* 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 { Closed = 1U };

  enum { Open = 2U };

  enum { Spawning = 3U };

  enum { Closing = 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_Closed SessionState::Closed
#define SessionState_Open SessionState::Open
#define SessionState_Spawning SessionState::Spawning
#define SessionState_Closing SessionState::Closing

/* 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 { Direct = 1U };

  enum { Remote = 2U };

  enum { Existing = 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_Direct SessionType::Direct
#define SessionType_Remote SessionType::Remote
#define SessionType_Existing SessionType::Existing

/* 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:    ResourceUsage */
#define RESOURCEUSAGE_IID_STR "fc56e4b6-b195-48e2-a5e1-a667b0d9f809"

#define RESOURCEUSAGE_IID \
  {0xfc56e4b6, 0xb195, 0x48e2, \
    { 0xa5, 0xe1, 0xa6, 0x67, 0xb0, 0xd9, 0xf8, 0x09 }}

class NS_NO_VTABLE ResourceUsage {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(RESOURCEUSAGE_IID)

  enum { Null = 0U };

  enum { Permanent = 1U };

  enum { Temporary = 2U };

  enum { All = 3U };

};

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

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

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

/* Header file */
class _MYCLASS_ : public ResourceUsage
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_RESOURCEUSAGE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define ResourceUsage_T PRUint32
#define ResourceUsage_Null ResourceUsage::Null
#define ResourceUsage_Permanent ResourceUsage::Permanent
#define ResourceUsage_Temporary ResourceUsage::Temporary
#define ResourceUsage_All ResourceUsage::All

/* starting interface:    StorageBus */
#define STORAGEBUS_IID_STR "715984a5-093c-43bb-aa42-a16ed16828dd"

#define STORAGEBUS_IID \
  {0x715984a5, 0x093c, 0x43bb, \
    { 0xaa, 0x42, 0xa1, 0x6e, 0xd1, 0x68, 0x28, 0xdd }}

class NS_NO_VTABLE StorageBus {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(STORAGEBUS_IID)

  enum { Null = 0U };

  enum { IDE = 1U };

  enum { SATA = 2U };

};

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

/* 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:    GuestStatisticType */
#define GUESTSTATISTICTYPE_IID_STR "aa7c1d71-aafe-47a8-9608-27d2d337cf55"

#define GUESTSTATISTICTYPE_IID \
  {0xaa7c1d71, 0xaafe, 0x47a8, \
    { 0x96, 0x08, 0x27, 0xd2, 0xd3, 0x37, 0xcf, 0x55 }}

class NS_NO_VTABLE GuestStatisticType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(GUESTSTATISTICTYPE_IID)

  enum { CPULoad_Idle = 0U };

  enum { CPULoad_Kernel = 1U };

  enum { CPULoad_User = 2U };

  enum { Threads = 3U };

  enum { Processes = 4U };

  enum { Handles = 5U };

  enum { MemoryLoad = 6U };

  enum { PhysMemTotal = 7U };

  enum { PhysMemAvailable = 8U };

  enum { PhysMemBalloon = 9U };

  enum { MemCommitTotal = 10U };

  enum { MemKernelTotal = 11U };

  enum { MemKernelPaged = 12U };

  enum { MemKernelNonpaged = 13U };

  enum { MemSystemCache = 14U };

  enum { PageFileSize = 15U };

  enum { SampleNumber = 16U };

  enum { MaxVal = 17U };

};

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

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

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

/* Header file */
class _MYCLASS_ : public GuestStatisticType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_GUESTSTATISTICTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define GuestStatisticType_T PRUint32
#define GuestStatisticType_CPULoad_Idle GuestStatisticType::CPULoad_Idle
#define GuestStatisticType_CPULoad_Kernel GuestStatisticType::CPULoad_Kernel
#define GuestStatisticType_CPULoad_User GuestStatisticType::CPULoad_User
#define GuestStatisticType_Threads GuestStatisticType::Threads
#define GuestStatisticType_Processes GuestStatisticType::Processes
#define GuestStatisticType_Handles GuestStatisticType::Handles
#define GuestStatisticType_MemoryLoad GuestStatisticType::MemoryLoad
#define GuestStatisticType_PhysMemTotal GuestStatisticType::PhysMemTotal
#define GuestStatisticType_PhysMemAvailable GuestStatisticType::PhysMemAvailable
#define GuestStatisticType_PhysMemBalloon GuestStatisticType::PhysMemBalloon
#define GuestStatisticType_MemCommitTotal GuestStatisticType::MemCommitTotal
#define GuestStatisticType_MemKernelTotal GuestStatisticType::MemKernelTotal
#define GuestStatisticType_MemKernelPaged GuestStatisticType::MemKernelPaged
#define GuestStatisticType_MemKernelNonpaged GuestStatisticType::MemKernelNonpaged
#define GuestStatisticType_MemSystemCache GuestStatisticType::MemSystemCache
#define GuestStatisticType_PageFileSize GuestStatisticType::PageFileSize
#define GuestStatisticType_SampleNumber GuestStatisticType::SampleNumber
#define GuestStatisticType_MaxVal GuestStatisticType::MaxVal

/* 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:    IDEControllerType */
#define IDECONTROLLERTYPE_IID_STR "445330e3-202a-4dab-854f-ce22e6cb9715"

#define IDECONTROLLERTYPE_IID \
  {0x445330e3, 0x202a, 0x4dab, \
    { 0x85, 0x4f, 0xce, 0x22, 0xe6, 0xcb, 0x97, 0x15 }}

class NS_NO_VTABLE IDEControllerType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IDECONTROLLERTYPE_IID)

  enum { Null = 0U };

  enum { PIIX3 = 1U };

  enum { PIIX4 = 2U };

};

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

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

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

/* Header file */
class _MYCLASS_ : public IDEControllerType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IDECONTROLLERTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define IDEControllerType_T PRUint32
#define IDEControllerType_Null IDEControllerType::Null
#define IDEControllerType_PIIX3 IDEControllerType::PIIX3
#define IDEControllerType_PIIX4 IDEControllerType::PIIX4

/* starting interface:    DriveState */
#define DRIVESTATE_IID_STR "cb7233b7-c519-42a5-8310-1830953cacbc"

#define DRIVESTATE_IID \
  {0xcb7233b7, 0xc519, 0x42a5, \
    { 0x83, 0x10, 0x18, 0x30, 0x95, 0x3c, 0xac, 0xbc }}

class NS_NO_VTABLE DriveState {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(DRIVESTATE_IID)

  enum { Null = 0U };

  enum { NotMounted = 1U };

  enum { ImageMounted = 2U };

  enum { HostDriveCaptured = 3U };

};

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

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

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

/* Header file */
class _MYCLASS_ : public DriveState
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_DRIVESTATE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define DriveState_T PRUint32
#define DriveState_Null DriveState::Null
#define DriveState_NotMounted DriveState::NotMounted
#define DriveState_ImageMounted DriveState::ImageMounted
#define DriveState_HostDriveCaptured DriveState::HostDriveCaptured

/* starting interface:    HardDiskStorageType */
#define HARDDISKSTORAGETYPE_IID_STR "48138584-ad99-479d-a36f-eb82a7663685"

#define HARDDISKSTORAGETYPE_IID \
  {0x48138584, 0xad99, 0x479d, \
    { 0xa3, 0x6f, 0xeb, 0x82, 0xa7, 0x66, 0x36, 0x85 }}

class NS_NO_VTABLE HardDiskStorageType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(HARDDISKSTORAGETYPE_IID)

  enum { VirtualDiskImage = 0U };

  enum { ISCSIHardDisk = 1U };

  enum { VMDKImage = 2U };

  enum { CustomHardDisk = 3U };

  enum { VHDImage = 4U };

};

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

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

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

/* Header file */
class _MYCLASS_ : public HardDiskStorageType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_HARDDISKSTORAGETYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define HardDiskStorageType_T PRUint32
#define HardDiskStorageType_VirtualDiskImage HardDiskStorageType::VirtualDiskImage
#define HardDiskStorageType_ISCSIHardDisk HardDiskStorageType::ISCSIHardDisk
#define HardDiskStorageType_VMDKImage HardDiskStorageType::VMDKImage
#define HardDiskStorageType_CustomHardDisk HardDiskStorageType::CustomHardDisk
#define HardDiskStorageType_VHDImage HardDiskStorageType::VHDImage

/* starting interface:    HardDiskType */
#define HARDDISKTYPE_IID_STR "a348fafd-a64e-4643-ba65-eb3896bd7e0a"

#define HARDDISKTYPE_IID \
  {0xa348fafd, 0xa64e, 0x4643, \
    { 0xba, 0x65, 0xeb, 0x38, 0x96, 0xbd, 0x7e, 0x0a }}

class NS_NO_VTABLE HardDiskType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(HARDDISKTYPE_IID)

  enum { Normal = 0U };

  enum { Immutable = 1U };

  enum { Writethrough = 2U };

};

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

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

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

/* Header file */
class _MYCLASS_ : public HardDiskType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_HARDDISKTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define HardDiskType_T PRUint32
#define HardDiskType_Normal HardDiskType::Normal
#define HardDiskType_Immutable HardDiskType::Immutable
#define HardDiskType_Writethrough HardDiskType::Writethrough

/* starting interface:    MouseButtonState */
#define MOUSEBUTTONSTATE_IID_STR "03131722-2ec5-4173-9794-0daca46673ef"

#define MOUSEBUTTONSTATE_IID \
  {0x03131722, 0x2ec5, 0x4173, \
    { 0x97, 0x94, 0x0d, 0xac, 0xa4, 0x66, 0x73, 0xef }}

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 { MouseStateMask = 31U };

};

/* 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_MouseStateMask MouseButtonState::MouseStateMask

/* starting interface:    FramebufferAccelerationOperation */
#define FRAMEBUFFERACCELERATIONOPERATION_IID_STR "f0e5ebbe-dc8e-4e2d-916e-53baa3844df8"

#define FRAMEBUFFERACCELERATIONOPERATION_IID \
  {0xf0e5ebbe, 0xdc8e, 0x4e2d, \
    { 0x91, 0x6e, 0x53, 0xba, 0xa3, 0x84, 0x4d, 0xf8 }}

class NS_NO_VTABLE FramebufferAccelerationOperation {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FRAMEBUFFERACCELERATIONOPERATION_IID)

  enum { SolidFillAcceleration = 1U };

  enum { ScreenCopyAcceleration = 2U };

};

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

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

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

/* Header file */
class _MYCLASS_ : public FramebufferAccelerationOperation
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FRAMEBUFFERACCELERATIONOPERATION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define FramebufferAccelerationOperation_T PRUint32
#define FramebufferAccelerationOperation_SolidFillAcceleration FramebufferAccelerationOperation::SolidFillAcceleration
#define FramebufferAccelerationOperation_ScreenCopyAcceleration FramebufferAccelerationOperation::ScreenCopyAcceleration

/* starting interface:    FramebufferPixelFormat */
#define FRAMEBUFFERPIXELFORMAT_IID_STR "6b27d1fc-4f2c-4e9c-a166-01d06540305d"

#define FRAMEBUFFERPIXELFORMAT_IID \
  {0x6b27d1fc, 0x4f2c, 0x4e9c, \
    { 0xa1, 0x66, 0x01, 0xd0, 0x65, 0x40, 0x30, 0x5d }}

class NS_NO_VTABLE FramebufferPixelFormat {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FRAMEBUFFERPIXELFORMAT_IID)

  enum { Opaque = 4294967295U };

  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 "8730d899-d036-4925-bc63-e58f3486f4bf"

#define NETWORKATTACHMENTTYPE_IID \
  {0x8730d899, 0xd036, 0x4925, \
    { 0xbc, 0x63, 0xe5, 0x8f, 0x34, 0x86, 0xf4, 0xbf }}

class NS_NO_VTABLE NetworkAttachmentType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NETWORKATTACHMENTTYPE_IID)

  enum { Null = 0U };

  enum { NAT = 1U };

  enum { HostInterface = 2U };

  enum { Internal = 3U };

};

/* 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_HostInterface NetworkAttachmentType::HostInterface
#define NetworkAttachmentType_Internal NetworkAttachmentType::Internal

/* starting interface:    NetworkAdapterType */
#define NETWORKADAPTERTYPE_IID_STR "156b17b9-5d61-4d54-be90-62e37dda848d"

#define NETWORKADAPTERTYPE_IID \
  {0x156b17b9, 0x5d61, 0x4d54, \
    { 0xbe, 0x90, 0x62, 0xe3, 0x7d, 0xda, 0x84, 0x8d }}

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

};

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

/* starting interface:    PortMode */
#define PORTMODE_IID_STR "b266f43c-2e93-46b3-812b-c20e600e867b"

#define PORTMODE_IID \
  {0xb266f43c, 0x2e93, 0x46b3, \
    { 0x81, 0x2b, 0xc2, 0x0e, 0x60, 0x0e, 0x86, 0x7b }}

class NS_NO_VTABLE PortMode {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(PORTMODE_IID)

  enum { Disconnected = 0U };

  enum { HostPipe = 1U };

  enum { HostDevice = 2U };

};

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

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

};

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

/* starting interface:    VRDPAuthType */
#define VRDPAUTHTYPE_IID_STR "3d91887a-b67f-4b33-85bf-2da7ab1ea83a"

#define VRDPAUTHTYPE_IID \
  {0x3d91887a, 0xb67f, 0x4b33, \
    { 0x85, 0xbf, 0x2d, 0xa7, 0xab, 0x1e, 0xa8, 0x3a }}

class NS_NO_VTABLE VRDPAuthType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(VRDPAUTHTYPE_IID)

  enum { Null = 0U };

  enum { External = 1U };

  enum { Guest = 2U };

};

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

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

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

/* Header file */
class _MYCLASS_ : public VRDPAuthType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_VRDPAUTHTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define VRDPAuthType_T PRUint32
#define VRDPAuthType_Null VRDPAuthType::Null
#define VRDPAuthType_External VRDPAuthType::External
#define VRDPAuthType_Guest VRDPAuthType::Guest

/* starting interface:    IVirtualBoxErrorInfo */
#define IVIRTUALBOXERRORINFO_IID_STR "e98b5376-8eb4-4eea-812a-3964bf3bb26f"

#define IVIRTUALBOXERRORINFO_IID \
  {0xe98b5376, 0x8eb4, 0x4eea, \
    { 0x81, 0x2a, 0x39, 0x64, 0xbf, 0x3b, 0xb2, 0x6f }}

class NS_NO_VTABLE IVirtualBoxErrorInfo : public nsIException {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVIRTUALBOXERRORINFO_IID)

  /* readonly attribute nsresult resultCode; */
  NS_IMETHOD GetResultCode(nsresult *aResultCode) = 0;

  /* readonly attribute nsIDPtr interfaceID; */
  NS_IMETHOD GetInterfaceID(nsID * *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(nsresult *aResultCode); \
  NS_IMETHOD GetInterfaceID(nsID * *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(nsresult *aResultCode) { return _to GetResultCode(aResultCode); } \
  NS_IMETHOD GetInterfaceID(nsID * *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(nsresult *aResultCode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetResultCode(aResultCode); } \
  NS_IMETHOD GetInterfaceID(nsID * *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 nsresult resultCode; */
NS_IMETHODIMP _MYCLASS_::GetResultCode(nsresult *aResultCode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIDPtr interfaceID; */
NS_IMETHODIMP _MYCLASS_::GetInterfaceID(nsID * *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


/* starting interface:    IVirtualBoxCallback */
#define IVIRTUALBOXCALLBACK_IID_STR "ee95ffc2-b6c6-4ce8-9e9e-ceadbb5019fe"

#define IVIRTUALBOXCALLBACK_IID \
  {0xee95ffc2, 0xb6c6, 0x4ce8, \
    { 0x9e, 0x9e, 0xce, 0xad, 0xbb, 0x50, 0x19, 0xfe }}

class NS_NO_VTABLE IVirtualBoxCallback : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVIRTUALBOXCALLBACK_IID)

  /* void onMachineStateChange (in nsIDRef machineId, in PRUint32 state); */
  NS_IMETHOD OnMachineStateChange(const nsID & machineId, PRUint32 state) = 0;

  /* void onMachineDataChange (in nsIDRef machineId); */
  NS_IMETHOD OnMachineDataChange(const nsID & machineId) = 0;

  /* void onExtraDataCanChange (in nsIDRef machineId, in wstring key, in wstring value, out wstring error, [retval] out boolean allowChange); */
  NS_IMETHOD OnExtraDataCanChange(const nsID & machineId, const PRUnichar *key, const PRUnichar *value, PRUnichar **error, PRBool *allowChange) = 0;

  /* void onExtraDataChange (in nsIDRef machineId, in wstring key, in wstring value); */
  NS_IMETHOD OnExtraDataChange(const nsID & machineId, const PRUnichar *key, const PRUnichar *value) = 0;

  /* void onMediaRegistered (in nsIDRef mediaId, in PRUint32 mediaType, in boolean registered); */
  NS_IMETHOD OnMediaRegistered(const nsID & mediaId, PRUint32 mediaType, PRBool registered) = 0;

  /* void onMachineRegistered (in nsIDRef machineId, in boolean registered); */
  NS_IMETHOD OnMachineRegistered(const nsID & machineId, PRBool registered) = 0;

  /* void onSessionStateChange (in nsIDRef machineId, in PRUint32 state); */
  NS_IMETHOD OnSessionStateChange(const nsID & machineId, PRUint32 state) = 0;

  /* void onSnapshotTaken (in nsIDRef machineId, in nsIDRef snapshotId); */
  NS_IMETHOD OnSnapshotTaken(const nsID & machineId, const nsID & snapshotId) = 0;

  /* void onSnapshotDiscarded (in nsIDRef machineId, in nsIDRef snapshotId); */
  NS_IMETHOD OnSnapshotDiscarded(const nsID & machineId, const nsID & snapshotId) = 0;

  /* void onSnapshotChange (in nsIDRef machineId, in nsIDRef snapshotId); */
  NS_IMETHOD OnSnapshotChange(const nsID & machineId, const nsID & snapshotId) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVIRTUALBOXCALLBACK \
  NS_IMETHOD OnMachineStateChange(const nsID & machineId, PRUint32 state); \
  NS_IMETHOD OnMachineDataChange(const nsID & machineId); \
  NS_IMETHOD OnExtraDataCanChange(const nsID & machineId, const PRUnichar *key, const PRUnichar *value, PRUnichar **error, PRBool *allowChange); \
  NS_IMETHOD OnExtraDataChange(const nsID & machineId, const PRUnichar *key, const PRUnichar *value); \
  NS_IMETHOD OnMediaRegistered(const nsID & mediaId, PRUint32 mediaType, PRBool registered); \
  NS_IMETHOD OnMachineRegistered(const nsID & machineId, PRBool registered); \
  NS_IMETHOD OnSessionStateChange(const nsID & machineId, PRUint32 state); \
  NS_IMETHOD OnSnapshotTaken(const nsID & machineId, const nsID & snapshotId); \
  NS_IMETHOD OnSnapshotDiscarded(const nsID & machineId, const nsID & snapshotId); \
  NS_IMETHOD OnSnapshotChange(const nsID & machineId, const nsID & snapshotId); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IVIRTUALBOXCALLBACK(_to) \
  NS_IMETHOD OnMachineStateChange(const nsID & machineId, PRUint32 state) { return _to OnMachineStateChange(machineId, state); } \
  NS_IMETHOD OnMachineDataChange(const nsID & machineId) { return _to OnMachineDataChange(machineId); } \
  NS_IMETHOD OnExtraDataCanChange(const nsID & machineId, const PRUnichar *key, const PRUnichar *value, PRUnichar **error, PRBool *allowChange) { return _to OnExtraDataCanChange(machineId, key, value, error, allowChange); } \
  NS_IMETHOD OnExtraDataChange(const nsID & machineId, const PRUnichar *key, const PRUnichar *value) { return _to OnExtraDataChange(machineId, key, value); } \
  NS_IMETHOD OnMediaRegistered(const nsID & mediaId, PRUint32 mediaType, PRBool registered) { return _to OnMediaRegistered(mediaId, mediaType, registered); } \
  NS_IMETHOD OnMachineRegistered(const nsID & machineId, PRBool registered) { return _to OnMachineRegistered(machineId, registered); } \
  NS_IMETHOD OnSessionStateChange(const nsID & machineId, PRUint32 state) { return _to OnSessionStateChange(machineId, state); } \
  NS_IMETHOD OnSnapshotTaken(const nsID & machineId, const nsID & snapshotId) { return _to OnSnapshotTaken(machineId, snapshotId); } \
  NS_IMETHOD OnSnapshotDiscarded(const nsID & machineId, const nsID & snapshotId) { return _to OnSnapshotDiscarded(machineId, snapshotId); } \
  NS_IMETHOD OnSnapshotChange(const nsID & machineId, const nsID & snapshotId) { return _to OnSnapshotChange(machineId, snapshotId); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IVIRTUALBOXCALLBACK(_to) \
  NS_IMETHOD OnMachineStateChange(const nsID & machineId, PRUint32 state) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnMachineStateChange(machineId, state); } \
  NS_IMETHOD OnMachineDataChange(const nsID & machineId) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnMachineDataChange(machineId); } \
  NS_IMETHOD OnExtraDataCanChange(const nsID & machineId, const PRUnichar *key, const PRUnichar *value, PRUnichar **error, PRBool *allowChange) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnExtraDataCanChange(machineId, key, value, error, allowChange); } \
  NS_IMETHOD OnExtraDataChange(const nsID & machineId, const PRUnichar *key, const PRUnichar *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnExtraDataChange(machineId, key, value); } \
  NS_IMETHOD OnMediaRegistered(const nsID & mediaId, PRUint32 mediaType, PRBool registered) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnMediaRegistered(mediaId, mediaType, registered); } \
  NS_IMETHOD OnMachineRegistered(const nsID & machineId, PRBool registered) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnMachineRegistered(machineId, registered); } \
  NS_IMETHOD OnSessionStateChange(const nsID & machineId, PRUint32 state) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnSessionStateChange(machineId, state); } \
  NS_IMETHOD OnSnapshotTaken(const nsID & machineId, const nsID & snapshotId) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnSnapshotTaken(machineId, snapshotId); } \
  NS_IMETHOD OnSnapshotDiscarded(const nsID & machineId, const nsID & snapshotId) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnSnapshotDiscarded(machineId, snapshotId); } \
  NS_IMETHOD OnSnapshotChange(const nsID & machineId, const nsID & snapshotId) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnSnapshotChange(machineId, snapshotId); } 

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

/* Header file */
class _MYCLASS_ : public IVirtualBoxCallback
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IVIRTUALBOXCALLBACK

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void onMachineStateChange (in nsIDRef machineId, in PRUint32 state); */
NS_IMETHODIMP _MYCLASS_::OnMachineStateChange(const nsID & machineId, PRUint32 state)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onMachineDataChange (in nsIDRef machineId); */
NS_IMETHODIMP _MYCLASS_::OnMachineDataChange(const nsID & machineId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onExtraDataCanChange (in nsIDRef machineId, in wstring key, in wstring value, out wstring error, [retval] out boolean allowChange); */
NS_IMETHODIMP _MYCLASS_::OnExtraDataCanChange(const nsID & machineId, const PRUnichar *key, const PRUnichar *value, PRUnichar **error, PRBool *allowChange)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onExtraDataChange (in nsIDRef machineId, in wstring key, in wstring value); */
NS_IMETHODIMP _MYCLASS_::OnExtraDataChange(const nsID & machineId, const PRUnichar *key, const PRUnichar *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onMediaRegistered (in nsIDRef mediaId, in PRUint32 mediaType, in boolean registered); */
NS_IMETHODIMP _MYCLASS_::OnMediaRegistered(const nsID & mediaId, PRUint32 mediaType, PRBool registered)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onMachineRegistered (in nsIDRef machineId, in boolean registered); */
NS_IMETHODIMP _MYCLASS_::OnMachineRegistered(const nsID & machineId, PRBool registered)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onSessionStateChange (in nsIDRef machineId, in PRUint32 state); */
NS_IMETHODIMP _MYCLASS_::OnSessionStateChange(const nsID & machineId, PRUint32 state)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onSnapshotTaken (in nsIDRef machineId, in nsIDRef snapshotId); */
NS_IMETHODIMP _MYCLASS_::OnSnapshotTaken(const nsID & machineId, const nsID & snapshotId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onSnapshotDiscarded (in nsIDRef machineId, in nsIDRef snapshotId); */
NS_IMETHODIMP _MYCLASS_::OnSnapshotDiscarded(const nsID & machineId, const nsID & snapshotId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onSnapshotChange (in nsIDRef machineId, in nsIDRef snapshotId); */
NS_IMETHODIMP _MYCLASS_::OnSnapshotChange(const nsID & machineId, const nsID & snapshotId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IVirtualBox */
#define IVIRTUALBOX_IID_STR "2d3b9ea7-25f5-4f07-a8e1-7dd7e0dcf667"

#define IVIRTUALBOX_IID \
  {0x2d3b9ea7, 0x25f5, 0x4f07, \
    { 0xa8, 0xe1, 0x7d, 0xd7, 0xe0, 0xdc, 0xf6, 0x67 }}

class NS_NO_VTABLE IVirtualBox : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVIRTUALBOX_IID)

  /* readonly attribute wstring version; */
  NS_IMETHOD GetVersion(PRUnichar * *aVersion) = 0;

  /* readonly attribute wstring homeFolder; */
  NS_IMETHOD GetHomeFolder(PRUnichar * *aHomeFolder) = 0;

  /* readonly attribute wstring settingsFilePath; */
  NS_IMETHOD GetSettingsFilePath(PRUnichar * *aSettingsFilePath) = 0;

  /* readonly attribute wstring settingsFileVersion; */
  NS_IMETHOD GetSettingsFileVersion(PRUnichar * *aSettingsFileVersion) = 0;

  /* readonly attribute wstring settingsFormatVersion; */
  NS_IMETHOD GetSettingsFormatVersion(PRUnichar * *aSettingsFormatVersion) = 0;

  /* readonly attribute IHost host; */
  NS_IMETHOD GetHost(IHost * *aHost) = 0;

  /* readonly attribute ISystemProperties systemProperties; */
  NS_IMETHOD GetSystemProperties(ISystemProperties * *aSystemProperties) = 0;

  /* readonly attribute IMachineCollection machines; */
  NS_IMETHOD GetMachines(IMachineCollection * *aMachines) = 0;

  /* void getMachines2 (out unsigned long machines2Size, [array, size_is (machines2Size), retval] out IMachine machines2); */
  NS_IMETHOD GetMachines2(PRUint32 *machines2Size, IMachine ***machines2) = 0;

  /* readonly attribute IHardDiskCollection hardDisks; */
  NS_IMETHOD GetHardDisks(IHardDiskCollection * *aHardDisks) = 0;

  /* readonly attribute IDVDImageCollection DVDImages; */
  NS_IMETHOD GetDVDImages(IDVDImageCollection * *aDVDImages) = 0;

  /* readonly attribute IFloppyImageCollection FloppyImages; */
  NS_IMETHOD GetFloppyImages(IFloppyImageCollection * *aFloppyImages) = 0;

  /* readonly attribute IProgressCollection progressOperations; */
  NS_IMETHOD GetProgressOperations(IProgressCollection * *aProgressOperations) = 0;

  /* readonly attribute IGuestOSTypeCollection guestOSTypes; */
  NS_IMETHOD GetGuestOSTypes(IGuestOSTypeCollection * *aGuestOSTypes) = 0;

  /* readonly attribute ISharedFolderCollection sharedFolders; */
  NS_IMETHOD GetSharedFolders(ISharedFolderCollection * *aSharedFolders) = 0;

  /* void createMachine (in wstring baseFolder, in wstring name, in nsIDRef id, [retval] out IMachine machine); */
  NS_IMETHOD CreateMachine(const PRUnichar *baseFolder, const PRUnichar *name, const nsID & id, IMachine **machine) = 0;

  /* void createLegacyMachine (in wstring settingsFile, in wstring name, in nsIDRef id, [retval] out IMachine machine); */
  NS_IMETHOD CreateLegacyMachine(const PRUnichar *settingsFile, const PRUnichar *name, const nsID & id, 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 getMachine (in nsIDRef id, [retval] out IMachine machine); */
  NS_IMETHOD GetMachine(const nsID & id, IMachine **machine) = 0;

  /* void findMachine (in wstring name, [retval] out IMachine machine); */
  NS_IMETHOD FindMachine(const PRUnichar *name, IMachine **machine) = 0;

  /* void unregisterMachine (in nsIDRef id, [retval] out IMachine machine); */
  NS_IMETHOD UnregisterMachine(const nsID & id, IMachine **machine) = 0;

  /* void createHardDisk (in PRUint32 storageType, [retval] out IHardDisk hardDisk); */
  NS_IMETHOD CreateHardDisk(PRUint32 storageType, IHardDisk **hardDisk) = 0;

  /* void openHardDisk (in wstring location, [retval] out IHardDisk hardDisk); */
  NS_IMETHOD OpenHardDisk(const PRUnichar *location, IHardDisk **hardDisk) = 0;

  /* void openVirtualDiskImage (in wstring filePath, [retval] out IVirtualDiskImage image); */
  NS_IMETHOD OpenVirtualDiskImage(const PRUnichar *filePath, IVirtualDiskImage **image) = 0;

  /* void registerHardDisk (in IHardDisk hardDisk); */
  NS_IMETHOD RegisterHardDisk(IHardDisk *hardDisk) = 0;

  /* void getHardDisk (in nsIDRef id, [retval] out IHardDisk hardDisk); */
  NS_IMETHOD GetHardDisk(const nsID & id, IHardDisk **hardDisk) = 0;

  /* void findHardDisk (in wstring location, [retval] out IHardDisk hardDisk); */
  NS_IMETHOD FindHardDisk(const PRUnichar *location, IHardDisk **hardDisk) = 0;

  /* void findVirtualDiskImage (in wstring filePath, [retval] out IVirtualDiskImage image); */
  NS_IMETHOD FindVirtualDiskImage(const PRUnichar *filePath, IVirtualDiskImage **image) = 0;

  /* void unregisterHardDisk (in nsIDRef id, [retval] out IHardDisk hardDisk); */
  NS_IMETHOD UnregisterHardDisk(const nsID & id, IHardDisk **hardDisk) = 0;

  /* void openDVDImage (in wstring filePath, in nsIDRef id, [retval] out IDVDImage image); */
  NS_IMETHOD OpenDVDImage(const PRUnichar *filePath, const nsID & id, IDVDImage **image) = 0;

  /* void registerDVDImage (in IDVDImage image); */
  NS_IMETHOD RegisterDVDImage(IDVDImage *image) = 0;

  /* void getDVDImage (in nsIDRef id, [retval] out IDVDImage image); */
  NS_IMETHOD GetDVDImage(const nsID & id, IDVDImage **image) = 0;

  /* void findDVDImage (in wstring filePath, [retval] out IDVDImage image); */
  NS_IMETHOD FindDVDImage(const PRUnichar *filePath, IDVDImage **image) = 0;

  /* void getDVDImageUsage (in nsIDRef id, in PRUint32 usage, [retval] out wstring machineIDs); */
  NS_IMETHOD GetDVDImageUsage(const nsID & id, PRUint32 usage, PRUnichar **machineIDs) = 0;

  /* void unregisterDVDImage (in nsIDRef id, [retval] out IDVDImage image); */
  NS_IMETHOD UnregisterDVDImage(const nsID & id, IDVDImage **image) = 0;

  /* void openFloppyImage (in wstring filePath, in nsIDRef id, [retval] out IFloppyImage image); */
  NS_IMETHOD OpenFloppyImage(const PRUnichar *filePath, const nsID & id, IFloppyImage **image) = 0;

  /* void registerFloppyImage (in IFloppyImage image); */
  NS_IMETHOD RegisterFloppyImage(IFloppyImage *image) = 0;

  /* void getFloppyImage (in nsIDRef id, [retval] out IFloppyImage image); */
  NS_IMETHOD GetFloppyImage(const nsID & id, IFloppyImage **image) = 0;

  /* void findFloppyImage (in wstring filePath, [retval] out IFloppyImage image); */
  NS_IMETHOD FindFloppyImage(const PRUnichar *filePath, IFloppyImage **image) = 0;

  /* void getFloppyImageUsage (in nsIDRef id, in PRUint32 usage, [retval] out wstring machineIDs); */
  NS_IMETHOD GetFloppyImageUsage(const nsID & id, PRUint32 usage, PRUnichar **machineIDs) = 0;

  /* void unregisterFloppyImage (in nsIDRef id, [retval] out IFloppyImage image); */
  NS_IMETHOD UnregisterFloppyImage(const nsID & id, IFloppyImage **image) = 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); */
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable) = 0;

  /* void removeSharedFolder (in wstring name); */
  NS_IMETHOD RemoveSharedFolder(const PRUnichar *name) = 0;

  /* void getNextExtraDataKey (in wstring key, out wstring nextKey, out wstring nextValue); */
  NS_IMETHOD GetNextExtraDataKey(const PRUnichar *key, PRUnichar **nextKey, PRUnichar **nextValue) = 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 openSession (in ISession session, in nsIDRef machineId); */
  NS_IMETHOD OpenSession(ISession *session, const nsID & machineId) = 0;

  /* void openRemoteSession (in ISession session, in nsIDRef machineId, in wstring type, in wstring environment, [retval] out IProgress progress); */
  NS_IMETHOD OpenRemoteSession(ISession *session, const nsID & machineId, const PRUnichar *type, const PRUnichar *environment, IProgress **progress) = 0;

  /* void openExistingSession (in ISession session, in nsIDRef machineId); */
  NS_IMETHOD OpenExistingSession(ISession *session, const nsID & machineId) = 0;

  /* void registerCallback (in IVirtualBoxCallback callback); */
  NS_IMETHOD RegisterCallback(IVirtualBoxCallback *callback) = 0;

  /* void unregisterCallback (in IVirtualBoxCallback callback); */
  NS_IMETHOD UnregisterCallback(IVirtualBoxCallback *callback) = 0;

  /* void waitForPropertyChange (in wstring what, in unsigned long timeout, out wstring changed, out wstring values); */
  NS_IMETHOD WaitForPropertyChange(const PRUnichar *what, PRUint32 timeout, PRUnichar **changed, PRUnichar **values) = 0;

  /* void saveSettings (); */
  NS_IMETHOD SaveSettings(void) = 0;

  /* void saveSettingsWithBackup ([retval] out wstring bakFileName); */
  NS_IMETHOD SaveSettingsWithBackup(PRUnichar **bakFileName) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVIRTUALBOX \
  NS_IMETHOD GetVersion(PRUnichar * *aVersion); \
  NS_IMETHOD GetHomeFolder(PRUnichar * *aHomeFolder); \
  NS_IMETHOD GetSettingsFilePath(PRUnichar * *aSettingsFilePath); \
  NS_IMETHOD GetSettingsFileVersion(PRUnichar * *aSettingsFileVersion); \
  NS_IMETHOD GetSettingsFormatVersion(PRUnichar * *aSettingsFormatVersion); \
  NS_IMETHOD GetHost(IHost * *aHost); \
  NS_IMETHOD GetSystemProperties(ISystemProperties * *aSystemProperties); \
  NS_IMETHOD GetMachines(IMachineCollection * *aMachines); \
  NS_IMETHOD GetMachines2(PRUint32 *machines2Size, IMachine ***machines2); \
  NS_IMETHOD GetHardDisks(IHardDiskCollection * *aHardDisks); \
  NS_IMETHOD GetDVDImages(IDVDImageCollection * *aDVDImages); \
  NS_IMETHOD GetFloppyImages(IFloppyImageCollection * *aFloppyImages); \
  NS_IMETHOD GetProgressOperations(IProgressCollection * *aProgressOperations); \
  NS_IMETHOD GetGuestOSTypes(IGuestOSTypeCollection * *aGuestOSTypes); \
  NS_IMETHOD GetSharedFolders(ISharedFolderCollection * *aSharedFolders); \
  NS_IMETHOD CreateMachine(const PRUnichar *baseFolder, const PRUnichar *name, const nsID & id, IMachine **machine); \
  NS_IMETHOD CreateLegacyMachine(const PRUnichar *settingsFile, const PRUnichar *name, const nsID & id, IMachine **machine); \
  NS_IMETHOD OpenMachine(const PRUnichar *settingsFile, IMachine **machine); \
  NS_IMETHOD RegisterMachine(IMachine *machine); \
  NS_IMETHOD GetMachine(const nsID & id, IMachine **machine); \
  NS_IMETHOD FindMachine(const PRUnichar *name, IMachine **machine); \
  NS_IMETHOD UnregisterMachine(const nsID & id, IMachine **machine); \
  NS_IMETHOD CreateHardDisk(PRUint32 storageType, IHardDisk **hardDisk); \
  NS_IMETHOD OpenHardDisk(const PRUnichar *location, IHardDisk **hardDisk); \
  NS_IMETHOD OpenVirtualDiskImage(const PRUnichar *filePath, IVirtualDiskImage **image); \
  NS_IMETHOD RegisterHardDisk(IHardDisk *hardDisk); \
  NS_IMETHOD GetHardDisk(const nsID & id, IHardDisk **hardDisk); \
  NS_IMETHOD FindHardDisk(const PRUnichar *location, IHardDisk **hardDisk); \
  NS_IMETHOD FindVirtualDiskImage(const PRUnichar *filePath, IVirtualDiskImage **image); \
  NS_IMETHOD UnregisterHardDisk(const nsID & id, IHardDisk **hardDisk); \
  NS_IMETHOD OpenDVDImage(const PRUnichar *filePath, const nsID & id, IDVDImage **image); \
  NS_IMETHOD RegisterDVDImage(IDVDImage *image); \
  NS_IMETHOD GetDVDImage(const nsID & id, IDVDImage **image); \
  NS_IMETHOD FindDVDImage(const PRUnichar *filePath, IDVDImage **image); \
  NS_IMETHOD GetDVDImageUsage(const nsID & id, PRUint32 usage, PRUnichar **machineIDs); \
  NS_IMETHOD UnregisterDVDImage(const nsID & id, IDVDImage **image); \
  NS_IMETHOD OpenFloppyImage(const PRUnichar *filePath, const nsID & id, IFloppyImage **image); \
  NS_IMETHOD RegisterFloppyImage(IFloppyImage *image); \
  NS_IMETHOD GetFloppyImage(const nsID & id, IFloppyImage **image); \
  NS_IMETHOD FindFloppyImage(const PRUnichar *filePath, IFloppyImage **image); \
  NS_IMETHOD GetFloppyImageUsage(const nsID & id, PRUint32 usage, PRUnichar **machineIDs); \
  NS_IMETHOD UnregisterFloppyImage(const nsID & id, IFloppyImage **image); \
  NS_IMETHOD GetGuestOSType(const PRUnichar *id, IGuestOSType **type); \
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable); \
  NS_IMETHOD RemoveSharedFolder(const PRUnichar *name); \
  NS_IMETHOD GetNextExtraDataKey(const PRUnichar *key, PRUnichar **nextKey, PRUnichar **nextValue); \
  NS_IMETHOD GetExtraData(const PRUnichar *key, PRUnichar **value); \
  NS_IMETHOD SetExtraData(const PRUnichar *key, const PRUnichar *value); \
  NS_IMETHOD OpenSession(ISession *session, const nsID & machineId); \
  NS_IMETHOD OpenRemoteSession(ISession *session, const nsID & machineId, const PRUnichar *type, const PRUnichar *environment, IProgress **progress); \
  NS_IMETHOD OpenExistingSession(ISession *session, const nsID & machineId); \
  NS_IMETHOD RegisterCallback(IVirtualBoxCallback *callback); \
  NS_IMETHOD UnregisterCallback(IVirtualBoxCallback *callback); \
  NS_IMETHOD WaitForPropertyChange(const PRUnichar *what, PRUint32 timeout, PRUnichar **changed, PRUnichar **values); \
  NS_IMETHOD SaveSettings(void); \
  NS_IMETHOD SaveSettingsWithBackup(PRUnichar **bakFileName); 

/* 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 GetHomeFolder(PRUnichar * *aHomeFolder) { return _to GetHomeFolder(aHomeFolder); } \
  NS_IMETHOD GetSettingsFilePath(PRUnichar * *aSettingsFilePath) { return _to GetSettingsFilePath(aSettingsFilePath); } \
  NS_IMETHOD GetSettingsFileVersion(PRUnichar * *aSettingsFileVersion) { return _to GetSettingsFileVersion(aSettingsFileVersion); } \
  NS_IMETHOD GetSettingsFormatVersion(PRUnichar * *aSettingsFormatVersion) { return _to GetSettingsFormatVersion(aSettingsFormatVersion); } \
  NS_IMETHOD GetHost(IHost * *aHost) { return _to GetHost(aHost); } \
  NS_IMETHOD GetSystemProperties(ISystemProperties * *aSystemProperties) { return _to GetSystemProperties(aSystemProperties); } \
  NS_IMETHOD GetMachines(IMachineCollection * *aMachines) { return _to GetMachines(aMachines); } \
  NS_IMETHOD GetMachines2(PRUint32 *machines2Size, IMachine ***machines2) { return _to GetMachines2(machines2Size, machines2); } \
  NS_IMETHOD GetHardDisks(IHardDiskCollection * *aHardDisks) { return _to GetHardDisks(aHardDisks); } \
  NS_IMETHOD GetDVDImages(IDVDImageCollection * *aDVDImages) { return _to GetDVDImages(aDVDImages); } \
  NS_IMETHOD GetFloppyImages(IFloppyImageCollection * *aFloppyImages) { return _to GetFloppyImages(aFloppyImages); } \
  NS_IMETHOD GetProgressOperations(IProgressCollection * *aProgressOperations) { return _to GetProgressOperations(aProgressOperations); } \
  NS_IMETHOD GetGuestOSTypes(IGuestOSTypeCollection * *aGuestOSTypes) { return _to GetGuestOSTypes(aGuestOSTypes); } \
  NS_IMETHOD GetSharedFolders(ISharedFolderCollection * *aSharedFolders) { return _to GetSharedFolders(aSharedFolders); } \
  NS_IMETHOD CreateMachine(const PRUnichar *baseFolder, const PRUnichar *name, const nsID & id, IMachine **machine) { return _to CreateMachine(baseFolder, name, id, machine); } \
  NS_IMETHOD CreateLegacyMachine(const PRUnichar *settingsFile, const PRUnichar *name, const nsID & id, IMachine **machine) { return _to CreateLegacyMachine(settingsFile, name, id, 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 GetMachine(const nsID & id, IMachine **machine) { return _to GetMachine(id, machine); } \
  NS_IMETHOD FindMachine(const PRUnichar *name, IMachine **machine) { return _to FindMachine(name, machine); } \
  NS_IMETHOD UnregisterMachine(const nsID & id, IMachine **machine) { return _to UnregisterMachine(id, machine); } \
  NS_IMETHOD CreateHardDisk(PRUint32 storageType, IHardDisk **hardDisk) { return _to CreateHardDisk(storageType, hardDisk); } \
  NS_IMETHOD OpenHardDisk(const PRUnichar *location, IHardDisk **hardDisk) { return _to OpenHardDisk(location, hardDisk); } \
  NS_IMETHOD OpenVirtualDiskImage(const PRUnichar *filePath, IVirtualDiskImage **image) { return _to OpenVirtualDiskImage(filePath, image); } \
  NS_IMETHOD RegisterHardDisk(IHardDisk *hardDisk) { return _to RegisterHardDisk(hardDisk); } \
  NS_IMETHOD GetHardDisk(const nsID & id, IHardDisk **hardDisk) { return _to GetHardDisk(id, hardDisk); } \
  NS_IMETHOD FindHardDisk(const PRUnichar *location, IHardDisk **hardDisk) { return _to FindHardDisk(location, hardDisk); } \
  NS_IMETHOD FindVirtualDiskImage(const PRUnichar *filePath, IVirtualDiskImage **image) { return _to FindVirtualDiskImage(filePath, image); } \
  NS_IMETHOD UnregisterHardDisk(const nsID & id, IHardDisk **hardDisk) { return _to UnregisterHardDisk(id, hardDisk); } \
  NS_IMETHOD OpenDVDImage(const PRUnichar *filePath, const nsID & id, IDVDImage **image) { return _to OpenDVDImage(filePath, id, image); } \
  NS_IMETHOD RegisterDVDImage(IDVDImage *image) { return _to RegisterDVDImage(image); } \
  NS_IMETHOD GetDVDImage(const nsID & id, IDVDImage **image) { return _to GetDVDImage(id, image); } \
  NS_IMETHOD FindDVDImage(const PRUnichar *filePath, IDVDImage **image) { return _to FindDVDImage(filePath, image); } \
  NS_IMETHOD GetDVDImageUsage(const nsID & id, PRUint32 usage, PRUnichar **machineIDs) { return _to GetDVDImageUsage(id, usage, machineIDs); } \
  NS_IMETHOD UnregisterDVDImage(const nsID & id, IDVDImage **image) { return _to UnregisterDVDImage(id, image); } \
  NS_IMETHOD OpenFloppyImage(const PRUnichar *filePath, const nsID & id, IFloppyImage **image) { return _to OpenFloppyImage(filePath, id, image); } \
  NS_IMETHOD RegisterFloppyImage(IFloppyImage *image) { return _to RegisterFloppyImage(image); } \
  NS_IMETHOD GetFloppyImage(const nsID & id, IFloppyImage **image) { return _to GetFloppyImage(id, image); } \
  NS_IMETHOD FindFloppyImage(const PRUnichar *filePath, IFloppyImage **image) { return _to FindFloppyImage(filePath, image); } \
  NS_IMETHOD GetFloppyImageUsage(const nsID & id, PRUint32 usage, PRUnichar **machineIDs) { return _to GetFloppyImageUsage(id, usage, machineIDs); } \
  NS_IMETHOD UnregisterFloppyImage(const nsID & id, IFloppyImage **image) { return _to UnregisterFloppyImage(id, image); } \
  NS_IMETHOD GetGuestOSType(const PRUnichar *id, IGuestOSType **type) { return _to GetGuestOSType(id, type); } \
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable) { return _to CreateSharedFolder(name, hostPath, writable); } \
  NS_IMETHOD RemoveSharedFolder(const PRUnichar *name) { return _to RemoveSharedFolder(name); } \
  NS_IMETHOD GetNextExtraDataKey(const PRUnichar *key, PRUnichar **nextKey, PRUnichar **nextValue) { return _to GetNextExtraDataKey(key, nextKey, nextValue); } \
  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 OpenSession(ISession *session, const nsID & machineId) { return _to OpenSession(session, machineId); } \
  NS_IMETHOD OpenRemoteSession(ISession *session, const nsID & machineId, const PRUnichar *type, const PRUnichar *environment, IProgress **progress) { return _to OpenRemoteSession(session, machineId, type, environment, progress); } \
  NS_IMETHOD OpenExistingSession(ISession *session, const nsID & machineId) { return _to OpenExistingSession(session, machineId); } \
  NS_IMETHOD RegisterCallback(IVirtualBoxCallback *callback) { return _to RegisterCallback(callback); } \
  NS_IMETHOD UnregisterCallback(IVirtualBoxCallback *callback) { return _to UnregisterCallback(callback); } \
  NS_IMETHOD WaitForPropertyChange(const PRUnichar *what, PRUint32 timeout, PRUnichar **changed, PRUnichar **values) { return _to WaitForPropertyChange(what, timeout, changed, values); } \
  NS_IMETHOD SaveSettings(void) { return _to SaveSettings(); } \
  NS_IMETHOD SaveSettingsWithBackup(PRUnichar **bakFileName) { return _to SaveSettingsWithBackup(bakFileName); } 

/* 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 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 GetSettingsFileVersion(PRUnichar * *aSettingsFileVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSettingsFileVersion(aSettingsFileVersion); } \
  NS_IMETHOD GetSettingsFormatVersion(PRUnichar * *aSettingsFormatVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSettingsFormatVersion(aSettingsFormatVersion); } \
  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(IMachineCollection * *aMachines) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMachines(aMachines); } \
  NS_IMETHOD GetMachines2(PRUint32 *machines2Size, IMachine ***machines2) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMachines2(machines2Size, machines2); } \
  NS_IMETHOD GetHardDisks(IHardDiskCollection * *aHardDisks) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHardDisks(aHardDisks); } \
  NS_IMETHOD GetDVDImages(IDVDImageCollection * *aDVDImages) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDVDImages(aDVDImages); } \
  NS_IMETHOD GetFloppyImages(IFloppyImageCollection * *aFloppyImages) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFloppyImages(aFloppyImages); } \
  NS_IMETHOD GetProgressOperations(IProgressCollection * *aProgressOperations) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProgressOperations(aProgressOperations); } \
  NS_IMETHOD GetGuestOSTypes(IGuestOSTypeCollection * *aGuestOSTypes) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGuestOSTypes(aGuestOSTypes); } \
  NS_IMETHOD GetSharedFolders(ISharedFolderCollection * *aSharedFolders) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSharedFolders(aSharedFolders); } \
  NS_IMETHOD CreateMachine(const PRUnichar *baseFolder, const PRUnichar *name, const nsID & id, IMachine **machine) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateMachine(baseFolder, name, id, machine); } \
  NS_IMETHOD CreateLegacyMachine(const PRUnichar *settingsFile, const PRUnichar *name, const nsID & id, IMachine **machine) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateLegacyMachine(settingsFile, name, id, 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 GetMachine(const nsID & id, IMachine **machine) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMachine(id, machine); } \
  NS_IMETHOD FindMachine(const PRUnichar *name, IMachine **machine) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindMachine(name, machine); } \
  NS_IMETHOD UnregisterMachine(const nsID & id, IMachine **machine) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnregisterMachine(id, machine); } \
  NS_IMETHOD CreateHardDisk(PRUint32 storageType, IHardDisk **hardDisk) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateHardDisk(storageType, hardDisk); } \
  NS_IMETHOD OpenHardDisk(const PRUnichar *location, IHardDisk **hardDisk) { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenHardDisk(location, hardDisk); } \
  NS_IMETHOD OpenVirtualDiskImage(const PRUnichar *filePath, IVirtualDiskImage **image) { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenVirtualDiskImage(filePath, image); } \
  NS_IMETHOD RegisterHardDisk(IHardDisk *hardDisk) { return !_to ? NS_ERROR_NULL_POINTER : _to->RegisterHardDisk(hardDisk); } \
  NS_IMETHOD GetHardDisk(const nsID & id, IHardDisk **hardDisk) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHardDisk(id, hardDisk); } \
  NS_IMETHOD FindHardDisk(const PRUnichar *location, IHardDisk **hardDisk) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindHardDisk(location, hardDisk); } \
  NS_IMETHOD FindVirtualDiskImage(const PRUnichar *filePath, IVirtualDiskImage **image) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindVirtualDiskImage(filePath, image); } \
  NS_IMETHOD UnregisterHardDisk(const nsID & id, IHardDisk **hardDisk) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnregisterHardDisk(id, hardDisk); } \
  NS_IMETHOD OpenDVDImage(const PRUnichar *filePath, const nsID & id, IDVDImage **image) { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenDVDImage(filePath, id, image); } \
  NS_IMETHOD RegisterDVDImage(IDVDImage *image) { return !_to ? NS_ERROR_NULL_POINTER : _to->RegisterDVDImage(image); } \
  NS_IMETHOD GetDVDImage(const nsID & id, IDVDImage **image) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDVDImage(id, image); } \
  NS_IMETHOD FindDVDImage(const PRUnichar *filePath, IDVDImage **image) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindDVDImage(filePath, image); } \
  NS_IMETHOD GetDVDImageUsage(const nsID & id, PRUint32 usage, PRUnichar **machineIDs) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDVDImageUsage(id, usage, machineIDs); } \
  NS_IMETHOD UnregisterDVDImage(const nsID & id, IDVDImage **image) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnregisterDVDImage(id, image); } \
  NS_IMETHOD OpenFloppyImage(const PRUnichar *filePath, const nsID & id, IFloppyImage **image) { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenFloppyImage(filePath, id, image); } \
  NS_IMETHOD RegisterFloppyImage(IFloppyImage *image) { return !_to ? NS_ERROR_NULL_POINTER : _to->RegisterFloppyImage(image); } \
  NS_IMETHOD GetFloppyImage(const nsID & id, IFloppyImage **image) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFloppyImage(id, image); } \
  NS_IMETHOD FindFloppyImage(const PRUnichar *filePath, IFloppyImage **image) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindFloppyImage(filePath, image); } \
  NS_IMETHOD GetFloppyImageUsage(const nsID & id, PRUint32 usage, PRUnichar **machineIDs) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFloppyImageUsage(id, usage, machineIDs); } \
  NS_IMETHOD UnregisterFloppyImage(const nsID & id, IFloppyImage **image) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnregisterFloppyImage(id, image); } \
  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) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateSharedFolder(name, hostPath, writable); } \
  NS_IMETHOD RemoveSharedFolder(const PRUnichar *name) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveSharedFolder(name); } \
  NS_IMETHOD GetNextExtraDataKey(const PRUnichar *key, PRUnichar **nextKey, PRUnichar **nextValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNextExtraDataKey(key, nextKey, nextValue); } \
  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 OpenSession(ISession *session, const nsID & machineId) { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenSession(session, machineId); } \
  NS_IMETHOD OpenRemoteSession(ISession *session, const nsID & machineId, const PRUnichar *type, const PRUnichar *environment, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenRemoteSession(session, machineId, type, environment, progress); } \
  NS_IMETHOD OpenExistingSession(ISession *session, const nsID & machineId) { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenExistingSession(session, machineId); } \
  NS_IMETHOD RegisterCallback(IVirtualBoxCallback *callback) { return !_to ? NS_ERROR_NULL_POINTER : _to->RegisterCallback(callback); } \
  NS_IMETHOD UnregisterCallback(IVirtualBoxCallback *callback) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnregisterCallback(callback); } \
  NS_IMETHOD WaitForPropertyChange(const PRUnichar *what, PRUint32 timeout, PRUnichar **changed, PRUnichar **values) { return !_to ? NS_ERROR_NULL_POINTER : _to->WaitForPropertyChange(what, timeout, changed, values); } \
  NS_IMETHOD SaveSettings(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->SaveSettings(); } \
  NS_IMETHOD SaveSettingsWithBackup(PRUnichar **bakFileName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SaveSettingsWithBackup(bakFileName); } 

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

/* Header file */
class _MYCLASS_ : public IVirtualBox
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IVIRTUALBOX

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute wstring version; */
NS_IMETHODIMP _MYCLASS_::GetVersion(PRUnichar * *aVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring 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 wstring settingsFileVersion; */
NS_IMETHODIMP _MYCLASS_::GetSettingsFileVersion(PRUnichar * *aSettingsFileVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring settingsFormatVersion; */
NS_IMETHODIMP _MYCLASS_::GetSettingsFormatVersion(PRUnichar * *aSettingsFormatVersion)
{
    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;
}

/* readonly attribute IMachineCollection machines; */
NS_IMETHODIMP _MYCLASS_::GetMachines(IMachineCollection * *aMachines)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMachines2 (out unsigned long machines2Size, [array, size_is (machines2Size), retval] out IMachine machines2); */
NS_IMETHODIMP _MYCLASS_::GetMachines2(PRUint32 *machines2Size, IMachine ***machines2)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IHardDiskCollection hardDisks; */
NS_IMETHODIMP _MYCLASS_::GetHardDisks(IHardDiskCollection * *aHardDisks)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IDVDImageCollection DVDImages; */
NS_IMETHODIMP _MYCLASS_::GetDVDImages(IDVDImageCollection * *aDVDImages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IFloppyImageCollection FloppyImages; */
NS_IMETHODIMP _MYCLASS_::GetFloppyImages(IFloppyImageCollection * *aFloppyImages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IProgressCollection progressOperations; */
NS_IMETHODIMP _MYCLASS_::GetProgressOperations(IProgressCollection * *aProgressOperations)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IGuestOSTypeCollection guestOSTypes; */
NS_IMETHODIMP _MYCLASS_::GetGuestOSTypes(IGuestOSTypeCollection * *aGuestOSTypes)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute ISharedFolderCollection sharedFolders; */
NS_IMETHODIMP _MYCLASS_::GetSharedFolders(ISharedFolderCollection * *aSharedFolders)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createMachine (in wstring baseFolder, in wstring name, in nsIDRef id, [retval] out IMachine machine); */
NS_IMETHODIMP _MYCLASS_::CreateMachine(const PRUnichar *baseFolder, const PRUnichar *name, const nsID & id, IMachine **machine)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createLegacyMachine (in wstring settingsFile, in wstring name, in nsIDRef id, [retval] out IMachine machine); */
NS_IMETHODIMP _MYCLASS_::CreateLegacyMachine(const PRUnichar *settingsFile, const PRUnichar *name, const nsID & id, 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 getMachine (in nsIDRef id, [retval] out IMachine machine); */
NS_IMETHODIMP _MYCLASS_::GetMachine(const nsID & id, IMachine **machine)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findMachine (in wstring name, [retval] out IMachine machine); */
NS_IMETHODIMP _MYCLASS_::FindMachine(const PRUnichar *name, IMachine **machine)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unregisterMachine (in nsIDRef id, [retval] out IMachine machine); */
NS_IMETHODIMP _MYCLASS_::UnregisterMachine(const nsID & id, IMachine **machine)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createHardDisk (in PRUint32 storageType, [retval] out IHardDisk hardDisk); */
NS_IMETHODIMP _MYCLASS_::CreateHardDisk(PRUint32 storageType, IHardDisk **hardDisk)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void openHardDisk (in wstring location, [retval] out IHardDisk hardDisk); */
NS_IMETHODIMP _MYCLASS_::OpenHardDisk(const PRUnichar *location, IHardDisk **hardDisk)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void openVirtualDiskImage (in wstring filePath, [retval] out IVirtualDiskImage image); */
NS_IMETHODIMP _MYCLASS_::OpenVirtualDiskImage(const PRUnichar *filePath, IVirtualDiskImage **image)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void registerHardDisk (in IHardDisk hardDisk); */
NS_IMETHODIMP _MYCLASS_::RegisterHardDisk(IHardDisk *hardDisk)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getHardDisk (in nsIDRef id, [retval] out IHardDisk hardDisk); */
NS_IMETHODIMP _MYCLASS_::GetHardDisk(const nsID & id, IHardDisk **hardDisk)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findHardDisk (in wstring location, [retval] out IHardDisk hardDisk); */
NS_IMETHODIMP _MYCLASS_::FindHardDisk(const PRUnichar *location, IHardDisk **hardDisk)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findVirtualDiskImage (in wstring filePath, [retval] out IVirtualDiskImage image); */
NS_IMETHODIMP _MYCLASS_::FindVirtualDiskImage(const PRUnichar *filePath, IVirtualDiskImage **image)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unregisterHardDisk (in nsIDRef id, [retval] out IHardDisk hardDisk); */
NS_IMETHODIMP _MYCLASS_::UnregisterHardDisk(const nsID & id, IHardDisk **hardDisk)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void openDVDImage (in wstring filePath, in nsIDRef id, [retval] out IDVDImage image); */
NS_IMETHODIMP _MYCLASS_::OpenDVDImage(const PRUnichar *filePath, const nsID & id, IDVDImage **image)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void registerDVDImage (in IDVDImage image); */
NS_IMETHODIMP _MYCLASS_::RegisterDVDImage(IDVDImage *image)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getDVDImage (in nsIDRef id, [retval] out IDVDImage image); */
NS_IMETHODIMP _MYCLASS_::GetDVDImage(const nsID & id, IDVDImage **image)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findDVDImage (in wstring filePath, [retval] out IDVDImage image); */
NS_IMETHODIMP _MYCLASS_::FindDVDImage(const PRUnichar *filePath, IDVDImage **image)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getDVDImageUsage (in nsIDRef id, in PRUint32 usage, [retval] out wstring machineIDs); */
NS_IMETHODIMP _MYCLASS_::GetDVDImageUsage(const nsID & id, PRUint32 usage, PRUnichar **machineIDs)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unregisterDVDImage (in nsIDRef id, [retval] out IDVDImage image); */
NS_IMETHODIMP _MYCLASS_::UnregisterDVDImage(const nsID & id, IDVDImage **image)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void openFloppyImage (in wstring filePath, in nsIDRef id, [retval] out IFloppyImage image); */
NS_IMETHODIMP _MYCLASS_::OpenFloppyImage(const PRUnichar *filePath, const nsID & id, IFloppyImage **image)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void registerFloppyImage (in IFloppyImage image); */
NS_IMETHODIMP _MYCLASS_::RegisterFloppyImage(IFloppyImage *image)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getFloppyImage (in nsIDRef id, [retval] out IFloppyImage image); */
NS_IMETHODIMP _MYCLASS_::GetFloppyImage(const nsID & id, IFloppyImage **image)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findFloppyImage (in wstring filePath, [retval] out IFloppyImage image); */
NS_IMETHODIMP _MYCLASS_::FindFloppyImage(const PRUnichar *filePath, IFloppyImage **image)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getFloppyImageUsage (in nsIDRef id, in PRUint32 usage, [retval] out wstring machineIDs); */
NS_IMETHODIMP _MYCLASS_::GetFloppyImageUsage(const nsID & id, PRUint32 usage, PRUnichar **machineIDs)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unregisterFloppyImage (in nsIDRef id, [retval] out IFloppyImage image); */
NS_IMETHODIMP _MYCLASS_::UnregisterFloppyImage(const nsID & id, IFloppyImage **image)
{
    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); */
NS_IMETHODIMP _MYCLASS_::CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeSharedFolder (in wstring name); */
NS_IMETHODIMP _MYCLASS_::RemoveSharedFolder(const PRUnichar *name)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNextExtraDataKey (in wstring key, out wstring nextKey, out wstring nextValue); */
NS_IMETHODIMP _MYCLASS_::GetNextExtraDataKey(const PRUnichar *key, PRUnichar **nextKey, PRUnichar **nextValue)
{
    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 openSession (in ISession session, in nsIDRef machineId); */
NS_IMETHODIMP _MYCLASS_::OpenSession(ISession *session, const nsID & machineId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void openRemoteSession (in ISession session, in nsIDRef machineId, in wstring type, in wstring environment, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::OpenRemoteSession(ISession *session, const nsID & machineId, const PRUnichar *type, const PRUnichar *environment, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void openExistingSession (in ISession session, in nsIDRef machineId); */
NS_IMETHODIMP _MYCLASS_::OpenExistingSession(ISession *session, const nsID & machineId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void registerCallback (in IVirtualBoxCallback callback); */
NS_IMETHODIMP _MYCLASS_::RegisterCallback(IVirtualBoxCallback *callback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unregisterCallback (in IVirtualBoxCallback callback); */
NS_IMETHODIMP _MYCLASS_::UnregisterCallback(IVirtualBoxCallback *callback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void waitForPropertyChange (in wstring what, in unsigned long timeout, out wstring changed, out wstring values); */
NS_IMETHODIMP _MYCLASS_::WaitForPropertyChange(const PRUnichar *what, PRUint32 timeout, PRUnichar **changed, PRUnichar **values)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void saveSettings (); */
NS_IMETHODIMP _MYCLASS_::SaveSettings()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void saveSettingsWithBackup ([retval] out wstring bakFileName); */
NS_IMETHODIMP _MYCLASS_::SaveSettingsWithBackup(PRUnichar **bakFileName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IMachineEnumerator */
#define IMACHINEENUMERATOR_IID_STR "1b554149-be0a-4465-9252-9ff8f420af55"

#define IMACHINEENUMERATOR_IID \
  {0x1b554149, 0xbe0a, 0x4465, \
    { 0x92, 0x52, 0x9f, 0xf8, 0xf4, 0x20, 0xaf, 0x55 }}

class NS_NO_VTABLE IMachineEnumerator : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMACHINEENUMERATOR_IID)

  /* void hasMore ([retval] out boolean more); */
  NS_IMETHOD HasMore(PRBool *more) = 0;

  /* void getNext ([retval] out IMachine next); */
  NS_IMETHOD GetNext(IMachine **next) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMACHINEENUMERATOR \
  NS_IMETHOD HasMore(PRBool *more); \
  NS_IMETHOD GetNext(IMachine **next); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMACHINEENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return _to HasMore(more); } \
  NS_IMETHOD GetNext(IMachine **next) { return _to GetNext(next); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMACHINEENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return !_to ? NS_ERROR_NULL_POINTER : _to->HasMore(more); } \
  NS_IMETHOD GetNext(IMachine **next) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNext(next); } 

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

/* Header file */
class _MYCLASS_ : public IMachineEnumerator
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMACHINEENUMERATOR

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void hasMore ([retval] out boolean more); */
NS_IMETHODIMP _MYCLASS_::HasMore(PRBool *more)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNext ([retval] out IMachine next); */
NS_IMETHODIMP _MYCLASS_::GetNext(IMachine **next)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IMachineCollection */
#define IMACHINECOLLECTION_IID_STR "fd443ec1-3007-4f5b-9282-d72760a66916"

#define IMACHINECOLLECTION_IID \
  {0xfd443ec1, 0x3007, 0x4f5b, \
    { 0x92, 0x82, 0xd7, 0x27, 0x60, 0xa6, 0x69, 0x16 }}

class NS_NO_VTABLE IMachineCollection : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMACHINECOLLECTION_IID)

  /* readonly attribute unsigned long count; */
  NS_IMETHOD GetCount(PRUint32 *aCount) = 0;

  /* void getItemAt (in unsigned long index, [retval] out IMachine item); */
  NS_IMETHOD GetItemAt(PRUint32 index, IMachine **item) = 0;

  /* void enumerate ([retval] out IMachineEnumerator enumerator); */
  NS_IMETHOD Enumerate(IMachineEnumerator **enumerator) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMACHINECOLLECTION \
  NS_IMETHOD GetCount(PRUint32 *aCount); \
  NS_IMETHOD GetItemAt(PRUint32 index, IMachine **item); \
  NS_IMETHOD Enumerate(IMachineEnumerator **enumerator); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMACHINECOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return _to GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IMachine **item) { return _to GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IMachineEnumerator **enumerator) { return _to Enumerate(enumerator); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMACHINECOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IMachine **item) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IMachineEnumerator **enumerator) { return !_to ? NS_ERROR_NULL_POINTER : _to->Enumerate(enumerator); } 

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

/* Header file */
class _MYCLASS_ : public IMachineCollection
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMACHINECOLLECTION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

_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 getItemAt (in unsigned long index, [retval] out IMachine item); */
NS_IMETHODIMP _MYCLASS_::GetItemAt(PRUint32 index, IMachine **item)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enumerate ([retval] out IMachineEnumerator enumerator); */
NS_IMETHODIMP _MYCLASS_::Enumerate(IMachineEnumerator **enumerator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IInternalMachineControl */
#define IINTERNALMACHINECONTROL_IID_STR "1063893c-4c38-4304-aee9-73e072c181cc"

#define IINTERNALMACHINECONTROL_IID \
  {0x1063893c, 0x4c38, 0x4304, \
    { 0xae, 0xe9, 0x73, 0xe0, 0x72, 0xc1, 0x81, 0xcc }}

class NS_NO_VTABLE IInternalMachineControl : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IINTERNALMACHINECONTROL_IID)

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

  /* void getIPCId ([retval] out wstring id); */
  NS_IMETHOD GetIPCId(PRUnichar **id) = 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 nsIDRef id); */
  NS_IMETHOD CaptureUSBDevice(const nsID & id) = 0;

  /* void detachUSBDevice (in nsIDRef id, in boolean done); */
  NS_IMETHOD DetachUSBDevice(const nsID & 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 (in IProgress progress, out wstring stateFilePath); */
  NS_IMETHOD BeginSavingState(IProgress *progress, PRUnichar **stateFilePath) = 0;

  /* void endSavingState (in boolean success); */
  NS_IMETHOD EndSavingState(PRBool success) = 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 progress, out wstring stateFilePath, out IProgress serverProgress); */
  NS_IMETHOD BeginTakingSnapshot(IConsole *initiator, const PRUnichar *name, const PRUnichar *description, IProgress *progress, PRUnichar **stateFilePath, IProgress **serverProgress) = 0;

  /* void endTakingSnapshot (in boolean success); */
  NS_IMETHOD EndTakingSnapshot(PRBool success) = 0;

  /* void discardSnapshot (in IConsole initiator, in nsIDRef id, out PRUint32 machineState, [retval] out IProgress progress); */
  NS_IMETHOD DiscardSnapshot(IConsole *initiator, const nsID & id, PRUint32 *machineState, IProgress **progress) = 0;

  /* void discardCurrentState (in IConsole initiator, out PRUint32 machineState, [retval] out IProgress progress); */
  NS_IMETHOD DiscardCurrentState(IConsole *initiator, PRUint32 *machineState, IProgress **progress) = 0;

  /* void discardCurrentSnapshotAndState (in IConsole initiator, out PRUint32 machineState, [retval] out IProgress progress); */
  NS_IMETHOD DiscardCurrentSnapshotAndState(IConsole *initiator, PRUint32 *machineState, IProgress **progress) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IINTERNALMACHINECONTROL \
  NS_IMETHOD UpdateState(PRUint32 state); \
  NS_IMETHOD GetIPCId(PRUnichar **id); \
  NS_IMETHOD RunUSBDeviceFilters(IUSBDevice *device, PRBool *matched, PRUint32 *maskedInterfaces); \
  NS_IMETHOD CaptureUSBDevice(const nsID & id); \
  NS_IMETHOD DetachUSBDevice(const nsID & 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(PRBool success); \
  NS_IMETHOD AdoptSavedState(const PRUnichar *savedStateFile); \
  NS_IMETHOD BeginTakingSnapshot(IConsole *initiator, const PRUnichar *name, const PRUnichar *description, IProgress *progress, PRUnichar **stateFilePath, IProgress **serverProgress); \
  NS_IMETHOD EndTakingSnapshot(PRBool success); \
  NS_IMETHOD DiscardSnapshot(IConsole *initiator, const nsID & id, PRUint32 *machineState, IProgress **progress); \
  NS_IMETHOD DiscardCurrentState(IConsole *initiator, PRUint32 *machineState, IProgress **progress); \
  NS_IMETHOD DiscardCurrentSnapshotAndState(IConsole *initiator, PRUint32 *machineState, IProgress **progress); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IINTERNALMACHINECONTROL(_to) \
  NS_IMETHOD UpdateState(PRUint32 state) { return _to UpdateState(state); } \
  NS_IMETHOD GetIPCId(PRUnichar **id) { return _to GetIPCId(id); } \
  NS_IMETHOD RunUSBDeviceFilters(IUSBDevice *device, PRBool *matched, PRUint32 *maskedInterfaces) { return _to RunUSBDeviceFilters(device, matched, maskedInterfaces); } \
  NS_IMETHOD CaptureUSBDevice(const nsID & id) { return _to CaptureUSBDevice(id); } \
  NS_IMETHOD DetachUSBDevice(const nsID & 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(PRBool success) { return _to EndSavingState(success); } \
  NS_IMETHOD AdoptSavedState(const PRUnichar *savedStateFile) { return _to AdoptSavedState(savedStateFile); } \
  NS_IMETHOD BeginTakingSnapshot(IConsole *initiator, const PRUnichar *name, const PRUnichar *description, IProgress *progress, PRUnichar **stateFilePath, IProgress **serverProgress) { return _to BeginTakingSnapshot(initiator, name, description, progress, stateFilePath, serverProgress); } \
  NS_IMETHOD EndTakingSnapshot(PRBool success) { return _to EndTakingSnapshot(success); } \
  NS_IMETHOD DiscardSnapshot(IConsole *initiator, const nsID & id, PRUint32 *machineState, IProgress **progress) { return _to DiscardSnapshot(initiator, id, machineState, progress); } \
  NS_IMETHOD DiscardCurrentState(IConsole *initiator, PRUint32 *machineState, IProgress **progress) { return _to DiscardCurrentState(initiator, machineState, progress); } \
  NS_IMETHOD DiscardCurrentSnapshotAndState(IConsole *initiator, PRUint32 *machineState, IProgress **progress) { return _to DiscardCurrentSnapshotAndState(initiator, machineState, 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_IINTERNALMACHINECONTROL(_to) \
  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 RunUSBDeviceFilters(IUSBDevice *device, PRBool *matched, PRUint32 *maskedInterfaces) { return !_to ? NS_ERROR_NULL_POINTER : _to->RunUSBDeviceFilters(device, matched, maskedInterfaces); } \
  NS_IMETHOD CaptureUSBDevice(const nsID & id) { return !_to ? NS_ERROR_NULL_POINTER : _to->CaptureUSBDevice(id); } \
  NS_IMETHOD DetachUSBDevice(const nsID & 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(PRBool success) { return !_to ? NS_ERROR_NULL_POINTER : _to->EndSavingState(success); } \
  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 *progress, PRUnichar **stateFilePath, IProgress **serverProgress) { return !_to ? NS_ERROR_NULL_POINTER : _to->BeginTakingSnapshot(initiator, name, description, progress, stateFilePath, serverProgress); } \
  NS_IMETHOD EndTakingSnapshot(PRBool success) { return !_to ? NS_ERROR_NULL_POINTER : _to->EndTakingSnapshot(success); } \
  NS_IMETHOD DiscardSnapshot(IConsole *initiator, const nsID & id, PRUint32 *machineState, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->DiscardSnapshot(initiator, id, machineState, progress); } \
  NS_IMETHOD DiscardCurrentState(IConsole *initiator, PRUint32 *machineState, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->DiscardCurrentState(initiator, machineState, progress); } \
  NS_IMETHOD DiscardCurrentSnapshotAndState(IConsole *initiator, PRUint32 *machineState, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->DiscardCurrentSnapshotAndState(initiator, machineState, progress); } 

#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 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 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 nsIDRef id); */
NS_IMETHODIMP _MYCLASS_::CaptureUSBDevice(const nsID & id)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void detachUSBDevice (in nsIDRef id, in boolean done); */
NS_IMETHODIMP _MYCLASS_::DetachUSBDevice(const nsID & 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 (in IProgress progress, out wstring stateFilePath); */
NS_IMETHODIMP _MYCLASS_::BeginSavingState(IProgress *progress, PRUnichar **stateFilePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void endSavingState (in boolean success); */
NS_IMETHODIMP _MYCLASS_::EndSavingState(PRBool success)
{
    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 progress, out wstring stateFilePath, out IProgress serverProgress); */
NS_IMETHODIMP _MYCLASS_::BeginTakingSnapshot(IConsole *initiator, const PRUnichar *name, const PRUnichar *description, IProgress *progress, PRUnichar **stateFilePath, IProgress **serverProgress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void endTakingSnapshot (in boolean success); */
NS_IMETHODIMP _MYCLASS_::EndTakingSnapshot(PRBool success)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void discardSnapshot (in IConsole initiator, in nsIDRef id, out PRUint32 machineState, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::DiscardSnapshot(IConsole *initiator, const nsID & id, PRUint32 *machineState, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void discardCurrentState (in IConsole initiator, out PRUint32 machineState, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::DiscardCurrentState(IConsole *initiator, PRUint32 *machineState, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void discardCurrentSnapshotAndState (in IConsole initiator, out PRUint32 machineState, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::DiscardCurrentSnapshotAndState(IConsole *initiator, PRUint32 *machineState, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


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

  /* attribute PRUint32 IDEControllerType; */
  NS_IMETHOD GetIDEControllerType(PRUint32 *aIDEControllerType) = 0;
  NS_IMETHOD SetIDEControllerType(PRUint32 aIDEControllerType) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IBIOSSETTINGS \
  NS_IMETHOD GetLogoFadeIn(PRBool *aLogoFadeIn); \
  NS_IMETHOD SetLogoFadeIn(PRBool aLogoFadeIn); \
  NS_IMETHOD GetLogoFadeOut(PRBool *aLogoFadeOut); \
  NS_IMETHOD SetLogoFadeOut(PRBool aLogoFadeOut); \
  NS_IMETHOD GetLogoDisplayTime(PRUint32 *aLogoDisplayTime); \
  NS_IMETHOD SetLogoDisplayTime(PRUint32 aLogoDisplayTime); \
  NS_IMETHOD GetLogoImagePath(PRUnichar * *aLogoImagePath); \
  NS_IMETHOD SetLogoImagePath(const PRUnichar * aLogoImagePath); \
  NS_IMETHOD GetBootMenuMode(PRUint32 *aBootMenuMode); \
  NS_IMETHOD SetBootMenuMode(PRUint32 aBootMenuMode); \
  NS_IMETHOD GetACPIEnabled(PRBool *aACPIEnabled); \
  NS_IMETHOD SetACPIEnabled(PRBool aACPIEnabled); \
  NS_IMETHOD GetIOAPICEnabled(PRBool *aIOAPICEnabled); \
  NS_IMETHOD SetIOAPICEnabled(PRBool aIOAPICEnabled); \
  NS_IMETHOD GetTimeOffset(PRInt64 *aTimeOffset); \
  NS_IMETHOD SetTimeOffset(PRInt64 aTimeOffset); \
  NS_IMETHOD GetPXEDebugEnabled(PRBool *aPXEDebugEnabled); \
  NS_IMETHOD SetPXEDebugEnabled(PRBool aPXEDebugEnabled); \
  NS_IMETHOD GetIDEControllerType(PRUint32 *aIDEControllerType); \
  NS_IMETHOD SetIDEControllerType(PRUint32 aIDEControllerType); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IBIOSSETTINGS(_to) \
  NS_IMETHOD GetLogoFadeIn(PRBool *aLogoFadeIn) { return _to GetLogoFadeIn(aLogoFadeIn); } \
  NS_IMETHOD SetLogoFadeIn(PRBool aLogoFadeIn) { return _to SetLogoFadeIn(aLogoFadeIn); } \
  NS_IMETHOD GetLogoFadeOut(PRBool *aLogoFadeOut) { return _to GetLogoFadeOut(aLogoFadeOut); } \
  NS_IMETHOD SetLogoFadeOut(PRBool aLogoFadeOut) { return _to SetLogoFadeOut(aLogoFadeOut); } \
  NS_IMETHOD GetLogoDisplayTime(PRUint32 *aLogoDisplayTime) { return _to GetLogoDisplayTime(aLogoDisplayTime); } \
  NS_IMETHOD SetLogoDisplayTime(PRUint32 aLogoDisplayTime) { return _to SetLogoDisplayTime(aLogoDisplayTime); } \
  NS_IMETHOD GetLogoImagePath(PRUnichar * *aLogoImagePath) { return _to GetLogoImagePath(aLogoImagePath); } \
  NS_IMETHOD SetLogoImagePath(const PRUnichar * aLogoImagePath) { return _to SetLogoImagePath(aLogoImagePath); } \
  NS_IMETHOD GetBootMenuMode(PRUint32 *aBootMenuMode) { return _to GetBootMenuMode(aBootMenuMode); } \
  NS_IMETHOD SetBootMenuMode(PRUint32 aBootMenuMode) { return _to SetBootMenuMode(aBootMenuMode); } \
  NS_IMETHOD GetACPIEnabled(PRBool *aACPIEnabled) { return _to GetACPIEnabled(aACPIEnabled); } \
  NS_IMETHOD SetACPIEnabled(PRBool aACPIEnabled) { return _to SetACPIEnabled(aACPIEnabled); } \
  NS_IMETHOD GetIOAPICEnabled(PRBool *aIOAPICEnabled) { return _to GetIOAPICEnabled(aIOAPICEnabled); } \
  NS_IMETHOD SetIOAPICEnabled(PRBool aIOAPICEnabled) { return _to SetIOAPICEnabled(aIOAPICEnabled); } \
  NS_IMETHOD GetTimeOffset(PRInt64 *aTimeOffset) { return _to GetTimeOffset(aTimeOffset); } \
  NS_IMETHOD SetTimeOffset(PRInt64 aTimeOffset) { return _to SetTimeOffset(aTimeOffset); } \
  NS_IMETHOD GetPXEDebugEnabled(PRBool *aPXEDebugEnabled) { return _to GetPXEDebugEnabled(aPXEDebugEnabled); } \
  NS_IMETHOD SetPXEDebugEnabled(PRBool aPXEDebugEnabled) { return _to SetPXEDebugEnabled(aPXEDebugEnabled); } \
  NS_IMETHOD GetIDEControllerType(PRUint32 *aIDEControllerType) { return _to GetIDEControllerType(aIDEControllerType); } \
  NS_IMETHOD SetIDEControllerType(PRUint32 aIDEControllerType) { return _to SetIDEControllerType(aIDEControllerType); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IBIOSSETTINGS(_to) \
  NS_IMETHOD GetLogoFadeIn(PRBool *aLogoFadeIn) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogoFadeIn(aLogoFadeIn); } \
  NS_IMETHOD SetLogoFadeIn(PRBool aLogoFadeIn) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLogoFadeIn(aLogoFadeIn); } \
  NS_IMETHOD GetLogoFadeOut(PRBool *aLogoFadeOut) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogoFadeOut(aLogoFadeOut); } \
  NS_IMETHOD SetLogoFadeOut(PRBool aLogoFadeOut) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLogoFadeOut(aLogoFadeOut); } \
  NS_IMETHOD GetLogoDisplayTime(PRUint32 *aLogoDisplayTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogoDisplayTime(aLogoDisplayTime); } \
  NS_IMETHOD SetLogoDisplayTime(PRUint32 aLogoDisplayTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLogoDisplayTime(aLogoDisplayTime); } \
  NS_IMETHOD GetLogoImagePath(PRUnichar * *aLogoImagePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogoImagePath(aLogoImagePath); } \
  NS_IMETHOD SetLogoImagePath(const PRUnichar * aLogoImagePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLogoImagePath(aLogoImagePath); } \
  NS_IMETHOD GetBootMenuMode(PRUint32 *aBootMenuMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBootMenuMode(aBootMenuMode); } \
  NS_IMETHOD SetBootMenuMode(PRUint32 aBootMenuMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBootMenuMode(aBootMenuMode); } \
  NS_IMETHOD GetACPIEnabled(PRBool *aACPIEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetACPIEnabled(aACPIEnabled); } \
  NS_IMETHOD SetACPIEnabled(PRBool aACPIEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetACPIEnabled(aACPIEnabled); } \
  NS_IMETHOD GetIOAPICEnabled(PRBool *aIOAPICEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIOAPICEnabled(aIOAPICEnabled); } \
  NS_IMETHOD SetIOAPICEnabled(PRBool aIOAPICEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIOAPICEnabled(aIOAPICEnabled); } \
  NS_IMETHOD GetTimeOffset(PRInt64 *aTimeOffset) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTimeOffset(aTimeOffset); } \
  NS_IMETHOD SetTimeOffset(PRInt64 aTimeOffset) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTimeOffset(aTimeOffset); } \
  NS_IMETHOD GetPXEDebugEnabled(PRBool *aPXEDebugEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPXEDebugEnabled(aPXEDebugEnabled); } \
  NS_IMETHOD SetPXEDebugEnabled(PRBool aPXEDebugEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPXEDebugEnabled(aPXEDebugEnabled); } \
  NS_IMETHOD GetIDEControllerType(PRUint32 *aIDEControllerType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIDEControllerType(aIDEControllerType); } \
  NS_IMETHOD SetIDEControllerType(PRUint32 aIDEControllerType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIDEControllerType(aIDEControllerType); } 

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

/* attribute PRUint32 IDEControllerType; */
NS_IMETHODIMP IBOSSettings::GetIDEControllerType(PRUint32 *aIDEControllerType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP IBOSSettings::SetIDEControllerType(PRUint32 aIDEControllerType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IMachine */
#define IMACHINE_IID_STR "f95c0793-7737-49a1-85d9-6da81097173b"

#define IMACHINE_IID \
  {0xf95c0793, 0x7737, 0x49a1, \
    { 0x85, 0xd9, 0x6d, 0xa8, 0x10, 0x97, 0x17, 0x3b }}

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 nsIDPtr id; */
  NS_IMETHOD GetId(nsID * *aId) = 0;

  /* attribute wstring OSTypeId; */
  NS_IMETHOD GetOSTypeId(PRUnichar * *aOSTypeId) = 0;
  NS_IMETHOD SetOSTypeId(const PRUnichar * aOSTypeId) = 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 unsigned long statisticsUpdateInterval; */
  NS_IMETHOD GetStatisticsUpdateInterval(PRUint32 *aStatisticsUpdateInterval) = 0;
  NS_IMETHOD SetStatisticsUpdateInterval(PRUint32 aStatisticsUpdateInterval) = 0;

  /* attribute unsigned long VRAMSize; */
  NS_IMETHOD GetVRAMSize(PRUint32 *aVRAMSize) = 0;
  NS_IMETHOD SetVRAMSize(PRUint32 aVRAMSize) = 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 HWVirtExEnabled; */
  NS_IMETHOD GetHWVirtExEnabled(PRUint32 *aHWVirtExEnabled) = 0;
  NS_IMETHOD SetHWVirtExEnabled(PRUint32 aHWVirtExEnabled) = 0;

  /* attribute boolean PAEEnabled; */
  NS_IMETHOD GetPAEEnabled(PRBool *aPAEEnabled) = 0;
  NS_IMETHOD SetPAEEnabled(PRBool aPAEEnabled) = 0;

  /* attribute wstring snapshotFolder; */
  NS_IMETHOD GetSnapshotFolder(PRUnichar * *aSnapshotFolder) = 0;
  NS_IMETHOD SetSnapshotFolder(const PRUnichar * aSnapshotFolder) = 0;

  /* readonly attribute IVRDPServer VRDPServer; */
  NS_IMETHOD GetVRDPServer(IVRDPServer * *aVRDPServer) = 0;

  /* readonly attribute IHardDiskAttachmentCollection hardDiskAttachments; */
  NS_IMETHOD GetHardDiskAttachments(IHardDiskAttachmentCollection * *aHardDiskAttachments) = 0;

  /* readonly attribute IDVDDrive DVDDrive; */
  NS_IMETHOD GetDVDDrive(IDVDDrive * *aDVDDrive) = 0;

  /* readonly attribute IFloppyDrive FloppyDrive; */
  NS_IMETHOD GetFloppyDrive(IFloppyDrive * *aFloppyDrive) = 0;

  /* readonly attribute IUSBController USBController; */
  NS_IMETHOD GetUSBController(IUSBController * *aUSBController) = 0;

  /* readonly attribute IAudioAdapter audioAdapter; */
  NS_IMETHOD GetAudioAdapter(IAudioAdapter * *aAudioAdapter) = 0;

  /* readonly attribute ISATAController SATAController; */
  NS_IMETHOD GetSATAController(ISATAController * *aSATAController) = 0;

  /* readonly attribute wstring settingsFilePath; */
  NS_IMETHOD GetSettingsFilePath(PRUnichar * *aSettingsFilePath) = 0;

  /* readonly attribute wstring settingsFileVersion; */
  NS_IMETHOD GetSettingsFileVersion(PRUnichar * *aSettingsFileVersion) = 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;

  /* readonly attribute ISharedFolderCollection sharedFolders; */
  NS_IMETHOD GetSharedFolders(ISharedFolderCollection * *aSharedFolders) = 0;

  /* attribute PRUint32 clipboardMode; */
  NS_IMETHOD GetClipboardMode(PRUint32 *aClipboardMode) = 0;
  NS_IMETHOD SetClipboardMode(PRUint32 aClipboardMode) = 0;

  /* void setBootOrder (in unsigned long position, in PRUint32 device); */
  NS_IMETHOD SetBootOrder(PRUint32 position, PRUint32 device) = 0;

  /* void getBootOrder (in unsigned long order, [retval] out PRUint32 device); */
  NS_IMETHOD GetBootOrder(PRUint32 order, PRUint32 *device) = 0;

  /* void attachHardDisk (in nsIDRef id, in PRUint32 bus, in long channel, in long device); */
  NS_IMETHOD AttachHardDisk(const nsID & id, PRUint32 bus, PRInt32 channel, PRInt32 device) = 0;

  /* void getHardDisk (in PRUint32 bus, in long channel, in long device, [retval] out IHardDisk hardDisk); */
  NS_IMETHOD GetHardDisk(PRUint32 bus, PRInt32 channel, PRInt32 device, IHardDisk **hardDisk) = 0;

  /* void detachHardDisk (in PRUint32 bus, in long channel, in long device); */
  NS_IMETHOD DetachHardDisk(PRUint32 bus, PRInt32 channel, PRInt32 device) = 0;

  /* void getNetworkAdapter (in unsigned long slot, [retval] out INetworkAdapter adapter); */
  NS_IMETHOD GetNetworkAdapter(PRUint32 slot, INetworkAdapter **adapter) = 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 getNextExtraDataKey (in wstring key, out wstring nextKey, out wstring nextValue); */
  NS_IMETHOD GetNextExtraDataKey(const PRUnichar *key, PRUnichar **nextKey, PRUnichar **nextValue) = 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 saveSettings (); */
  NS_IMETHOD SaveSettings(void) = 0;

  /* void saveSettingsWithBackup ([retval] out wstring bakFileName); */
  NS_IMETHOD SaveSettingsWithBackup(PRUnichar **bakFileName) = 0;

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

  /* void deleteSettings (); */
  NS_IMETHOD DeleteSettings(void) = 0;

  /* void getSnapshot (in nsIDRef id, [retval] out ISnapshot snapshot); */
  NS_IMETHOD GetSnapshot(const nsID & id, ISnapshot **snapshot) = 0;

  /* void findSnapshot (in wstring name, [retval] out ISnapshot snapshot); */
  NS_IMETHOD FindSnapshot(const PRUnichar *name, ISnapshot **snapshot) = 0;

  /* void setCurrentSnapshot (in nsIDRef id); */
  NS_IMETHOD SetCurrentSnapshot(const nsID & id) = 0;

  /* void createSharedFolder (in wstring name, in wstring hostPath, in boolean writable); */
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable) = 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 unsigned long long winId); */
  NS_IMETHOD ShowConsoleWindow(PRUint64 *winId) = 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(nsID * *aId); \
  NS_IMETHOD GetOSTypeId(PRUnichar * *aOSTypeId); \
  NS_IMETHOD SetOSTypeId(const PRUnichar * aOSTypeId); \
  NS_IMETHOD GetMemorySize(PRUint32 *aMemorySize); \
  NS_IMETHOD SetMemorySize(PRUint32 aMemorySize); \
  NS_IMETHOD GetMemoryBalloonSize(PRUint32 *aMemoryBalloonSize); \
  NS_IMETHOD SetMemoryBalloonSize(PRUint32 aMemoryBalloonSize); \
  NS_IMETHOD GetStatisticsUpdateInterval(PRUint32 *aStatisticsUpdateInterval); \
  NS_IMETHOD SetStatisticsUpdateInterval(PRUint32 aStatisticsUpdateInterval); \
  NS_IMETHOD GetVRAMSize(PRUint32 *aVRAMSize); \
  NS_IMETHOD SetVRAMSize(PRUint32 aVRAMSize); \
  NS_IMETHOD GetMonitorCount(PRUint32 *aMonitorCount); \
  NS_IMETHOD SetMonitorCount(PRUint32 aMonitorCount); \
  NS_IMETHOD GetBIOSSettings(IBIOSSettings * *aBIOSSettings); \
  NS_IMETHOD GetHWVirtExEnabled(PRUint32 *aHWVirtExEnabled); \
  NS_IMETHOD SetHWVirtExEnabled(PRUint32 aHWVirtExEnabled); \
  NS_IMETHOD GetPAEEnabled(PRBool *aPAEEnabled); \
  NS_IMETHOD SetPAEEnabled(PRBool aPAEEnabled); \
  NS_IMETHOD GetSnapshotFolder(PRUnichar * *aSnapshotFolder); \
  NS_IMETHOD SetSnapshotFolder(const PRUnichar * aSnapshotFolder); \
  NS_IMETHOD GetVRDPServer(IVRDPServer * *aVRDPServer); \
  NS_IMETHOD GetHardDiskAttachments(IHardDiskAttachmentCollection * *aHardDiskAttachments); \
  NS_IMETHOD GetDVDDrive(IDVDDrive * *aDVDDrive); \
  NS_IMETHOD GetFloppyDrive(IFloppyDrive * *aFloppyDrive); \
  NS_IMETHOD GetUSBController(IUSBController * *aUSBController); \
  NS_IMETHOD GetAudioAdapter(IAudioAdapter * *aAudioAdapter); \
  NS_IMETHOD GetSATAController(ISATAController * *aSATAController); \
  NS_IMETHOD GetSettingsFilePath(PRUnichar * *aSettingsFilePath); \
  NS_IMETHOD GetSettingsFileVersion(PRUnichar * *aSettingsFileVersion); \
  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(ISharedFolderCollection * *aSharedFolders); \
  NS_IMETHOD GetClipboardMode(PRUint32 *aClipboardMode); \
  NS_IMETHOD SetClipboardMode(PRUint32 aClipboardMode); \
  NS_IMETHOD SetBootOrder(PRUint32 position, PRUint32 device); \
  NS_IMETHOD GetBootOrder(PRUint32 order, PRUint32 *device); \
  NS_IMETHOD AttachHardDisk(const nsID & id, PRUint32 bus, PRInt32 channel, PRInt32 device); \
  NS_IMETHOD GetHardDisk(PRUint32 bus, PRInt32 channel, PRInt32 device, IHardDisk **hardDisk); \
  NS_IMETHOD DetachHardDisk(PRUint32 bus, PRInt32 channel, PRInt32 device); \
  NS_IMETHOD GetNetworkAdapter(PRUint32 slot, INetworkAdapter **adapter); \
  NS_IMETHOD GetSerialPort(PRUint32 slot, ISerialPort **port); \
  NS_IMETHOD GetParallelPort(PRUint32 slot, IParallelPort **port); \
  NS_IMETHOD GetNextExtraDataKey(const PRUnichar *key, PRUnichar **nextKey, PRUnichar **nextValue); \
  NS_IMETHOD GetExtraData(const PRUnichar *key, PRUnichar **value); \
  NS_IMETHOD SetExtraData(const PRUnichar *key, const PRUnichar *value); \
  NS_IMETHOD SaveSettings(void); \
  NS_IMETHOD SaveSettingsWithBackup(PRUnichar **bakFileName); \
  NS_IMETHOD DiscardSettings(void); \
  NS_IMETHOD DeleteSettings(void); \
  NS_IMETHOD GetSnapshot(const nsID & id, ISnapshot **snapshot); \
  NS_IMETHOD FindSnapshot(const PRUnichar *name, ISnapshot **snapshot); \
  NS_IMETHOD SetCurrentSnapshot(const nsID & id); \
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable); \
  NS_IMETHOD RemoveSharedFolder(const PRUnichar *name); \
  NS_IMETHOD CanShowConsoleWindow(PRBool *canShow); \
  NS_IMETHOD ShowConsoleWindow(PRUint64 *winId); 

/* 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(nsID * *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 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 GetStatisticsUpdateInterval(PRUint32 *aStatisticsUpdateInterval) { return _to GetStatisticsUpdateInterval(aStatisticsUpdateInterval); } \
  NS_IMETHOD SetStatisticsUpdateInterval(PRUint32 aStatisticsUpdateInterval) { return _to SetStatisticsUpdateInterval(aStatisticsUpdateInterval); } \
  NS_IMETHOD GetVRAMSize(PRUint32 *aVRAMSize) { return _to GetVRAMSize(aVRAMSize); } \
  NS_IMETHOD SetVRAMSize(PRUint32 aVRAMSize) { return _to SetVRAMSize(aVRAMSize); } \
  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 GetHWVirtExEnabled(PRUint32 *aHWVirtExEnabled) { return _to GetHWVirtExEnabled(aHWVirtExEnabled); } \
  NS_IMETHOD SetHWVirtExEnabled(PRUint32 aHWVirtExEnabled) { return _to SetHWVirtExEnabled(aHWVirtExEnabled); } \
  NS_IMETHOD GetPAEEnabled(PRBool *aPAEEnabled) { return _to GetPAEEnabled(aPAEEnabled); } \
  NS_IMETHOD SetPAEEnabled(PRBool aPAEEnabled) { return _to SetPAEEnabled(aPAEEnabled); } \
  NS_IMETHOD GetSnapshotFolder(PRUnichar * *aSnapshotFolder) { return _to GetSnapshotFolder(aSnapshotFolder); } \
  NS_IMETHOD SetSnapshotFolder(const PRUnichar * aSnapshotFolder) { return _to SetSnapshotFolder(aSnapshotFolder); } \
  NS_IMETHOD GetVRDPServer(IVRDPServer * *aVRDPServer) { return _to GetVRDPServer(aVRDPServer); } \
  NS_IMETHOD GetHardDiskAttachments(IHardDiskAttachmentCollection * *aHardDiskAttachments) { return _to GetHardDiskAttachments(aHardDiskAttachments); } \
  NS_IMETHOD GetDVDDrive(IDVDDrive * *aDVDDrive) { return _to GetDVDDrive(aDVDDrive); } \
  NS_IMETHOD GetFloppyDrive(IFloppyDrive * *aFloppyDrive) { return _to GetFloppyDrive(aFloppyDrive); } \
  NS_IMETHOD GetUSBController(IUSBController * *aUSBController) { return _to GetUSBController(aUSBController); } \
  NS_IMETHOD GetAudioAdapter(IAudioAdapter * *aAudioAdapter) { return _to GetAudioAdapter(aAudioAdapter); } \
  NS_IMETHOD GetSATAController(ISATAController * *aSATAController) { return _to GetSATAController(aSATAController); } \
  NS_IMETHOD GetSettingsFilePath(PRUnichar * *aSettingsFilePath) { return _to GetSettingsFilePath(aSettingsFilePath); } \
  NS_IMETHOD GetSettingsFileVersion(PRUnichar * *aSettingsFileVersion) { return _to GetSettingsFileVersion(aSettingsFileVersion); } \
  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(ISharedFolderCollection * *aSharedFolders) { return _to GetSharedFolders(aSharedFolders); } \
  NS_IMETHOD GetClipboardMode(PRUint32 *aClipboardMode) { return _to GetClipboardMode(aClipboardMode); } \
  NS_IMETHOD SetClipboardMode(PRUint32 aClipboardMode) { return _to SetClipboardMode(aClipboardMode); } \
  NS_IMETHOD SetBootOrder(PRUint32 position, PRUint32 device) { return _to SetBootOrder(position, device); } \
  NS_IMETHOD GetBootOrder(PRUint32 order, PRUint32 *device) { return _to GetBootOrder(order, device); } \
  NS_IMETHOD AttachHardDisk(const nsID & id, PRUint32 bus, PRInt32 channel, PRInt32 device) { return _to AttachHardDisk(id, bus, channel, device); } \
  NS_IMETHOD GetHardDisk(PRUint32 bus, PRInt32 channel, PRInt32 device, IHardDisk **hardDisk) { return _to GetHardDisk(bus, channel, device, hardDisk); } \
  NS_IMETHOD DetachHardDisk(PRUint32 bus, PRInt32 channel, PRInt32 device) { return _to DetachHardDisk(bus, channel, device); } \
  NS_IMETHOD GetNetworkAdapter(PRUint32 slot, INetworkAdapter **adapter) { return _to GetNetworkAdapter(slot, adapter); } \
  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 GetNextExtraDataKey(const PRUnichar *key, PRUnichar **nextKey, PRUnichar **nextValue) { return _to GetNextExtraDataKey(key, nextKey, nextValue); } \
  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 SaveSettings(void) { return _to SaveSettings(); } \
  NS_IMETHOD SaveSettingsWithBackup(PRUnichar **bakFileName) { return _to SaveSettingsWithBackup(bakFileName); } \
  NS_IMETHOD DiscardSettings(void) { return _to DiscardSettings(); } \
  NS_IMETHOD DeleteSettings(void) { return _to DeleteSettings(); } \
  NS_IMETHOD GetSnapshot(const nsID & id, ISnapshot **snapshot) { return _to GetSnapshot(id, snapshot); } \
  NS_IMETHOD FindSnapshot(const PRUnichar *name, ISnapshot **snapshot) { return _to FindSnapshot(name, snapshot); } \
  NS_IMETHOD SetCurrentSnapshot(const nsID & id) { return _to SetCurrentSnapshot(id); } \
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable) { return _to CreateSharedFolder(name, hostPath, writable); } \
  NS_IMETHOD RemoveSharedFolder(const PRUnichar *name) { return _to RemoveSharedFolder(name); } \
  NS_IMETHOD CanShowConsoleWindow(PRBool *canShow) { return _to CanShowConsoleWindow(canShow); } \
  NS_IMETHOD ShowConsoleWindow(PRUint64 *winId) { return _to ShowConsoleWindow(winId); } 

/* 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(nsID * *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 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 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 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 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 GetHWVirtExEnabled(PRUint32 *aHWVirtExEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHWVirtExEnabled(aHWVirtExEnabled); } \
  NS_IMETHOD SetHWVirtExEnabled(PRUint32 aHWVirtExEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHWVirtExEnabled(aHWVirtExEnabled); } \
  NS_IMETHOD GetPAEEnabled(PRBool *aPAEEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPAEEnabled(aPAEEnabled); } \
  NS_IMETHOD SetPAEEnabled(PRBool aPAEEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPAEEnabled(aPAEEnabled); } \
  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 GetVRDPServer(IVRDPServer * *aVRDPServer) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVRDPServer(aVRDPServer); } \
  NS_IMETHOD GetHardDiskAttachments(IHardDiskAttachmentCollection * *aHardDiskAttachments) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHardDiskAttachments(aHardDiskAttachments); } \
  NS_IMETHOD GetDVDDrive(IDVDDrive * *aDVDDrive) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDVDDrive(aDVDDrive); } \
  NS_IMETHOD GetFloppyDrive(IFloppyDrive * *aFloppyDrive) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFloppyDrive(aFloppyDrive); } \
  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 GetSATAController(ISATAController * *aSATAController) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSATAController(aSATAController); } \
  NS_IMETHOD GetSettingsFilePath(PRUnichar * *aSettingsFilePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSettingsFilePath(aSettingsFilePath); } \
  NS_IMETHOD GetSettingsFileVersion(PRUnichar * *aSettingsFileVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSettingsFileVersion(aSettingsFileVersion); } \
  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(ISharedFolderCollection * *aSharedFolders) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSharedFolders(aSharedFolders); } \
  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 SetBootOrder(PRUint32 position, PRUint32 device) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBootOrder(position, device); } \
  NS_IMETHOD GetBootOrder(PRUint32 order, PRUint32 *device) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBootOrder(order, device); } \
  NS_IMETHOD AttachHardDisk(const nsID & id, PRUint32 bus, PRInt32 channel, PRInt32 device) { return !_to ? NS_ERROR_NULL_POINTER : _to->AttachHardDisk(id, bus, channel, device); } \
  NS_IMETHOD GetHardDisk(PRUint32 bus, PRInt32 channel, PRInt32 device, IHardDisk **hardDisk) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHardDisk(bus, channel, device, hardDisk); } \
  NS_IMETHOD DetachHardDisk(PRUint32 bus, PRInt32 channel, PRInt32 device) { return !_to ? NS_ERROR_NULL_POINTER : _to->DetachHardDisk(bus, channel, device); } \
  NS_IMETHOD GetNetworkAdapter(PRUint32 slot, INetworkAdapter **adapter) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworkAdapter(slot, adapter); } \
  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 GetNextExtraDataKey(const PRUnichar *key, PRUnichar **nextKey, PRUnichar **nextValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNextExtraDataKey(key, nextKey, nextValue); } \
  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 SaveSettings(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->SaveSettings(); } \
  NS_IMETHOD SaveSettingsWithBackup(PRUnichar **bakFileName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SaveSettingsWithBackup(bakFileName); } \
  NS_IMETHOD DiscardSettings(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->DiscardSettings(); } \
  NS_IMETHOD DeleteSettings(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteSettings(); } \
  NS_IMETHOD GetSnapshot(const nsID & id, ISnapshot **snapshot) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSnapshot(id, snapshot); } \
  NS_IMETHOD FindSnapshot(const PRUnichar *name, ISnapshot **snapshot) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindSnapshot(name, snapshot); } \
  NS_IMETHOD SetCurrentSnapshot(const nsID & id) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCurrentSnapshot(id); } \
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateSharedFolder(name, hostPath, writable); } \
  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(PRUint64 *winId) { return !_to ? NS_ERROR_NULL_POINTER : _to->ShowConsoleWindow(winId); } 

#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 nsIDPtr id; */
NS_IMETHODIMP _MYCLASS_::GetId(nsID * *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 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 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;
}

/* 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 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 HWVirtExEnabled; */
NS_IMETHODIMP _MYCLASS_::GetHWVirtExEnabled(PRUint32 *aHWVirtExEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetHWVirtExEnabled(PRUint32 aHWVirtExEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean PAEEnabled; */
NS_IMETHODIMP _MYCLASS_::GetPAEEnabled(PRBool *aPAEEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPAEEnabled(PRBool aPAEEnabled)
{
    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 IVRDPServer VRDPServer; */
NS_IMETHODIMP _MYCLASS_::GetVRDPServer(IVRDPServer * *aVRDPServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IHardDiskAttachmentCollection hardDiskAttachments; */
NS_IMETHODIMP _MYCLASS_::GetHardDiskAttachments(IHardDiskAttachmentCollection * *aHardDiskAttachments)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IDVDDrive DVDDrive; */
NS_IMETHODIMP _MYCLASS_::GetDVDDrive(IDVDDrive * *aDVDDrive)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IFloppyDrive FloppyDrive; */
NS_IMETHODIMP _MYCLASS_::GetFloppyDrive(IFloppyDrive * *aFloppyDrive)
{
    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;
}

/* readonly attribute ISATAController SATAController; */
NS_IMETHODIMP _MYCLASS_::GetSATAController(ISATAController * *aSATAController)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring settingsFilePath; */
NS_IMETHODIMP _MYCLASS_::GetSettingsFilePath(PRUnichar * *aSettingsFilePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring settingsFileVersion; */
NS_IMETHODIMP _MYCLASS_::GetSettingsFileVersion(PRUnichar * *aSettingsFileVersion)
{
    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;
}

/* readonly attribute ISharedFolderCollection sharedFolders; */
NS_IMETHODIMP _MYCLASS_::GetSharedFolders(ISharedFolderCollection * *aSharedFolders)
{
    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;
}

/* 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 order, [retval] out PRUint32 device); */
NS_IMETHODIMP _MYCLASS_::GetBootOrder(PRUint32 order, PRUint32 *device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void attachHardDisk (in nsIDRef id, in PRUint32 bus, in long channel, in long device); */
NS_IMETHODIMP _MYCLASS_::AttachHardDisk(const nsID & id, PRUint32 bus, PRInt32 channel, PRInt32 device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getHardDisk (in PRUint32 bus, in long channel, in long device, [retval] out IHardDisk hardDisk); */
NS_IMETHODIMP _MYCLASS_::GetHardDisk(PRUint32 bus, PRInt32 channel, PRInt32 device, IHardDisk **hardDisk)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void detachHardDisk (in PRUint32 bus, in long channel, in long device); */
NS_IMETHODIMP _MYCLASS_::DetachHardDisk(PRUint32 bus, PRInt32 channel, PRInt32 device)
{
    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 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 getNextExtraDataKey (in wstring key, out wstring nextKey, out wstring nextValue); */
NS_IMETHODIMP _MYCLASS_::GetNextExtraDataKey(const PRUnichar *key, PRUnichar **nextKey, PRUnichar **nextValue)
{
    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 saveSettings (); */
NS_IMETHODIMP _MYCLASS_::SaveSettings()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void saveSettingsWithBackup ([retval] out wstring bakFileName); */
NS_IMETHODIMP _MYCLASS_::SaveSettingsWithBackup(PRUnichar **bakFileName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void discardSettings (); */
NS_IMETHODIMP _MYCLASS_::DiscardSettings()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteSettings (); */
NS_IMETHODIMP _MYCLASS_::DeleteSettings()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getSnapshot (in nsIDRef id, [retval] out ISnapshot snapshot); */
NS_IMETHODIMP _MYCLASS_::GetSnapshot(const nsID & id, ISnapshot **snapshot)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findSnapshot (in wstring name, [retval] out ISnapshot snapshot); */
NS_IMETHODIMP _MYCLASS_::FindSnapshot(const PRUnichar *name, ISnapshot **snapshot)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setCurrentSnapshot (in nsIDRef id); */
NS_IMETHODIMP _MYCLASS_::SetCurrentSnapshot(const nsID & id)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createSharedFolder (in wstring name, in wstring hostPath, in boolean writable); */
NS_IMETHODIMP _MYCLASS_::CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable)
{
    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 unsigned long long winId); */
NS_IMETHODIMP _MYCLASS_::ShowConsoleWindow(PRUint64 *winId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IConsoleCallback */
#define ICONSOLECALLBACK_IID_STR "13dfbef3-b74d-487d-bada-2304529aefa6"

#define ICONSOLECALLBACK_IID \
  {0x13dfbef3, 0xb74d, 0x487d, \
    { 0xba, 0xda, 0x23, 0x04, 0x52, 0x9a, 0xef, 0xa6 }}

class NS_NO_VTABLE IConsoleCallback : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ICONSOLECALLBACK_IID)

  /* [noscript] void onMousePointerShapeChange (in boolean visible, in boolean alpha, in unsigned long xHot, in unsigned long yHot, in unsigned long width, in unsigned long height, in octetPtr shape); */
  NS_IMETHOD OnMousePointerShapeChange(PRBool visible, PRBool alpha, PRUint32 xHot, PRUint32 yHot, PRUint32 width, PRUint32 height, PRUint8 * shape) = 0;

  /* void onMouseCapabilityChange (in boolean supportsAbsolute, in boolean needsHostCursor); */
  NS_IMETHOD OnMouseCapabilityChange(PRBool supportsAbsolute, PRBool needsHostCursor) = 0;

  /* void onKeyboardLedsChange (in boolean numLock, in boolean capsLock, in boolean scrollLock); */
  NS_IMETHOD OnKeyboardLedsChange(PRBool numLock, PRBool capsLock, PRBool scrollLock) = 0;

  /* void onStateChange (in PRUint32 state); */
  NS_IMETHOD OnStateChange(PRUint32 state) = 0;

  /* void onAdditionsStateChange (); */
  NS_IMETHOD OnAdditionsStateChange(void) = 0;

  /* void onDVDDriveChange (); */
  NS_IMETHOD OnDVDDriveChange(void) = 0;

  /* void onFloppyDriveChange (); */
  NS_IMETHOD OnFloppyDriveChange(void) = 0;

  /* void onNetworkAdapterChange (in INetworkAdapter networkAdapter); */
  NS_IMETHOD OnNetworkAdapterChange(INetworkAdapter *networkAdapter) = 0;

  /* void onSerialPortChange (in ISerialPort serialPort); */
  NS_IMETHOD OnSerialPortChange(ISerialPort *serialPort) = 0;

  /* void onParallelPortChange (in IParallelPort parallelPort); */
  NS_IMETHOD OnParallelPortChange(IParallelPort *parallelPort) = 0;

  /* void onVRDPServerChange (); */
  NS_IMETHOD OnVRDPServerChange(void) = 0;

  /* void onUSBControllerChange (); */
  NS_IMETHOD OnUSBControllerChange(void) = 0;

  /* void onUSBDeviceStateChange (in IUSBDevice device, in boolean attached, in IVirtualBoxErrorInfo error); */
  NS_IMETHOD OnUSBDeviceStateChange(IUSBDevice *device, PRBool attached, IVirtualBoxErrorInfo *error) = 0;

  /* void onSharedFolderChange (in PRUint32 scope); */
  NS_IMETHOD OnSharedFolderChange(PRUint32 scope) = 0;

  /* void onRuntimeError (in boolean fatal, in wstring id, in wstring message); */
  NS_IMETHOD OnRuntimeError(PRBool fatal, const PRUnichar *id, const PRUnichar *message) = 0;

  /* void onCanShowWindow ([retval] out boolean canShow); */
  NS_IMETHOD OnCanShowWindow(PRBool *canShow) = 0;

  /* void onShowWindow ([retval] out unsigned long long winId); */
  NS_IMETHOD OnShowWindow(PRUint64 *winId) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ICONSOLECALLBACK \
  NS_IMETHOD OnMousePointerShapeChange(PRBool visible, PRBool alpha, PRUint32 xHot, PRUint32 yHot, PRUint32 width, PRUint32 height, PRUint8 * shape); \
  NS_IMETHOD OnMouseCapabilityChange(PRBool supportsAbsolute, PRBool needsHostCursor); \
  NS_IMETHOD OnKeyboardLedsChange(PRBool numLock, PRBool capsLock, PRBool scrollLock); \
  NS_IMETHOD OnStateChange(PRUint32 state); \
  NS_IMETHOD OnAdditionsStateChange(void); \
  NS_IMETHOD OnDVDDriveChange(void); \
  NS_IMETHOD OnFloppyDriveChange(void); \
  NS_IMETHOD OnNetworkAdapterChange(INetworkAdapter *networkAdapter); \
  NS_IMETHOD OnSerialPortChange(ISerialPort *serialPort); \
  NS_IMETHOD OnParallelPortChange(IParallelPort *parallelPort); \
  NS_IMETHOD OnVRDPServerChange(void); \
  NS_IMETHOD OnUSBControllerChange(void); \
  NS_IMETHOD OnUSBDeviceStateChange(IUSBDevice *device, PRBool attached, IVirtualBoxErrorInfo *error); \
  NS_IMETHOD OnSharedFolderChange(PRUint32 scope); \
  NS_IMETHOD OnRuntimeError(PRBool fatal, const PRUnichar *id, const PRUnichar *message); \
  NS_IMETHOD OnCanShowWindow(PRBool *canShow); \
  NS_IMETHOD OnShowWindow(PRUint64 *winId); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ICONSOLECALLBACK(_to) \
  NS_IMETHOD OnMousePointerShapeChange(PRBool visible, PRBool alpha, PRUint32 xHot, PRUint32 yHot, PRUint32 width, PRUint32 height, PRUint8 * shape) { return _to OnMousePointerShapeChange(visible, alpha, xHot, yHot, width, height, shape); } \
  NS_IMETHOD OnMouseCapabilityChange(PRBool supportsAbsolute, PRBool needsHostCursor) { return _to OnMouseCapabilityChange(supportsAbsolute, needsHostCursor); } \
  NS_IMETHOD OnKeyboardLedsChange(PRBool numLock, PRBool capsLock, PRBool scrollLock) { return _to OnKeyboardLedsChange(numLock, capsLock, scrollLock); } \
  NS_IMETHOD OnStateChange(PRUint32 state) { return _to OnStateChange(state); } \
  NS_IMETHOD OnAdditionsStateChange(void) { return _to OnAdditionsStateChange(); } \
  NS_IMETHOD OnDVDDriveChange(void) { return _to OnDVDDriveChange(); } \
  NS_IMETHOD OnFloppyDriveChange(void) { return _to OnFloppyDriveChange(); } \
  NS_IMETHOD OnNetworkAdapterChange(INetworkAdapter *networkAdapter) { return _to OnNetworkAdapterChange(networkAdapter); } \
  NS_IMETHOD OnSerialPortChange(ISerialPort *serialPort) { return _to OnSerialPortChange(serialPort); } \
  NS_IMETHOD OnParallelPortChange(IParallelPort *parallelPort) { return _to OnParallelPortChange(parallelPort); } \
  NS_IMETHOD OnVRDPServerChange(void) { return _to OnVRDPServerChange(); } \
  NS_IMETHOD OnUSBControllerChange(void) { return _to OnUSBControllerChange(); } \
  NS_IMETHOD OnUSBDeviceStateChange(IUSBDevice *device, PRBool attached, IVirtualBoxErrorInfo *error) { return _to OnUSBDeviceStateChange(device, attached, error); } \
  NS_IMETHOD OnSharedFolderChange(PRUint32 scope) { return _to OnSharedFolderChange(scope); } \
  NS_IMETHOD OnRuntimeError(PRBool fatal, const PRUnichar *id, const PRUnichar *message) { return _to OnRuntimeError(fatal, id, message); } \
  NS_IMETHOD OnCanShowWindow(PRBool *canShow) { return _to OnCanShowWindow(canShow); } \
  NS_IMETHOD OnShowWindow(PRUint64 *winId) { return _to OnShowWindow(winId); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ICONSOLECALLBACK(_to) \
  NS_IMETHOD OnMousePointerShapeChange(PRBool visible, PRBool alpha, PRUint32 xHot, PRUint32 yHot, PRUint32 width, PRUint32 height, PRUint8 * shape) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnMousePointerShapeChange(visible, alpha, xHot, yHot, width, height, shape); } \
  NS_IMETHOD OnMouseCapabilityChange(PRBool supportsAbsolute, PRBool needsHostCursor) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnMouseCapabilityChange(supportsAbsolute, needsHostCursor); } \
  NS_IMETHOD OnKeyboardLedsChange(PRBool numLock, PRBool capsLock, PRBool scrollLock) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnKeyboardLedsChange(numLock, capsLock, scrollLock); } \
  NS_IMETHOD OnStateChange(PRUint32 state) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnStateChange(state); } \
  NS_IMETHOD OnAdditionsStateChange(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnAdditionsStateChange(); } \
  NS_IMETHOD OnDVDDriveChange(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnDVDDriveChange(); } \
  NS_IMETHOD OnFloppyDriveChange(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnFloppyDriveChange(); } \
  NS_IMETHOD OnNetworkAdapterChange(INetworkAdapter *networkAdapter) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnNetworkAdapterChange(networkAdapter); } \
  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 OnVRDPServerChange(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnVRDPServerChange(); } \
  NS_IMETHOD OnUSBControllerChange(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnUSBControllerChange(); } \
  NS_IMETHOD OnUSBDeviceStateChange(IUSBDevice *device, PRBool attached, IVirtualBoxErrorInfo *error) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnUSBDeviceStateChange(device, attached, error); } \
  NS_IMETHOD OnSharedFolderChange(PRUint32 scope) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnSharedFolderChange(scope); } \
  NS_IMETHOD OnRuntimeError(PRBool fatal, const PRUnichar *id, const PRUnichar *message) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnRuntimeError(fatal, id, message); } \
  NS_IMETHOD OnCanShowWindow(PRBool *canShow) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnCanShowWindow(canShow); } \
  NS_IMETHOD OnShowWindow(PRUint64 *winId) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnShowWindow(winId); } 

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

/* Header file */
class _MYCLASS_ : public IConsoleCallback
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ICONSOLECALLBACK

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* [noscript] void onMousePointerShapeChange (in boolean visible, in boolean alpha, in unsigned long xHot, in unsigned long yHot, in unsigned long width, in unsigned long height, in octetPtr shape); */
NS_IMETHODIMP _MYCLASS_::OnMousePointerShapeChange(PRBool visible, PRBool alpha, PRUint32 xHot, PRUint32 yHot, PRUint32 width, PRUint32 height, PRUint8 * shape)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onMouseCapabilityChange (in boolean supportsAbsolute, in boolean needsHostCursor); */
NS_IMETHODIMP _MYCLASS_::OnMouseCapabilityChange(PRBool supportsAbsolute, PRBool needsHostCursor)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onKeyboardLedsChange (in boolean numLock, in boolean capsLock, in boolean scrollLock); */
NS_IMETHODIMP _MYCLASS_::OnKeyboardLedsChange(PRBool numLock, PRBool capsLock, PRBool scrollLock)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void onAdditionsStateChange (); */
NS_IMETHODIMP _MYCLASS_::OnAdditionsStateChange()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onDVDDriveChange (); */
NS_IMETHODIMP _MYCLASS_::OnDVDDriveChange()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onFloppyDriveChange (); */
NS_IMETHODIMP _MYCLASS_::OnFloppyDriveChange()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onNetworkAdapterChange (in INetworkAdapter networkAdapter); */
NS_IMETHODIMP _MYCLASS_::OnNetworkAdapterChange(INetworkAdapter *networkAdapter)
{
    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 onVRDPServerChange (); */
NS_IMETHODIMP _MYCLASS_::OnVRDPServerChange()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onUSBControllerChange (); */
NS_IMETHODIMP _MYCLASS_::OnUSBControllerChange()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onUSBDeviceStateChange (in IUSBDevice device, in boolean attached, in IVirtualBoxErrorInfo error); */
NS_IMETHODIMP _MYCLASS_::OnUSBDeviceStateChange(IUSBDevice *device, PRBool attached, IVirtualBoxErrorInfo *error)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onSharedFolderChange (in PRUint32 scope); */
NS_IMETHODIMP _MYCLASS_::OnSharedFolderChange(PRUint32 scope)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onRuntimeError (in boolean fatal, in wstring id, in wstring message); */
NS_IMETHODIMP _MYCLASS_::OnRuntimeError(PRBool fatal, const PRUnichar *id, const PRUnichar *message)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onCanShowWindow ([retval] out boolean canShow); */
NS_IMETHODIMP _MYCLASS_::OnCanShowWindow(PRBool *canShow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onShowWindow ([retval] out unsigned long long winId); */
NS_IMETHODIMP _MYCLASS_::OnShowWindow(PRUint64 *winId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IRemoteDisplayInfo */
#define IREMOTEDISPLAYINFO_IID_STR "550104cd-2dfd-4a6c-857d-f6f8e088e62c"

#define IREMOTEDISPLAYINFO_IID \
  {0x550104cd, 0x2dfd, 0x4a6c, \
    { 0x85, 0x7d, 0xf6, 0xf8, 0xe0, 0x88, 0xe6, 0x2c }}

class NS_NO_VTABLE IRemoteDisplayInfo : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IREMOTEDISPLAYINFO_IID)

  /* readonly attribute boolean active; */
  NS_IMETHOD GetActive(PRBool *aActive) = 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 unsigned long long bytesSent; */
  NS_IMETHOD GetBytesSent(PRUint64 *aBytesSent) = 0;

  /* readonly attribute unsigned long long bytesSentTotal; */
  NS_IMETHOD GetBytesSentTotal(PRUint64 *aBytesSentTotal) = 0;

  /* readonly attribute unsigned long long bytesReceived; */
  NS_IMETHOD GetBytesReceived(PRUint64 *aBytesReceived) = 0;

  /* readonly attribute unsigned long long bytesReceivedTotal; */
  NS_IMETHOD GetBytesReceivedTotal(PRUint64 *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_IREMOTEDISPLAYINFO \
  NS_IMETHOD GetActive(PRBool *aActive); \
  NS_IMETHOD GetNumberOfClients(PRUint32 *aNumberOfClients); \
  NS_IMETHOD GetBeginTime(PRInt64 *aBeginTime); \
  NS_IMETHOD GetEndTime(PRInt64 *aEndTime); \
  NS_IMETHOD GetBytesSent(PRUint64 *aBytesSent); \
  NS_IMETHOD GetBytesSentTotal(PRUint64 *aBytesSentTotal); \
  NS_IMETHOD GetBytesReceived(PRUint64 *aBytesReceived); \
  NS_IMETHOD GetBytesReceivedTotal(PRUint64 *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_IREMOTEDISPLAYINFO(_to) \
  NS_IMETHOD GetActive(PRBool *aActive) { return _to GetActive(aActive); } \
  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(PRUint64 *aBytesSent) { return _to GetBytesSent(aBytesSent); } \
  NS_IMETHOD GetBytesSentTotal(PRUint64 *aBytesSentTotal) { return _to GetBytesSentTotal(aBytesSentTotal); } \
  NS_IMETHOD GetBytesReceived(PRUint64 *aBytesReceived) { return _to GetBytesReceived(aBytesReceived); } \
  NS_IMETHOD GetBytesReceivedTotal(PRUint64 *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_IREMOTEDISPLAYINFO(_to) \
  NS_IMETHOD GetActive(PRBool *aActive) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetActive(aActive); } \
  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(PRUint64 *aBytesSent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBytesSent(aBytesSent); } \
  NS_IMETHOD GetBytesSentTotal(PRUint64 *aBytesSentTotal) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBytesSentTotal(aBytesSentTotal); } \
  NS_IMETHOD GetBytesReceived(PRUint64 *aBytesReceived) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBytesReceived(aBytesReceived); } \
  NS_IMETHOD GetBytesReceivedTotal(PRUint64 *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 IRemoteDisplayInfo
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IREMOTEDISPLAYINFO

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

_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 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 unsigned long long bytesSent; */
NS_IMETHODIMP _MYCLASS_::GetBytesSent(PRUint64 *aBytesSent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long long bytesSentTotal; */
NS_IMETHODIMP _MYCLASS_::GetBytesSentTotal(PRUint64 *aBytesSentTotal)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long long bytesReceived; */
NS_IMETHODIMP _MYCLASS_::GetBytesReceived(PRUint64 *aBytesReceived)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long long bytesReceivedTotal; */
NS_IMETHODIMP _MYCLASS_::GetBytesReceivedTotal(PRUint64 *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


/* starting interface:    IConsole */
#define ICONSOLE_IID_STR "d5a1cbda-f5d7-4824-9afe-d640c94c7dcf"

#define ICONSOLE_IID \
  {0xd5a1cbda, 0xf5d7, 0x4824, \
    { 0x9a, 0xfe, 0xd6, 0x40, 0xc9, 0x4c, 0x7d, 0xcf }}

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;

  /* readonly attribute IUSBDeviceCollection USBDevices; */
  NS_IMETHOD GetUSBDevices(IUSBDeviceCollection * *aUSBDevices) = 0;

  /* readonly attribute IHostUSBDeviceCollection remoteUSBDevices; */
  NS_IMETHOD GetRemoteUSBDevices(IHostUSBDeviceCollection * *aRemoteUSBDevices) = 0;

  /* readonly attribute ISharedFolderCollection sharedFolders; */
  NS_IMETHOD GetSharedFolders(ISharedFolderCollection * *aSharedFolders) = 0;

  /* readonly attribute IRemoteDisplayInfo remoteDisplayInfo; */
  NS_IMETHOD GetRemoteDisplayInfo(IRemoteDisplayInfo * *aRemoteDisplayInfo) = 0;

  /* void powerUp ([retval] out IProgress progress); */
  NS_IMETHOD PowerUp(IProgress **progress) = 0;

  /* void powerDown (); */
  NS_IMETHOD PowerDown(void) = 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 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 (); */
  NS_IMETHOD DiscardSavedState(void) = 0;

  /* void getDeviceActivity (in PRUint32 type, [retval] out PRUint32 activity); */
  NS_IMETHOD GetDeviceActivity(PRUint32 type, PRUint32 *activity) = 0;

  /* void attachUSBDevice (in nsIDRef id); */
  NS_IMETHOD AttachUSBDevice(const nsID & id) = 0;

  /* void detachUSBDevice (in nsIDRef id, [retval] out IUSBDevice device); */
  NS_IMETHOD DetachUSBDevice(const nsID & id, IUSBDevice **device) = 0;

  /* void createSharedFolder (in wstring name, in wstring hostPath, in boolean writable); */
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable) = 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 discardSnapshot (in nsIDRef id, [retval] out IProgress progress); */
  NS_IMETHOD DiscardSnapshot(const nsID & id, IProgress **progress) = 0;

  /* void discardCurrentState ([retval] out IProgress progress); */
  NS_IMETHOD DiscardCurrentState(IProgress **progress) = 0;

  /* void discardCurrentSnapshotAndState ([retval] out IProgress progress); */
  NS_IMETHOD DiscardCurrentSnapshotAndState(IProgress **progress) = 0;

  /* void registerCallback (in IConsoleCallback callback); */
  NS_IMETHOD RegisterCallback(IConsoleCallback *callback) = 0;

  /* void unregisterCallback (in IConsoleCallback callback); */
  NS_IMETHOD UnregisterCallback(IConsoleCallback *callback) = 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(IUSBDeviceCollection * *aUSBDevices); \
  NS_IMETHOD GetRemoteUSBDevices(IHostUSBDeviceCollection * *aRemoteUSBDevices); \
  NS_IMETHOD GetSharedFolders(ISharedFolderCollection * *aSharedFolders); \
  NS_IMETHOD GetRemoteDisplayInfo(IRemoteDisplayInfo * *aRemoteDisplayInfo); \
  NS_IMETHOD PowerUp(IProgress **progress); \
  NS_IMETHOD PowerDown(void); \
  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 SaveState(IProgress **progress); \
  NS_IMETHOD AdoptSavedState(const PRUnichar *savedStateFile); \
  NS_IMETHOD DiscardSavedState(void); \
  NS_IMETHOD GetDeviceActivity(PRUint32 type, PRUint32 *activity); \
  NS_IMETHOD AttachUSBDevice(const nsID & id); \
  NS_IMETHOD DetachUSBDevice(const nsID & id, IUSBDevice **device); \
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable); \
  NS_IMETHOD RemoveSharedFolder(const PRUnichar *name); \
  NS_IMETHOD TakeSnapshot(const PRUnichar *name, const PRUnichar *description, IProgress **progress); \
  NS_IMETHOD DiscardSnapshot(const nsID & id, IProgress **progress); \
  NS_IMETHOD DiscardCurrentState(IProgress **progress); \
  NS_IMETHOD DiscardCurrentSnapshotAndState(IProgress **progress); \
  NS_IMETHOD RegisterCallback(IConsoleCallback *callback); \
  NS_IMETHOD UnregisterCallback(IConsoleCallback *callback); 

/* 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(IUSBDeviceCollection * *aUSBDevices) { return _to GetUSBDevices(aUSBDevices); } \
  NS_IMETHOD GetRemoteUSBDevices(IHostUSBDeviceCollection * *aRemoteUSBDevices) { return _to GetRemoteUSBDevices(aRemoteUSBDevices); } \
  NS_IMETHOD GetSharedFolders(ISharedFolderCollection * *aSharedFolders) { return _to GetSharedFolders(aSharedFolders); } \
  NS_IMETHOD GetRemoteDisplayInfo(IRemoteDisplayInfo * *aRemoteDisplayInfo) { return _to GetRemoteDisplayInfo(aRemoteDisplayInfo); } \
  NS_IMETHOD PowerUp(IProgress **progress) { return _to PowerUp(progress); } \
  NS_IMETHOD PowerDown(void) { return _to PowerDown(); } \
  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 SaveState(IProgress **progress) { return _to SaveState(progress); } \
  NS_IMETHOD AdoptSavedState(const PRUnichar *savedStateFile) { return _to AdoptSavedState(savedStateFile); } \
  NS_IMETHOD DiscardSavedState(void) { return _to DiscardSavedState(); } \
  NS_IMETHOD GetDeviceActivity(PRUint32 type, PRUint32 *activity) { return _to GetDeviceActivity(type, activity); } \
  NS_IMETHOD AttachUSBDevice(const nsID & id) { return _to AttachUSBDevice(id); } \
  NS_IMETHOD DetachUSBDevice(const nsID & id, IUSBDevice **device) { return _to DetachUSBDevice(id, device); } \
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable) { return _to CreateSharedFolder(name, hostPath, writable); } \
  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 DiscardSnapshot(const nsID & id, IProgress **progress) { return _to DiscardSnapshot(id, progress); } \
  NS_IMETHOD DiscardCurrentState(IProgress **progress) { return _to DiscardCurrentState(progress); } \
  NS_IMETHOD DiscardCurrentSnapshotAndState(IProgress **progress) { return _to DiscardCurrentSnapshotAndState(progress); } \
  NS_IMETHOD RegisterCallback(IConsoleCallback *callback) { return _to RegisterCallback(callback); } \
  NS_IMETHOD UnregisterCallback(IConsoleCallback *callback) { return _to UnregisterCallback(callback); } 

/* 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(IUSBDeviceCollection * *aUSBDevices) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUSBDevices(aUSBDevices); } \
  NS_IMETHOD GetRemoteUSBDevices(IHostUSBDeviceCollection * *aRemoteUSBDevices) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRemoteUSBDevices(aRemoteUSBDevices); } \
  NS_IMETHOD GetSharedFolders(ISharedFolderCollection * *aSharedFolders) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSharedFolders(aSharedFolders); } \
  NS_IMETHOD GetRemoteDisplayInfo(IRemoteDisplayInfo * *aRemoteDisplayInfo) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRemoteDisplayInfo(aRemoteDisplayInfo); } \
  NS_IMETHOD PowerUp(IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->PowerUp(progress); } \
  NS_IMETHOD PowerDown(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->PowerDown(); } \
  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 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(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->DiscardSavedState(); } \
  NS_IMETHOD GetDeviceActivity(PRUint32 type, PRUint32 *activity) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDeviceActivity(type, activity); } \
  NS_IMETHOD AttachUSBDevice(const nsID & id) { return !_to ? NS_ERROR_NULL_POINTER : _to->AttachUSBDevice(id); } \
  NS_IMETHOD DetachUSBDevice(const nsID & id, IUSBDevice **device) { return !_to ? NS_ERROR_NULL_POINTER : _to->DetachUSBDevice(id, device); } \
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateSharedFolder(name, hostPath, writable); } \
  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 DiscardSnapshot(const nsID & id, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->DiscardSnapshot(id, progress); } \
  NS_IMETHOD DiscardCurrentState(IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->DiscardCurrentState(progress); } \
  NS_IMETHOD DiscardCurrentSnapshotAndState(IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->DiscardCurrentSnapshotAndState(progress); } \
  NS_IMETHOD RegisterCallback(IConsoleCallback *callback) { return !_to ? NS_ERROR_NULL_POINTER : _to->RegisterCallback(callback); } \
  NS_IMETHOD UnregisterCallback(IConsoleCallback *callback) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnregisterCallback(callback); } 

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

/* readonly attribute IUSBDeviceCollection USBDevices; */
NS_IMETHODIMP _MYCLASS_::GetUSBDevices(IUSBDeviceCollection * *aUSBDevices)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IHostUSBDeviceCollection remoteUSBDevices; */
NS_IMETHODIMP _MYCLASS_::GetRemoteUSBDevices(IHostUSBDeviceCollection * *aRemoteUSBDevices)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute ISharedFolderCollection sharedFolders; */
NS_IMETHODIMP _MYCLASS_::GetSharedFolders(ISharedFolderCollection * *aSharedFolders)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IRemoteDisplayInfo remoteDisplayInfo; */
NS_IMETHODIMP _MYCLASS_::GetRemoteDisplayInfo(IRemoteDisplayInfo * *aRemoteDisplayInfo)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void powerUp ([retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::PowerUp(IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void powerDown (); */
NS_IMETHODIMP _MYCLASS_::PowerDown()
{
    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 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 (); */
NS_IMETHODIMP _MYCLASS_::DiscardSavedState()
{
    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 nsIDRef id); */
NS_IMETHODIMP _MYCLASS_::AttachUSBDevice(const nsID & id)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void detachUSBDevice (in nsIDRef id, [retval] out IUSBDevice device); */
NS_IMETHODIMP _MYCLASS_::DetachUSBDevice(const nsID & id, IUSBDevice **device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createSharedFolder (in wstring name, in wstring hostPath, in boolean writable); */
NS_IMETHODIMP _MYCLASS_::CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable)
{
    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 discardSnapshot (in nsIDRef id, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::DiscardSnapshot(const nsID & id, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void discardCurrentState ([retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::DiscardCurrentState(IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void discardCurrentSnapshotAndState ([retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::DiscardCurrentSnapshotAndState(IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void registerCallback (in IConsoleCallback callback); */
NS_IMETHODIMP _MYCLASS_::RegisterCallback(IConsoleCallback *callback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unregisterCallback (in IConsoleCallback callback); */
NS_IMETHODIMP _MYCLASS_::UnregisterCallback(IConsoleCallback *callback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IHostDVDDrive */
#define IHOSTDVDDRIVE_IID_STR "21f86694-202d-4ce4-8b05-a63ff82dbf4c"

#define IHOSTDVDDRIVE_IID \
  {0x21f86694, 0x202d, 0x4ce4, \
    { 0x8b, 0x05, 0xa6, 0x3f, 0xf8, 0x2d, 0xbf, 0x4c }}

class NS_NO_VTABLE IHostDVDDrive : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOSTDVDDRIVE_IID)

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

  /* readonly attribute wstring description; */
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) = 0;

  /* readonly attribute wstring udi; */
  NS_IMETHOD GetUdi(PRUnichar * *aUdi) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOSTDVDDRIVE \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription); \
  NS_IMETHOD GetUdi(PRUnichar * *aUdi); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOSTDVDDRIVE(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return _to GetDescription(aDescription); } \
  NS_IMETHOD GetUdi(PRUnichar * *aUdi) { return _to GetUdi(aUdi); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHOSTDVDDRIVE(_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 GetUdi(PRUnichar * *aUdi) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUdi(aUdi); } 

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

/* Header file */
class _MYCLASS_ : public IHostDVDDrive
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHOSTDVDDRIVE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

_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 udi; */
NS_IMETHODIMP _MYCLASS_::GetUdi(PRUnichar * *aUdi)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IHostDVDDriveEnumerator */
#define IHOSTDVDDRIVEENUMERATOR_IID_STR "1ed7cfaf-c363-40df-aa4e-89c1afb7d96b"

#define IHOSTDVDDRIVEENUMERATOR_IID \
  {0x1ed7cfaf, 0xc363, 0x40df, \
    { 0xaa, 0x4e, 0x89, 0xc1, 0xaf, 0xb7, 0xd9, 0x6b }}

class NS_NO_VTABLE IHostDVDDriveEnumerator : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOSTDVDDRIVEENUMERATOR_IID)

  /* void hasMore ([retval] out boolean more); */
  NS_IMETHOD HasMore(PRBool *more) = 0;

  /* void getNext ([retval] out IHostDVDDrive next); */
  NS_IMETHOD GetNext(IHostDVDDrive **next) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOSTDVDDRIVEENUMERATOR \
  NS_IMETHOD HasMore(PRBool *more); \
  NS_IMETHOD GetNext(IHostDVDDrive **next); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOSTDVDDRIVEENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return _to HasMore(more); } \
  NS_IMETHOD GetNext(IHostDVDDrive **next) { return _to GetNext(next); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHOSTDVDDRIVEENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return !_to ? NS_ERROR_NULL_POINTER : _to->HasMore(more); } \
  NS_IMETHOD GetNext(IHostDVDDrive **next) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNext(next); } 

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

/* Header file */
class _MYCLASS_ : public IHostDVDDriveEnumerator
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHOSTDVDDRIVEENUMERATOR

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void hasMore ([retval] out boolean more); */
NS_IMETHODIMP _MYCLASS_::HasMore(PRBool *more)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNext ([retval] out IHostDVDDrive next); */
NS_IMETHODIMP _MYCLASS_::GetNext(IHostDVDDrive **next)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IHostDVDDriveCollection */
#define IHOSTDVDDRIVECOLLECTION_IID_STR "1909c533-1a1e-445f-a4e1-a267cffc30ed"

#define IHOSTDVDDRIVECOLLECTION_IID \
  {0x1909c533, 0x1a1e, 0x445f, \
    { 0xa4, 0xe1, 0xa2, 0x67, 0xcf, 0xfc, 0x30, 0xed }}

class NS_NO_VTABLE IHostDVDDriveCollection : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOSTDVDDRIVECOLLECTION_IID)

  /* readonly attribute unsigned long count; */
  NS_IMETHOD GetCount(PRUint32 *aCount) = 0;

  /* void getItemAt (in unsigned long index, [retval] out IHostDVDDrive item); */
  NS_IMETHOD GetItemAt(PRUint32 index, IHostDVDDrive **item) = 0;

  /* void enumerate ([retval] out IHostDVDDriveEnumerator enumerator); */
  NS_IMETHOD Enumerate(IHostDVDDriveEnumerator **enumerator) = 0;

  /* void findByName (in wstring name, [retval] out IHostDVDDrive drive); */
  NS_IMETHOD FindByName(const PRUnichar *name, IHostDVDDrive **drive) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOSTDVDDRIVECOLLECTION \
  NS_IMETHOD GetCount(PRUint32 *aCount); \
  NS_IMETHOD GetItemAt(PRUint32 index, IHostDVDDrive **item); \
  NS_IMETHOD Enumerate(IHostDVDDriveEnumerator **enumerator); \
  NS_IMETHOD FindByName(const PRUnichar *name, IHostDVDDrive **drive); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOSTDVDDRIVECOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return _to GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IHostDVDDrive **item) { return _to GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IHostDVDDriveEnumerator **enumerator) { return _to Enumerate(enumerator); } \
  NS_IMETHOD FindByName(const PRUnichar *name, IHostDVDDrive **drive) { return _to FindByName(name, drive); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHOSTDVDDRIVECOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IHostDVDDrive **item) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IHostDVDDriveEnumerator **enumerator) { return !_to ? NS_ERROR_NULL_POINTER : _to->Enumerate(enumerator); } \
  NS_IMETHOD FindByName(const PRUnichar *name, IHostDVDDrive **drive) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindByName(name, drive); } 

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

/* Header file */
class _MYCLASS_ : public IHostDVDDriveCollection
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHOSTDVDDRIVECOLLECTION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

_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 getItemAt (in unsigned long index, [retval] out IHostDVDDrive item); */
NS_IMETHODIMP _MYCLASS_::GetItemAt(PRUint32 index, IHostDVDDrive **item)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enumerate ([retval] out IHostDVDDriveEnumerator enumerator); */
NS_IMETHODIMP _MYCLASS_::Enumerate(IHostDVDDriveEnumerator **enumerator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findByName (in wstring name, [retval] out IHostDVDDrive drive); */
NS_IMETHODIMP _MYCLASS_::FindByName(const PRUnichar *name, IHostDVDDrive **drive)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IHostFloppyDrive */
#define IHOSTFLOPPYDRIVE_IID_STR "b6a4d1a9-4221-43c3-bd52-021a5daa9ed2"

#define IHOSTFLOPPYDRIVE_IID \
  {0xb6a4d1a9, 0x4221, 0x43c3, \
    { 0xbd, 0x52, 0x02, 0x1a, 0x5d, 0xaa, 0x9e, 0xd2 }}

class NS_NO_VTABLE IHostFloppyDrive : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOSTFLOPPYDRIVE_IID)

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

  /* readonly attribute wstring description; */
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) = 0;

  /* readonly attribute wstring udi; */
  NS_IMETHOD GetUdi(PRUnichar * *aUdi) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOSTFLOPPYDRIVE \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription); \
  NS_IMETHOD GetUdi(PRUnichar * *aUdi); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOSTFLOPPYDRIVE(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return _to GetDescription(aDescription); } \
  NS_IMETHOD GetUdi(PRUnichar * *aUdi) { return _to GetUdi(aUdi); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHOSTFLOPPYDRIVE(_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 GetUdi(PRUnichar * *aUdi) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUdi(aUdi); } 

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

/* Header file */
class _MYCLASS_ : public IHostFloppyDrive
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHOSTFLOPPYDRIVE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

_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 udi; */
NS_IMETHODIMP _MYCLASS_::GetUdi(PRUnichar * *aUdi)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IHostFloppyDriveEnumerator */
#define IHOSTFLOPPYDRIVEENUMERATOR_IID_STR "ce04c924-4f54-432a-9dec-11fddc3ea875"

#define IHOSTFLOPPYDRIVEENUMERATOR_IID \
  {0xce04c924, 0x4f54, 0x432a, \
    { 0x9d, 0xec, 0x11, 0xfd, 0xdc, 0x3e, 0xa8, 0x75 }}

class NS_NO_VTABLE IHostFloppyDriveEnumerator : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOSTFLOPPYDRIVEENUMERATOR_IID)

  /* void hasMore ([retval] out boolean more); */
  NS_IMETHOD HasMore(PRBool *more) = 0;

  /* void getNext ([retval] out IHostFloppyDrive next); */
  NS_IMETHOD GetNext(IHostFloppyDrive **next) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOSTFLOPPYDRIVEENUMERATOR \
  NS_IMETHOD HasMore(PRBool *more); \
  NS_IMETHOD GetNext(IHostFloppyDrive **next); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOSTFLOPPYDRIVEENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return _to HasMore(more); } \
  NS_IMETHOD GetNext(IHostFloppyDrive **next) { return _to GetNext(next); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHOSTFLOPPYDRIVEENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return !_to ? NS_ERROR_NULL_POINTER : _to->HasMore(more); } \
  NS_IMETHOD GetNext(IHostFloppyDrive **next) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNext(next); } 

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

/* Header file */
class _MYCLASS_ : public IHostFloppyDriveEnumerator
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHOSTFLOPPYDRIVEENUMERATOR

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void hasMore ([retval] out boolean more); */
NS_IMETHODIMP _MYCLASS_::HasMore(PRBool *more)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNext ([retval] out IHostFloppyDrive next); */
NS_IMETHODIMP _MYCLASS_::GetNext(IHostFloppyDrive **next)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IHostFloppyDriveCollection */
#define IHOSTFLOPPYDRIVECOLLECTION_IID_STR "fd84bb86-c59a-4037-a557-755ff263a460"

#define IHOSTFLOPPYDRIVECOLLECTION_IID \
  {0xfd84bb86, 0xc59a, 0x4037, \
    { 0xa5, 0x57, 0x75, 0x5f, 0xf2, 0x63, 0xa4, 0x60 }}

class NS_NO_VTABLE IHostFloppyDriveCollection : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOSTFLOPPYDRIVECOLLECTION_IID)

  /* readonly attribute unsigned long count; */
  NS_IMETHOD GetCount(PRUint32 *aCount) = 0;

  /* void getItemAt (in unsigned long index, [retval] out IHostFloppyDrive item); */
  NS_IMETHOD GetItemAt(PRUint32 index, IHostFloppyDrive **item) = 0;

  /* void enumerate ([retval] out IHostFloppyDriveEnumerator enumerator); */
  NS_IMETHOD Enumerate(IHostFloppyDriveEnumerator **enumerator) = 0;

  /* void findByName (in wstring name, [retval] out IHostFloppyDrive drive); */
  NS_IMETHOD FindByName(const PRUnichar *name, IHostFloppyDrive **drive) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOSTFLOPPYDRIVECOLLECTION \
  NS_IMETHOD GetCount(PRUint32 *aCount); \
  NS_IMETHOD GetItemAt(PRUint32 index, IHostFloppyDrive **item); \
  NS_IMETHOD Enumerate(IHostFloppyDriveEnumerator **enumerator); \
  NS_IMETHOD FindByName(const PRUnichar *name, IHostFloppyDrive **drive); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOSTFLOPPYDRIVECOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return _to GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IHostFloppyDrive **item) { return _to GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IHostFloppyDriveEnumerator **enumerator) { return _to Enumerate(enumerator); } \
  NS_IMETHOD FindByName(const PRUnichar *name, IHostFloppyDrive **drive) { return _to FindByName(name, drive); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHOSTFLOPPYDRIVECOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IHostFloppyDrive **item) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IHostFloppyDriveEnumerator **enumerator) { return !_to ? NS_ERROR_NULL_POINTER : _to->Enumerate(enumerator); } \
  NS_IMETHOD FindByName(const PRUnichar *name, IHostFloppyDrive **drive) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindByName(name, drive); } 

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

/* Header file */
class _MYCLASS_ : public IHostFloppyDriveCollection
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHOSTFLOPPYDRIVECOLLECTION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

_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 getItemAt (in unsigned long index, [retval] out IHostFloppyDrive item); */
NS_IMETHODIMP _MYCLASS_::GetItemAt(PRUint32 index, IHostFloppyDrive **item)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enumerate ([retval] out IHostFloppyDriveEnumerator enumerator); */
NS_IMETHODIMP _MYCLASS_::Enumerate(IHostFloppyDriveEnumerator **enumerator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findByName (in wstring name, [retval] out IHostFloppyDrive drive); */
NS_IMETHODIMP _MYCLASS_::FindByName(const PRUnichar *name, IHostFloppyDrive **drive)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IHost */
#define IHOST_IID_STR "81729c26-1aec-46f5-b7c0-cc7364738fdb"

#define IHOST_IID \
  {0x81729c26, 0x1aec, 0x46f5, \
    { 0xb7, 0xc0, 0xcc, 0x73, 0x64, 0x73, 0x8f, 0xdb }}

class NS_NO_VTABLE IHost : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOST_IID)

  /* readonly attribute IHostDVDDriveCollection DVDDrives; */
  NS_IMETHOD GetDVDDrives(IHostDVDDriveCollection * *aDVDDrives) = 0;

  /* readonly attribute IHostFloppyDriveCollection floppyDrives; */
  NS_IMETHOD GetFloppyDrives(IHostFloppyDriveCollection * *aFloppyDrives) = 0;

  /* readonly attribute IHostUSBDeviceCollection USBDevices; */
  NS_IMETHOD GetUSBDevices(IHostUSBDeviceCollection * *aUSBDevices) = 0;

  /* readonly attribute IHostUSBDeviceFilterCollection USBDeviceFilters; */
  NS_IMETHOD GetUSBDeviceFilters(IHostUSBDeviceFilterCollection * *aUSBDeviceFilters) = 0;

  /* readonly attribute unsigned long processorCount; */
  NS_IMETHOD GetProcessorCount(PRUint32 *aProcessorCount) = 0;

  /* readonly attribute unsigned long processorSpeed; */
  NS_IMETHOD GetProcessorSpeed(PRUint32 *aProcessorSpeed) = 0;

  /* readonly attribute wstring processorDescription; */
  NS_IMETHOD GetProcessorDescription(PRUnichar * *aProcessorDescription) = 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;

  /* 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, [retval] out IHostUSBDeviceFilter filter); */
  NS_IMETHOD RemoveUSBDeviceFilter(PRUint32 position, IHostUSBDeviceFilter **filter) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOST \
  NS_IMETHOD GetDVDDrives(IHostDVDDriveCollection * *aDVDDrives); \
  NS_IMETHOD GetFloppyDrives(IHostFloppyDriveCollection * *aFloppyDrives); \
  NS_IMETHOD GetUSBDevices(IHostUSBDeviceCollection * *aUSBDevices); \
  NS_IMETHOD GetUSBDeviceFilters(IHostUSBDeviceFilterCollection * *aUSBDeviceFilters); \
  NS_IMETHOD GetProcessorCount(PRUint32 *aProcessorCount); \
  NS_IMETHOD GetProcessorSpeed(PRUint32 *aProcessorSpeed); \
  NS_IMETHOD GetProcessorDescription(PRUnichar * *aProcessorDescription); \
  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 CreateUSBDeviceFilter(const PRUnichar *name, IHostUSBDeviceFilter **filter); \
  NS_IMETHOD InsertUSBDeviceFilter(PRUint32 position, IHostUSBDeviceFilter *filter); \
  NS_IMETHOD RemoveUSBDeviceFilter(PRUint32 position, IHostUSBDeviceFilter **filter); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOST(_to) \
  NS_IMETHOD GetDVDDrives(IHostDVDDriveCollection * *aDVDDrives) { return _to GetDVDDrives(aDVDDrives); } \
  NS_IMETHOD GetFloppyDrives(IHostFloppyDriveCollection * *aFloppyDrives) { return _to GetFloppyDrives(aFloppyDrives); } \
  NS_IMETHOD GetUSBDevices(IHostUSBDeviceCollection * *aUSBDevices) { return _to GetUSBDevices(aUSBDevices); } \
  NS_IMETHOD GetUSBDeviceFilters(IHostUSBDeviceFilterCollection * *aUSBDeviceFilters) { return _to GetUSBDeviceFilters(aUSBDeviceFilters); } \
  NS_IMETHOD GetProcessorCount(PRUint32 *aProcessorCount) { return _to GetProcessorCount(aProcessorCount); } \
  NS_IMETHOD GetProcessorSpeed(PRUint32 *aProcessorSpeed) { return _to GetProcessorSpeed(aProcessorSpeed); } \
  NS_IMETHOD GetProcessorDescription(PRUnichar * *aProcessorDescription) { return _to GetProcessorDescription(aProcessorDescription); } \
  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 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, IHostUSBDeviceFilter **filter) { return _to RemoveUSBDeviceFilter(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_IHOST(_to) \
  NS_IMETHOD GetDVDDrives(IHostDVDDriveCollection * *aDVDDrives) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDVDDrives(aDVDDrives); } \
  NS_IMETHOD GetFloppyDrives(IHostFloppyDriveCollection * *aFloppyDrives) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFloppyDrives(aFloppyDrives); } \
  NS_IMETHOD GetUSBDevices(IHostUSBDeviceCollection * *aUSBDevices) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUSBDevices(aUSBDevices); } \
  NS_IMETHOD GetUSBDeviceFilters(IHostUSBDeviceFilterCollection * *aUSBDeviceFilters) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUSBDeviceFilters(aUSBDeviceFilters); } \
  NS_IMETHOD GetProcessorCount(PRUint32 *aProcessorCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessorCount(aProcessorCount); } \
  NS_IMETHOD GetProcessorSpeed(PRUint32 *aProcessorSpeed) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessorSpeed(aProcessorSpeed); } \
  NS_IMETHOD GetProcessorDescription(PRUnichar * *aProcessorDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessorDescription(aProcessorDescription); } \
  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 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, IHostUSBDeviceFilter **filter) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveUSBDeviceFilter(position, filter); } 

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

/* readonly attribute IHostDVDDriveCollection DVDDrives; */
NS_IMETHODIMP _MYCLASS_::GetDVDDrives(IHostDVDDriveCollection * *aDVDDrives)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IHostFloppyDriveCollection floppyDrives; */
NS_IMETHODIMP _MYCLASS_::GetFloppyDrives(IHostFloppyDriveCollection * *aFloppyDrives)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IHostUSBDeviceCollection USBDevices; */
NS_IMETHODIMP _MYCLASS_::GetUSBDevices(IHostUSBDeviceCollection * *aUSBDevices)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IHostUSBDeviceFilterCollection USBDeviceFilters; */
NS_IMETHODIMP _MYCLASS_::GetUSBDeviceFilters(IHostUSBDeviceFilterCollection * *aUSBDeviceFilters)
{
    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 processorSpeed; */
NS_IMETHODIMP _MYCLASS_::GetProcessorSpeed(PRUint32 *aProcessorSpeed)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring processorDescription; */
NS_IMETHODIMP _MYCLASS_::GetProcessorDescription(PRUnichar * *aProcessorDescription)
{
    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;
}

/* 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, [retval] out IHostUSBDeviceFilter filter); */
NS_IMETHODIMP _MYCLASS_::RemoveUSBDeviceFilter(PRUint32 position, IHostUSBDeviceFilter **filter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    ISystemProperties */
#define ISYSTEMPROPERTIES_IID_STR "12c2e31e-247f-4d51-82e5-5b9d4a6c7d5b"

#define ISYSTEMPROPERTIES_IID \
  {0x12c2e31e, 0x247f, 0x4d51, \
    { 0x82, 0xe5, 0x5b, 0x9d, 0x4a, 0x6c, 0x7d, 0x5b }}

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 long maxVDISize; */
  NS_IMETHOD GetMaxVDISize(PRUint64 *aMaxVDISize) = 0;

  /* readonly attribute unsigned long networkAdapterCount; */
  NS_IMETHOD GetNetworkAdapterCount(PRUint32 *aNetworkAdapterCount) = 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 defaultVDIFolder; */
  NS_IMETHOD GetDefaultVDIFolder(PRUnichar * *aDefaultVDIFolder) = 0;
  NS_IMETHOD SetDefaultVDIFolder(const PRUnichar * aDefaultVDIFolder) = 0;

  /* attribute wstring defaultMachineFolder; */
  NS_IMETHOD GetDefaultMachineFolder(PRUnichar * *aDefaultMachineFolder) = 0;
  NS_IMETHOD SetDefaultMachineFolder(const PRUnichar * aDefaultMachineFolder) = 0;

  /* attribute wstring remoteDisplayAuthLibrary; */
  NS_IMETHOD GetRemoteDisplayAuthLibrary(PRUnichar * *aRemoteDisplayAuthLibrary) = 0;
  NS_IMETHOD SetRemoteDisplayAuthLibrary(const PRUnichar * aRemoteDisplayAuthLibrary) = 0;

  /* attribute wstring webServiceAuthLibrary; */
  NS_IMETHOD GetWebServiceAuthLibrary(PRUnichar * *aWebServiceAuthLibrary) = 0;
  NS_IMETHOD SetWebServiceAuthLibrary(const PRUnichar * aWebServiceAuthLibrary) = 0;

  /* attribute boolean HWVirtExEnabled; */
  NS_IMETHOD GetHWVirtExEnabled(PRBool *aHWVirtExEnabled) = 0;
  NS_IMETHOD SetHWVirtExEnabled(PRBool aHWVirtExEnabled) = 0;

  /* attribute unsigned long LogHistoryCount; */
  NS_IMETHOD GetLogHistoryCount(PRUint32 *aLogHistoryCount) = 0;
  NS_IMETHOD SetLogHistoryCount(PRUint32 aLogHistoryCount) = 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 GetMaxVDISize(PRUint64 *aMaxVDISize); \
  NS_IMETHOD GetNetworkAdapterCount(PRUint32 *aNetworkAdapterCount); \
  NS_IMETHOD GetSerialPortCount(PRUint32 *aSerialPortCount); \
  NS_IMETHOD GetParallelPortCount(PRUint32 *aParallelPortCount); \
  NS_IMETHOD GetMaxBootPosition(PRUint32 *aMaxBootPosition); \
  NS_IMETHOD GetDefaultVDIFolder(PRUnichar * *aDefaultVDIFolder); \
  NS_IMETHOD SetDefaultVDIFolder(const PRUnichar * aDefaultVDIFolder); \
  NS_IMETHOD GetDefaultMachineFolder(PRUnichar * *aDefaultMachineFolder); \
  NS_IMETHOD SetDefaultMachineFolder(const PRUnichar * aDefaultMachineFolder); \
  NS_IMETHOD GetRemoteDisplayAuthLibrary(PRUnichar * *aRemoteDisplayAuthLibrary); \
  NS_IMETHOD SetRemoteDisplayAuthLibrary(const PRUnichar * aRemoteDisplayAuthLibrary); \
  NS_IMETHOD GetWebServiceAuthLibrary(PRUnichar * *aWebServiceAuthLibrary); \
  NS_IMETHOD SetWebServiceAuthLibrary(const PRUnichar * aWebServiceAuthLibrary); \
  NS_IMETHOD GetHWVirtExEnabled(PRBool *aHWVirtExEnabled); \
  NS_IMETHOD SetHWVirtExEnabled(PRBool aHWVirtExEnabled); \
  NS_IMETHOD GetLogHistoryCount(PRUint32 *aLogHistoryCount); \
  NS_IMETHOD SetLogHistoryCount(PRUint32 aLogHistoryCount); 

/* 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 GetMaxVDISize(PRUint64 *aMaxVDISize) { return _to GetMaxVDISize(aMaxVDISize); } \
  NS_IMETHOD GetNetworkAdapterCount(PRUint32 *aNetworkAdapterCount) { return _to GetNetworkAdapterCount(aNetworkAdapterCount); } \
  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 GetDefaultVDIFolder(PRUnichar * *aDefaultVDIFolder) { return _to GetDefaultVDIFolder(aDefaultVDIFolder); } \
  NS_IMETHOD SetDefaultVDIFolder(const PRUnichar * aDefaultVDIFolder) { return _to SetDefaultVDIFolder(aDefaultVDIFolder); } \
  NS_IMETHOD GetDefaultMachineFolder(PRUnichar * *aDefaultMachineFolder) { return _to GetDefaultMachineFolder(aDefaultMachineFolder); } \
  NS_IMETHOD SetDefaultMachineFolder(const PRUnichar * aDefaultMachineFolder) { return _to SetDefaultMachineFolder(aDefaultMachineFolder); } \
  NS_IMETHOD GetRemoteDisplayAuthLibrary(PRUnichar * *aRemoteDisplayAuthLibrary) { return _to GetRemoteDisplayAuthLibrary(aRemoteDisplayAuthLibrary); } \
  NS_IMETHOD SetRemoteDisplayAuthLibrary(const PRUnichar * aRemoteDisplayAuthLibrary) { return _to SetRemoteDisplayAuthLibrary(aRemoteDisplayAuthLibrary); } \
  NS_IMETHOD GetWebServiceAuthLibrary(PRUnichar * *aWebServiceAuthLibrary) { return _to GetWebServiceAuthLibrary(aWebServiceAuthLibrary); } \
  NS_IMETHOD SetWebServiceAuthLibrary(const PRUnichar * aWebServiceAuthLibrary) { return _to SetWebServiceAuthLibrary(aWebServiceAuthLibrary); } \
  NS_IMETHOD GetHWVirtExEnabled(PRBool *aHWVirtExEnabled) { return _to GetHWVirtExEnabled(aHWVirtExEnabled); } \
  NS_IMETHOD SetHWVirtExEnabled(PRBool aHWVirtExEnabled) { return _to SetHWVirtExEnabled(aHWVirtExEnabled); } \
  NS_IMETHOD GetLogHistoryCount(PRUint32 *aLogHistoryCount) { return _to GetLogHistoryCount(aLogHistoryCount); } \
  NS_IMETHOD SetLogHistoryCount(PRUint32 aLogHistoryCount) { return _to SetLogHistoryCount(aLogHistoryCount); } 

/* 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 GetMaxVDISize(PRUint64 *aMaxVDISize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxVDISize(aMaxVDISize); } \
  NS_IMETHOD GetNetworkAdapterCount(PRUint32 *aNetworkAdapterCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworkAdapterCount(aNetworkAdapterCount); } \
  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 GetDefaultVDIFolder(PRUnichar * *aDefaultVDIFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDefaultVDIFolder(aDefaultVDIFolder); } \
  NS_IMETHOD SetDefaultVDIFolder(const PRUnichar * aDefaultVDIFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDefaultVDIFolder(aDefaultVDIFolder); } \
  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 GetRemoteDisplayAuthLibrary(PRUnichar * *aRemoteDisplayAuthLibrary) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRemoteDisplayAuthLibrary(aRemoteDisplayAuthLibrary); } \
  NS_IMETHOD SetRemoteDisplayAuthLibrary(const PRUnichar * aRemoteDisplayAuthLibrary) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRemoteDisplayAuthLibrary(aRemoteDisplayAuthLibrary); } \
  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 GetHWVirtExEnabled(PRBool *aHWVirtExEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHWVirtExEnabled(aHWVirtExEnabled); } \
  NS_IMETHOD SetHWVirtExEnabled(PRBool aHWVirtExEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHWVirtExEnabled(aHWVirtExEnabled); } \
  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); } 

#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 long maxVDISize; */
NS_IMETHODIMP _MYCLASS_::GetMaxVDISize(PRUint64 *aMaxVDISize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long networkAdapterCount; */
NS_IMETHODIMP _MYCLASS_::GetNetworkAdapterCount(PRUint32 *aNetworkAdapterCount)
{
    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 defaultVDIFolder; */
NS_IMETHODIMP _MYCLASS_::GetDefaultVDIFolder(PRUnichar * *aDefaultVDIFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDefaultVDIFolder(const PRUnichar * aDefaultVDIFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring defaultMachineFolder; */
NS_IMETHODIMP _MYCLASS_::GetDefaultMachineFolder(PRUnichar * *aDefaultMachineFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDefaultMachineFolder(const PRUnichar * aDefaultMachineFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring remoteDisplayAuthLibrary; */
NS_IMETHODIMP _MYCLASS_::GetRemoteDisplayAuthLibrary(PRUnichar * *aRemoteDisplayAuthLibrary)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetRemoteDisplayAuthLibrary(const PRUnichar * aRemoteDisplayAuthLibrary)
{
    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 boolean HWVirtExEnabled; */
NS_IMETHODIMP _MYCLASS_::GetHWVirtExEnabled(PRBool *aHWVirtExEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetHWVirtExEnabled(PRBool aHWVirtExEnabled)
{
    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;
}

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


/* starting interface:    IGuestOSType */
#define IGUESTOSTYPE_IID_STR "da94f478-1f37-4726-b750-2235950dc2fe"

#define IGUESTOSTYPE_IID \
  {0xda94f478, 0x1f37, 0x4726, \
    { 0xb7, 0x50, 0x22, 0x35, 0x95, 0x0d, 0xc2, 0xfe }}

class NS_NO_VTABLE IGuestOSType : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTOSTYPE_IID)

  /* readonly attribute wstring id; */
  NS_IMETHOD GetId(PRUnichar * *aId) = 0;

  /* readonly attribute wstring description; */
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) = 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 unsigned long recommendedHDD; */
  NS_IMETHOD GetRecommendedHDD(PRUint32 *aRecommendedHDD) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTOSTYPE \
  NS_IMETHOD GetId(PRUnichar * *aId); \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription); \
  NS_IMETHOD GetRecommendedRAM(PRUint32 *aRecommendedRAM); \
  NS_IMETHOD GetRecommendedVRAM(PRUint32 *aRecommendedVRAM); \
  NS_IMETHOD GetRecommendedHDD(PRUint32 *aRecommendedHDD); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTOSTYPE(_to) \
  NS_IMETHOD GetId(PRUnichar * *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return _to GetDescription(aDescription); } \
  NS_IMETHOD GetRecommendedRAM(PRUint32 *aRecommendedRAM) { return _to GetRecommendedRAM(aRecommendedRAM); } \
  NS_IMETHOD GetRecommendedVRAM(PRUint32 *aRecommendedVRAM) { return _to GetRecommendedVRAM(aRecommendedVRAM); } \
  NS_IMETHOD GetRecommendedHDD(PRUint32 *aRecommendedHDD) { return _to GetRecommendedHDD(aRecommendedHDD); } 

/* 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 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 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(PRUint32 *aRecommendedHDD) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedHDD(aRecommendedHDD); } 

#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 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 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 unsigned long recommendedHDD; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedHDD(PRUint32 *aRecommendedHDD)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IGuestOSTypeEnumerator */
#define IGUESTOSTYPEENUMERATOR_IID_STR "a3335e02-4669-4e3c-80c7-c4dc7056a07c"

#define IGUESTOSTYPEENUMERATOR_IID \
  {0xa3335e02, 0x4669, 0x4e3c, \
    { 0x80, 0xc7, 0xc4, 0xdc, 0x70, 0x56, 0xa0, 0x7c }}

class NS_NO_VTABLE IGuestOSTypeEnumerator : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTOSTYPEENUMERATOR_IID)

  /* void hasMore ([retval] out boolean more); */
  NS_IMETHOD HasMore(PRBool *more) = 0;

  /* void getNext ([retval] out IGuestOSType next); */
  NS_IMETHOD GetNext(IGuestOSType **next) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTOSTYPEENUMERATOR \
  NS_IMETHOD HasMore(PRBool *more); \
  NS_IMETHOD GetNext(IGuestOSType **next); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTOSTYPEENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return _to HasMore(more); } \
  NS_IMETHOD GetNext(IGuestOSType **next) { return _to GetNext(next); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTOSTYPEENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return !_to ? NS_ERROR_NULL_POINTER : _to->HasMore(more); } \
  NS_IMETHOD GetNext(IGuestOSType **next) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNext(next); } 

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

/* Header file */
class _MYCLASS_ : public IGuestOSTypeEnumerator
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTOSTYPEENUMERATOR

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void hasMore ([retval] out boolean more); */
NS_IMETHODIMP _MYCLASS_::HasMore(PRBool *more)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNext ([retval] out IGuestOSType next); */
NS_IMETHODIMP _MYCLASS_::GetNext(IGuestOSType **next)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IGuestOSTypeCollection */
#define IGUESTOSTYPECOLLECTION_IID_STR "a5e36749-a610-498b-9f29-2e36c1042d65"

#define IGUESTOSTYPECOLLECTION_IID \
  {0xa5e36749, 0xa610, 0x498b, \
    { 0x9f, 0x29, 0x2e, 0x36, 0xc1, 0x04, 0x2d, 0x65 }}

class NS_NO_VTABLE IGuestOSTypeCollection : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTOSTYPECOLLECTION_IID)

  /* readonly attribute unsigned long count; */
  NS_IMETHOD GetCount(PRUint32 *aCount) = 0;

  /* void getItemAt (in unsigned long index, [retval] out IGuestOSType item); */
  NS_IMETHOD GetItemAt(PRUint32 index, IGuestOSType **item) = 0;

  /* void enumerate ([retval] out IGuestOSTypeEnumerator enumerator); */
  NS_IMETHOD Enumerate(IGuestOSTypeEnumerator **enumerator) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTOSTYPECOLLECTION \
  NS_IMETHOD GetCount(PRUint32 *aCount); \
  NS_IMETHOD GetItemAt(PRUint32 index, IGuestOSType **item); \
  NS_IMETHOD Enumerate(IGuestOSTypeEnumerator **enumerator); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTOSTYPECOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return _to GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IGuestOSType **item) { return _to GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IGuestOSTypeEnumerator **enumerator) { return _to Enumerate(enumerator); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTOSTYPECOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IGuestOSType **item) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IGuestOSTypeEnumerator **enumerator) { return !_to ? NS_ERROR_NULL_POINTER : _to->Enumerate(enumerator); } 

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

/* Header file */
class _MYCLASS_ : public IGuestOSTypeCollection
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTOSTYPECOLLECTION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

_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 getItemAt (in unsigned long index, [retval] out IGuestOSType item); */
NS_IMETHODIMP _MYCLASS_::GetItemAt(PRUint32 index, IGuestOSType **item)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enumerate ([retval] out IGuestOSTypeEnumerator enumerator); */
NS_IMETHODIMP _MYCLASS_::Enumerate(IGuestOSTypeEnumerator **enumerator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IGuest */
#define IGUEST_IID_STR "d8556fca-81bc-12af-fca3-365528fa38ca"

#define IGUEST_IID \
  {0xd8556fca, 0x81bc, 0x12af, \
    { 0xfc, 0xa3, 0x36, 0x55, 0x28, 0xfa, 0x38, 0xca }}

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 boolean additionsActive; */
  NS_IMETHOD GetAdditionsActive(PRBool *aAdditionsActive) = 0;

  /* readonly attribute wstring additionsVersion; */
  NS_IMETHOD GetAdditionsVersion(PRUnichar * *aAdditionsVersion) = 0;

  /* readonly attribute boolean supportsSeamless; */
  NS_IMETHOD GetSupportsSeamless(PRBool *aSupportsSeamless) = 0;

  /* readonly attribute boolean supportsGraphics; */
  NS_IMETHOD GetSupportsGraphics(PRBool *aSupportsGraphics) = 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 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 getStatistic (in unsigned long cpuId, in PRUint32 statistic, out unsigned long statVal); */
  NS_IMETHOD GetStatistic(PRUint32 cpuId, PRUint32 statistic, PRUint32 *statVal) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUEST \
  NS_IMETHOD GetOSTypeId(PRUnichar * *aOSTypeId); \
  NS_IMETHOD GetAdditionsActive(PRBool *aAdditionsActive); \
  NS_IMETHOD GetAdditionsVersion(PRUnichar * *aAdditionsVersion); \
  NS_IMETHOD GetSupportsSeamless(PRBool *aSupportsSeamless); \
  NS_IMETHOD GetSupportsGraphics(PRBool *aSupportsGraphics); \
  NS_IMETHOD GetMemoryBalloonSize(PRUint32 *aMemoryBalloonSize); \
  NS_IMETHOD SetMemoryBalloonSize(PRUint32 aMemoryBalloonSize); \
  NS_IMETHOD GetStatisticsUpdateInterval(PRUint32 *aStatisticsUpdateInterval); \
  NS_IMETHOD SetStatisticsUpdateInterval(PRUint32 aStatisticsUpdateInterval); \
  NS_IMETHOD SetCredentials(const PRUnichar *userName, const PRUnichar *password, const PRUnichar *domain, PRBool allowInteractiveLogon); \
  NS_IMETHOD GetStatistic(PRUint32 cpuId, PRUint32 statistic, PRUint32 *statVal); 

/* 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 GetAdditionsActive(PRBool *aAdditionsActive) { return _to GetAdditionsActive(aAdditionsActive); } \
  NS_IMETHOD GetAdditionsVersion(PRUnichar * *aAdditionsVersion) { return _to GetAdditionsVersion(aAdditionsVersion); } \
  NS_IMETHOD GetSupportsSeamless(PRBool *aSupportsSeamless) { return _to GetSupportsSeamless(aSupportsSeamless); } \
  NS_IMETHOD GetSupportsGraphics(PRBool *aSupportsGraphics) { return _to GetSupportsGraphics(aSupportsGraphics); } \
  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 SetCredentials(const PRUnichar *userName, const PRUnichar *password, const PRUnichar *domain, PRBool allowInteractiveLogon) { return _to SetCredentials(userName, password, domain, allowInteractiveLogon); } \
  NS_IMETHOD GetStatistic(PRUint32 cpuId, PRUint32 statistic, PRUint32 *statVal) { return _to GetStatistic(cpuId, statistic, statVal); } 

/* 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 GetAdditionsActive(PRBool *aAdditionsActive) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAdditionsActive(aAdditionsActive); } \
  NS_IMETHOD GetAdditionsVersion(PRUnichar * *aAdditionsVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAdditionsVersion(aAdditionsVersion); } \
  NS_IMETHOD GetSupportsSeamless(PRBool *aSupportsSeamless) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSupportsSeamless(aSupportsSeamless); } \
  NS_IMETHOD GetSupportsGraphics(PRBool *aSupportsGraphics) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSupportsGraphics(aSupportsGraphics); } \
  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 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 GetStatistic(PRUint32 cpuId, PRUint32 statistic, PRUint32 *statVal) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStatistic(cpuId, statistic, statVal); } 

#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 boolean additionsActive; */
NS_IMETHODIMP _MYCLASS_::GetAdditionsActive(PRBool *aAdditionsActive)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring additionsVersion; */
NS_IMETHODIMP _MYCLASS_::GetAdditionsVersion(PRUnichar * *aAdditionsVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean supportsSeamless; */
NS_IMETHODIMP _MYCLASS_::GetSupportsSeamless(PRBool *aSupportsSeamless)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean supportsGraphics; */
NS_IMETHODIMP _MYCLASS_::GetSupportsGraphics(PRBool *aSupportsGraphics)
{
    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 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 getStatistic (in unsigned long cpuId, in PRUint32 statistic, out unsigned long statVal); */
NS_IMETHODIMP _MYCLASS_::GetStatistic(PRUint32 cpuId, PRUint32 statistic, PRUint32 *statVal)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IProgressEnumerator */
#define IPROGRESSENUMERATOR_IID_STR "e0380522-4ef1-48f4-856c-e455177ccb2d"

#define IPROGRESSENUMERATOR_IID \
  {0xe0380522, 0x4ef1, 0x48f4, \
    { 0x85, 0x6c, 0xe4, 0x55, 0x17, 0x7c, 0xcb, 0x2d }}

class NS_NO_VTABLE IProgressEnumerator : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IPROGRESSENUMERATOR_IID)

  /* void hasMore ([retval] out boolean more); */
  NS_IMETHOD HasMore(PRBool *more) = 0;

  /* void getNext ([retval] out IProgress next); */
  NS_IMETHOD GetNext(IProgress **next) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IPROGRESSENUMERATOR \
  NS_IMETHOD HasMore(PRBool *more); \
  NS_IMETHOD GetNext(IProgress **next); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IPROGRESSENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return _to HasMore(more); } \
  NS_IMETHOD GetNext(IProgress **next) { return _to GetNext(next); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IPROGRESSENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return !_to ? NS_ERROR_NULL_POINTER : _to->HasMore(more); } \
  NS_IMETHOD GetNext(IProgress **next) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNext(next); } 

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

/* Header file */
class _MYCLASS_ : public IProgressEnumerator
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IPROGRESSENUMERATOR

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void hasMore ([retval] out boolean more); */
NS_IMETHODIMP _MYCLASS_::HasMore(PRBool *more)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNext ([retval] out IProgress next); */
NS_IMETHODIMP _MYCLASS_::GetNext(IProgress **next)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IProgressCollection */
#define IPROGRESSCOLLECTION_IID_STR "78b76a7c-f0f2-467c-9f0e-f089a54ee957"

#define IPROGRESSCOLLECTION_IID \
  {0x78b76a7c, 0xf0f2, 0x467c, \
    { 0x9f, 0x0e, 0xf0, 0x89, 0xa5, 0x4e, 0xe9, 0x57 }}

class NS_NO_VTABLE IProgressCollection : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IPROGRESSCOLLECTION_IID)

  /* readonly attribute unsigned long count; */
  NS_IMETHOD GetCount(PRUint32 *aCount) = 0;

  /* void getItemAt (in unsigned long index, [retval] out IProgress item); */
  NS_IMETHOD GetItemAt(PRUint32 index, IProgress **item) = 0;

  /* void enumerate ([retval] out IProgressEnumerator enumerator); */
  NS_IMETHOD Enumerate(IProgressEnumerator **enumerator) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IPROGRESSCOLLECTION \
  NS_IMETHOD GetCount(PRUint32 *aCount); \
  NS_IMETHOD GetItemAt(PRUint32 index, IProgress **item); \
  NS_IMETHOD Enumerate(IProgressEnumerator **enumerator); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IPROGRESSCOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return _to GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IProgress **item) { return _to GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IProgressEnumerator **enumerator) { return _to Enumerate(enumerator); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IPROGRESSCOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IProgress **item) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IProgressEnumerator **enumerator) { return !_to ? NS_ERROR_NULL_POINTER : _to->Enumerate(enumerator); } 

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

/* Header file */
class _MYCLASS_ : public IProgressCollection
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IPROGRESSCOLLECTION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

_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 getItemAt (in unsigned long index, [retval] out IProgress item); */
NS_IMETHODIMP _MYCLASS_::GetItemAt(PRUint32 index, IProgress **item)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enumerate ([retval] out IProgressEnumerator enumerator); */
NS_IMETHODIMP _MYCLASS_::Enumerate(IProgressEnumerator **enumerator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IProgress */
#define IPROGRESS_IID_STR "10cc03a1-717e-429b-992d-c67b56175a51"

#define IPROGRESS_IID \
  {0x10cc03a1, 0x717e, 0x429b, \
    { 0x99, 0x2d, 0xc6, 0x7b, 0x56, 0x17, 0x5a, 0x51 }}

class NS_NO_VTABLE IProgress : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IPROGRESS_IID)

  /* readonly attribute nsIDPtr id; */
  NS_IMETHOD GetId(nsID * *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 long percent; */
  NS_IMETHOD GetPercent(PRInt32 *aPercent) = 0;

  /* readonly attribute boolean completed; */
  NS_IMETHOD GetCompleted(PRBool *aCompleted) = 0;

  /* readonly attribute boolean canceled; */
  NS_IMETHOD GetCanceled(PRBool *aCanceled) = 0;

  /* readonly attribute nsresult resultCode; */
  NS_IMETHOD GetResultCode(nsresult *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 long operationPercent; */
  NS_IMETHOD GetOperationPercent(PRInt32 *aOperationPercent) = 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 cancel (); */
  NS_IMETHOD Cancel(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IPROGRESS \
  NS_IMETHOD GetId(nsID * *aId); \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription); \
  NS_IMETHOD GetInitiator(nsISupports * *aInitiator); \
  NS_IMETHOD GetCancelable(PRBool *aCancelable); \
  NS_IMETHOD GetPercent(PRInt32 *aPercent); \
  NS_IMETHOD GetCompleted(PRBool *aCompleted); \
  NS_IMETHOD GetCanceled(PRBool *aCanceled); \
  NS_IMETHOD GetResultCode(nsresult *aResultCode); \
  NS_IMETHOD GetErrorInfo(IVirtualBoxErrorInfo * *aErrorInfo); \
  NS_IMETHOD GetOperationCount(PRUint32 *aOperationCount); \
  NS_IMETHOD GetOperation(PRUint32 *aOperation); \
  NS_IMETHOD GetOperationDescription(PRUnichar * *aOperationDescription); \
  NS_IMETHOD GetOperationPercent(PRInt32 *aOperationPercent); \
  NS_IMETHOD WaitForCompletion(PRInt32 timeout); \
  NS_IMETHOD WaitForOperationCompletion(PRUint32 operation, PRInt32 timeout); \
  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(nsID * *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(PRInt32 *aPercent) { return _to GetPercent(aPercent); } \
  NS_IMETHOD GetCompleted(PRBool *aCompleted) { return _to GetCompleted(aCompleted); } \
  NS_IMETHOD GetCanceled(PRBool *aCanceled) { return _to GetCanceled(aCanceled); } \
  NS_IMETHOD GetResultCode(nsresult *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(PRInt32 *aOperationPercent) { return _to GetOperationPercent(aOperationPercent); } \
  NS_IMETHOD WaitForCompletion(PRInt32 timeout) { return _to WaitForCompletion(timeout); } \
  NS_IMETHOD WaitForOperationCompletion(PRUint32 operation, PRInt32 timeout) { return _to WaitForOperationCompletion(operation, timeout); } \
  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(nsID * *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(PRInt32 *aPercent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPercent(aPercent); } \
  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(nsresult *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(PRInt32 *aOperationPercent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOperationPercent(aOperationPercent); } \
  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 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 nsIDPtr id; */
NS_IMETHODIMP _MYCLASS_::GetId(nsID * *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 long percent; */
NS_IMETHODIMP _MYCLASS_::GetPercent(PRInt32 *aPercent)
{
    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 nsresult resultCode; */
NS_IMETHODIMP _MYCLASS_::GetResultCode(nsresult *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 long operationPercent; */
NS_IMETHODIMP _MYCLASS_::GetOperationPercent(PRInt32 *aOperationPercent)
{
    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 cancel (); */
NS_IMETHODIMP _MYCLASS_::Cancel()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    ISnapshotEnumerator */
#define ISNAPSHOTENUMERATOR_IID_STR "25cfa2a4-1f1d-4f05-9658-b7a5894ef1a3"

#define ISNAPSHOTENUMERATOR_IID \
  {0x25cfa2a4, 0x1f1d, 0x4f05, \
    { 0x96, 0x58, 0xb7, 0xa5, 0x89, 0x4e, 0xf1, 0xa3 }}

class NS_NO_VTABLE ISnapshotEnumerator : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISNAPSHOTENUMERATOR_IID)

  /* void hasMore ([retval] out boolean more); */
  NS_IMETHOD HasMore(PRBool *more) = 0;

  /* void getNext ([retval] out ISnapshot next); */
  NS_IMETHOD GetNext(ISnapshot **next) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISNAPSHOTENUMERATOR \
  NS_IMETHOD HasMore(PRBool *more); \
  NS_IMETHOD GetNext(ISnapshot **next); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISNAPSHOTENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return _to HasMore(more); } \
  NS_IMETHOD GetNext(ISnapshot **next) { return _to GetNext(next); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISNAPSHOTENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return !_to ? NS_ERROR_NULL_POINTER : _to->HasMore(more); } \
  NS_IMETHOD GetNext(ISnapshot **next) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNext(next); } 

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

/* Header file */
class _MYCLASS_ : public ISnapshotEnumerator
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISNAPSHOTENUMERATOR

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void hasMore ([retval] out boolean more); */
NS_IMETHODIMP _MYCLASS_::HasMore(PRBool *more)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNext ([retval] out ISnapshot next); */
NS_IMETHODIMP _MYCLASS_::GetNext(ISnapshot **next)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    ISnapshotCollection */
#define ISNAPSHOTCOLLECTION_IID_STR "23852e3c-94cd-4801-ab05-ed35675b3894"

#define ISNAPSHOTCOLLECTION_IID \
  {0x23852e3c, 0x94cd, 0x4801, \
    { 0xab, 0x05, 0xed, 0x35, 0x67, 0x5b, 0x38, 0x94 }}

class NS_NO_VTABLE ISnapshotCollection : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISNAPSHOTCOLLECTION_IID)

  /* readonly attribute unsigned long count; */
  NS_IMETHOD GetCount(PRUint32 *aCount) = 0;

  /* void getItemAt (in unsigned long index, [retval] out ISnapshot item); */
  NS_IMETHOD GetItemAt(PRUint32 index, ISnapshot **item) = 0;

  /* void enumerate ([retval] out ISnapshotEnumerator enumerator); */
  NS_IMETHOD Enumerate(ISnapshotEnumerator **enumerator) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISNAPSHOTCOLLECTION \
  NS_IMETHOD GetCount(PRUint32 *aCount); \
  NS_IMETHOD GetItemAt(PRUint32 index, ISnapshot **item); \
  NS_IMETHOD Enumerate(ISnapshotEnumerator **enumerator); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISNAPSHOTCOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return _to GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, ISnapshot **item) { return _to GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(ISnapshotEnumerator **enumerator) { return _to Enumerate(enumerator); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISNAPSHOTCOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, ISnapshot **item) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(ISnapshotEnumerator **enumerator) { return !_to ? NS_ERROR_NULL_POINTER : _to->Enumerate(enumerator); } 

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

/* Header file */
class _MYCLASS_ : public ISnapshotCollection
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISNAPSHOTCOLLECTION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

_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 getItemAt (in unsigned long index, [retval] out ISnapshot item); */
NS_IMETHODIMP _MYCLASS_::GetItemAt(PRUint32 index, ISnapshot **item)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enumerate ([retval] out ISnapshotEnumerator enumerator); */
NS_IMETHODIMP _MYCLASS_::Enumerate(ISnapshotEnumerator **enumerator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    ISnapshot */
#define ISNAPSHOT_IID_STR "9f1bbf79-13b0-4da2-abba-4a992c65c083"

#define ISNAPSHOT_IID \
  {0x9f1bbf79, 0x13b0, 0x4da2, \
    { 0xab, 0xba, 0x4a, 0x99, 0x2c, 0x65, 0xc0, 0x83 }}

class NS_NO_VTABLE ISnapshot : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISNAPSHOT_IID)

  /* readonly attribute nsIDPtr id; */
  NS_IMETHOD GetId(nsID * *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;

  /* readonly attribute ISnapshotCollection children; */
  NS_IMETHOD GetChildren(ISnapshotCollection * *aChildren) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISNAPSHOT \
  NS_IMETHOD GetId(nsID * *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(ISnapshotCollection * *aChildren); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISNAPSHOT(_to) \
  NS_IMETHOD GetId(nsID * *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(ISnapshotCollection * *aChildren) { return _to GetChildren(aChildren); } 

/* 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(nsID * *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(ISnapshotCollection * *aChildren) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChildren(aChildren); } 

#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 nsIDPtr id; */
NS_IMETHODIMP _MYCLASS_::GetId(nsID * *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;
}

/* readonly attribute ISnapshotCollection children; */
NS_IMETHODIMP _MYCLASS_::GetChildren(ISnapshotCollection * *aChildren)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IHardDiskAttachment */
#define IHARDDISKATTACHMENT_IID_STR "c0ffe596-21c6-4797-8d8a-b47b66881e7a"

#define IHARDDISKATTACHMENT_IID \
  {0xc0ffe596, 0x21c6, 0x4797, \
    { 0x8d, 0x8a, 0xb4, 0x7b, 0x66, 0x88, 0x1e, 0x7a }}

class NS_NO_VTABLE IHardDiskAttachment : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHARDDISKATTACHMENT_IID)

  /* readonly attribute IHardDisk hardDisk; */
  NS_IMETHOD GetHardDisk(IHardDisk * *aHardDisk) = 0;

  /* readonly attribute PRUint32 bus; */
  NS_IMETHOD GetBus(PRUint32 *aBus) = 0;

  /* readonly attribute long channel; */
  NS_IMETHOD GetChannel(PRInt32 *aChannel) = 0;

  /* readonly attribute long device; */
  NS_IMETHOD GetDevice(PRInt32 *aDevice) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHARDDISKATTACHMENT \
  NS_IMETHOD GetHardDisk(IHardDisk * *aHardDisk); \
  NS_IMETHOD GetBus(PRUint32 *aBus); \
  NS_IMETHOD GetChannel(PRInt32 *aChannel); \
  NS_IMETHOD GetDevice(PRInt32 *aDevice); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHARDDISKATTACHMENT(_to) \
  NS_IMETHOD GetHardDisk(IHardDisk * *aHardDisk) { return _to GetHardDisk(aHardDisk); } \
  NS_IMETHOD GetBus(PRUint32 *aBus) { return _to GetBus(aBus); } \
  NS_IMETHOD GetChannel(PRInt32 *aChannel) { return _to GetChannel(aChannel); } \
  NS_IMETHOD GetDevice(PRInt32 *aDevice) { return _to GetDevice(aDevice); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHARDDISKATTACHMENT(_to) \
  NS_IMETHOD GetHardDisk(IHardDisk * *aHardDisk) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHardDisk(aHardDisk); } \
  NS_IMETHOD GetBus(PRUint32 *aBus) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBus(aBus); } \
  NS_IMETHOD GetChannel(PRInt32 *aChannel) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChannel(aChannel); } \
  NS_IMETHOD GetDevice(PRInt32 *aDevice) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDevice(aDevice); } 

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

/* Header file */
class _MYCLASS_ : public IHardDiskAttachment
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHARDDISKATTACHMENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute IHardDisk hardDisk; */
NS_IMETHODIMP _MYCLASS_::GetHardDisk(IHardDisk * *aHardDisk)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 bus; */
NS_IMETHODIMP _MYCLASS_::GetBus(PRUint32 *aBus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long channel; */
NS_IMETHODIMP _MYCLASS_::GetChannel(PRInt32 *aChannel)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long device; */
NS_IMETHODIMP _MYCLASS_::GetDevice(PRInt32 *aDevice)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IHardDiskAttachmentEnumerator */
#define IHARDDISKATTACHMENTENUMERATOR_IID_STR "9955e486-2f0b-432a-99e4-0ebbd338875e"

#define IHARDDISKATTACHMENTENUMERATOR_IID \
  {0x9955e486, 0x2f0b, 0x432a, \
    { 0x99, 0xe4, 0x0e, 0xbb, 0xd3, 0x38, 0x87, 0x5e }}

class NS_NO_VTABLE IHardDiskAttachmentEnumerator : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHARDDISKATTACHMENTENUMERATOR_IID)

  /* void hasMore ([retval] out boolean more); */
  NS_IMETHOD HasMore(PRBool *more) = 0;

  /* void getNext ([retval] out IHardDiskAttachment next); */
  NS_IMETHOD GetNext(IHardDiskAttachment **next) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHARDDISKATTACHMENTENUMERATOR \
  NS_IMETHOD HasMore(PRBool *more); \
  NS_IMETHOD GetNext(IHardDiskAttachment **next); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHARDDISKATTACHMENTENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return _to HasMore(more); } \
  NS_IMETHOD GetNext(IHardDiskAttachment **next) { return _to GetNext(next); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHARDDISKATTACHMENTENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return !_to ? NS_ERROR_NULL_POINTER : _to->HasMore(more); } \
  NS_IMETHOD GetNext(IHardDiskAttachment **next) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNext(next); } 

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

/* Header file */
class _MYCLASS_ : public IHardDiskAttachmentEnumerator
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHARDDISKATTACHMENTENUMERATOR

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void hasMore ([retval] out boolean more); */
NS_IMETHODIMP _MYCLASS_::HasMore(PRBool *more)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNext ([retval] out IHardDiskAttachment next); */
NS_IMETHODIMP _MYCLASS_::GetNext(IHardDiskAttachment **next)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IHardDiskAttachmentCollection */
#define IHARDDISKATTACHMENTCOLLECTION_IID_STR "8f727842-bb77-45d4-92de-4ec14bf613c9"

#define IHARDDISKATTACHMENTCOLLECTION_IID \
  {0x8f727842, 0xbb77, 0x45d4, \
    { 0x92, 0xde, 0x4e, 0xc1, 0x4b, 0xf6, 0x13, 0xc9 }}

class NS_NO_VTABLE IHardDiskAttachmentCollection : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHARDDISKATTACHMENTCOLLECTION_IID)

  /* readonly attribute unsigned long count; */
  NS_IMETHOD GetCount(PRUint32 *aCount) = 0;

  /* void getItemAt (in unsigned long index, [retval] out IHardDiskAttachment item); */
  NS_IMETHOD GetItemAt(PRUint32 index, IHardDiskAttachment **item) = 0;

  /* void enumerate ([retval] out IHardDiskAttachmentEnumerator enumerator); */
  NS_IMETHOD Enumerate(IHardDiskAttachmentEnumerator **enumerator) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHARDDISKATTACHMENTCOLLECTION \
  NS_IMETHOD GetCount(PRUint32 *aCount); \
  NS_IMETHOD GetItemAt(PRUint32 index, IHardDiskAttachment **item); \
  NS_IMETHOD Enumerate(IHardDiskAttachmentEnumerator **enumerator); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHARDDISKATTACHMENTCOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return _to GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IHardDiskAttachment **item) { return _to GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IHardDiskAttachmentEnumerator **enumerator) { return _to Enumerate(enumerator); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHARDDISKATTACHMENTCOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IHardDiskAttachment **item) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IHardDiskAttachmentEnumerator **enumerator) { return !_to ? NS_ERROR_NULL_POINTER : _to->Enumerate(enumerator); } 

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

/* Header file */
class _MYCLASS_ : public IHardDiskAttachmentCollection
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHARDDISKATTACHMENTCOLLECTION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

_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 getItemAt (in unsigned long index, [retval] out IHardDiskAttachment item); */
NS_IMETHODIMP _MYCLASS_::GetItemAt(PRUint32 index, IHardDiskAttachment **item)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enumerate ([retval] out IHardDiskAttachmentEnumerator enumerator); */
NS_IMETHODIMP _MYCLASS_::Enumerate(IHardDiskAttachmentEnumerator **enumerator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IHardDiskEnumerator */
#define IHARDDISKENUMERATOR_IID_STR "b976f97b-cdb8-47e3-9860-084031cbd533"

#define IHARDDISKENUMERATOR_IID \
  {0xb976f97b, 0xcdb8, 0x47e3, \
    { 0x98, 0x60, 0x08, 0x40, 0x31, 0xcb, 0xd5, 0x33 }}

class NS_NO_VTABLE IHardDiskEnumerator : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHARDDISKENUMERATOR_IID)

  /* void hasMore ([retval] out boolean more); */
  NS_IMETHOD HasMore(PRBool *more) = 0;

  /* void getNext ([retval] out IHardDisk next); */
  NS_IMETHOD GetNext(IHardDisk **next) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHARDDISKENUMERATOR \
  NS_IMETHOD HasMore(PRBool *more); \
  NS_IMETHOD GetNext(IHardDisk **next); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHARDDISKENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return _to HasMore(more); } \
  NS_IMETHOD GetNext(IHardDisk **next) { return _to GetNext(next); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHARDDISKENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return !_to ? NS_ERROR_NULL_POINTER : _to->HasMore(more); } \
  NS_IMETHOD GetNext(IHardDisk **next) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNext(next); } 

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

/* Header file */
class _MYCLASS_ : public IHardDiskEnumerator
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHARDDISKENUMERATOR

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void hasMore ([retval] out boolean more); */
NS_IMETHODIMP _MYCLASS_::HasMore(PRBool *more)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNext ([retval] out IHardDisk next); */
NS_IMETHODIMP _MYCLASS_::GetNext(IHardDisk **next)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IHardDiskCollection */
#define IHARDDISKCOLLECTION_IID_STR "43eac2bc-5c61-40fa-bc38-46de2c7db6bb"

#define IHARDDISKCOLLECTION_IID \
  {0x43eac2bc, 0x5c61, 0x40fa, \
    { 0xbc, 0x38, 0x46, 0xde, 0x2c, 0x7d, 0xb6, 0xbb }}

class NS_NO_VTABLE IHardDiskCollection : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHARDDISKCOLLECTION_IID)

  /* readonly attribute unsigned long count; */
  NS_IMETHOD GetCount(PRUint32 *aCount) = 0;

  /* void getItemAt (in unsigned long index, [retval] out IHardDisk item); */
  NS_IMETHOD GetItemAt(PRUint32 index, IHardDisk **item) = 0;

  /* void enumerate ([retval] out IHardDiskEnumerator enumerator); */
  NS_IMETHOD Enumerate(IHardDiskEnumerator **enumerator) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHARDDISKCOLLECTION \
  NS_IMETHOD GetCount(PRUint32 *aCount); \
  NS_IMETHOD GetItemAt(PRUint32 index, IHardDisk **item); \
  NS_IMETHOD Enumerate(IHardDiskEnumerator **enumerator); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHARDDISKCOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return _to GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IHardDisk **item) { return _to GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IHardDiskEnumerator **enumerator) { return _to Enumerate(enumerator); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHARDDISKCOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IHardDisk **item) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IHardDiskEnumerator **enumerator) { return !_to ? NS_ERROR_NULL_POINTER : _to->Enumerate(enumerator); } 

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

/* Header file */
class _MYCLASS_ : public IHardDiskCollection
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHARDDISKCOLLECTION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

_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 getItemAt (in unsigned long index, [retval] out IHardDisk item); */
NS_IMETHODIMP _MYCLASS_::GetItemAt(PRUint32 index, IHardDisk **item)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enumerate ([retval] out IHardDiskEnumerator enumerator); */
NS_IMETHODIMP _MYCLASS_::Enumerate(IHardDiskEnumerator **enumerator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IHardDisk */
#define IHARDDISK_IID_STR "fd443ec1-000f-4f5b-9282-d72760a66916"

#define IHARDDISK_IID \
  {0xfd443ec1, 0x000f, 0x4f5b, \
    { 0x92, 0x82, 0xd7, 0x27, 0x60, 0xa6, 0x69, 0x16 }}

class NS_NO_VTABLE IHardDisk : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHARDDISK_IID)

  /* readonly attribute nsIDPtr id; */
  NS_IMETHOD GetId(nsID * *aId) = 0;

  /* attribute wstring description; */
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) = 0;
  NS_IMETHOD SetDescription(const PRUnichar * aDescription) = 0;

  /* readonly attribute PRUint32 storageType; */
  NS_IMETHOD GetStorageType(PRUint32 *aStorageType) = 0;

  /* readonly attribute wstring location; */
  NS_IMETHOD GetLocation(PRUnichar * *aLocation) = 0;

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

  /* readonly attribute IHardDisk parent; */
  NS_IMETHOD GetParent(IHardDisk * *aParent) = 0;

  /* readonly attribute IHardDiskCollection children; */
  NS_IMETHOD GetChildren(IHardDiskCollection * *aChildren) = 0;

  /* readonly attribute IHardDisk root; */
  NS_IMETHOD GetRoot(IHardDisk * *aRoot) = 0;

  /* readonly attribute boolean accessible; */
  NS_IMETHOD GetAccessible(PRBool *aAccessible) = 0;

  /* readonly attribute boolean allAccessible; */
  NS_IMETHOD GetAllAccessible(PRBool *aAllAccessible) = 0;

  /* readonly attribute wstring lastAccessError; */
  NS_IMETHOD GetLastAccessError(PRUnichar * *aLastAccessError) = 0;

  /* readonly attribute unsigned long long size; */
  NS_IMETHOD GetSize(PRUint64 *aSize) = 0;

  /* readonly attribute unsigned long long actualSize; */
  NS_IMETHOD GetActualSize(PRUint64 *aActualSize) = 0;

  /* readonly attribute nsIDPtr machineId; */
  NS_IMETHOD GetMachineId(nsID * *aMachineId) = 0;

  /* readonly attribute nsIDPtr snapshotId; */
  NS_IMETHOD GetSnapshotId(nsID * *aSnapshotId) = 0;

  /* void cloneToImage (in wstring filePath, out IVirtualDiskImage image, [retval] out IProgress progress); */
  NS_IMETHOD CloneToImage(const PRUnichar *filePath, IVirtualDiskImage **image, IProgress **progress) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHARDDISK \
  NS_IMETHOD GetId(nsID * *aId); \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription); \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription); \
  NS_IMETHOD GetStorageType(PRUint32 *aStorageType); \
  NS_IMETHOD GetLocation(PRUnichar * *aLocation); \
  NS_IMETHOD GetType(PRUint32 *aType); \
  NS_IMETHOD SetType(PRUint32 aType); \
  NS_IMETHOD GetParent(IHardDisk * *aParent); \
  NS_IMETHOD GetChildren(IHardDiskCollection * *aChildren); \
  NS_IMETHOD GetRoot(IHardDisk * *aRoot); \
  NS_IMETHOD GetAccessible(PRBool *aAccessible); \
  NS_IMETHOD GetAllAccessible(PRBool *aAllAccessible); \
  NS_IMETHOD GetLastAccessError(PRUnichar * *aLastAccessError); \
  NS_IMETHOD GetSize(PRUint64 *aSize); \
  NS_IMETHOD GetActualSize(PRUint64 *aActualSize); \
  NS_IMETHOD GetMachineId(nsID * *aMachineId); \
  NS_IMETHOD GetSnapshotId(nsID * *aSnapshotId); \
  NS_IMETHOD CloneToImage(const PRUnichar *filePath, IVirtualDiskImage **image, IProgress **progress); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHARDDISK(_to) \
  NS_IMETHOD GetId(nsID * *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 GetStorageType(PRUint32 *aStorageType) { return _to GetStorageType(aStorageType); } \
  NS_IMETHOD GetLocation(PRUnichar * *aLocation) { return _to GetLocation(aLocation); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return _to GetType(aType); } \
  NS_IMETHOD SetType(PRUint32 aType) { return _to SetType(aType); } \
  NS_IMETHOD GetParent(IHardDisk * *aParent) { return _to GetParent(aParent); } \
  NS_IMETHOD GetChildren(IHardDiskCollection * *aChildren) { return _to GetChildren(aChildren); } \
  NS_IMETHOD GetRoot(IHardDisk * *aRoot) { return _to GetRoot(aRoot); } \
  NS_IMETHOD GetAccessible(PRBool *aAccessible) { return _to GetAccessible(aAccessible); } \
  NS_IMETHOD GetAllAccessible(PRBool *aAllAccessible) { return _to GetAllAccessible(aAllAccessible); } \
  NS_IMETHOD GetLastAccessError(PRUnichar * *aLastAccessError) { return _to GetLastAccessError(aLastAccessError); } \
  NS_IMETHOD GetSize(PRUint64 *aSize) { return _to GetSize(aSize); } \
  NS_IMETHOD GetActualSize(PRUint64 *aActualSize) { return _to GetActualSize(aActualSize); } \
  NS_IMETHOD GetMachineId(nsID * *aMachineId) { return _to GetMachineId(aMachineId); } \
  NS_IMETHOD GetSnapshotId(nsID * *aSnapshotId) { return _to GetSnapshotId(aSnapshotId); } \
  NS_IMETHOD CloneToImage(const PRUnichar *filePath, IVirtualDiskImage **image, IProgress **progress) { return _to CloneToImage(filePath, image, 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_IHARDDISK(_to) \
  NS_IMETHOD GetId(nsID * *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 GetStorageType(PRUint32 *aStorageType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStorageType(aStorageType); } \
  NS_IMETHOD GetLocation(PRUnichar * *aLocation) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLocation(aLocation); } \
  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 GetParent(IHardDisk * *aParent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParent(aParent); } \
  NS_IMETHOD GetChildren(IHardDiskCollection * *aChildren) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChildren(aChildren); } \
  NS_IMETHOD GetRoot(IHardDisk * *aRoot) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRoot(aRoot); } \
  NS_IMETHOD GetAccessible(PRBool *aAccessible) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAccessible(aAccessible); } \
  NS_IMETHOD GetAllAccessible(PRBool *aAllAccessible) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllAccessible(aAllAccessible); } \
  NS_IMETHOD GetLastAccessError(PRUnichar * *aLastAccessError) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastAccessError(aLastAccessError); } \
  NS_IMETHOD GetSize(PRUint64 *aSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSize(aSize); } \
  NS_IMETHOD GetActualSize(PRUint64 *aActualSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetActualSize(aActualSize); } \
  NS_IMETHOD GetMachineId(nsID * *aMachineId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMachineId(aMachineId); } \
  NS_IMETHOD GetSnapshotId(nsID * *aSnapshotId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSnapshotId(aSnapshotId); } \
  NS_IMETHOD CloneToImage(const PRUnichar *filePath, IVirtualDiskImage **image, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CloneToImage(filePath, image, progress); } 

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

/* Header file */
class _MYCLASS_ : public IHardDisk
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHARDDISK

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute nsIDPtr id; */
NS_IMETHODIMP _MYCLASS_::GetId(nsID * *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 storageType; */
NS_IMETHODIMP _MYCLASS_::GetStorageType(PRUint32 *aStorageType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring location; */
NS_IMETHODIMP _MYCLASS_::GetLocation(PRUnichar * *aLocation)
{
    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;
}

/* readonly attribute IHardDisk parent; */
NS_IMETHODIMP _MYCLASS_::GetParent(IHardDisk * *aParent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IHardDiskCollection children; */
NS_IMETHODIMP _MYCLASS_::GetChildren(IHardDiskCollection * *aChildren)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IHardDisk root; */
NS_IMETHODIMP _MYCLASS_::GetRoot(IHardDisk * *aRoot)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean accessible; */
NS_IMETHODIMP _MYCLASS_::GetAccessible(PRBool *aAccessible)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean allAccessible; */
NS_IMETHODIMP _MYCLASS_::GetAllAccessible(PRBool *aAllAccessible)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring lastAccessError; */
NS_IMETHODIMP _MYCLASS_::GetLastAccessError(PRUnichar * *aLastAccessError)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long long size; */
NS_IMETHODIMP _MYCLASS_::GetSize(PRUint64 *aSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long long actualSize; */
NS_IMETHODIMP _MYCLASS_::GetActualSize(PRUint64 *aActualSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIDPtr machineId; */
NS_IMETHODIMP _MYCLASS_::GetMachineId(nsID * *aMachineId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIDPtr snapshotId; */
NS_IMETHODIMP _MYCLASS_::GetSnapshotId(nsID * *aSnapshotId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void cloneToImage (in wstring filePath, out IVirtualDiskImage image, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CloneToImage(const PRUnichar *filePath, IVirtualDiskImage **image, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IVirtualDiskImage */
#define IVIRTUALDISKIMAGE_IID_STR "a8265b5a-0d20-4a46-a02f-65693a4e8239"

#define IVIRTUALDISKIMAGE_IID \
  {0xa8265b5a, 0x0d20, 0x4a46, \
    { 0xa0, 0x2f, 0x65, 0x69, 0x3a, 0x4e, 0x82, 0x39 }}

class NS_NO_VTABLE IVirtualDiskImage : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVIRTUALDISKIMAGE_IID)

  /* attribute wstring filePath; */
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath) = 0;
  NS_IMETHOD SetFilePath(const PRUnichar * aFilePath) = 0;

  /* readonly attribute boolean created; */
  NS_IMETHOD GetCreated(PRBool *aCreated) = 0;

  /* void createDynamicImage (in unsigned long long size, [retval] out IProgress progress); */
  NS_IMETHOD CreateDynamicImage(PRUint64 size, IProgress **progress) = 0;

  /* void createFixedImage (in unsigned long long size, [retval] out IProgress progress); */
  NS_IMETHOD CreateFixedImage(PRUint64 size, IProgress **progress) = 0;

  /* void deleteImage (); */
  NS_IMETHOD DeleteImage(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVIRTUALDISKIMAGE \
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath); \
  NS_IMETHOD SetFilePath(const PRUnichar * aFilePath); \
  NS_IMETHOD GetCreated(PRBool *aCreated); \
  NS_IMETHOD CreateDynamicImage(PRUint64 size, IProgress **progress); \
  NS_IMETHOD CreateFixedImage(PRUint64 size, IProgress **progress); \
  NS_IMETHOD DeleteImage(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IVIRTUALDISKIMAGE(_to) \
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath) { return _to GetFilePath(aFilePath); } \
  NS_IMETHOD SetFilePath(const PRUnichar * aFilePath) { return _to SetFilePath(aFilePath); } \
  NS_IMETHOD GetCreated(PRBool *aCreated) { return _to GetCreated(aCreated); } \
  NS_IMETHOD CreateDynamicImage(PRUint64 size, IProgress **progress) { return _to CreateDynamicImage(size, progress); } \
  NS_IMETHOD CreateFixedImage(PRUint64 size, IProgress **progress) { return _to CreateFixedImage(size, progress); } \
  NS_IMETHOD DeleteImage(void) { return _to DeleteImage(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IVIRTUALDISKIMAGE(_to) \
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilePath(aFilePath); } \
  NS_IMETHOD SetFilePath(const PRUnichar * aFilePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFilePath(aFilePath); } \
  NS_IMETHOD GetCreated(PRBool *aCreated) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCreated(aCreated); } \
  NS_IMETHOD CreateDynamicImage(PRUint64 size, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateDynamicImage(size, progress); } \
  NS_IMETHOD CreateFixedImage(PRUint64 size, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateFixedImage(size, progress); } \
  NS_IMETHOD DeleteImage(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteImage(); } 

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

/* Header file */
class _MYCLASS_ : public IVirtualDiskImage
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IVIRTUALDISKIMAGE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* attribute wstring filePath; */
NS_IMETHODIMP _MYCLASS_::GetFilePath(PRUnichar * *aFilePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetFilePath(const PRUnichar * aFilePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean created; */
NS_IMETHODIMP _MYCLASS_::GetCreated(PRBool *aCreated)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createDynamicImage (in unsigned long long size, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CreateDynamicImage(PRUint64 size, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createFixedImage (in unsigned long long size, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CreateFixedImage(PRUint64 size, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteImage (); */
NS_IMETHODIMP _MYCLASS_::DeleteImage()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IISCSIHardDisk */
#define IISCSIHARDDISK_IID_STR "003f6ca9-3257-4ef9-99c9-c66ce44576cb"

#define IISCSIHARDDISK_IID \
  {0x003f6ca9, 0x3257, 0x4ef9, \
    { 0x99, 0xc9, 0xc6, 0x6c, 0xe4, 0x45, 0x76, 0xcb }}

class NS_NO_VTABLE IISCSIHardDisk : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IISCSIHARDDISK_IID)

  /* attribute wstring server; */
  NS_IMETHOD GetServer(PRUnichar * *aServer) = 0;
  NS_IMETHOD SetServer(const PRUnichar * aServer) = 0;

  /* attribute unsigned short port; */
  NS_IMETHOD GetPort(PRUint16 *aPort) = 0;
  NS_IMETHOD SetPort(PRUint16 aPort) = 0;

  /* attribute wstring target; */
  NS_IMETHOD GetTarget(PRUnichar * *aTarget) = 0;
  NS_IMETHOD SetTarget(const PRUnichar * aTarget) = 0;

  /* attribute unsigned long long lun; */
  NS_IMETHOD GetLun(PRUint64 *aLun) = 0;
  NS_IMETHOD SetLun(PRUint64 aLun) = 0;

  /* attribute wstring userName; */
  NS_IMETHOD GetUserName(PRUnichar * *aUserName) = 0;
  NS_IMETHOD SetUserName(const PRUnichar * aUserName) = 0;

  /* attribute wstring password; */
  NS_IMETHOD GetPassword(PRUnichar * *aPassword) = 0;
  NS_IMETHOD SetPassword(const PRUnichar * aPassword) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IISCSIHARDDISK \
  NS_IMETHOD GetServer(PRUnichar * *aServer); \
  NS_IMETHOD SetServer(const PRUnichar * aServer); \
  NS_IMETHOD GetPort(PRUint16 *aPort); \
  NS_IMETHOD SetPort(PRUint16 aPort); \
  NS_IMETHOD GetTarget(PRUnichar * *aTarget); \
  NS_IMETHOD SetTarget(const PRUnichar * aTarget); \
  NS_IMETHOD GetLun(PRUint64 *aLun); \
  NS_IMETHOD SetLun(PRUint64 aLun); \
  NS_IMETHOD GetUserName(PRUnichar * *aUserName); \
  NS_IMETHOD SetUserName(const PRUnichar * aUserName); \
  NS_IMETHOD GetPassword(PRUnichar * *aPassword); \
  NS_IMETHOD SetPassword(const PRUnichar * aPassword); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IISCSIHARDDISK(_to) \
  NS_IMETHOD GetServer(PRUnichar * *aServer) { return _to GetServer(aServer); } \
  NS_IMETHOD SetServer(const PRUnichar * aServer) { return _to SetServer(aServer); } \
  NS_IMETHOD GetPort(PRUint16 *aPort) { return _to GetPort(aPort); } \
  NS_IMETHOD SetPort(PRUint16 aPort) { return _to SetPort(aPort); } \
  NS_IMETHOD GetTarget(PRUnichar * *aTarget) { return _to GetTarget(aTarget); } \
  NS_IMETHOD SetTarget(const PRUnichar * aTarget) { return _to SetTarget(aTarget); } \
  NS_IMETHOD GetLun(PRUint64 *aLun) { return _to GetLun(aLun); } \
  NS_IMETHOD SetLun(PRUint64 aLun) { return _to SetLun(aLun); } \
  NS_IMETHOD GetUserName(PRUnichar * *aUserName) { return _to GetUserName(aUserName); } \
  NS_IMETHOD SetUserName(const PRUnichar * aUserName) { return _to SetUserName(aUserName); } \
  NS_IMETHOD GetPassword(PRUnichar * *aPassword) { return _to GetPassword(aPassword); } \
  NS_IMETHOD SetPassword(const PRUnichar * aPassword) { return _to SetPassword(aPassword); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IISCSIHARDDISK(_to) \
  NS_IMETHOD GetServer(PRUnichar * *aServer) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetServer(aServer); } \
  NS_IMETHOD SetServer(const PRUnichar * aServer) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetServer(aServer); } \
  NS_IMETHOD GetPort(PRUint16 *aPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPort(aPort); } \
  NS_IMETHOD SetPort(PRUint16 aPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPort(aPort); } \
  NS_IMETHOD GetTarget(PRUnichar * *aTarget) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTarget(aTarget); } \
  NS_IMETHOD SetTarget(const PRUnichar * aTarget) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTarget(aTarget); } \
  NS_IMETHOD GetLun(PRUint64 *aLun) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLun(aLun); } \
  NS_IMETHOD SetLun(PRUint64 aLun) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLun(aLun); } \
  NS_IMETHOD GetUserName(PRUnichar * *aUserName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUserName(aUserName); } \
  NS_IMETHOD SetUserName(const PRUnichar * aUserName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetUserName(aUserName); } \
  NS_IMETHOD GetPassword(PRUnichar * *aPassword) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPassword(aPassword); } \
  NS_IMETHOD SetPassword(const PRUnichar * aPassword) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPassword(aPassword); } 

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

/* Header file */
class _MYCLASS_ : public IISCSIHardDisk
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IISCSIHARDDISK

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* attribute wstring server; */
NS_IMETHODIMP _MYCLASS_::GetServer(PRUnichar * *aServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetServer(const PRUnichar * aServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned short port; */
NS_IMETHODIMP _MYCLASS_::GetPort(PRUint16 *aPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPort(PRUint16 aPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring target; */
NS_IMETHODIMP _MYCLASS_::GetTarget(PRUnichar * *aTarget)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTarget(const PRUnichar * aTarget)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long long lun; */
NS_IMETHODIMP _MYCLASS_::GetLun(PRUint64 *aLun)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetLun(PRUint64 aLun)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring userName; */
NS_IMETHODIMP _MYCLASS_::GetUserName(PRUnichar * *aUserName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetUserName(const PRUnichar * aUserName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring password; */
NS_IMETHODIMP _MYCLASS_::GetPassword(PRUnichar * *aPassword)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPassword(const PRUnichar * aPassword)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IVMDKImage */
#define IVMDKIMAGE_IID_STR "178398f5-8559-4fee-979e-420af5b53eef"

#define IVMDKIMAGE_IID \
  {0x178398f5, 0x8559, 0x4fee, \
    { 0x97, 0x9e, 0x42, 0x0a, 0xf5, 0xb5, 0x3e, 0xef }}

class NS_NO_VTABLE IVMDKImage : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVMDKIMAGE_IID)

  /* attribute wstring filePath; */
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath) = 0;
  NS_IMETHOD SetFilePath(const PRUnichar * aFilePath) = 0;

  /* readonly attribute boolean created; */
  NS_IMETHOD GetCreated(PRBool *aCreated) = 0;

  /* void createDynamicImage (in unsigned long long size, [retval] out IProgress progress); */
  NS_IMETHOD CreateDynamicImage(PRUint64 size, IProgress **progress) = 0;

  /* void createFixedImage (in unsigned long long size, [retval] out IProgress progress); */
  NS_IMETHOD CreateFixedImage(PRUint64 size, IProgress **progress) = 0;

  /* void deleteImage (); */
  NS_IMETHOD DeleteImage(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVMDKIMAGE \
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath); \
  NS_IMETHOD SetFilePath(const PRUnichar * aFilePath); \
  NS_IMETHOD GetCreated(PRBool *aCreated); \
  NS_IMETHOD CreateDynamicImage(PRUint64 size, IProgress **progress); \
  NS_IMETHOD CreateFixedImage(PRUint64 size, IProgress **progress); \
  NS_IMETHOD DeleteImage(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IVMDKIMAGE(_to) \
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath) { return _to GetFilePath(aFilePath); } \
  NS_IMETHOD SetFilePath(const PRUnichar * aFilePath) { return _to SetFilePath(aFilePath); } \
  NS_IMETHOD GetCreated(PRBool *aCreated) { return _to GetCreated(aCreated); } \
  NS_IMETHOD CreateDynamicImage(PRUint64 size, IProgress **progress) { return _to CreateDynamicImage(size, progress); } \
  NS_IMETHOD CreateFixedImage(PRUint64 size, IProgress **progress) { return _to CreateFixedImage(size, progress); } \
  NS_IMETHOD DeleteImage(void) { return _to DeleteImage(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IVMDKIMAGE(_to) \
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilePath(aFilePath); } \
  NS_IMETHOD SetFilePath(const PRUnichar * aFilePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFilePath(aFilePath); } \
  NS_IMETHOD GetCreated(PRBool *aCreated) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCreated(aCreated); } \
  NS_IMETHOD CreateDynamicImage(PRUint64 size, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateDynamicImage(size, progress); } \
  NS_IMETHOD CreateFixedImage(PRUint64 size, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateFixedImage(size, progress); } \
  NS_IMETHOD DeleteImage(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteImage(); } 

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

/* Header file */
class _MYCLASS_ : public IVMDKImage
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IVMDKIMAGE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* attribute wstring filePath; */
NS_IMETHODIMP _MYCLASS_::GetFilePath(PRUnichar * *aFilePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetFilePath(const PRUnichar * aFilePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean created; */
NS_IMETHODIMP _MYCLASS_::GetCreated(PRBool *aCreated)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createDynamicImage (in unsigned long long size, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CreateDynamicImage(PRUint64 size, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createFixedImage (in unsigned long long size, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CreateFixedImage(PRUint64 size, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteImage (); */
NS_IMETHODIMP _MYCLASS_::DeleteImage()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    ICustomHardDisk */
#define ICUSTOMHARDDISK_IID_STR "a7b0236d-3ff4-47c0-a4aa-ddc4ddc1141a"

#define ICUSTOMHARDDISK_IID \
  {0xa7b0236d, 0x3ff4, 0x47c0, \
    { 0xa4, 0xaa, 0xdd, 0xc4, 0xdd, 0xc1, 0x14, 0x1a }}

class NS_NO_VTABLE ICustomHardDisk : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ICUSTOMHARDDISK_IID)

  /* attribute wstring location; */
  NS_IMETHOD GetLocation(PRUnichar * *aLocation) = 0;
  NS_IMETHOD SetLocation(const PRUnichar * aLocation) = 0;

  /* readonly attribute wstring format; */
  NS_IMETHOD GetFormat(PRUnichar * *aFormat) = 0;

  /* readonly attribute boolean created; */
  NS_IMETHOD GetCreated(PRBool *aCreated) = 0;

  /* void createDynamicImage (in unsigned long long size, [retval] out IProgress progress); */
  NS_IMETHOD CreateDynamicImage(PRUint64 size, IProgress **progress) = 0;

  /* void createFixedImage (in unsigned long long size, [retval] out IProgress progress); */
  NS_IMETHOD CreateFixedImage(PRUint64 size, IProgress **progress) = 0;

  /* void deleteImage (); */
  NS_IMETHOD DeleteImage(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ICUSTOMHARDDISK \
  NS_IMETHOD GetLocation(PRUnichar * *aLocation); \
  NS_IMETHOD SetLocation(const PRUnichar * aLocation); \
  NS_IMETHOD GetFormat(PRUnichar * *aFormat); \
  NS_IMETHOD GetCreated(PRBool *aCreated); \
  NS_IMETHOD CreateDynamicImage(PRUint64 size, IProgress **progress); \
  NS_IMETHOD CreateFixedImage(PRUint64 size, IProgress **progress); \
  NS_IMETHOD DeleteImage(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ICUSTOMHARDDISK(_to) \
  NS_IMETHOD GetLocation(PRUnichar * *aLocation) { return _to GetLocation(aLocation); } \
  NS_IMETHOD SetLocation(const PRUnichar * aLocation) { return _to SetLocation(aLocation); } \
  NS_IMETHOD GetFormat(PRUnichar * *aFormat) { return _to GetFormat(aFormat); } \
  NS_IMETHOD GetCreated(PRBool *aCreated) { return _to GetCreated(aCreated); } \
  NS_IMETHOD CreateDynamicImage(PRUint64 size, IProgress **progress) { return _to CreateDynamicImage(size, progress); } \
  NS_IMETHOD CreateFixedImage(PRUint64 size, IProgress **progress) { return _to CreateFixedImage(size, progress); } \
  NS_IMETHOD DeleteImage(void) { return _to DeleteImage(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ICUSTOMHARDDISK(_to) \
  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 GetFormat(PRUnichar * *aFormat) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFormat(aFormat); } \
  NS_IMETHOD GetCreated(PRBool *aCreated) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCreated(aCreated); } \
  NS_IMETHOD CreateDynamicImage(PRUint64 size, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateDynamicImage(size, progress); } \
  NS_IMETHOD CreateFixedImage(PRUint64 size, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateFixedImage(size, progress); } \
  NS_IMETHOD DeleteImage(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteImage(); } 

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

/* Header file */
class _MYCLASS_ : public ICustomHardDisk
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ICUSTOMHARDDISK

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* 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 format; */
NS_IMETHODIMP _MYCLASS_::GetFormat(PRUnichar * *aFormat)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean created; */
NS_IMETHODIMP _MYCLASS_::GetCreated(PRBool *aCreated)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createDynamicImage (in unsigned long long size, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CreateDynamicImage(PRUint64 size, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createFixedImage (in unsigned long long size, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CreateFixedImage(PRUint64 size, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteImage (); */
NS_IMETHODIMP _MYCLASS_::DeleteImage()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IVHDImage */
#define IVHDIMAGE_IID_STR "163b88c3-7552-424a-8205-daf17a004747"

#define IVHDIMAGE_IID \
  {0x163b88c3, 0x7552, 0x424a, \
    { 0x82, 0x05, 0xda, 0xf1, 0x7a, 0x00, 0x47, 0x47 }}

class NS_NO_VTABLE IVHDImage : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVHDIMAGE_IID)

  /* attribute wstring filePath; */
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath) = 0;
  NS_IMETHOD SetFilePath(const PRUnichar * aFilePath) = 0;

  /* readonly attribute boolean created; */
  NS_IMETHOD GetCreated(PRBool *aCreated) = 0;

  /* void createDynamicImage (in unsigned long long size, [retval] out IProgress progress); */
  NS_IMETHOD CreateDynamicImage(PRUint64 size, IProgress **progress) = 0;

  /* void createFixedImage (in unsigned long long size, [retval] out IProgress progress); */
  NS_IMETHOD CreateFixedImage(PRUint64 size, IProgress **progress) = 0;

  /* void deleteImage (); */
  NS_IMETHOD DeleteImage(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVHDIMAGE \
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath); \
  NS_IMETHOD SetFilePath(const PRUnichar * aFilePath); \
  NS_IMETHOD GetCreated(PRBool *aCreated); \
  NS_IMETHOD CreateDynamicImage(PRUint64 size, IProgress **progress); \
  NS_IMETHOD CreateFixedImage(PRUint64 size, IProgress **progress); \
  NS_IMETHOD DeleteImage(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IVHDIMAGE(_to) \
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath) { return _to GetFilePath(aFilePath); } \
  NS_IMETHOD SetFilePath(const PRUnichar * aFilePath) { return _to SetFilePath(aFilePath); } \
  NS_IMETHOD GetCreated(PRBool *aCreated) { return _to GetCreated(aCreated); } \
  NS_IMETHOD CreateDynamicImage(PRUint64 size, IProgress **progress) { return _to CreateDynamicImage(size, progress); } \
  NS_IMETHOD CreateFixedImage(PRUint64 size, IProgress **progress) { return _to CreateFixedImage(size, progress); } \
  NS_IMETHOD DeleteImage(void) { return _to DeleteImage(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IVHDIMAGE(_to) \
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilePath(aFilePath); } \
  NS_IMETHOD SetFilePath(const PRUnichar * aFilePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFilePath(aFilePath); } \
  NS_IMETHOD GetCreated(PRBool *aCreated) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCreated(aCreated); } \
  NS_IMETHOD CreateDynamicImage(PRUint64 size, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateDynamicImage(size, progress); } \
  NS_IMETHOD CreateFixedImage(PRUint64 size, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateFixedImage(size, progress); } \
  NS_IMETHOD DeleteImage(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteImage(); } 

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

/* Header file */
class _MYCLASS_ : public IVHDImage
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IVHDIMAGE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* attribute wstring filePath; */
NS_IMETHODIMP _MYCLASS_::GetFilePath(PRUnichar * *aFilePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetFilePath(const PRUnichar * aFilePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean created; */
NS_IMETHODIMP _MYCLASS_::GetCreated(PRBool *aCreated)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createDynamicImage (in unsigned long long size, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CreateDynamicImage(PRUint64 size, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createFixedImage (in unsigned long long size, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CreateFixedImage(PRUint64 size, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteImage (); */
NS_IMETHODIMP _MYCLASS_::DeleteImage()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IDVDImageEnumerator */
#define IDVDIMAGEENUMERATOR_IID_STR "9be77c8d-e1be-4bf2-a67b-b4dd3d2b0f28"

#define IDVDIMAGEENUMERATOR_IID \
  {0x9be77c8d, 0xe1be, 0x4bf2, \
    { 0xa6, 0x7b, 0xb4, 0xdd, 0x3d, 0x2b, 0x0f, 0x28 }}

class NS_NO_VTABLE IDVDImageEnumerator : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IDVDIMAGEENUMERATOR_IID)

  /* void hasMore ([retval] out boolean more); */
  NS_IMETHOD HasMore(PRBool *more) = 0;

  /* void getNext ([retval] out IDVDImage next); */
  NS_IMETHOD GetNext(IDVDImage **next) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IDVDIMAGEENUMERATOR \
  NS_IMETHOD HasMore(PRBool *more); \
  NS_IMETHOD GetNext(IDVDImage **next); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IDVDIMAGEENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return _to HasMore(more); } \
  NS_IMETHOD GetNext(IDVDImage **next) { return _to GetNext(next); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IDVDIMAGEENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return !_to ? NS_ERROR_NULL_POINTER : _to->HasMore(more); } \
  NS_IMETHOD GetNext(IDVDImage **next) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNext(next); } 

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

/* Header file */
class _MYCLASS_ : public IDVDImageEnumerator
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IDVDIMAGEENUMERATOR

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void hasMore ([retval] out boolean more); */
NS_IMETHODIMP _MYCLASS_::HasMore(PRBool *more)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNext ([retval] out IDVDImage next); */
NS_IMETHODIMP _MYCLASS_::GetNext(IDVDImage **next)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IDVDImageCollection */
#define IDVDIMAGECOLLECTION_IID_STR "ae7053fa-add2-4ea4-afcf-24d5f8dded64"

#define IDVDIMAGECOLLECTION_IID \
  {0xae7053fa, 0xadd2, 0x4ea4, \
    { 0xaf, 0xcf, 0x24, 0xd5, 0xf8, 0xdd, 0xed, 0x64 }}

class NS_NO_VTABLE IDVDImageCollection : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IDVDIMAGECOLLECTION_IID)

  /* readonly attribute unsigned long count; */
  NS_IMETHOD GetCount(PRUint32 *aCount) = 0;

  /* void getItemAt (in unsigned long index, [retval] out IDVDImage item); */
  NS_IMETHOD GetItemAt(PRUint32 index, IDVDImage **item) = 0;

  /* void enumerate ([retval] out IDVDImageEnumerator enumerator); */
  NS_IMETHOD Enumerate(IDVDImageEnumerator **enumerator) = 0;

  /* void findByPath (in wstring path, [retval] out IDVDImage image); */
  NS_IMETHOD FindByPath(const PRUnichar *path, IDVDImage **image) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IDVDIMAGECOLLECTION \
  NS_IMETHOD GetCount(PRUint32 *aCount); \
  NS_IMETHOD GetItemAt(PRUint32 index, IDVDImage **item); \
  NS_IMETHOD Enumerate(IDVDImageEnumerator **enumerator); \
  NS_IMETHOD FindByPath(const PRUnichar *path, IDVDImage **image); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IDVDIMAGECOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return _to GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IDVDImage **item) { return _to GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IDVDImageEnumerator **enumerator) { return _to Enumerate(enumerator); } \
  NS_IMETHOD FindByPath(const PRUnichar *path, IDVDImage **image) { return _to FindByPath(path, image); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IDVDIMAGECOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IDVDImage **item) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IDVDImageEnumerator **enumerator) { return !_to ? NS_ERROR_NULL_POINTER : _to->Enumerate(enumerator); } \
  NS_IMETHOD FindByPath(const PRUnichar *path, IDVDImage **image) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindByPath(path, image); } 

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

/* Header file */
class _MYCLASS_ : public IDVDImageCollection
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IDVDIMAGECOLLECTION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

_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 getItemAt (in unsigned long index, [retval] out IDVDImage item); */
NS_IMETHODIMP _MYCLASS_::GetItemAt(PRUint32 index, IDVDImage **item)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enumerate ([retval] out IDVDImageEnumerator enumerator); */
NS_IMETHODIMP _MYCLASS_::Enumerate(IDVDImageEnumerator **enumerator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findByPath (in wstring path, [retval] out IDVDImage image); */
NS_IMETHODIMP _MYCLASS_::FindByPath(const PRUnichar *path, IDVDImage **image)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IDVDImage */
#define IDVDIMAGE_IID_STR "140fff03-e479-4194-8562-abc4f8171009"

#define IDVDIMAGE_IID \
  {0x140fff03, 0xe479, 0x4194, \
    { 0x85, 0x62, 0xab, 0xc4, 0xf8, 0x17, 0x10, 0x09 }}

class NS_NO_VTABLE IDVDImage : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IDVDIMAGE_IID)

  /* readonly attribute nsIDPtr id; */
  NS_IMETHOD GetId(nsID * *aId) = 0;

  /* readonly attribute wstring filePath; */
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath) = 0;

  /* readonly attribute boolean accessible; */
  NS_IMETHOD GetAccessible(PRBool *aAccessible) = 0;

  /* readonly attribute unsigned long long size; */
  NS_IMETHOD GetSize(PRUint64 *aSize) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IDVDIMAGE \
  NS_IMETHOD GetId(nsID * *aId); \
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath); \
  NS_IMETHOD GetAccessible(PRBool *aAccessible); \
  NS_IMETHOD GetSize(PRUint64 *aSize); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IDVDIMAGE(_to) \
  NS_IMETHOD GetId(nsID * *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath) { return _to GetFilePath(aFilePath); } \
  NS_IMETHOD GetAccessible(PRBool *aAccessible) { return _to GetAccessible(aAccessible); } \
  NS_IMETHOD GetSize(PRUint64 *aSize) { return _to GetSize(aSize); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IDVDIMAGE(_to) \
  NS_IMETHOD GetId(nsID * *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilePath(aFilePath); } \
  NS_IMETHOD GetAccessible(PRBool *aAccessible) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAccessible(aAccessible); } \
  NS_IMETHOD GetSize(PRUint64 *aSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSize(aSize); } 

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

/* Header file */
class _MYCLASS_ : public IDVDImage
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IDVDIMAGE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute nsIDPtr id; */
NS_IMETHODIMP _MYCLASS_::GetId(nsID * *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring filePath; */
NS_IMETHODIMP _MYCLASS_::GetFilePath(PRUnichar * *aFilePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean accessible; */
NS_IMETHODIMP _MYCLASS_::GetAccessible(PRBool *aAccessible)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long long size; */
NS_IMETHODIMP _MYCLASS_::GetSize(PRUint64 *aSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IDVDDrive */
#define IDVDDRIVE_IID_STR "d9bd101a-8079-4fb9-bad1-31bf32482b75"

#define IDVDDRIVE_IID \
  {0xd9bd101a, 0x8079, 0x4fb9, \
    { 0xba, 0xd1, 0x31, 0xbf, 0x32, 0x48, 0x2b, 0x75 }}

class NS_NO_VTABLE IDVDDrive : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IDVDDRIVE_IID)

  /* readonly attribute PRUint32 state; */
  NS_IMETHOD GetState(PRUint32 *aState) = 0;

  /* attribute boolean passthrough; */
  NS_IMETHOD GetPassthrough(PRBool *aPassthrough) = 0;
  NS_IMETHOD SetPassthrough(PRBool aPassthrough) = 0;

  /* void mountImage (in nsIDRef imageId); */
  NS_IMETHOD MountImage(const nsID & imageId) = 0;

  /* void captureHostDrive (in IHostDVDDrive drive); */
  NS_IMETHOD CaptureHostDrive(IHostDVDDrive *drive) = 0;

  /* void unmount (); */
  NS_IMETHOD Unmount(void) = 0;

  /* void getImage ([retval] out IDVDImage image); */
  NS_IMETHOD GetImage(IDVDImage **image) = 0;

  /* void getHostDrive ([retval] out IHostDVDDrive drive); */
  NS_IMETHOD GetHostDrive(IHostDVDDrive **drive) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IDVDDRIVE \
  NS_IMETHOD GetState(PRUint32 *aState); \
  NS_IMETHOD GetPassthrough(PRBool *aPassthrough); \
  NS_IMETHOD SetPassthrough(PRBool aPassthrough); \
  NS_IMETHOD MountImage(const nsID & imageId); \
  NS_IMETHOD CaptureHostDrive(IHostDVDDrive *drive); \
  NS_IMETHOD Unmount(void); \
  NS_IMETHOD GetImage(IDVDImage **image); \
  NS_IMETHOD GetHostDrive(IHostDVDDrive **drive); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IDVDDRIVE(_to) \
  NS_IMETHOD GetState(PRUint32 *aState) { return _to GetState(aState); } \
  NS_IMETHOD GetPassthrough(PRBool *aPassthrough) { return _to GetPassthrough(aPassthrough); } \
  NS_IMETHOD SetPassthrough(PRBool aPassthrough) { return _to SetPassthrough(aPassthrough); } \
  NS_IMETHOD MountImage(const nsID & imageId) { return _to MountImage(imageId); } \
  NS_IMETHOD CaptureHostDrive(IHostDVDDrive *drive) { return _to CaptureHostDrive(drive); } \
  NS_IMETHOD Unmount(void) { return _to Unmount(); } \
  NS_IMETHOD GetImage(IDVDImage **image) { return _to GetImage(image); } \
  NS_IMETHOD GetHostDrive(IHostDVDDrive **drive) { return _to GetHostDrive(drive); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IDVDDRIVE(_to) \
  NS_IMETHOD GetState(PRUint32 *aState) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetState(aState); } \
  NS_IMETHOD GetPassthrough(PRBool *aPassthrough) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPassthrough(aPassthrough); } \
  NS_IMETHOD SetPassthrough(PRBool aPassthrough) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPassthrough(aPassthrough); } \
  NS_IMETHOD MountImage(const nsID & imageId) { return !_to ? NS_ERROR_NULL_POINTER : _to->MountImage(imageId); } \
  NS_IMETHOD CaptureHostDrive(IHostDVDDrive *drive) { return !_to ? NS_ERROR_NULL_POINTER : _to->CaptureHostDrive(drive); } \
  NS_IMETHOD Unmount(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Unmount(); } \
  NS_IMETHOD GetImage(IDVDImage **image) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetImage(image); } \
  NS_IMETHOD GetHostDrive(IHostDVDDrive **drive) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHostDrive(drive); } 

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

/* Header file */
class _MYCLASS_ : public IDVDDrive
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IDVDDRIVE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

/* attribute boolean passthrough; */
NS_IMETHODIMP _MYCLASS_::GetPassthrough(PRBool *aPassthrough)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPassthrough(PRBool aPassthrough)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void mountImage (in nsIDRef imageId); */
NS_IMETHODIMP _MYCLASS_::MountImage(const nsID & imageId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void captureHostDrive (in IHostDVDDrive drive); */
NS_IMETHODIMP _MYCLASS_::CaptureHostDrive(IHostDVDDrive *drive)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unmount (); */
NS_IMETHODIMP _MYCLASS_::Unmount()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getImage ([retval] out IDVDImage image); */
NS_IMETHODIMP _MYCLASS_::GetImage(IDVDImage **image)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getHostDrive ([retval] out IHostDVDDrive drive); */
NS_IMETHODIMP _MYCLASS_::GetHostDrive(IHostDVDDrive **drive)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IFloppyImageEnumerator */
#define IFLOPPYIMAGEENUMERATOR_IID_STR "902c4089-76b7-41f1-91e8-49a261a28a2c"

#define IFLOPPYIMAGEENUMERATOR_IID \
  {0x902c4089, 0x76b7, 0x41f1, \
    { 0x91, 0xe8, 0x49, 0xa2, 0x61, 0xa2, 0x8a, 0x2c }}

class NS_NO_VTABLE IFloppyImageEnumerator : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IFLOPPYIMAGEENUMERATOR_IID)

  /* void hasMore ([retval] out boolean more); */
  NS_IMETHOD HasMore(PRBool *more) = 0;

  /* void getNext ([retval] out IFloppyImage next); */
  NS_IMETHOD GetNext(IFloppyImage **next) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IFLOPPYIMAGEENUMERATOR \
  NS_IMETHOD HasMore(PRBool *more); \
  NS_IMETHOD GetNext(IFloppyImage **next); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IFLOPPYIMAGEENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return _to HasMore(more); } \
  NS_IMETHOD GetNext(IFloppyImage **next) { return _to GetNext(next); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IFLOPPYIMAGEENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return !_to ? NS_ERROR_NULL_POINTER : _to->HasMore(more); } \
  NS_IMETHOD GetNext(IFloppyImage **next) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNext(next); } 

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

/* Header file */
class _MYCLASS_ : public IFloppyImageEnumerator
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IFLOPPYIMAGEENUMERATOR

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void hasMore ([retval] out boolean more); */
NS_IMETHODIMP _MYCLASS_::HasMore(PRBool *more)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNext ([retval] out IFloppyImage next); */
NS_IMETHODIMP _MYCLASS_::GetNext(IFloppyImage **next)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IFloppyImageCollection */
#define IFLOPPYIMAGECOLLECTION_IID_STR "327a8928-8572-446e-ad9a-18fe30e81f3f"

#define IFLOPPYIMAGECOLLECTION_IID \
  {0x327a8928, 0x8572, 0x446e, \
    { 0xad, 0x9a, 0x18, 0xfe, 0x30, 0xe8, 0x1f, 0x3f }}

class NS_NO_VTABLE IFloppyImageCollection : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IFLOPPYIMAGECOLLECTION_IID)

  /* readonly attribute unsigned long count; */
  NS_IMETHOD GetCount(PRUint32 *aCount) = 0;

  /* void getItemAt (in unsigned long index, [retval] out IFloppyImage item); */
  NS_IMETHOD GetItemAt(PRUint32 index, IFloppyImage **item) = 0;

  /* void enumerate ([retval] out IFloppyImageEnumerator enumerator); */
  NS_IMETHOD Enumerate(IFloppyImageEnumerator **enumerator) = 0;

  /* void findByPath (in wstring path, [retval] out IFloppyImage image); */
  NS_IMETHOD FindByPath(const PRUnichar *path, IFloppyImage **image) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IFLOPPYIMAGECOLLECTION \
  NS_IMETHOD GetCount(PRUint32 *aCount); \
  NS_IMETHOD GetItemAt(PRUint32 index, IFloppyImage **item); \
  NS_IMETHOD Enumerate(IFloppyImageEnumerator **enumerator); \
  NS_IMETHOD FindByPath(const PRUnichar *path, IFloppyImage **image); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IFLOPPYIMAGECOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return _to GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IFloppyImage **item) { return _to GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IFloppyImageEnumerator **enumerator) { return _to Enumerate(enumerator); } \
  NS_IMETHOD FindByPath(const PRUnichar *path, IFloppyImage **image) { return _to FindByPath(path, image); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IFLOPPYIMAGECOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IFloppyImage **item) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IFloppyImageEnumerator **enumerator) { return !_to ? NS_ERROR_NULL_POINTER : _to->Enumerate(enumerator); } \
  NS_IMETHOD FindByPath(const PRUnichar *path, IFloppyImage **image) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindByPath(path, image); } 

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

/* Header file */
class _MYCLASS_ : public IFloppyImageCollection
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IFLOPPYIMAGECOLLECTION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

_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 getItemAt (in unsigned long index, [retval] out IFloppyImage item); */
NS_IMETHODIMP _MYCLASS_::GetItemAt(PRUint32 index, IFloppyImage **item)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enumerate ([retval] out IFloppyImageEnumerator enumerator); */
NS_IMETHODIMP _MYCLASS_::Enumerate(IFloppyImageEnumerator **enumerator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findByPath (in wstring path, [retval] out IFloppyImage image); */
NS_IMETHODIMP _MYCLASS_::FindByPath(const PRUnichar *path, IFloppyImage **image)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IFloppyImage */
#define IFLOPPYIMAGE_IID_STR "cc696755-ea98-4ffe-9dc5-c003047034ab"

#define IFLOPPYIMAGE_IID \
  {0xcc696755, 0xea98, 0x4ffe, \
    { 0x9d, 0xc5, 0xc0, 0x03, 0x04, 0x70, 0x34, 0xab }}

class NS_NO_VTABLE IFloppyImage : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IFLOPPYIMAGE_IID)

  /* readonly attribute nsIDPtr id; */
  NS_IMETHOD GetId(nsID * *aId) = 0;

  /* readonly attribute wstring filePath; */
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath) = 0;

  /* readonly attribute boolean accessible; */
  NS_IMETHOD GetAccessible(PRBool *aAccessible) = 0;

  /* readonly attribute unsigned long size; */
  NS_IMETHOD GetSize(PRUint32 *aSize) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IFLOPPYIMAGE \
  NS_IMETHOD GetId(nsID * *aId); \
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath); \
  NS_IMETHOD GetAccessible(PRBool *aAccessible); \
  NS_IMETHOD GetSize(PRUint32 *aSize); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IFLOPPYIMAGE(_to) \
  NS_IMETHOD GetId(nsID * *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath) { return _to GetFilePath(aFilePath); } \
  NS_IMETHOD GetAccessible(PRBool *aAccessible) { return _to GetAccessible(aAccessible); } \
  NS_IMETHOD GetSize(PRUint32 *aSize) { return _to GetSize(aSize); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IFLOPPYIMAGE(_to) \
  NS_IMETHOD GetId(nsID * *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetFilePath(PRUnichar * *aFilePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilePath(aFilePath); } \
  NS_IMETHOD GetAccessible(PRBool *aAccessible) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAccessible(aAccessible); } \
  NS_IMETHOD GetSize(PRUint32 *aSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSize(aSize); } 

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

/* Header file */
class _MYCLASS_ : public IFloppyImage
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IFLOPPYIMAGE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute nsIDPtr id; */
NS_IMETHODIMP _MYCLASS_::GetId(nsID * *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring filePath; */
NS_IMETHODIMP _MYCLASS_::GetFilePath(PRUnichar * *aFilePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean accessible; */
NS_IMETHODIMP _MYCLASS_::GetAccessible(PRBool *aAccessible)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long size; */
NS_IMETHODIMP _MYCLASS_::GetSize(PRUint32 *aSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IFloppyDrive */
#define IFLOPPYDRIVE_IID_STR "e9318f71-78d2-4b00-863c-b7cb0030a2d9"

#define IFLOPPYDRIVE_IID \
  {0xe9318f71, 0x78d2, 0x4b00, \
    { 0x86, 0x3c, 0xb7, 0xcb, 0x00, 0x30, 0xa2, 0xd9 }}

class NS_NO_VTABLE IFloppyDrive : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IFLOPPYDRIVE_IID)

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

  /* readonly attribute PRUint32 state; */
  NS_IMETHOD GetState(PRUint32 *aState) = 0;

  /* void mountImage (in nsIDRef imageId); */
  NS_IMETHOD MountImage(const nsID & imageId) = 0;

  /* void captureHostDrive (in IHostFloppyDrive drive); */
  NS_IMETHOD CaptureHostDrive(IHostFloppyDrive *drive) = 0;

  /* void unmount (); */
  NS_IMETHOD Unmount(void) = 0;

  /* void getImage ([retval] out IFloppyImage image); */
  NS_IMETHOD GetImage(IFloppyImage **image) = 0;

  /* void getHostDrive ([retval] out IHostFloppyDrive drive); */
  NS_IMETHOD GetHostDrive(IHostFloppyDrive **drive) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IFLOPPYDRIVE \
  NS_IMETHOD GetEnabled(PRBool *aEnabled); \
  NS_IMETHOD SetEnabled(PRBool aEnabled); \
  NS_IMETHOD GetState(PRUint32 *aState); \
  NS_IMETHOD MountImage(const nsID & imageId); \
  NS_IMETHOD CaptureHostDrive(IHostFloppyDrive *drive); \
  NS_IMETHOD Unmount(void); \
  NS_IMETHOD GetImage(IFloppyImage **image); \
  NS_IMETHOD GetHostDrive(IHostFloppyDrive **drive); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IFLOPPYDRIVE(_to) \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return _to GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return _to SetEnabled(aEnabled); } \
  NS_IMETHOD GetState(PRUint32 *aState) { return _to GetState(aState); } \
  NS_IMETHOD MountImage(const nsID & imageId) { return _to MountImage(imageId); } \
  NS_IMETHOD CaptureHostDrive(IHostFloppyDrive *drive) { return _to CaptureHostDrive(drive); } \
  NS_IMETHOD Unmount(void) { return _to Unmount(); } \
  NS_IMETHOD GetImage(IFloppyImage **image) { return _to GetImage(image); } \
  NS_IMETHOD GetHostDrive(IHostFloppyDrive **drive) { return _to GetHostDrive(drive); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IFLOPPYDRIVE(_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 GetState(PRUint32 *aState) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetState(aState); } \
  NS_IMETHOD MountImage(const nsID & imageId) { return !_to ? NS_ERROR_NULL_POINTER : _to->MountImage(imageId); } \
  NS_IMETHOD CaptureHostDrive(IHostFloppyDrive *drive) { return !_to ? NS_ERROR_NULL_POINTER : _to->CaptureHostDrive(drive); } \
  NS_IMETHOD Unmount(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Unmount(); } \
  NS_IMETHOD GetImage(IFloppyImage **image) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetImage(image); } \
  NS_IMETHOD GetHostDrive(IHostFloppyDrive **drive) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHostDrive(drive); } 

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

/* Header file */
class _MYCLASS_ : public IFloppyDrive
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IFLOPPYDRIVE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

_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 PRUint32 state; */
NS_IMETHODIMP _MYCLASS_::GetState(PRUint32 *aState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void mountImage (in nsIDRef imageId); */
NS_IMETHODIMP _MYCLASS_::MountImage(const nsID & imageId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void captureHostDrive (in IHostFloppyDrive drive); */
NS_IMETHODIMP _MYCLASS_::CaptureHostDrive(IHostFloppyDrive *drive)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unmount (); */
NS_IMETHODIMP _MYCLASS_::Unmount()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getImage ([retval] out IFloppyImage image); */
NS_IMETHODIMP _MYCLASS_::GetImage(IFloppyImage **image)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getHostDrive ([retval] out IHostFloppyDrive drive); */
NS_IMETHODIMP _MYCLASS_::GetHostDrive(IHostFloppyDrive **drive)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IKeyboard */
#define IKEYBOARD_IID_STR "fd443ec1-000a-4f5b-9282-d72760a66916"

#define IKEYBOARD_IID \
  {0xfd443ec1, 0x000a, 0x4f5b, \
    { 0x92, 0x82, 0xd7, 0x27, 0x60, 0xa6, 0x69, 0x16 }}

class NS_NO_VTABLE IKeyboard : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IKEYBOARD_IID)

  /* void putScancode (in long scancode); */
  NS_IMETHOD PutScancode(PRInt32 scancode) = 0;

  /* void putScancodes ([array, size_is (count)] in long scancodes, in unsigned long count, [retval] out unsigned long codesStored); */
  NS_IMETHOD PutScancodes(PRInt32 *scancodes, PRUint32 count, 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 PutScancode(PRInt32 scancode); \
  NS_IMETHOD PutScancodes(PRInt32 *scancodes, PRUint32 count, 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 PutScancode(PRInt32 scancode) { return _to PutScancode(scancode); } \
  NS_IMETHOD PutScancodes(PRInt32 *scancodes, PRUint32 count, PRUint32 *codesStored) { return _to PutScancodes(scancodes, count, 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 PutScancode(PRInt32 scancode) { return !_to ? NS_ERROR_NULL_POINTER : _to->PutScancode(scancode); } \
  NS_IMETHOD PutScancodes(PRInt32 *scancodes, PRUint32 count, PRUint32 *codesStored) { return !_to ? NS_ERROR_NULL_POINTER : _to->PutScancodes(scancodes, count, 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 */
}

/* void putScancode (in long scancode); */
NS_IMETHODIMP _MYCLASS_::PutScancode(PRInt32 scancode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void putScancodes ([array, size_is (count)] in long scancodes, in unsigned long count, [retval] out unsigned long codesStored); */
NS_IMETHODIMP _MYCLASS_::PutScancodes(PRInt32 *scancodes, PRUint32 count, PRUint32 *codesStored)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void putCAD (); */
NS_IMETHODIMP _MYCLASS_::PutCAD()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IMouse */
#define IMOUSE_IID_STR "fd443ec1-0006-4f5b-9282-d72760a66916"

#define IMOUSE_IID \
  {0xfd443ec1, 0x0006, 0x4f5b, \
    { 0x92, 0x82, 0xd7, 0x27, 0x60, 0xa6, 0x69, 0x16 }}

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;

  /* void putMouseEvent (in long dx, in long dy, in long dz, in long buttonState); */
  NS_IMETHOD PutMouseEvent(PRInt32 dx, PRInt32 dy, PRInt32 dz, PRInt32 buttonState) = 0;

  /* void putMouseEventAbsolute (in long x, in long y, in long dz, in long buttonState); */
  NS_IMETHOD PutMouseEventAbsolute(PRInt32 x, PRInt32 y, PRInt32 dz, PRInt32 buttonState) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMOUSE \
  NS_IMETHOD GetAbsoluteSupported(PRBool *aAbsoluteSupported); \
  NS_IMETHOD PutMouseEvent(PRInt32 dx, PRInt32 dy, PRInt32 dz, PRInt32 buttonState); \
  NS_IMETHOD PutMouseEventAbsolute(PRInt32 x, PRInt32 y, PRInt32 dz, 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 PutMouseEvent(PRInt32 dx, PRInt32 dy, PRInt32 dz, PRInt32 buttonState) { return _to PutMouseEvent(dx, dy, dz, buttonState); } \
  NS_IMETHOD PutMouseEventAbsolute(PRInt32 x, PRInt32 y, PRInt32 dz, PRInt32 buttonState) { return _to PutMouseEventAbsolute(x, y, dz, 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 PutMouseEvent(PRInt32 dx, PRInt32 dy, PRInt32 dz, PRInt32 buttonState) { return !_to ? NS_ERROR_NULL_POINTER : _to->PutMouseEvent(dx, dy, dz, buttonState); } \
  NS_IMETHOD PutMouseEventAbsolute(PRInt32 x, PRInt32 y, PRInt32 dz, PRInt32 buttonState) { return !_to ? NS_ERROR_NULL_POINTER : _to->PutMouseEventAbsolute(x, y, dz, 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;
}

/* void putMouseEvent (in long dx, in long dy, in long dz, in long buttonState); */
NS_IMETHODIMP _MYCLASS_::PutMouseEvent(PRInt32 dx, PRInt32 dy, PRInt32 dz, PRInt32 buttonState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void putMouseEventAbsolute (in long x, in long y, in long dz, in long buttonState); */
NS_IMETHODIMP _MYCLASS_::PutMouseEventAbsolute(PRInt32 x, PRInt32 y, PRInt32 dz, PRInt32 buttonState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IFramebuffer */
#define IFRAMEBUFFER_IID_STR "af431304-5b09-40e2-94da-3c3cb03822c1"

#define IFRAMEBUFFER_IID \
  {0xaf431304, 0x5b09, 0x40e2, \
    { 0x94, 0xda, 0x3c, 0x3c, 0xb0, 0x38, 0x22, 0xc1 }}

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;

  /* 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, [retval] out boolean finished); */
  NS_IMETHOD NotifyUpdate(PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height, PRBool *finished) = 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 operationSupported (in PRUint32 operation, [retval] out boolean supported); */
  NS_IMETHOD OperationSupported(PRUint32 operation, PRBool *supported) = 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;

  /* void solidFill (in unsigned long x, in unsigned long y, in unsigned long width, in unsigned long height, in unsigned long color, [retval] out boolean handled); */
  NS_IMETHOD SolidFill(PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height, PRUint32 color, PRBool *handled) = 0;

  /* void copyScreenBits (in unsigned long xDst, in unsigned long yDst, in unsigned long xSrc, in unsigned long ySrc, in unsigned long width, in unsigned long height, [retval] out boolean handled); */
  NS_IMETHOD CopyScreenBits(PRUint32 xDst, PRUint32 yDst, PRUint32 xSrc, PRUint32 ySrc, PRUint32 width, PRUint32 height, PRBool *handled) = 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;

};

/* 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 Lock(void); \
  NS_IMETHOD Unlock(void); \
  NS_IMETHOD NotifyUpdate(PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height, PRBool *finished); \
  NS_IMETHOD RequestResize(PRUint32 screenId, PRUint32 pixelFormat, PRUint8 * VRAM, PRUint32 bitsPerPixel, PRUint32 bytesPerLine, PRUint32 width, PRUint32 height, PRBool *finished); \
  NS_IMETHOD OperationSupported(PRUint32 operation, PRBool *supported); \
  NS_IMETHOD VideoModeSupported(PRUint32 width, PRUint32 height, PRUint32 bpp, PRBool *supported); \
  NS_IMETHOD SolidFill(PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height, PRUint32 color, PRBool *handled); \
  NS_IMETHOD CopyScreenBits(PRUint32 xDst, PRUint32 yDst, PRUint32 xSrc, PRUint32 ySrc, PRUint32 width, PRUint32 height, PRBool *handled); \
  NS_IMETHOD GetVisibleRegion(PRUint8 * rectangles, PRUint32 count, PRUint32 *countCopied); \
  NS_IMETHOD SetVisibleRegion(PRUint8 * rectangles, PRUint32 count); 

/* 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 Lock(void) { return _to Lock(); } \
  NS_IMETHOD Unlock(void) { return _to Unlock(); } \
  NS_IMETHOD NotifyUpdate(PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height, PRBool *finished) { return _to NotifyUpdate(x, y, width, height, finished); } \
  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 OperationSupported(PRUint32 operation, PRBool *supported) { return _to OperationSupported(operation, supported); } \
  NS_IMETHOD VideoModeSupported(PRUint32 width, PRUint32 height, PRUint32 bpp, PRBool *supported) { return _to VideoModeSupported(width, height, bpp, supported); } \
  NS_IMETHOD SolidFill(PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height, PRUint32 color, PRBool *handled) { return _to SolidFill(x, y, width, height, color, handled); } \
  NS_IMETHOD CopyScreenBits(PRUint32 xDst, PRUint32 yDst, PRUint32 xSrc, PRUint32 ySrc, PRUint32 width, PRUint32 height, PRBool *handled) { return _to CopyScreenBits(xDst, yDst, xSrc, ySrc, width, height, handled); } \
  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); } 

/* 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 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, PRBool *finished) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyUpdate(x, y, width, height, finished); } \
  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 OperationSupported(PRUint32 operation, PRBool *supported) { return !_to ? NS_ERROR_NULL_POINTER : _to->OperationSupported(operation, supported); } \
  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 SolidFill(PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height, PRUint32 color, PRBool *handled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SolidFill(x, y, width, height, color, handled); } \
  NS_IMETHOD CopyScreenBits(PRUint32 xDst, PRUint32 yDst, PRUint32 xSrc, PRUint32 ySrc, PRUint32 width, PRUint32 height, PRBool *handled) { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyScreenBits(xDst, yDst, xSrc, ySrc, width, height, handled); } \
  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); } 

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

/* 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, [retval] out boolean finished); */
NS_IMETHODIMP _MYCLASS_::NotifyUpdate(PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height, PRBool *finished)
{
    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 operationSupported (in PRUint32 operation, [retval] out boolean supported); */
NS_IMETHODIMP _MYCLASS_::OperationSupported(PRUint32 operation, PRBool *supported)
{
    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;
}

/* void solidFill (in unsigned long x, in unsigned long y, in unsigned long width, in unsigned long height, in unsigned long color, [retval] out boolean handled); */
NS_IMETHODIMP _MYCLASS_::SolidFill(PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height, PRUint32 color, PRBool *handled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void copyScreenBits (in unsigned long xDst, in unsigned long yDst, in unsigned long xSrc, in unsigned long ySrc, in unsigned long width, in unsigned long height, [retval] out boolean handled); */
NS_IMETHODIMP _MYCLASS_::CopyScreenBits(PRUint32 xDst, PRUint32 yDst, PRUint32 xSrc, PRUint32 ySrc, PRUint32 width, PRUint32 height, PRBool *handled)
{
    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;
}

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


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


/* starting interface:    IDisplay */
#define IDISPLAY_IID_STR "09789f63-4525-48e5-a5e4-1080453b0eab"

#define IDISPLAY_IID \
  {0x09789f63, 0x4525, 0x48e5, \
    { 0xa5, 0xe4, 0x10, 0x80, 0x45, 0x3b, 0x0e, 0xab }}

class NS_NO_VTABLE IDisplay : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IDISPLAY_IID)

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

  /* void setupInternalFramebuffer (in unsigned long depth); */
  NS_IMETHOD SetupInternalFramebuffer(PRUint32 depth) = 0;

  /* [noscript] void lockFramebuffer ([retval] out octetPtr address); */
  NS_IMETHOD LockFramebuffer(PRUint8 * *address) = 0;

  /* void unlockFramebuffer (); */
  NS_IMETHOD UnlockFramebuffer(void) = 0;

  /* void registerExternalFramebuffer (in IFramebuffer framebuffer); */
  NS_IMETHOD RegisterExternalFramebuffer(IFramebuffer *framebuffer) = 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 octetPtr address, in unsigned long width, in unsigned long height); */
  NS_IMETHOD TakeScreenShot(PRUint8 * address, PRUint32 width, PRUint32 height) = 0;

  /* [noscript] void drawToScreen (in octetPtr address, in unsigned long x, in unsigned long y, in unsigned long width, in unsigned long height); */
  NS_IMETHOD DrawToScreen(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;

  /* void updateCompleted (); */
  NS_IMETHOD UpdateCompleted(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IDISPLAY \
  NS_IMETHOD GetWidth(PRUint32 *aWidth); \
  NS_IMETHOD GetHeight(PRUint32 *aHeight); \
  NS_IMETHOD GetBitsPerPixel(PRUint32 *aBitsPerPixel); \
  NS_IMETHOD SetupInternalFramebuffer(PRUint32 depth); \
  NS_IMETHOD LockFramebuffer(PRUint8 * *address); \
  NS_IMETHOD UnlockFramebuffer(void); \
  NS_IMETHOD RegisterExternalFramebuffer(IFramebuffer *framebuffer); \
  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(PRUint8 * address, PRUint32 width, PRUint32 height); \
  NS_IMETHOD DrawToScreen(PRUint8 * address, PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height); \
  NS_IMETHOD InvalidateAndUpdate(void); \
  NS_IMETHOD ResizeCompleted(PRUint32 screenId); \
  NS_IMETHOD UpdateCompleted(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IDISPLAY(_to) \
  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 SetupInternalFramebuffer(PRUint32 depth) { return _to SetupInternalFramebuffer(depth); } \
  NS_IMETHOD LockFramebuffer(PRUint8 * *address) { return _to LockFramebuffer(address); } \
  NS_IMETHOD UnlockFramebuffer(void) { return _to UnlockFramebuffer(); } \
  NS_IMETHOD RegisterExternalFramebuffer(IFramebuffer *framebuffer) { return _to RegisterExternalFramebuffer(framebuffer); } \
  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(PRUint8 * address, PRUint32 width, PRUint32 height) { return _to TakeScreenShot(address, width, height); } \
  NS_IMETHOD DrawToScreen(PRUint8 * address, PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height) { return _to DrawToScreen(address, x, y, width, height); } \
  NS_IMETHOD InvalidateAndUpdate(void) { return _to InvalidateAndUpdate(); } \
  NS_IMETHOD ResizeCompleted(PRUint32 screenId) { return _to ResizeCompleted(screenId); } \
  NS_IMETHOD UpdateCompleted(void) { return _to UpdateCompleted(); } 

/* 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 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 SetupInternalFramebuffer(PRUint32 depth) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetupInternalFramebuffer(depth); } \
  NS_IMETHOD LockFramebuffer(PRUint8 * *address) { return !_to ? NS_ERROR_NULL_POINTER : _to->LockFramebuffer(address); } \
  NS_IMETHOD UnlockFramebuffer(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnlockFramebuffer(); } \
  NS_IMETHOD RegisterExternalFramebuffer(IFramebuffer *framebuffer) { return !_to ? NS_ERROR_NULL_POINTER : _to->RegisterExternalFramebuffer(framebuffer); } \
  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(PRUint8 * address, PRUint32 width, PRUint32 height) { return !_to ? NS_ERROR_NULL_POINTER : _to->TakeScreenShot(address, width, height); } \
  NS_IMETHOD DrawToScreen(PRUint8 * address, PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height) { return !_to ? NS_ERROR_NULL_POINTER : _to->DrawToScreen(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 UpdateCompleted(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateCompleted(); } 

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

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

/* void setupInternalFramebuffer (in unsigned long depth); */
NS_IMETHODIMP _MYCLASS_::SetupInternalFramebuffer(PRUint32 depth)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void lockFramebuffer ([retval] out octetPtr address); */
NS_IMETHODIMP _MYCLASS_::LockFramebuffer(PRUint8 * *address)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unlockFramebuffer (); */
NS_IMETHODIMP _MYCLASS_::UnlockFramebuffer()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void registerExternalFramebuffer (in IFramebuffer framebuffer); */
NS_IMETHODIMP _MYCLASS_::RegisterExternalFramebuffer(IFramebuffer *framebuffer)
{
    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 octetPtr address, in unsigned long width, in unsigned long height); */
NS_IMETHODIMP _MYCLASS_::TakeScreenShot(PRUint8 * address, PRUint32 width, PRUint32 height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void drawToScreen (in octetPtr address, in unsigned long x, in unsigned long y, in unsigned long width, in unsigned long height); */
NS_IMETHODIMP _MYCLASS_::DrawToScreen(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;
}

/* void updateCompleted (); */
NS_IMETHODIMP _MYCLASS_::UpdateCompleted()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    INetworkAdapter */
#define INETWORKADAPTER_IID_STR "a876d9b1-68d9-43b1-9c68-ddea0a473663"

#define INETWORKADAPTER_IID \
  {0xa876d9b1, 0x68d9, 0x43b1, \
    { 0x9c, 0x68, 0xdd, 0xea, 0x0a, 0x47, 0x36, 0x63 }}

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;

  /* readonly attribute PRUint32 attachmentType; */
  NS_IMETHOD GetAttachmentType(PRUint32 *aAttachmentType) = 0;

  /* attribute wstring hostInterface; */
  NS_IMETHOD GetHostInterface(PRUnichar * *aHostInterface) = 0;
  NS_IMETHOD SetHostInterface(const PRUnichar * aHostInterface) = 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 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 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;

  /* void attachToNAT (); */
  NS_IMETHOD AttachToNAT(void) = 0;

  /* void attachToHostInterface (); */
  NS_IMETHOD AttachToHostInterface(void) = 0;

  /* void attachToInternalNetwork (); */
  NS_IMETHOD AttachToInternalNetwork(void) = 0;

  /* void detach (); */
  NS_IMETHOD Detach(void) = 0;

  /* attribute long TAPFileDescriptor; */
  NS_IMETHOD GetTAPFileDescriptor(PRInt32 *aTAPFileDescriptor) = 0;
  NS_IMETHOD SetTAPFileDescriptor(PRInt32 aTAPFileDescriptor) = 0;

  /* attribute wstring TAPBridge; */
  NS_IMETHOD GetTAPBridge(PRUnichar * *aTAPBridge) = 0;
  NS_IMETHOD SetTAPBridge(const PRUnichar * aTAPBridge) = 0;

  /* attribute wstring TAPSetupApplication; */
  NS_IMETHOD GetTAPSetupApplication(PRUnichar * *aTAPSetupApplication) = 0;
  NS_IMETHOD SetTAPSetupApplication(const PRUnichar * aTAPSetupApplication) = 0;

  /* attribute wstring TAPTerminateApplication; */
  NS_IMETHOD GetTAPTerminateApplication(PRUnichar * *aTAPTerminateApplication) = 0;
  NS_IMETHOD SetTAPTerminateApplication(const PRUnichar * aTAPTerminateApplication) = 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 GetHostInterface(PRUnichar * *aHostInterface); \
  NS_IMETHOD SetHostInterface(const PRUnichar * aHostInterface); \
  NS_IMETHOD GetInternalNetwork(PRUnichar * *aInternalNetwork); \
  NS_IMETHOD SetInternalNetwork(const PRUnichar * aInternalNetwork); \
  NS_IMETHOD GetNATNetwork(PRUnichar * *aNATNetwork); \
  NS_IMETHOD SetNATNetwork(const PRUnichar * aNATNetwork); \
  NS_IMETHOD GetCableConnected(PRBool *aCableConnected); \
  NS_IMETHOD SetCableConnected(PRBool aCableConnected); \
  NS_IMETHOD GetLineSpeed(PRUint32 *aLineSpeed); \
  NS_IMETHOD SetLineSpeed(PRUint32 aLineSpeed); \
  NS_IMETHOD GetTraceEnabled(PRBool *aTraceEnabled); \
  NS_IMETHOD SetTraceEnabled(PRBool aTraceEnabled); \
  NS_IMETHOD GetTraceFile(PRUnichar * *aTraceFile); \
  NS_IMETHOD SetTraceFile(const PRUnichar * aTraceFile); \
  NS_IMETHOD AttachToNAT(void); \
  NS_IMETHOD AttachToHostInterface(void); \
  NS_IMETHOD AttachToInternalNetwork(void); \
  NS_IMETHOD Detach(void); \
  NS_IMETHOD GetTAPFileDescriptor(PRInt32 *aTAPFileDescriptor); \
  NS_IMETHOD SetTAPFileDescriptor(PRInt32 aTAPFileDescriptor); \
  NS_IMETHOD GetTAPBridge(PRUnichar * *aTAPBridge); \
  NS_IMETHOD SetTAPBridge(const PRUnichar * aTAPBridge); \
  NS_IMETHOD GetTAPSetupApplication(PRUnichar * *aTAPSetupApplication); \
  NS_IMETHOD SetTAPSetupApplication(const PRUnichar * aTAPSetupApplication); \
  NS_IMETHOD GetTAPTerminateApplication(PRUnichar * *aTAPTerminateApplication); \
  NS_IMETHOD SetTAPTerminateApplication(const PRUnichar * aTAPTerminateApplication); 

/* 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 GetHostInterface(PRUnichar * *aHostInterface) { return _to GetHostInterface(aHostInterface); } \
  NS_IMETHOD SetHostInterface(const PRUnichar * aHostInterface) { return _to SetHostInterface(aHostInterface); } \
  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 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 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 AttachToNAT(void) { return _to AttachToNAT(); } \
  NS_IMETHOD AttachToHostInterface(void) { return _to AttachToHostInterface(); } \
  NS_IMETHOD AttachToInternalNetwork(void) { return _to AttachToInternalNetwork(); } \
  NS_IMETHOD Detach(void) { return _to Detach(); } \
  NS_IMETHOD GetTAPFileDescriptor(PRInt32 *aTAPFileDescriptor) { return _to GetTAPFileDescriptor(aTAPFileDescriptor); } \
  NS_IMETHOD SetTAPFileDescriptor(PRInt32 aTAPFileDescriptor) { return _to SetTAPFileDescriptor(aTAPFileDescriptor); } \
  NS_IMETHOD GetTAPBridge(PRUnichar * *aTAPBridge) { return _to GetTAPBridge(aTAPBridge); } \
  NS_IMETHOD SetTAPBridge(const PRUnichar * aTAPBridge) { return _to SetTAPBridge(aTAPBridge); } \
  NS_IMETHOD GetTAPSetupApplication(PRUnichar * *aTAPSetupApplication) { return _to GetTAPSetupApplication(aTAPSetupApplication); } \
  NS_IMETHOD SetTAPSetupApplication(const PRUnichar * aTAPSetupApplication) { return _to SetTAPSetupApplication(aTAPSetupApplication); } \
  NS_IMETHOD GetTAPTerminateApplication(PRUnichar * *aTAPTerminateApplication) { return _to GetTAPTerminateApplication(aTAPTerminateApplication); } \
  NS_IMETHOD SetTAPTerminateApplication(const PRUnichar * aTAPTerminateApplication) { return _to SetTAPTerminateApplication(aTAPTerminateApplication); } 

/* 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 GetHostInterface(PRUnichar * *aHostInterface) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHostInterface(aHostInterface); } \
  NS_IMETHOD SetHostInterface(const PRUnichar * aHostInterface) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHostInterface(aHostInterface); } \
  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 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 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 AttachToNAT(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->AttachToNAT(); } \
  NS_IMETHOD AttachToHostInterface(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->AttachToHostInterface(); } \
  NS_IMETHOD AttachToInternalNetwork(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->AttachToInternalNetwork(); } \
  NS_IMETHOD Detach(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Detach(); } \
  NS_IMETHOD GetTAPFileDescriptor(PRInt32 *aTAPFileDescriptor) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTAPFileDescriptor(aTAPFileDescriptor); } \
  NS_IMETHOD SetTAPFileDescriptor(PRInt32 aTAPFileDescriptor) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTAPFileDescriptor(aTAPFileDescriptor); } \
  NS_IMETHOD GetTAPBridge(PRUnichar * *aTAPBridge) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTAPBridge(aTAPBridge); } \
  NS_IMETHOD SetTAPBridge(const PRUnichar * aTAPBridge) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTAPBridge(aTAPBridge); } \
  NS_IMETHOD GetTAPSetupApplication(PRUnichar * *aTAPSetupApplication) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTAPSetupApplication(aTAPSetupApplication); } \
  NS_IMETHOD SetTAPSetupApplication(const PRUnichar * aTAPSetupApplication) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTAPSetupApplication(aTAPSetupApplication); } \
  NS_IMETHOD GetTAPTerminateApplication(PRUnichar * *aTAPTerminateApplication) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTAPTerminateApplication(aTAPTerminateApplication); } \
  NS_IMETHOD SetTAPTerminateApplication(const PRUnichar * aTAPTerminateApplication) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTAPTerminateApplication(aTAPTerminateApplication); } 

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

/* readonly attribute PRUint32 attachmentType; */
NS_IMETHODIMP _MYCLASS_::GetAttachmentType(PRUint32 *aAttachmentType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring hostInterface; */
NS_IMETHODIMP _MYCLASS_::GetHostInterface(PRUnichar * *aHostInterface)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetHostInterface(const PRUnichar * aHostInterface)
{
    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 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 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;
}

/* void attachToNAT (); */
NS_IMETHODIMP _MYCLASS_::AttachToNAT()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void attachToHostInterface (); */
NS_IMETHODIMP _MYCLASS_::AttachToHostInterface()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void attachToInternalNetwork (); */
NS_IMETHODIMP _MYCLASS_::AttachToInternalNetwork()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void detach (); */
NS_IMETHODIMP _MYCLASS_::Detach()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute long TAPFileDescriptor; */
NS_IMETHODIMP _MYCLASS_::GetTAPFileDescriptor(PRInt32 *aTAPFileDescriptor)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTAPFileDescriptor(PRInt32 aTAPFileDescriptor)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring TAPBridge; */
NS_IMETHODIMP _MYCLASS_::GetTAPBridge(PRUnichar * *aTAPBridge)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTAPBridge(const PRUnichar * aTAPBridge)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring TAPSetupApplication; */
NS_IMETHODIMP _MYCLASS_::GetTAPSetupApplication(PRUnichar * *aTAPSetupApplication)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTAPSetupApplication(const PRUnichar * aTAPSetupApplication)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring TAPTerminateApplication; */
NS_IMETHODIMP _MYCLASS_::GetTAPTerminateApplication(PRUnichar * *aTAPTerminateApplication)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTAPTerminateApplication(const PRUnichar * aTAPTerminateApplication)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


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


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


/* starting interface:    IMachineDebugger */
#define IMACHINEDEBUGGER_IID_STR "b3a02721-556a-4481-9d47-052a3f8cff90"

#define IMACHINEDEBUGGER_IID \
  {0xb3a02721, 0x556a, 0x4481, \
    { 0x9d, 0x47, 0x05, 0x2a, 0x3f, 0x8c, 0xff, 0x90 }}

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 boolean HWVirtExEnabled; */
  NS_IMETHOD GetHWVirtExEnabled(PRBool *aHWVirtExEnabled) = 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 unsigned long long VM; */
  NS_IMETHOD GetVM(PRUint64 *aVM) = 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 GetHWVirtExEnabled(PRBool *aHWVirtExEnabled); \
  NS_IMETHOD GetPAEEnabled(PRBool *aPAEEnabled); \
  NS_IMETHOD GetVirtualTimeRate(PRUint32 *aVirtualTimeRate); \
  NS_IMETHOD SetVirtualTimeRate(PRUint32 aVirtualTimeRate); \
  NS_IMETHOD GetVM(PRUint64 *aVM); \
  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 GetHWVirtExEnabled(PRBool *aHWVirtExEnabled) { return _to GetHWVirtExEnabled(aHWVirtExEnabled); } \
  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(PRUint64 *aVM) { return _to GetVM(aVM); } \
  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 GetHWVirtExEnabled(PRBool *aHWVirtExEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHWVirtExEnabled(aHWVirtExEnabled); } \
  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(PRUint64 *aVM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVM(aVM); } \
  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 boolean HWVirtExEnabled; */
NS_IMETHODIMP _MYCLASS_::GetHWVirtExEnabled(PRBool *aHWVirtExEnabled)
{
    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 unsigned long long VM; */
NS_IMETHODIMP _MYCLASS_::GetVM(PRUint64 *aVM)
{
    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


/* starting interface:    IUSBController */
#define IUSBCONTROLLER_IID_STR "f4c2d3dc-f109-4da7-93b1-ec28973ac89f"

#define IUSBCONTROLLER_IID \
  {0xf4c2d3dc, 0xf109, 0x4da7, \
    { 0x93, 0xb1, 0xec, 0x28, 0x97, 0x3a, 0xc8, 0x9f }}

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 unsigned short USBStandard; */
  NS_IMETHOD GetUSBStandard(PRUint16 *aUSBStandard) = 0;

  /* readonly attribute IUSBDeviceFilterCollection deviceFilters; */
  NS_IMETHOD GetDeviceFilters(IUSBDeviceFilterCollection * *aDeviceFilters) = 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 GetUSBStandard(PRUint16 *aUSBStandard); \
  NS_IMETHOD GetDeviceFilters(IUSBDeviceFilterCollection * *aDeviceFilters); \
  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 GetUSBStandard(PRUint16 *aUSBStandard) { return _to GetUSBStandard(aUSBStandard); } \
  NS_IMETHOD GetDeviceFilters(IUSBDeviceFilterCollection * *aDeviceFilters) { return _to GetDeviceFilters(aDeviceFilters); } \
  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 GetUSBStandard(PRUint16 *aUSBStandard) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUSBStandard(aUSBStandard); } \
  NS_IMETHOD GetDeviceFilters(IUSBDeviceFilterCollection * *aDeviceFilters) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDeviceFilters(aDeviceFilters); } \
  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 unsigned short USBStandard; */
NS_IMETHODIMP _MYCLASS_::GetUSBStandard(PRUint16 *aUSBStandard)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IUSBDeviceFilterCollection deviceFilters; */
NS_IMETHODIMP _MYCLASS_::GetDeviceFilters(IUSBDeviceFilterCollection * *aDeviceFilters)
{
    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


/* starting interface:    IUSBDeviceEnumerator */
#define IUSBDEVICEENUMERATOR_IID_STR "aefe00f7-eb8a-454b-9ea4-fd5ad93c0e99"

#define IUSBDEVICEENUMERATOR_IID \
  {0xaefe00f7, 0xeb8a, 0x454b, \
    { 0x9e, 0xa4, 0xfd, 0x5a, 0xd9, 0x3c, 0x0e, 0x99 }}

class NS_NO_VTABLE IUSBDeviceEnumerator : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IUSBDEVICEENUMERATOR_IID)

  /* void hasMore ([retval] out boolean more); */
  NS_IMETHOD HasMore(PRBool *more) = 0;

  /* void getNext ([retval] out IUSBDevice next); */
  NS_IMETHOD GetNext(IUSBDevice **next) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IUSBDEVICEENUMERATOR \
  NS_IMETHOD HasMore(PRBool *more); \
  NS_IMETHOD GetNext(IUSBDevice **next); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IUSBDEVICEENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return _to HasMore(more); } \
  NS_IMETHOD GetNext(IUSBDevice **next) { return _to GetNext(next); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IUSBDEVICEENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return !_to ? NS_ERROR_NULL_POINTER : _to->HasMore(more); } \
  NS_IMETHOD GetNext(IUSBDevice **next) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNext(next); } 

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

/* Header file */
class _MYCLASS_ : public IUSBDeviceEnumerator
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IUSBDEVICEENUMERATOR

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void hasMore ([retval] out boolean more); */
NS_IMETHODIMP _MYCLASS_::HasMore(PRBool *more)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNext ([retval] out IUSBDevice next); */
NS_IMETHODIMP _MYCLASS_::GetNext(IUSBDevice **next)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IUSBDeviceCollection */
#define IUSBDEVICECOLLECTION_IID_STR "e31f3248-90dd-4ca2-95f0-6b36042d96a2"

#define IUSBDEVICECOLLECTION_IID \
  {0xe31f3248, 0x90dd, 0x4ca2, \
    { 0x95, 0xf0, 0x6b, 0x36, 0x04, 0x2d, 0x96, 0xa2 }}

class NS_NO_VTABLE IUSBDeviceCollection : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IUSBDEVICECOLLECTION_IID)

  /* readonly attribute unsigned long count; */
  NS_IMETHOD GetCount(PRUint32 *aCount) = 0;

  /* void getItemAt (in unsigned long index, [retval] out IUSBDevice item); */
  NS_IMETHOD GetItemAt(PRUint32 index, IUSBDevice **item) = 0;

  /* void enumerate ([retval] out IUSBDeviceEnumerator enumerator); */
  NS_IMETHOD Enumerate(IUSBDeviceEnumerator **enumerator) = 0;

  /* void findById (in nsIDRef id, [retval] out IUSBDevice device); */
  NS_IMETHOD FindById(const nsID & id, IUSBDevice **device) = 0;

  /* void findByAddress (in wstring name, [retval] out IUSBDevice device); */
  NS_IMETHOD FindByAddress(const PRUnichar *name, IUSBDevice **device) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IUSBDEVICECOLLECTION \
  NS_IMETHOD GetCount(PRUint32 *aCount); \
  NS_IMETHOD GetItemAt(PRUint32 index, IUSBDevice **item); \
  NS_IMETHOD Enumerate(IUSBDeviceEnumerator **enumerator); \
  NS_IMETHOD FindById(const nsID & id, IUSBDevice **device); \
  NS_IMETHOD FindByAddress(const PRUnichar *name, IUSBDevice **device); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IUSBDEVICECOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return _to GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IUSBDevice **item) { return _to GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IUSBDeviceEnumerator **enumerator) { return _to Enumerate(enumerator); } \
  NS_IMETHOD FindById(const nsID & id, IUSBDevice **device) { return _to FindById(id, device); } \
  NS_IMETHOD FindByAddress(const PRUnichar *name, IUSBDevice **device) { return _to FindByAddress(name, device); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IUSBDEVICECOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IUSBDevice **item) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IUSBDeviceEnumerator **enumerator) { return !_to ? NS_ERROR_NULL_POINTER : _to->Enumerate(enumerator); } \
  NS_IMETHOD FindById(const nsID & id, IUSBDevice **device) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindById(id, device); } \
  NS_IMETHOD FindByAddress(const PRUnichar *name, IUSBDevice **device) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindByAddress(name, device); } 

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

/* Header file */
class _MYCLASS_ : public IUSBDeviceCollection
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IUSBDEVICECOLLECTION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

_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 getItemAt (in unsigned long index, [retval] out IUSBDevice item); */
NS_IMETHODIMP _MYCLASS_::GetItemAt(PRUint32 index, IUSBDevice **item)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enumerate ([retval] out IUSBDeviceEnumerator enumerator); */
NS_IMETHODIMP _MYCLASS_::Enumerate(IUSBDeviceEnumerator **enumerator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findById (in nsIDRef id, [retval] out IUSBDevice device); */
NS_IMETHODIMP _MYCLASS_::FindById(const nsID & id, IUSBDevice **device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findByAddress (in wstring name, [retval] out IUSBDevice device); */
NS_IMETHODIMP _MYCLASS_::FindByAddress(const PRUnichar *name, IUSBDevice **device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IUSBDevice */
#define IUSBDEVICE_IID_STR "850af07b-9ee8-48c2-b6b0-f6d0acbf63c3"

#define IUSBDEVICE_IID \
  {0x850af07b, 0x9ee8, 0x48c2, \
    { 0xb6, 0xb0, 0xf6, 0xd0, 0xac, 0xbf, 0x63, 0xc3 }}

class NS_NO_VTABLE IUSBDevice : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IUSBDEVICE_IID)

  /* readonly attribute nsIDPtr id; */
  NS_IMETHOD GetId(nsID * *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(nsID * *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(nsID * *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(nsID * *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 nsIDPtr id; */
NS_IMETHODIMP _MYCLASS_::GetId(nsID * *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


/* starting interface:    IUSBDeviceFilterEnumerator */
#define IUSBDEVICEFILTERENUMERATOR_IID_STR "d5109c61-93e7-4726-926b-0dee1020da56"

#define IUSBDEVICEFILTERENUMERATOR_IID \
  {0xd5109c61, 0x93e7, 0x4726, \
    { 0x92, 0x6b, 0x0d, 0xee, 0x10, 0x20, 0xda, 0x56 }}

class NS_NO_VTABLE IUSBDeviceFilterEnumerator : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IUSBDEVICEFILTERENUMERATOR_IID)

  /* void hasMore ([retval] out boolean more); */
  NS_IMETHOD HasMore(PRBool *more) = 0;

  /* void getNext ([retval] out IUSBDeviceFilter next); */
  NS_IMETHOD GetNext(IUSBDeviceFilter **next) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IUSBDEVICEFILTERENUMERATOR \
  NS_IMETHOD HasMore(PRBool *more); \
  NS_IMETHOD GetNext(IUSBDeviceFilter **next); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IUSBDEVICEFILTERENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return _to HasMore(more); } \
  NS_IMETHOD GetNext(IUSBDeviceFilter **next) { return _to GetNext(next); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IUSBDEVICEFILTERENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return !_to ? NS_ERROR_NULL_POINTER : _to->HasMore(more); } \
  NS_IMETHOD GetNext(IUSBDeviceFilter **next) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNext(next); } 

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

/* Header file */
class _MYCLASS_ : public IUSBDeviceFilterEnumerator
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IUSBDEVICEFILTERENUMERATOR

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void hasMore ([retval] out boolean more); */
NS_IMETHODIMP _MYCLASS_::HasMore(PRBool *more)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNext ([retval] out IUSBDeviceFilter next); */
NS_IMETHODIMP _MYCLASS_::GetNext(IUSBDeviceFilter **next)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IUSBDeviceFilterCollection */
#define IUSBDEVICEFILTERCOLLECTION_IID_STR "4fa3fc99-ceb1-4bf5-a9cb-e962d825c1ef"

#define IUSBDEVICEFILTERCOLLECTION_IID \
  {0x4fa3fc99, 0xceb1, 0x4bf5, \
    { 0xa9, 0xcb, 0xe9, 0x62, 0xd8, 0x25, 0xc1, 0xef }}

class NS_NO_VTABLE IUSBDeviceFilterCollection : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IUSBDEVICEFILTERCOLLECTION_IID)

  /* readonly attribute unsigned long count; */
  NS_IMETHOD GetCount(PRUint32 *aCount) = 0;

  /* void getItemAt (in unsigned long index, [retval] out IUSBDeviceFilter item); */
  NS_IMETHOD GetItemAt(PRUint32 index, IUSBDeviceFilter **item) = 0;

  /* void enumerate ([retval] out IUSBDeviceFilterEnumerator enumerator); */
  NS_IMETHOD Enumerate(IUSBDeviceFilterEnumerator **enumerator) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IUSBDEVICEFILTERCOLLECTION \
  NS_IMETHOD GetCount(PRUint32 *aCount); \
  NS_IMETHOD GetItemAt(PRUint32 index, IUSBDeviceFilter **item); \
  NS_IMETHOD Enumerate(IUSBDeviceFilterEnumerator **enumerator); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IUSBDEVICEFILTERCOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return _to GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IUSBDeviceFilter **item) { return _to GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IUSBDeviceFilterEnumerator **enumerator) { return _to Enumerate(enumerator); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IUSBDEVICEFILTERCOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IUSBDeviceFilter **item) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IUSBDeviceFilterEnumerator **enumerator) { return !_to ? NS_ERROR_NULL_POINTER : _to->Enumerate(enumerator); } 

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

/* Header file */
class _MYCLASS_ : public IUSBDeviceFilterCollection
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IUSBDEVICEFILTERCOLLECTION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

_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 getItemAt (in unsigned long index, [retval] out IUSBDeviceFilter item); */
NS_IMETHODIMP _MYCLASS_::GetItemAt(PRUint32 index, IUSBDeviceFilter **item)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enumerate ([retval] out IUSBDeviceFilterEnumerator enumerator); */
NS_IMETHODIMP _MYCLASS_::Enumerate(IUSBDeviceFilterEnumerator **enumerator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


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


/* starting interface:    IHostUSBDeviceEnumerator */
#define IHOSTUSBDEVICEENUMERATOR_IID_STR "a0c55136-939f-4d20-b9d3-4d406f08bfa5"

#define IHOSTUSBDEVICEENUMERATOR_IID \
  {0xa0c55136, 0x939f, 0x4d20, \
    { 0xb9, 0xd3, 0x4d, 0x40, 0x6f, 0x08, 0xbf, 0xa5 }}

class NS_NO_VTABLE IHostUSBDeviceEnumerator : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOSTUSBDEVICEENUMERATOR_IID)

  /* void hasMore ([retval] out boolean more); */
  NS_IMETHOD HasMore(PRBool *more) = 0;

  /* void getNext ([retval] out IHostUSBDevice next); */
  NS_IMETHOD GetNext(IHostUSBDevice **next) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOSTUSBDEVICEENUMERATOR \
  NS_IMETHOD HasMore(PRBool *more); \
  NS_IMETHOD GetNext(IHostUSBDevice **next); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOSTUSBDEVICEENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return _to HasMore(more); } \
  NS_IMETHOD GetNext(IHostUSBDevice **next) { return _to GetNext(next); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHOSTUSBDEVICEENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return !_to ? NS_ERROR_NULL_POINTER : _to->HasMore(more); } \
  NS_IMETHOD GetNext(IHostUSBDevice **next) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNext(next); } 

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

/* Header file */
class _MYCLASS_ : public IHostUSBDeviceEnumerator
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHOSTUSBDEVICEENUMERATOR

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void hasMore ([retval] out boolean more); */
NS_IMETHODIMP _MYCLASS_::HasMore(PRBool *more)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNext ([retval] out IHostUSBDevice next); */
NS_IMETHODIMP _MYCLASS_::GetNext(IHostUSBDevice **next)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IHostUSBDeviceCollection */
#define IHOSTUSBDEVICECOLLECTION_IID_STR "f9d3f96d-b027-4994-b589-70bb9ee0d364"

#define IHOSTUSBDEVICECOLLECTION_IID \
  {0xf9d3f96d, 0xb027, 0x4994, \
    { 0xb5, 0x89, 0x70, 0xbb, 0x9e, 0xe0, 0xd3, 0x64 }}

class NS_NO_VTABLE IHostUSBDeviceCollection : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOSTUSBDEVICECOLLECTION_IID)

  /* readonly attribute unsigned long count; */
  NS_IMETHOD GetCount(PRUint32 *aCount) = 0;

  /* void getItemAt (in unsigned long index, [retval] out IHostUSBDevice item); */
  NS_IMETHOD GetItemAt(PRUint32 index, IHostUSBDevice **item) = 0;

  /* void enumerate ([retval] out IHostUSBDeviceEnumerator enumerator); */
  NS_IMETHOD Enumerate(IHostUSBDeviceEnumerator **enumerator) = 0;

  /* void findById (in nsIDRef id, [retval] out IHostUSBDevice device); */
  NS_IMETHOD FindById(const nsID & id, IHostUSBDevice **device) = 0;

  /* void findByAddress (in wstring name, [retval] out IHostUSBDevice device); */
  NS_IMETHOD FindByAddress(const PRUnichar *name, IHostUSBDevice **device) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOSTUSBDEVICECOLLECTION \
  NS_IMETHOD GetCount(PRUint32 *aCount); \
  NS_IMETHOD GetItemAt(PRUint32 index, IHostUSBDevice **item); \
  NS_IMETHOD Enumerate(IHostUSBDeviceEnumerator **enumerator); \
  NS_IMETHOD FindById(const nsID & id, IHostUSBDevice **device); \
  NS_IMETHOD FindByAddress(const PRUnichar *name, IHostUSBDevice **device); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOSTUSBDEVICECOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return _to GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IHostUSBDevice **item) { return _to GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IHostUSBDeviceEnumerator **enumerator) { return _to Enumerate(enumerator); } \
  NS_IMETHOD FindById(const nsID & id, IHostUSBDevice **device) { return _to FindById(id, device); } \
  NS_IMETHOD FindByAddress(const PRUnichar *name, IHostUSBDevice **device) { return _to FindByAddress(name, device); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHOSTUSBDEVICECOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IHostUSBDevice **item) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IHostUSBDeviceEnumerator **enumerator) { return !_to ? NS_ERROR_NULL_POINTER : _to->Enumerate(enumerator); } \
  NS_IMETHOD FindById(const nsID & id, IHostUSBDevice **device) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindById(id, device); } \
  NS_IMETHOD FindByAddress(const PRUnichar *name, IHostUSBDevice **device) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindByAddress(name, device); } 

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

/* Header file */
class _MYCLASS_ : public IHostUSBDeviceCollection
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHOSTUSBDEVICECOLLECTION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

_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 getItemAt (in unsigned long index, [retval] out IHostUSBDevice item); */
NS_IMETHODIMP _MYCLASS_::GetItemAt(PRUint32 index, IHostUSBDevice **item)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enumerate ([retval] out IHostUSBDeviceEnumerator enumerator); */
NS_IMETHODIMP _MYCLASS_::Enumerate(IHostUSBDeviceEnumerator **enumerator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findById (in nsIDRef id, [retval] out IHostUSBDevice device); */
NS_IMETHODIMP _MYCLASS_::FindById(const nsID & id, IHostUSBDevice **device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findByAddress (in wstring name, [retval] out IHostUSBDevice device); */
NS_IMETHODIMP _MYCLASS_::FindByAddress(const PRUnichar *name, IHostUSBDevice **device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


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


/* starting interface:    IHostUSBDeviceFilterEnumerator */
#define IHOSTUSBDEVICEFILTERENUMERATOR_IID_STR "ff735211-903e-4642-9c37-189eb44579fe"

#define IHOSTUSBDEVICEFILTERENUMERATOR_IID \
  {0xff735211, 0x903e, 0x4642, \
    { 0x9c, 0x37, 0x18, 0x9e, 0xb4, 0x45, 0x79, 0xfe }}

class NS_NO_VTABLE IHostUSBDeviceFilterEnumerator : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOSTUSBDEVICEFILTERENUMERATOR_IID)

  /* void hasMore ([retval] out boolean more); */
  NS_IMETHOD HasMore(PRBool *more) = 0;

  /* void getNext ([retval] out IHostUSBDeviceFilter next); */
  NS_IMETHOD GetNext(IHostUSBDeviceFilter **next) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOSTUSBDEVICEFILTERENUMERATOR \
  NS_IMETHOD HasMore(PRBool *more); \
  NS_IMETHOD GetNext(IHostUSBDeviceFilter **next); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOSTUSBDEVICEFILTERENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return _to HasMore(more); } \
  NS_IMETHOD GetNext(IHostUSBDeviceFilter **next) { return _to GetNext(next); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHOSTUSBDEVICEFILTERENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return !_to ? NS_ERROR_NULL_POINTER : _to->HasMore(more); } \
  NS_IMETHOD GetNext(IHostUSBDeviceFilter **next) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNext(next); } 

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

/* Header file */
class _MYCLASS_ : public IHostUSBDeviceFilterEnumerator
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHOSTUSBDEVICEFILTERENUMERATOR

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void hasMore ([retval] out boolean more); */
NS_IMETHODIMP _MYCLASS_::HasMore(PRBool *more)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNext ([retval] out IHostUSBDeviceFilter next); */
NS_IMETHODIMP _MYCLASS_::GetNext(IHostUSBDeviceFilter **next)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    IHostUSBDeviceFilterCollection */
#define IHOSTUSBDEVICEFILTERCOLLECTION_IID_STR "1a80458b-87f1-4a74-995d-04e2330119e0"

#define IHOSTUSBDEVICEFILTERCOLLECTION_IID \
  {0x1a80458b, 0x87f1, 0x4a74, \
    { 0x99, 0x5d, 0x04, 0xe2, 0x33, 0x01, 0x19, 0xe0 }}

class NS_NO_VTABLE IHostUSBDeviceFilterCollection : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOSTUSBDEVICEFILTERCOLLECTION_IID)

  /* readonly attribute unsigned long count; */
  NS_IMETHOD GetCount(PRUint32 *aCount) = 0;

  /* void getItemAt (in unsigned long index, [retval] out IHostUSBDeviceFilter item); */
  NS_IMETHOD GetItemAt(PRUint32 index, IHostUSBDeviceFilter **item) = 0;

  /* void enumerate ([retval] out IHostUSBDeviceFilterEnumerator enumerator); */
  NS_IMETHOD Enumerate(IHostUSBDeviceFilterEnumerator **enumerator) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOSTUSBDEVICEFILTERCOLLECTION \
  NS_IMETHOD GetCount(PRUint32 *aCount); \
  NS_IMETHOD GetItemAt(PRUint32 index, IHostUSBDeviceFilter **item); \
  NS_IMETHOD Enumerate(IHostUSBDeviceFilterEnumerator **enumerator); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOSTUSBDEVICEFILTERCOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return _to GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IHostUSBDeviceFilter **item) { return _to GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IHostUSBDeviceFilterEnumerator **enumerator) { return _to Enumerate(enumerator); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHOSTUSBDEVICEFILTERCOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, IHostUSBDeviceFilter **item) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(IHostUSBDeviceFilterEnumerator **enumerator) { return !_to ? NS_ERROR_NULL_POINTER : _to->Enumerate(enumerator); } 

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

/* Header file */
class _MYCLASS_ : public IHostUSBDeviceFilterCollection
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHOSTUSBDEVICEFILTERCOLLECTION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

_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 getItemAt (in unsigned long index, [retval] out IHostUSBDeviceFilter item); */
NS_IMETHODIMP _MYCLASS_::GetItemAt(PRUint32 index, IHostUSBDeviceFilter **item)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enumerate ([retval] out IHostUSBDeviceFilterEnumerator enumerator); */
NS_IMETHODIMP _MYCLASS_::Enumerate(IHostUSBDeviceFilterEnumerator **enumerator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


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


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


/* starting interface:    IVRDPServer */
#define IVRDPSERVER_IID_STR "ed9d31ae-867f-45fc-b727-6740084d1883"

#define IVRDPSERVER_IID \
  {0xed9d31ae, 0x867f, 0x45fc, \
    { 0xb7, 0x27, 0x67, 0x40, 0x08, 0x4d, 0x18, 0x83 }}

class NS_NO_VTABLE IVRDPServer : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVRDPSERVER_IID)

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

  /* attribute unsigned long port; */
  NS_IMETHOD GetPort(PRUint32 *aPort) = 0;
  NS_IMETHOD SetPort(PRUint32 aPort) = 0;

  /* attribute wstring netAddress; */
  NS_IMETHOD GetNetAddress(PRUnichar * *aNetAddress) = 0;
  NS_IMETHOD SetNetAddress(const PRUnichar * aNetAddress) = 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;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVRDPSERVER \
  NS_IMETHOD GetEnabled(PRBool *aEnabled); \
  NS_IMETHOD SetEnabled(PRBool aEnabled); \
  NS_IMETHOD GetPort(PRUint32 *aPort); \
  NS_IMETHOD SetPort(PRUint32 aPort); \
  NS_IMETHOD GetNetAddress(PRUnichar * *aNetAddress); \
  NS_IMETHOD SetNetAddress(const PRUnichar * aNetAddress); \
  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); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IVRDPSERVER(_to) \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return _to GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return _to SetEnabled(aEnabled); } \
  NS_IMETHOD GetPort(PRUint32 *aPort) { return _to GetPort(aPort); } \
  NS_IMETHOD SetPort(PRUint32 aPort) { return _to SetPort(aPort); } \
  NS_IMETHOD GetNetAddress(PRUnichar * *aNetAddress) { return _to GetNetAddress(aNetAddress); } \
  NS_IMETHOD SetNetAddress(const PRUnichar * aNetAddress) { return _to SetNetAddress(aNetAddress); } \
  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); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IVRDPSERVER(_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 GetPort(PRUint32 *aPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPort(aPort); } \
  NS_IMETHOD SetPort(PRUint32 aPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPort(aPort); } \
  NS_IMETHOD GetNetAddress(PRUnichar * *aNetAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetAddress(aNetAddress); } \
  NS_IMETHOD SetNetAddress(const PRUnichar * aNetAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNetAddress(aNetAddress); } \
  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); } 

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

/* Header file */
class _MYCLASS_ : public IVRDPServer
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IVRDPSERVER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

_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 unsigned long port; */
NS_IMETHODIMP _MYCLASS_::GetPort(PRUint32 *aPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPort(PRUint32 aPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring netAddress; */
NS_IMETHODIMP _MYCLASS_::GetNetAddress(PRUnichar * *aNetAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetNetAddress(const PRUnichar * aNetAddress)
{
    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;
}

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


/* starting interface:    ISharedFolderEnumerator */
#define ISHAREDFOLDERENUMERATOR_IID_STR "1d420fd8-e7c1-4511-abf4-a504dc6d0cbf"

#define ISHAREDFOLDERENUMERATOR_IID \
  {0x1d420fd8, 0xe7c1, 0x4511, \
    { 0xab, 0xf4, 0xa5, 0x04, 0xdc, 0x6d, 0x0c, 0xbf }}

class NS_NO_VTABLE ISharedFolderEnumerator : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISHAREDFOLDERENUMERATOR_IID)

  /* void hasMore ([retval] out boolean more); */
  NS_IMETHOD HasMore(PRBool *more) = 0;

  /* void getNext ([retval] out ISharedFolder next); */
  NS_IMETHOD GetNext(ISharedFolder **next) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISHAREDFOLDERENUMERATOR \
  NS_IMETHOD HasMore(PRBool *more); \
  NS_IMETHOD GetNext(ISharedFolder **next); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISHAREDFOLDERENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return _to HasMore(more); } \
  NS_IMETHOD GetNext(ISharedFolder **next) { return _to GetNext(next); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISHAREDFOLDERENUMERATOR(_to) \
  NS_IMETHOD HasMore(PRBool *more) { return !_to ? NS_ERROR_NULL_POINTER : _to->HasMore(more); } \
  NS_IMETHOD GetNext(ISharedFolder **next) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNext(next); } 

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

/* Header file */
class _MYCLASS_ : public ISharedFolderEnumerator
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISHAREDFOLDERENUMERATOR

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void hasMore ([retval] out boolean more); */
NS_IMETHODIMP _MYCLASS_::HasMore(PRBool *more)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNext ([retval] out ISharedFolder next); */
NS_IMETHODIMP _MYCLASS_::GetNext(ISharedFolder **next)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    ISharedFolderCollection */
#define ISHAREDFOLDERCOLLECTION_IID_STR "9c7e2282-bb16-4fa7-9138-f383c5e02353"

#define ISHAREDFOLDERCOLLECTION_IID \
  {0x9c7e2282, 0xbb16, 0x4fa7, \
    { 0x91, 0x38, 0xf3, 0x83, 0xc5, 0xe0, 0x23, 0x53 }}

class NS_NO_VTABLE ISharedFolderCollection : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISHAREDFOLDERCOLLECTION_IID)

  /* readonly attribute unsigned long count; */
  NS_IMETHOD GetCount(PRUint32 *aCount) = 0;

  /* void getItemAt (in unsigned long index, [retval] out ISharedFolder item); */
  NS_IMETHOD GetItemAt(PRUint32 index, ISharedFolder **item) = 0;

  /* void enumerate ([retval] out ISharedFolderEnumerator enumerator); */
  NS_IMETHOD Enumerate(ISharedFolderEnumerator **enumerator) = 0;

  /* void findByName (in wstring name, [retval] out ISharedFolder sharedFolder); */
  NS_IMETHOD FindByName(const PRUnichar *name, ISharedFolder **sharedFolder) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISHAREDFOLDERCOLLECTION \
  NS_IMETHOD GetCount(PRUint32 *aCount); \
  NS_IMETHOD GetItemAt(PRUint32 index, ISharedFolder **item); \
  NS_IMETHOD Enumerate(ISharedFolderEnumerator **enumerator); \
  NS_IMETHOD FindByName(const PRUnichar *name, ISharedFolder **sharedFolder); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISHAREDFOLDERCOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return _to GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, ISharedFolder **item) { return _to GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(ISharedFolderEnumerator **enumerator) { return _to Enumerate(enumerator); } \
  NS_IMETHOD FindByName(const PRUnichar *name, ISharedFolder **sharedFolder) { return _to FindByName(name, sharedFolder); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISHAREDFOLDERCOLLECTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCount(aCount); } \
  NS_IMETHOD GetItemAt(PRUint32 index, ISharedFolder **item) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetItemAt(index, item); } \
  NS_IMETHOD Enumerate(ISharedFolderEnumerator **enumerator) { return !_to ? NS_ERROR_NULL_POINTER : _to->Enumerate(enumerator); } \
  NS_IMETHOD FindByName(const PRUnichar *name, ISharedFolder **sharedFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindByName(name, sharedFolder); } 

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

/* Header file */
class _MYCLASS_ : public ISharedFolderCollection
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISHAREDFOLDERCOLLECTION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

_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 getItemAt (in unsigned long index, [retval] out ISharedFolder item); */
NS_IMETHODIMP _MYCLASS_::GetItemAt(PRUint32 index, ISharedFolder **item)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enumerate ([retval] out ISharedFolderEnumerator enumerator); */
NS_IMETHODIMP _MYCLASS_::Enumerate(ISharedFolderEnumerator **enumerator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findByName (in wstring name, [retval] out ISharedFolder sharedFolder); */
NS_IMETHODIMP _MYCLASS_::FindByName(const PRUnichar *name, ISharedFolder **sharedFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    ISharedFolder */
#define ISHAREDFOLDER_IID_STR "8b0c5f70-9139-4f97-a421-64d5e9c335d5"

#define ISHAREDFOLDER_IID \
  {0x8b0c5f70, 0x9139, 0x4f97, \
    { 0xa4, 0x21, 0x64, 0xd5, 0xe9, 0xc3, 0x35, 0xd5 }}

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;

};

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

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

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

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

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


/* starting interface:    IInternalSessionControl */
#define IINTERNALSESSIONCONTROL_IID_STR "37838967-2430-4bb1-8acc-1b5b2c383d44"

#define IINTERNALSESSIONCONTROL_IID \
  {0x37838967, 0x2430, 0x4bb1, \
    { 0x8a, 0xcc, 0x1b, 0x5b, 0x2c, 0x38, 0x3d, 0x44 }}

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 onDVDDriveChange (); */
  NS_IMETHOD OnDVDDriveChange(void) = 0;

  /* void onFloppyDriveChange (); */
  NS_IMETHOD OnFloppyDriveChange(void) = 0;

  /* void onNetworkAdapterChange (in INetworkAdapter networkAdapter); */
  NS_IMETHOD OnNetworkAdapterChange(INetworkAdapter *networkAdapter) = 0;

  /* void onSerialPortChange (in ISerialPort serialPort); */
  NS_IMETHOD OnSerialPortChange(ISerialPort *serialPort) = 0;

  /* void onParallelPortChange (in IParallelPort parallelPort); */
  NS_IMETHOD OnParallelPortChange(IParallelPort *parallelPort) = 0;

  /* void onVRDPServerChange (); */
  NS_IMETHOD OnVRDPServerChange(void) = 0;

  /* void onUSBControllerChange (); */
  NS_IMETHOD OnUSBControllerChange(void) = 0;

  /* void onSharedFolderChange (in boolean global); */
  NS_IMETHOD OnSharedFolderChange(PRBool global) = 0;

  /* void onUSBDeviceAttach (in IUSBDevice device, in IVirtualBoxErrorInfo error, in unsigned long maskedInterfaces); */
  NS_IMETHOD OnUSBDeviceAttach(IUSBDevice *device, IVirtualBoxErrorInfo *error, PRUint32 maskedInterfaces) = 0;

  /* void onUSBDeviceDetach (in nsIDRef id, in IVirtualBoxErrorInfo error); */
  NS_IMETHOD OnUSBDeviceDetach(const nsID & id, IVirtualBoxErrorInfo *error) = 0;

  /* void onShowWindow (in boolean check, out boolean canShow, out unsigned long long winId); */
  NS_IMETHOD OnShowWindow(PRBool check, PRBool *canShow, PRUint64 *winId) = 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 OnDVDDriveChange(void); \
  NS_IMETHOD OnFloppyDriveChange(void); \
  NS_IMETHOD OnNetworkAdapterChange(INetworkAdapter *networkAdapter); \
  NS_IMETHOD OnSerialPortChange(ISerialPort *serialPort); \
  NS_IMETHOD OnParallelPortChange(IParallelPort *parallelPort); \
  NS_IMETHOD OnVRDPServerChange(void); \
  NS_IMETHOD OnUSBControllerChange(void); \
  NS_IMETHOD OnSharedFolderChange(PRBool global); \
  NS_IMETHOD OnUSBDeviceAttach(IUSBDevice *device, IVirtualBoxErrorInfo *error, PRUint32 maskedInterfaces); \
  NS_IMETHOD OnUSBDeviceDetach(const nsID & id, IVirtualBoxErrorInfo *error); \
  NS_IMETHOD OnShowWindow(PRBool check, PRBool *canShow, PRUint64 *winId); 

/* 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 OnDVDDriveChange(void) { return _to OnDVDDriveChange(); } \
  NS_IMETHOD OnFloppyDriveChange(void) { return _to OnFloppyDriveChange(); } \
  NS_IMETHOD OnNetworkAdapterChange(INetworkAdapter *networkAdapter) { return _to OnNetworkAdapterChange(networkAdapter); } \
  NS_IMETHOD OnSerialPortChange(ISerialPort *serialPort) { return _to OnSerialPortChange(serialPort); } \
  NS_IMETHOD OnParallelPortChange(IParallelPort *parallelPort) { return _to OnParallelPortChange(parallelPort); } \
  NS_IMETHOD OnVRDPServerChange(void) { return _to OnVRDPServerChange(); } \
  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 nsID & id, IVirtualBoxErrorInfo *error) { return _to OnUSBDeviceDetach(id, error); } \
  NS_IMETHOD OnShowWindow(PRBool check, PRBool *canShow, PRUint64 *winId) { return _to OnShowWindow(check, canShow, winId); } 

/* 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 OnDVDDriveChange(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnDVDDriveChange(); } \
  NS_IMETHOD OnFloppyDriveChange(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnFloppyDriveChange(); } \
  NS_IMETHOD OnNetworkAdapterChange(INetworkAdapter *networkAdapter) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnNetworkAdapterChange(networkAdapter); } \
  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 OnVRDPServerChange(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnVRDPServerChange(); } \
  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 nsID & id, IVirtualBoxErrorInfo *error) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnUSBDeviceDetach(id, error); } \
  NS_IMETHOD OnShowWindow(PRBool check, PRBool *canShow, PRUint64 *winId) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnShowWindow(check, canShow, winId); } 

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

/* void onFloppyDriveChange (); */
NS_IMETHODIMP _MYCLASS_::OnFloppyDriveChange()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onNetworkAdapterChange (in INetworkAdapter networkAdapter); */
NS_IMETHODIMP _MYCLASS_::OnNetworkAdapterChange(INetworkAdapter *networkAdapter)
{
    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 onVRDPServerChange (); */
NS_IMETHODIMP _MYCLASS_::OnVRDPServerChange()
{
    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 nsIDRef id, in IVirtualBoxErrorInfo error); */
NS_IMETHODIMP _MYCLASS_::OnUSBDeviceDetach(const nsID & id, IVirtualBoxErrorInfo *error)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onShowWindow (in boolean check, out boolean canShow, out unsigned long long winId); */
NS_IMETHODIMP _MYCLASS_::OnShowWindow(PRBool check, PRBool *canShow, PRUint64 *winId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* 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 close (); */
  NS_IMETHOD Close(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 Close(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 Close(void) { return _to Close(); } 

/* 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 Close(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Close(); } 

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

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


/* starting interface:    ISATAController */
#define ISATACONTROLLER_IID_STR "9a4b868b-1376-4533-8ef5-065b8e8cedff"

#define ISATACONTROLLER_IID \
  {0x9a4b868b, 0x1376, 0x4533, \
    { 0x8e, 0xf5, 0x06, 0x5b, 0x8e, 0x8c, 0xed, 0xff }}

class NS_NO_VTABLE ISATAController : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISATACONTROLLER_IID)

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

  /* attribute unsigned long portCount; */
  NS_IMETHOD GetPortCount(PRUint32 *aPortCount) = 0;
  NS_IMETHOD SetPortCount(PRUint32 aPortCount) = 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_ISATACONTROLLER \
  NS_IMETHOD GetEnabled(PRBool *aEnabled); \
  NS_IMETHOD SetEnabled(PRBool aEnabled); \
  NS_IMETHOD GetPortCount(PRUint32 *aPortCount); \
  NS_IMETHOD SetPortCount(PRUint32 aPortCount); \
  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_ISATACONTROLLER(_to) \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return _to GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return _to SetEnabled(aEnabled); } \
  NS_IMETHOD GetPortCount(PRUint32 *aPortCount) { return _to GetPortCount(aPortCount); } \
  NS_IMETHOD SetPortCount(PRUint32 aPortCount) { return _to SetPortCount(aPortCount); } \
  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_ISATACONTROLLER(_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 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 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 ISATAController
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISATACONTROLLER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

/* 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 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 (nsCID) NS_VIRTUALBOX_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 (nsCID) NS_SESSION_CID

#endif /* __gen_VirtualBox_XPCOM_h__ */
