/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM /home/vbox/tinderbox/3.2-sdk/out/linux.amd64/release/bin/sdk/bindings/xpcom/idl/VirtualBox_XPCOM.idl
 */

#ifndef __gen_VirtualBox_XPCOM_h__
#define __gen_VirtualBox_XPCOM_h__


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

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

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
/* currently, nsISupportsImpl.h lacks the below-like macros */
#define NS_IMPL_THREADSAFE_QUERY_INTERFACE1_CI  NS_IMPL_QUERY_INTERFACE1_CI
#define NS_IMPL_THREADSAFE_QUERY_INTERFACE2_CI  NS_IMPL_QUERY_INTERFACE2_CI
#define NS_IMPL_THREADSAFE_QUERY_INTERFACE3_CI  NS_IMPL_QUERY_INTERFACE3_CI
#ifndef NS_IMPL_THREADSAFE_ISUPPORTS1_CI
# define NS_IMPL_THREADSAFE_ISUPPORTS1_CI(_class, _interface)                 \
   NS_IMPL_THREADSAFE_ADDREF(_class)                                          \
   NS_IMPL_THREADSAFE_RELEASE(_class)                                         \
   NS_IMPL_THREADSAFE_QUERY_INTERFACE1_CI(_class, _interface)                 \
   NS_IMPL_CI_INTERFACE_GETTER1(_class, _interface)
#endif
#ifndef NS_IMPL_THREADSAFE_ISUPPORTS2_CI
# define NS_IMPL_THREADSAFE_ISUPPORTS2_CI(_class, _i1, _i2)                   \
   NS_IMPL_THREADSAFE_ADDREF(_class)                                          \
   NS_IMPL_THREADSAFE_RELEASE(_class)                                         \
   NS_IMPL_THREADSAFE_QUERY_INTERFACE2_CI(_class, _i1, _i2)                   \
   NS_IMPL_CI_INTERFACE_GETTER2(_class, _i1, _i2)
#endif
#ifndef NS_IMPL_THREADSAFE_ISUPPORTS3_CI
# define NS_IMPL_THREADSAFE_ISUPPORTS3_CI(_class, _i1, _i2, _i3)              \
   NS_IMPL_THREADSAFE_ADDREF(_class)                                          \
   NS_IMPL_THREADSAFE_RELEASE(_class)                                         \
   NS_IMPL_THREADSAFE_QUERY_INTERFACE3_CI(_class, _i1, _i2, _i3)              \
   NS_IMPL_CI_INTERFACE_GETTER3(_class, _i1, _i2, _i3)
#endif
#ifndef NS_IMPL_QUERY_INTERFACE1_AMBIGUOUS_CI
# define NS_IMPL_QUERY_INTERFACE1_AMBIGUOUS_CI(_class, _i1, _ic1)             \
   NS_INTERFACE_MAP_BEGIN(_class)                                             \
    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_i1, _ic1)                               \
    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _ic1)                       \
    NS_IMPL_QUERY_CLASSINFO(_class)                                           \
   NS_INTERFACE_MAP_END
#endif
#ifndef NS_IMPL_QUERY_INTERFACE2_AMBIGUOUS_CI
# define NS_IMPL_QUERY_INTERFACE2_AMBIGUOUS_CI(_class, _i1, _ic1,             \
                                               _i2, _ic2)                     \
   NS_INTERFACE_MAP_BEGIN(_class)                                             \
    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_i1, _ic1)                               \
    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_i2, _ic2)                               \
    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _ic1)                       \
    NS_IMPL_QUERY_CLASSINFO(_class)                                           \
   NS_INTERFACE_MAP_END
#endif
#ifndef NS_IMPL_QUERY_INTERFACE3_AMBIGUOUS_CI
# define NS_IMPL_QUERY_INTERFACE3_AMBIGUOUS_CI(_class, _i1, _ic1,             \
                                               _i2, _ic2, _i3, _ic3)          \
   NS_INTERFACE_MAP_BEGIN(_class)                                             \
    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_i1, _ic1)                               \
    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_i2, _ic2)                               \
    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_i3, _ic3)                               \
    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _ic1)                       \
    NS_IMPL_QUERY_CLASSINFO(_class)                                           \
   NS_INTERFACE_MAP_END
#endif
#define NS_IMPL_THREADSAFE_QUERY_INTERFACE1_AMBIGUOUS_CI NS_IMPL_QUERY_INTERFACE1_AMBIGUOUS_CI
#define NS_IMPL_THREADSAFE_QUERY_INTERFACE2_AMBIGUOUS_CI NS_IMPL_QUERY_INTERFACE2_AMBIGUOUS_CI
#define NS_IMPL_THREADSAFE_QUERY_INTERFACE3_AMBIGUOUS_CI NS_IMPL_QUERY_INTERFACE3_AMBIGUOUS_CI
#ifndef NS_IMPL_THREADSAFE_ISUPPORTS1_AMBIGUOUS_CI
# define NS_IMPL_THREADSAFE_ISUPPORTS1_AMBIGUOUS_CI(_class, _i1, _ic1)        \
   NS_IMPL_THREADSAFE_ADDREF(_class)                                          \
   NS_IMPL_THREADSAFE_RELEASE(_class)                                         \
   NS_IMPL_THREADSAFE_QUERY_INTERFACE1_AMBIGUOUS_CI(_class, _i1, _ic1)        \
   NS_IMPL_CI_INTERFACE_GETTER1(_class, _i1)
#endif
#ifndef NS_IMPL_THREADSAFE_ISUPPORTS2_AMBIGUOUS_CI
# define NS_IMPL_THREADSAFE_ISUPPORTS2_AMBIGUOUS_CI(_class, _i1, _ic1,        \
                                                     _i2, _ic2)               \
   NS_IMPL_THREADSAFE_ADDREF(_class)                                          \
   NS_IMPL_THREADSAFE_RELEASE(_class)                                         \
   NS_IMPL_THREADSAFE_QUERY_INTERFACE2_AMBIGUOUS_CI(_class, _i1, _ic1,        \
                                                    _i2, _ic2)                \
   NS_IMPL_CI_INTERFACE_GETTER2(_class, _i1, _i2)
#endif
#ifndef NS_IMPL_THREADSAFE_ISUPPORTS3_AMBIGUOUS_CI
# define NS_IMPL_THREADSAFE_ISUPPORTS3_AMBIGUOUS_CI(_class, _i1, _ic1,        \
                                                     _i2, _ic2, _i3, _ic3)    \
   NS_IMPL_THREADSAFE_ADDREF(_class)                                          \
   NS_IMPL_THREADSAFE_RELEASE(_class)                                         \
   NS_IMPL_THREADSAFE_QUERY_INTERFACE3_AMBIGUOUS_CI(_class, _i1, _ic1,        \
                                                    _i2, _ic2, _i3, _ic3)     \
   NS_IMPL_CI_INTERFACE_GETTER3(_class, _i1, _i2, _i3)
#endif
  
#define VBOX_E_OBJECT_NOT_FOUND 0x80BB0001
#define VBOX_E_INVALID_VM_STATE 0x80BB0002
#define VBOX_E_VM_ERROR 0x80BB0003
#define VBOX_E_FILE_ERROR 0x80BB0004
#define VBOX_E_IPRT_ERROR 0x80BB0005
#define VBOX_E_PDM_ERROR 0x80BB0006
#define VBOX_E_INVALID_OBJECT_STATE 0x80BB0007
#define VBOX_E_HOST_ERROR 0x80BB0008
#define VBOX_E_NOT_SUPPORTED 0x80BB0009
#define VBOX_E_XML_ERROR 0x80BB000A
#define VBOX_E_INVALID_SESSION_STATE 0x80BB000B
#define VBOX_E_OBJECT_IN_USE 0x80BB000C
#define VBOX_E_DONT_CALL_AGAIN 0x80BB000D
class IVirtualBoxErrorInfo; /* forward declaration */

class ILocalOwner; /* forward declaration */

class IVirtualBoxCallback; /* forward declaration */

class IDHCPServer; /* forward declaration */

class IVirtualBox; /* forward declaration */

class IVFSExplorer; /* forward declaration */

class IAppliance; /* forward declaration */

class IVirtualSystemDescription; /* forward declaration */

class IInternalMachineControl; /* forward declaration */

class IBIOSSettings; /* forward declaration */

class IMachine; /* forward declaration */

class IConsoleCallback; /* forward declaration */

class IRemoteDisplayInfo; /* forward declaration */

class IConsole; /* forward declaration */

class IHostNetworkInterface; /* forward declaration */

class IHost; /* forward declaration */

class ISystemProperties; /* forward declaration */

class IGuestOSType; /* forward declaration */

class IGuest; /* forward declaration */

class IProgress; /* forward declaration */

class ISnapshot; /* forward declaration */

class IMediumAttachment; /* forward declaration */

class IMedium; /* forward declaration */

class IMediumFormat; /* forward declaration */

class IKeyboard; /* forward declaration */

class IMouse; /* forward declaration */

class IFramebuffer; /* forward declaration */

class IFramebufferOverlay; /* forward declaration */

class IDisplay; /* forward declaration */

class INetworkAdapter; /* forward declaration */

class ISerialPort; /* forward declaration */

class IParallelPort; /* forward declaration */

class IMachineDebugger; /* forward declaration */

class IUSBController; /* forward declaration */

class IUSBDevice; /* forward declaration */

class IUSBDeviceFilter; /* forward declaration */

class IHostUSBDevice; /* forward declaration */

class IHostUSBDeviceFilter; /* forward declaration */

class IAudioAdapter; /* forward declaration */

class IVRDPServer; /* forward declaration */

class ISharedFolder; /* forward declaration */

class IInternalSessionControl; /* forward declaration */

class ISession; /* forward declaration */

class IStorageController; /* forward declaration */

class IPerformanceMetric; /* forward declaration */

class IPerformanceCollector; /* forward declaration */

class INATEngine; /* forward declaration */


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

#define SETTINGSVERSION_IID \
  {0x52bd6f5f, 0x1adb, 0x4493, \
    { 0x97, 0x5d, 0x58, 0x1a, 0x9c, 0x4b, 0x80, 0x3f }}

class NS_NO_VTABLE SettingsVersion {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(SETTINGSVERSION_IID)

  enum { Null = 0U };

  enum { v1_0 = 1U };

  enum { v1_1 = 2U };

  enum { v1_2 = 3U };

  enum { v1_3pre = 4U };

  enum { v1_3 = 5U };

  enum { v1_4 = 6U };

  enum { v1_5 = 7U };

  enum { v1_6 = 8U };

  enum { v1_7 = 9U };

  enum { v1_8 = 10U };

  enum { v1_9 = 11U };

  enum { v1_10 = 12U };

  enum { Future = 13U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

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

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

class NS_NO_VTABLE AccessMode {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ACCESSMODE_IID)

  enum { ReadOnly = 1U };

  enum { ReadWrite = 2U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

/* starting interface:    MachineState */
#define MACHINESTATE_IID_STR "e998d075-543a-41fc-8aa9-5ca3e92393fd"

#define MACHINESTATE_IID \
  {0xe998d075, 0x543a, 0x41fc, \
    { 0x8a, 0xa9, 0x5c, 0xa3, 0xe9, 0x23, 0x93, 0xfd }}

class NS_NO_VTABLE MachineState {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(MACHINESTATE_IID)

  enum { Null = 0U };

  enum { PoweredOff = 1U };

  enum { Saved = 2U };

  enum { Teleported = 3U };

  enum { Aborted = 4U };

  enum { Running = 5U };

  enum { Paused = 6U };

  enum { Stuck = 7U };

  enum { Teleporting = 8U };

  enum { LiveSnapshotting = 9U };

  enum { Starting = 10U };

  enum { Stopping = 11U };

  enum { Saving = 12U };

  enum { Restoring = 13U };

  enum { TeleportingPausedVM = 14U };

  enum { TeleportingIn = 15U };

  enum { DeletingSnapshotOnline = 16U };

  enum { DeletingSnapshotPaused = 17U };

  enum { RestoringSnapshot = 18U };

  enum { DeletingSnapshot = 19U };

  enum { SettingUp = 20U };

  enum { FirstOnline = 5U };

  enum { LastOnline = 17U };

  enum { FirstTransient = 8U };

  enum { LastTransient = 20U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

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

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

class NS_NO_VTABLE SessionState {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(SESSIONSTATE_IID)

  enum { Null = 0U };

  enum { 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:    CPUPropertyType */
#define CPUPROPERTYTYPE_IID_STR "24d356a6-2f45-4abd-b977-1cbe9c4701f5"

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

class NS_NO_VTABLE CPUPropertyType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(CPUPROPERTYTYPE_IID)

  enum { Null = 0U };

  enum { PAE = 1U };

  enum { Synthetic = 2U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define CPUPropertyType_T PRUint32
#define CPUPropertyType_Null CPUPropertyType::Null
#define CPUPropertyType_PAE CPUPropertyType::PAE
#define CPUPropertyType_Synthetic CPUPropertyType::Synthetic

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

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

class NS_NO_VTABLE HWVirtExPropertyType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(HWVIRTEXPROPERTYTYPE_IID)

  enum { Null = 0U };

  enum { Enabled = 1U };

  enum { Exclusive = 2U };

  enum { VPID = 3U };

  enum { NestedPaging = 4U };

  enum { LargePages = 5U };

  enum { Force = 6U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

/* starting interface:    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:    ClipboardMode */
#define CLIPBOARDMODE_IID_STR "33364716-4008-4701-8f14-be0fa3d62950"

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

class NS_NO_VTABLE ClipboardMode {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(CLIPBOARDMODE_IID)

  enum { Disabled = 0U };

  enum { HostToGuest = 1U };

  enum { GuestToHost = 2U };

  enum { Bidirectional = 3U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

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

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

class NS_NO_VTABLE Scope {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(SCOPE_IID)

  enum { Global = 0U };

  enum { Machine = 1U };

  enum { Session = 2U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

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

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

class NS_NO_VTABLE BIOSBootMenuMode {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(BIOSBOOTMENUMODE_IID)

  enum { Disabled = 0U };

  enum { MenuOnly = 1U };

  enum { MessageAndMenu = 2U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

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

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

class NS_NO_VTABLE ProcessorFeature {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(PROCESSORFEATURE_IID)

  enum { HWVirtEx = 0U };

  enum { PAE = 1U };

  enum { LongMode = 2U };

  enum { NestedPaging = 3U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

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

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

class NS_NO_VTABLE FirmwareType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FIRMWARETYPE_IID)

  enum { BIOS = 1U };

  enum { EFI = 2U };

  enum { EFI32 = 3U };

  enum { EFI64 = 4U };

  enum { EFIDUAL = 5U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

/* starting interface:    PointingHidType */
#define POINTINGHIDTYPE_IID_STR "0d3c17a2-821a-4b2e-ae41-890c6c60aa97"

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

class NS_NO_VTABLE PointingHidType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(POINTINGHIDTYPE_IID)

  enum { None = 1U };

  enum { PS2Mouse = 2U };

  enum { USBMouse = 3U };

  enum { USBTablet = 4U };

  enum { ComboMouse = 5U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define PointingHidType_T PRUint32
#define PointingHidType_None PointingHidType::None
#define PointingHidType_PS2Mouse PointingHidType::PS2Mouse
#define PointingHidType_USBMouse PointingHidType::USBMouse
#define PointingHidType_USBTablet PointingHidType::USBTablet
#define PointingHidType_ComboMouse PointingHidType::ComboMouse

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

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

class NS_NO_VTABLE KeyboardHidType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(KEYBOARDHIDTYPE_IID)

  enum { None = 1U };

  enum { PS2Keyboard = 2U };

  enum { USBKeyboard = 3U };

  enum { ComboKeyboard = 4U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define KeyboardHidType_T PRUint32
#define KeyboardHidType_None KeyboardHidType::None
#define KeyboardHidType_PS2Keyboard KeyboardHidType::PS2Keyboard
#define KeyboardHidType_USBKeyboard KeyboardHidType::USBKeyboard
#define KeyboardHidType_ComboKeyboard KeyboardHidType::ComboKeyboard

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

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

class NS_NO_VTABLE VFSType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(VFSTYPE_IID)

  enum { File = 1U };

  enum { Cloud = 2U };

  enum { S3 = 3U };

  enum { WebDav = 4U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

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

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

class NS_NO_VTABLE VFSFileType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(VFSFILETYPE_IID)

  enum { Unknown = 1U };

  enum { Fifo = 2U };

  enum { DevChar = 3U };

  enum { Directory = 4U };

  enum { DevBlock = 5U };

  enum { File = 6U };

  enum { SymLink = 7U };

  enum { Socket = 8U };

  enum { WhiteOut = 9U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

/* starting interface:    VirtualSystemDescriptionType */
#define VIRTUALSYSTEMDESCRIPTIONTYPE_IID_STR "c0f8f135-3a1d-417d-afa6-b38b95a91f90"

#define VIRTUALSYSTEMDESCRIPTIONTYPE_IID \
  {0xc0f8f135, 0x3a1d, 0x417d, \
    { 0xaf, 0xa6, 0xb3, 0x8b, 0x95, 0xa9, 0x1f, 0x90 }}

class NS_NO_VTABLE VirtualSystemDescriptionType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(VIRTUALSYSTEMDESCRIPTIONTYPE_IID)

  enum { Ignore = 1U };

  enum { OS = 2U };

  enum { Name = 3U };

  enum { Product = 4U };

  enum { Vendor = 5U };

  enum { Version = 6U };

  enum { ProductUrl = 7U };

  enum { VendorUrl = 8U };

  enum { Description = 9U };

  enum { License = 10U };

  enum { Miscellaneous = 11U };

  enum { CPU = 12U };

  enum { Memory = 13U };

  enum { HardDiskControllerIDE = 14U };

  enum { HardDiskControllerSATA = 15U };

  enum { HardDiskControllerSCSI = 16U };

  enum { HardDiskControllerSAS = 17U };

  enum { HardDiskImage = 18U };

  enum { Floppy = 19U };

  enum { CDROM = 20U };

  enum { NetworkAdapter = 21U };

  enum { USBController = 22U };

  enum { SoundCard = 23U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

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

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

class NS_NO_VTABLE VirtualSystemDescriptionValueType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(VIRTUALSYSTEMDESCRIPTIONVALUETYPE_IID)

  enum { Reference = 1U };

  enum { Original = 2U };

  enum { Auto = 3U };

  enum { ExtraConfig = 4U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

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

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

class NS_NO_VTABLE HostNetworkInterfaceMediumType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(HOSTNETWORKINTERFACEMEDIUMTYPE_IID)

  enum { Unknown = 0U };

  enum { Ethernet = 1U };

  enum { PPP = 2U };

  enum { SLIP = 3U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

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

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

class NS_NO_VTABLE HostNetworkInterfaceStatus {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(HOSTNETWORKINTERFACESTATUS_IID)

  enum { Unknown = 0U };

  enum { Up = 1U };

  enum { Down = 2U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

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

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

class NS_NO_VTABLE HostNetworkInterfaceType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(HOSTNETWORKINTERFACETYPE_IID)

  enum { Bridged = 1U };

  enum { HostOnly = 2U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

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

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

class NS_NO_VTABLE MediumState {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(MEDIUMSTATE_IID)

  enum { NotCreated = 0U };

  enum { Created = 1U };

  enum { LockedRead = 2U };

  enum { LockedWrite = 3U };

  enum { Inaccessible = 4U };

  enum { Creating = 5U };

  enum { Deleting = 6U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

/* starting interface:    MediumType */
#define MEDIUMTYPE_IID_STR "46bf1fd4-ad86-4ded-8c49-28bd2d148e5a"

#define MEDIUMTYPE_IID \
  {0x46bf1fd4, 0xad86, 0x4ded, \
    { 0x8c, 0x49, 0x28, 0xbd, 0x2d, 0x14, 0x8e, 0x5a }}

class NS_NO_VTABLE MediumType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(MEDIUMTYPE_IID)

  enum { Normal = 0U };

  enum { Immutable = 1U };

  enum { Writethrough = 2U };

  enum { Shareable = 3U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define MediumType_T PRUint32
#define MediumType_Normal MediumType::Normal
#define MediumType_Immutable MediumType::Immutable
#define MediumType_Writethrough MediumType::Writethrough
#define MediumType_Shareable MediumType::Shareable

/* starting interface:    MediumVariant */
#define MEDIUMVARIANT_IID_STR "584ea502-143b-4ab0-ad14-d1028fdf0316"

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

class NS_NO_VTABLE MediumVariant {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(MEDIUMVARIANT_IID)

  enum { Standard = 0U };

  enum { VmdkSplit2G = 1U };

  enum { VmdkStreamOptimized = 4U };

  enum { VmdkESX = 8U };

  enum { Fixed = 65536U };

  enum { Diff = 131072U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

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

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

class NS_NO_VTABLE DataType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(DATATYPE_IID)

  enum { Int32 = 0U };

  enum { Int8 = 1U };

  enum { String = 2U };

};

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

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

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

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

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

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

class NS_NO_VTABLE DataFlags {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(DATAFLAGS_IID)

  enum { None = 0U };

  enum { Mandatory = 1U };

  enum { Expert = 2U };

  enum { Array = 4U };

  enum { FlagMask = 7U };

};

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

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

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

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

/* Header file */
class _MYCLASS_ : public DataFlags
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_DATAFLAGS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define DataFlags_T PRUint32
#define DataFlags_None DataFlags::None
#define DataFlags_Mandatory DataFlags::Mandatory
#define DataFlags_Expert DataFlags::Expert
#define DataFlags_Array DataFlags::Array
#define DataFlags_FlagMask DataFlags::FlagMask

/* starting interface:    MediumFormatCapabilities */
#define MEDIUMFORMATCAPABILITIES_IID_STR "70fcf810-99e8-4edc-aee4-7f51d489e657"

#define MEDIUMFORMATCAPABILITIES_IID \
  {0x70fcf810, 0x99e8, 0x4edc, \
    { 0xae, 0xe4, 0x7f, 0x51, 0xd4, 0x89, 0xe6, 0x57 }}

class NS_NO_VTABLE MediumFormatCapabilities {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(MEDIUMFORMATCAPABILITIES_IID)

  enum { Uuid = 1U };

  enum { CreateFixed = 2U };

  enum { CreateDynamic = 4U };

  enum { CreateSplit2G = 8U };

  enum { Differencing = 16U };

  enum { Asynchronous = 32U };

  enum { File = 64U };

  enum { Properties = 128U };

  enum { CapabilityMask = 255U };

};

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

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

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

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

/* Header file */
class _MYCLASS_ : public MediumFormatCapabilities
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_MEDIUMFORMATCAPABILITIES

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define MediumFormatCapabilities_T PRUint32
#define MediumFormatCapabilities_Uuid MediumFormatCapabilities::Uuid
#define MediumFormatCapabilities_CreateFixed MediumFormatCapabilities::CreateFixed
#define MediumFormatCapabilities_CreateDynamic MediumFormatCapabilities::CreateDynamic
#define MediumFormatCapabilities_CreateSplit2G MediumFormatCapabilities::CreateSplit2G
#define MediumFormatCapabilities_Differencing MediumFormatCapabilities::Differencing
#define MediumFormatCapabilities_Asynchronous MediumFormatCapabilities::Asynchronous
#define MediumFormatCapabilities_File MediumFormatCapabilities::File
#define MediumFormatCapabilities_Properties MediumFormatCapabilities::Properties
#define MediumFormatCapabilities_CapabilityMask MediumFormatCapabilities::CapabilityMask

/* starting interface:    MouseButtonState */
#define MOUSEBUTTONSTATE_IID_STR "9ee094b8-b28a-4d56-a166-973cb588d7f8"

#define MOUSEBUTTONSTATE_IID \
  {0x9ee094b8, 0xb28a, 0x4d56, \
    { 0xa1, 0x66, 0x97, 0x3c, 0xb5, 0x88, 0xd7, 0xf8 }}

class NS_NO_VTABLE MouseButtonState {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(MOUSEBUTTONSTATE_IID)

  enum { LeftButton = 1U };

  enum { RightButton = 2U };

  enum { MiddleButton = 4U };

  enum { WheelUp = 8U };

  enum { WheelDown = 16U };

  enum { XButton1 = 32U };

  enum { XButton2 = 64U };

  enum { MouseStateMask = 127U };

};

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

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

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

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

/* Header file */
class _MYCLASS_ : public MouseButtonState
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_MOUSEBUTTONSTATE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define MouseButtonState_T PRUint32
#define MouseButtonState_LeftButton MouseButtonState::LeftButton
#define MouseButtonState_RightButton MouseButtonState::RightButton
#define MouseButtonState_MiddleButton MouseButtonState::MiddleButton
#define MouseButtonState_WheelUp MouseButtonState::WheelUp
#define MouseButtonState_WheelDown MouseButtonState::WheelDown
#define MouseButtonState_XButton1 MouseButtonState::XButton1
#define MouseButtonState_XButton2 MouseButtonState::XButton2
#define MouseButtonState_MouseStateMask MouseButtonState::MouseStateMask

/* starting interface:    FramebufferPixelFormat */
#define FRAMEBUFFERPIXELFORMAT_IID_STR "7acfd5ed-29e3-45e3-8136-73c9224f3d2d"

#define FRAMEBUFFERPIXELFORMAT_IID \
  {0x7acfd5ed, 0x29e3, 0x45e3, \
    { 0x81, 0x36, 0x73, 0xc9, 0x22, 0x4f, 0x3d, 0x2d }}

class NS_NO_VTABLE FramebufferPixelFormat {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FRAMEBUFFERPIXELFORMAT_IID)

  enum { Opaque = 0U };

  enum { FOURCC_RGB = 843204434U };

};

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

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

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

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

/* Header file */
class _MYCLASS_ : public FramebufferPixelFormat
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FRAMEBUFFERPIXELFORMAT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define FramebufferPixelFormat_T PRUint32
#define FramebufferPixelFormat_Opaque FramebufferPixelFormat::Opaque
#define FramebufferPixelFormat_FOURCC_RGB FramebufferPixelFormat::FOURCC_RGB

/* starting interface:    NetworkAttachmentType */
#define NETWORKATTACHMENTTYPE_IID_STR "44bce1ee-99f7-4e8e-89fc-80597fd9eeaf"

#define NETWORKATTACHMENTTYPE_IID \
  {0x44bce1ee, 0x99f7, 0x4e8e, \
    { 0x89, 0xfc, 0x80, 0x59, 0x7f, 0xd9, 0xee, 0xaf }}

class NS_NO_VTABLE NetworkAttachmentType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NETWORKATTACHMENTTYPE_IID)

  enum { Null = 0U };

  enum { NAT = 1U };

  enum { Bridged = 2U };

  enum { Internal = 3U };

  enum { HostOnly = 4U };

  enum { VDE = 5U };

};

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

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

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

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

/* Header file */
class _MYCLASS_ : public NetworkAttachmentType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NETWORKATTACHMENTTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define NetworkAttachmentType_T PRUint32
#define NetworkAttachmentType_Null NetworkAttachmentType::Null
#define NetworkAttachmentType_NAT NetworkAttachmentType::NAT
#define NetworkAttachmentType_Bridged NetworkAttachmentType::Bridged
#define NetworkAttachmentType_Internal NetworkAttachmentType::Internal
#define NetworkAttachmentType_HostOnly NetworkAttachmentType::HostOnly
#define NetworkAttachmentType_VDE NetworkAttachmentType::VDE

/* starting interface:    NetworkAdapterType */
#define NETWORKADAPTERTYPE_IID_STR "3c2281e4-d952-4e87-8c7d-24379cb6a81c"

#define NETWORKADAPTERTYPE_IID \
  {0x3c2281e4, 0xd952, 0x4e87, \
    { 0x8c, 0x7d, 0x24, 0x37, 0x9c, 0xb6, 0xa8, 0x1c }}

class NS_NO_VTABLE NetworkAdapterType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NETWORKADAPTERTYPE_IID)

  enum { Null = 0U };

  enum { Am79C970A = 1U };

  enum { Am79C973 = 2U };

  enum { I82540EM = 3U };

  enum { I82543GC = 4U };

  enum { I82545EM = 5U };

  enum { Virtio = 6U };

};

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

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

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

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

/* Header file */
class _MYCLASS_ : public NetworkAdapterType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NETWORKADAPTERTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define NetworkAdapterType_T PRUint32
#define NetworkAdapterType_Null NetworkAdapterType::Null
#define NetworkAdapterType_Am79C970A NetworkAdapterType::Am79C970A
#define NetworkAdapterType_Am79C973 NetworkAdapterType::Am79C973
#define NetworkAdapterType_I82540EM NetworkAdapterType::I82540EM
#define NetworkAdapterType_I82543GC NetworkAdapterType::I82543GC
#define NetworkAdapterType_I82545EM NetworkAdapterType::I82545EM
#define NetworkAdapterType_Virtio NetworkAdapterType::Virtio

/* starting interface:    PortMode */
#define PORTMODE_IID_STR "533b5fe3-0185-4197-86a7-17e37dd39d76"

#define PORTMODE_IID \
  {0x533b5fe3, 0x0185, 0x4197, \
    { 0x86, 0xa7, 0x17, 0xe3, 0x7d, 0xd3, 0x9d, 0x76 }}

class NS_NO_VTABLE PortMode {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(PORTMODE_IID)

  enum { Disconnected = 0U };

  enum { HostPipe = 1U };

  enum { HostDevice = 2U };

  enum { RawFile = 3U };

};

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

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

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

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

/* Header file */
class _MYCLASS_ : public PortMode
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_PORTMODE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define PortMode_T PRUint32
#define PortMode_Disconnected PortMode::Disconnected
#define PortMode_HostPipe PortMode::HostPipe
#define PortMode_HostDevice PortMode::HostDevice
#define PortMode_RawFile PortMode::RawFile

/* starting interface:    USBDeviceState */
#define USBDEVICESTATE_IID_STR "b99a2e65-67fb-4882-82fd-f3e5e8193ab4"

#define USBDEVICESTATE_IID \
  {0xb99a2e65, 0x67fb, 0x4882, \
    { 0x82, 0xfd, 0xf3, 0xe5, 0xe8, 0x19, 0x3a, 0xb4 }}

class NS_NO_VTABLE USBDeviceState {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(USBDEVICESTATE_IID)

  enum { NotSupported = 0U };

  enum { Unavailable = 1U };

  enum { Busy = 2U };

  enum { Available = 3U };

  enum { Held = 4U };

  enum { Captured = 5U };

};

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

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

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

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

/* Header file */
class _MYCLASS_ : public USBDeviceState
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_USBDEVICESTATE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define USBDeviceState_T PRUint32
#define USBDeviceState_NotSupported USBDeviceState::NotSupported
#define USBDeviceState_Unavailable USBDeviceState::Unavailable
#define USBDeviceState_Busy USBDeviceState::Busy
#define USBDeviceState_Available USBDeviceState::Available
#define USBDeviceState_Held USBDeviceState::Held
#define USBDeviceState_Captured USBDeviceState::Captured

/* starting interface:    USBDeviceFilterAction */
#define USBDEVICEFILTERACTION_IID_STR "cbc30a49-2f4e-43b5-9da6-121320475933"

#define USBDEVICEFILTERACTION_IID \
  {0xcbc30a49, 0x2f4e, 0x43b5, \
    { 0x9d, 0xa6, 0x12, 0x13, 0x20, 0x47, 0x59, 0x33 }}

class NS_NO_VTABLE USBDeviceFilterAction {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(USBDEVICEFILTERACTION_IID)

  enum { Null = 0U };

  enum { Ignore = 1U };

  enum { Hold = 2U };

};

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

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

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

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

/* Header file */
class _MYCLASS_ : public USBDeviceFilterAction
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_USBDEVICEFILTERACTION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define USBDeviceFilterAction_T PRUint32
#define USBDeviceFilterAction_Null USBDeviceFilterAction::Null
#define USBDeviceFilterAction_Ignore USBDeviceFilterAction::Ignore
#define USBDeviceFilterAction_Hold USBDeviceFilterAction::Hold

/* starting interface:    AudioDriverType */
#define AUDIODRIVERTYPE_IID_STR "4bcc3d73-c2fe-40db-b72f-0c2ca9d68496"

#define AUDIODRIVERTYPE_IID \
  {0x4bcc3d73, 0xc2fe, 0x40db, \
    { 0xb7, 0x2f, 0x0c, 0x2c, 0xa9, 0xd6, 0x84, 0x96 }}

class NS_NO_VTABLE AudioDriverType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(AUDIODRIVERTYPE_IID)

  enum { Null = 0U };

  enum { WinMM = 1U };

  enum { OSS = 2U };

  enum { ALSA = 3U };

  enum { DirectSound = 4U };

  enum { CoreAudio = 5U };

  enum { MMPM = 6U };

  enum { Pulse = 7U };

  enum { SolAudio = 8U };

};

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

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

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

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

/* Header file */
class _MYCLASS_ : public AudioDriverType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_AUDIODRIVERTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define AudioDriverType_T PRUint32
#define AudioDriverType_Null AudioDriverType::Null
#define AudioDriverType_WinMM AudioDriverType::WinMM
#define AudioDriverType_OSS AudioDriverType::OSS
#define AudioDriverType_ALSA AudioDriverType::ALSA
#define AudioDriverType_DirectSound AudioDriverType::DirectSound
#define AudioDriverType_CoreAudio AudioDriverType::CoreAudio
#define AudioDriverType_MMPM AudioDriverType::MMPM
#define AudioDriverType_Pulse AudioDriverType::Pulse
#define AudioDriverType_SolAudio AudioDriverType::SolAudio

/* starting interface:    AudioControllerType */
#define AUDIOCONTROLLERTYPE_IID_STR "7afd395c-42c3-444e-8788-3ce80292f36c"

#define AUDIOCONTROLLERTYPE_IID \
  {0x7afd395c, 0x42c3, 0x444e, \
    { 0x87, 0x88, 0x3c, 0xe8, 0x02, 0x92, 0xf3, 0x6c }}

class NS_NO_VTABLE AudioControllerType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(AUDIOCONTROLLERTYPE_IID)

  enum { AC97 = 0U };

  enum { SB16 = 1U };

};

/* 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:    StorageBus */
#define STORAGEBUS_IID_STR "eee67ab3-668d-4ef5-91e0-7025fe4a0d7a"

#define STORAGEBUS_IID \
  {0xeee67ab3, 0x668d, 0x4ef5, \
    { 0x91, 0xe0, 0x70, 0x25, 0xfe, 0x4a, 0x0d, 0x7a }}

class NS_NO_VTABLE StorageBus {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(STORAGEBUS_IID)

  enum { Null = 0U };

  enum { IDE = 1U };

  enum { SATA = 2U };

  enum { SCSI = 3U };

  enum { Floppy = 4U };

  enum { SAS = 5U };

};

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

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

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

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

/* Header file */
class _MYCLASS_ : public StorageBus
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_STORAGEBUS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define StorageBus_T PRUint32
#define StorageBus_Null StorageBus::Null
#define StorageBus_IDE StorageBus::IDE
#define StorageBus_SATA StorageBus::SATA
#define StorageBus_SCSI StorageBus::SCSI
#define StorageBus_Floppy StorageBus::Floppy
#define StorageBus_SAS StorageBus::SAS

/* starting interface:    StorageControllerType */
#define STORAGECONTROLLERTYPE_IID_STR "8a412b8a-f43e-4456-bd37-b474f0879a58"

#define STORAGECONTROLLERTYPE_IID \
  {0x8a412b8a, 0xf43e, 0x4456, \
    { 0xbd, 0x37, 0xb4, 0x74, 0xf0, 0x87, 0x9a, 0x58 }}

class NS_NO_VTABLE StorageControllerType {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(STORAGECONTROLLERTYPE_IID)

  enum { Null = 0U };

  enum { LsiLogic = 1U };

  enum { BusLogic = 2U };

  enum { IntelAhci = 3U };

  enum { PIIX3 = 4U };

  enum { PIIX4 = 5U };

  enum { ICH6 = 6U };

  enum { I82078 = 7U };

  enum { LsiLogicSas = 8U };

};

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

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

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

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

/* Header file */
class _MYCLASS_ : public StorageControllerType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_STORAGECONTROLLERTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define StorageControllerType_T PRUint32
#define StorageControllerType_Null StorageControllerType::Null
#define StorageControllerType_LsiLogic StorageControllerType::LsiLogic
#define StorageControllerType_BusLogic StorageControllerType::BusLogic
#define StorageControllerType_IntelAhci StorageControllerType::IntelAhci
#define StorageControllerType_PIIX3 StorageControllerType::PIIX3
#define StorageControllerType_PIIX4 StorageControllerType::PIIX4
#define StorageControllerType_ICH6 StorageControllerType::ICH6
#define StorageControllerType_I82078 StorageControllerType::I82078
#define StorageControllerType_LsiLogicSas StorageControllerType::LsiLogicSas

/* starting interface:    NATAliasMode */
#define NATALIASMODE_IID_STR "67772168-50d9-11df-9669-7fb714ee4fa1"

#define NATALIASMODE_IID \
  {0x67772168, 0x50d9, 0x11df, \
    { 0x96, 0x69, 0x7f, 0xb7, 0x14, 0xee, 0x4f, 0xa1 }}

class NS_NO_VTABLE NATAliasMode {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NATALIASMODE_IID)

  enum { AliasLog = 1U };

  enum { AliasProxyOnly = 2U };

  enum { AliasUseSamePorts = 4U };

};

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

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

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

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

/* Header file */
class _MYCLASS_ : public NATAliasMode
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NATALIASMODE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define NATAliasMode_T PRUint32
#define NATAliasMode_AliasLog NATAliasMode::AliasLog
#define NATAliasMode_AliasProxyOnly NATAliasMode::AliasProxyOnly
#define NATAliasMode_AliasUseSamePorts NATAliasMode::AliasUseSamePorts

/* starting interface:    NATProtocol */
#define NATPROTOCOL_IID_STR "e90164be-eb03-11de-94af-fff9b1c1b19f"

#define NATPROTOCOL_IID \
  {0xe90164be, 0xeb03, 0x11de, \
    { 0x94, 0xaf, 0xff, 0xf9, 0xb1, 0xc1, 0xb1, 0x9f }}

class NS_NO_VTABLE NATProtocol {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NATPROTOCOL_IID)

  enum { UDP = 0U };

  enum { TCP = 1U };

};

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

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

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

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

/* Header file */
class _MYCLASS_ : public NATProtocol
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NATPROTOCOL

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

#define NATProtocol_T PRUint32
#define NATProtocol_UDP NATProtocol::UDP
#define NATProtocol_TCP NATProtocol::TCP

/* starting interface:    IVirtualBoxErrorInfo */
#define IVIRTUALBOXERRORINFO_IID_STR "4b86d186-407e-4f9e-8be8-e50061be8725"

#define IVIRTUALBOXERRORINFO_IID \
  {0x4b86d186, 0x407e, 0x4f9e, \
    { 0x8b, 0xe8, 0xe5, 0x00, 0x61, 0xbe, 0x87, 0x25 }}

class NS_NO_VTABLE IVirtualBoxErrorInfo : public nsIException {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVIRTUALBOXERRORINFO_IID)

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

  /* readonly attribute wstring interfaceID; */
  NS_IMETHOD GetInterfaceID(PRUnichar * *aInterfaceID) = 0;

  /* readonly attribute wstring component; */
  NS_IMETHOD GetComponent(PRUnichar * *aComponent) = 0;

  /* readonly attribute wstring text; */
  NS_IMETHOD GetText(PRUnichar * *aText) = 0;

  /* readonly attribute IVirtualBoxErrorInfo next; */
  NS_IMETHOD GetNext(IVirtualBoxErrorInfo * *aNext) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVIRTUALBOXERRORINFO \
  NS_IMETHOD GetResultCode(PRInt32 *aResultCode); \
  NS_IMETHOD GetInterfaceID(PRUnichar * *aInterfaceID); \
  NS_IMETHOD GetComponent(PRUnichar * *aComponent); \
  NS_IMETHOD GetText(PRUnichar * *aText); \
  NS_IMETHOD GetNext(IVirtualBoxErrorInfo * *aNext); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IVIRTUALBOXERRORINFO(_to) \
  NS_IMETHOD GetResultCode(PRInt32 *aResultCode) { return _to GetResultCode(aResultCode); } \
  NS_IMETHOD GetInterfaceID(PRUnichar * *aInterfaceID) { return _to GetInterfaceID(aInterfaceID); } \
  NS_IMETHOD GetComponent(PRUnichar * *aComponent) { return _to GetComponent(aComponent); } \
  NS_IMETHOD GetText(PRUnichar * *aText) { return _to GetText(aText); } \
  NS_IMETHOD GetNext(IVirtualBoxErrorInfo * *aNext) { return _to GetNext(aNext); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IVIRTUALBOXERRORINFO(_to) \
  NS_IMETHOD GetResultCode(PRInt32 *aResultCode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetResultCode(aResultCode); } \
  NS_IMETHOD GetInterfaceID(PRUnichar * *aInterfaceID) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInterfaceID(aInterfaceID); } \
  NS_IMETHOD GetComponent(PRUnichar * *aComponent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetComponent(aComponent); } \
  NS_IMETHOD GetText(PRUnichar * *aText) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetText(aText); } \
  NS_IMETHOD GetNext(IVirtualBoxErrorInfo * *aNext) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNext(aNext); } 

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

/* Header file */
class _MYCLASS_ : public IVirtualBoxErrorInfo
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IVIRTUALBOXERRORINFO

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute long resultCode; */
NS_IMETHODIMP _MYCLASS_::GetResultCode(PRInt32 *aResultCode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring interfaceID; */
NS_IMETHODIMP _MYCLASS_::GetInterfaceID(PRUnichar * *aInterfaceID)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring component; */
NS_IMETHODIMP _MYCLASS_::GetComponent(PRUnichar * *aComponent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring text; */
NS_IMETHODIMP _MYCLASS_::GetText(PRUnichar * *aText)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IVirtualBoxErrorInfo next; */
NS_IMETHODIMP _MYCLASS_::GetNext(IVirtualBoxErrorInfo * *aNext)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_ResultCode_TO(smth) NS_IMETHOD GetResultCode (PRInt32 * aResultCode) { return smth GetResultCode (aResultCode); }
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_ResultCode_TO_OBJ(obj) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_ResultCode_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_ResultCode_TO_BASE(base) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_ResultCode_TO (base::)
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_InterfaceID_TO(smth) NS_IMETHOD GetInterfaceID (PRUnichar * * aInterfaceID) { return smth GetInterfaceID (aInterfaceID); }
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_InterfaceID_TO_OBJ(obj) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_InterfaceID_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_InterfaceID_TO_BASE(base) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_InterfaceID_TO (base::)
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Component_TO(smth) NS_IMETHOD GetComponent (PRUnichar * * aComponent) { return smth GetComponent (aComponent); }
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Component_TO_OBJ(obj) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Component_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Component_TO_BASE(base) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Component_TO (base::)
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Text_TO(smth) NS_IMETHOD GetText (PRUnichar * * aText) { return smth GetText (aText); }
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Text_TO_OBJ(obj) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Text_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Text_TO_BASE(base) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Text_TO (base::)
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Next_TO(smth) NS_IMETHOD GetNext (IVirtualBoxErrorInfo * * aNext) { return smth GetNext (aNext); }
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Next_TO_OBJ(obj) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Next_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Next_TO_BASE(base) COM_FORWARD_IVirtualBoxErrorInfo_GETTER_Next_TO (base::)
#define COM_FORWARD_IVirtualBoxErrorInfo_TO(smth) NS_FORWARD_IVIRTUALBOXERRORINFO (smth)
#define COM_FORWARD_IVirtualBoxErrorInfo_TO_OBJ(obj) COM_FORWARD_IVirtualBoxErrorInfo_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxErrorInfo_TO_BASE(base) COM_FORWARD_IVirtualBoxErrorInfo_TO (base::)

/* starting interface:    ILocalOwner */
#define ILOCALOWNER_IID_STR "308ff42a-dc45-49d4-a950-b1eee5e00bb5"

#define ILOCALOWNER_IID \
  {0x308ff42a, 0xdc45, 0x49d4, \
    { 0xa9, 0x50, 0xb1, 0xee, 0xe5, 0xe0, 0x0b, 0xb5 }}

class NS_NO_VTABLE ILocalOwner : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ILOCALOWNER_IID)

  /* void setLocalObject (in nsISupports object); */
  NS_IMETHOD SetLocalObject(nsISupports *object) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ILOCALOWNER \
  NS_IMETHOD SetLocalObject(nsISupports *object); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ILOCALOWNER(_to) \
  NS_IMETHOD SetLocalObject(nsISupports *object) { return _to SetLocalObject(object); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ILOCALOWNER(_to) \
  NS_IMETHOD SetLocalObject(nsISupports *object) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLocalObject(object); } 

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

/* Header file */
class _MYCLASS_ : public ILocalOwner
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ILOCALOWNER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void setLocalObject (in nsISupports object); */
NS_IMETHODIMP _MYCLASS_::SetLocalObject(nsISupports *object)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_ILocalOwner_SetLocalObject_TO(smth) NS_IMETHOD SetLocalObject (nsISupports * aObject) { return smth SetLocalObject (aObject); }
#define COM_FORWARD_ILocalOwner_SetLocalObject_TO_OBJ(obj) COM_FORWARD_ILocalOwner_SetLocalObject_TO ((obj)->)
#define COM_FORWARD_ILocalOwner_SetLocalObject_TO_BASE(base) COM_FORWARD_ILocalOwner_SetLocalObject_TO (base::)
#define COM_FORWARD_ILocalOwner_TO(smth) NS_FORWARD_ILOCALOWNER (smth)
#define COM_FORWARD_ILocalOwner_TO_OBJ(obj) COM_FORWARD_ILocalOwner_TO ((obj)->)
#define COM_FORWARD_ILocalOwner_TO_BASE(base) COM_FORWARD_ILocalOwner_TO (base::)

/* starting interface:    IVirtualBoxCallback */
#define IVIRTUALBOXCALLBACK_IID_STR "7f6a65b6-ad5d-4a67-8872-0b11cb7ea95c"

#define IVIRTUALBOXCALLBACK_IID \
  {0x7f6a65b6, 0xad5d, 0x4a67, \
    { 0x88, 0x72, 0x0b, 0x11, 0xcb, 0x7e, 0xa9, 0x5c }}

class NS_NO_VTABLE IVirtualBoxCallback : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVIRTUALBOXCALLBACK_IID)

  /* void onMachineStateChange (in wstring machineId, in PRUint32 state); */
  NS_IMETHOD OnMachineStateChange(const PRUnichar *machineId, PRUint32 state) = 0;

  /* void onMachineDataChange (in wstring machineId); */
  NS_IMETHOD OnMachineDataChange(const PRUnichar *machineId) = 0;

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

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

  /* void onMediumRegistered (in wstring mediumId, in PRUint32 mediumType, in boolean registered); */
  NS_IMETHOD OnMediumRegistered(const PRUnichar *mediumId, PRUint32 mediumType, PRBool registered) = 0;

  /* void onMachineRegistered (in wstring machineId, in boolean registered); */
  NS_IMETHOD OnMachineRegistered(const PRUnichar *machineId, PRBool registered) = 0;

  /* void onSessionStateChange (in wstring machineId, in PRUint32 state); */
  NS_IMETHOD OnSessionStateChange(const PRUnichar *machineId, PRUint32 state) = 0;

  /* void onSnapshotTaken (in wstring machineId, in wstring snapshotId); */
  NS_IMETHOD OnSnapshotTaken(const PRUnichar *machineId, const PRUnichar *snapshotId) = 0;

  /* void onSnapshotDeleted (in wstring machineId, in wstring snapshotId); */
  NS_IMETHOD OnSnapshotDeleted(const PRUnichar *machineId, const PRUnichar *snapshotId) = 0;

  /* void onSnapshotChange (in wstring machineId, in wstring snapshotId); */
  NS_IMETHOD OnSnapshotChange(const PRUnichar *machineId, const PRUnichar *snapshotId) = 0;

  /* void onGuestPropertyChange (in wstring machineId, in wstring name, in wstring value, in wstring flags); */
  NS_IMETHOD OnGuestPropertyChange(const PRUnichar *machineId, const PRUnichar *name, const PRUnichar *value, const PRUnichar *flags) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVIRTUALBOXCALLBACK \
  NS_IMETHOD OnMachineStateChange(const PRUnichar *machineId, PRUint32 state); \
  NS_IMETHOD OnMachineDataChange(const PRUnichar *machineId); \
  NS_IMETHOD OnExtraDataCanChange(const PRUnichar *machineId, const PRUnichar *key, const PRUnichar *value, PRUnichar **error, PRBool *allowChange); \
  NS_IMETHOD OnExtraDataChange(const PRUnichar *machineId, const PRUnichar *key, const PRUnichar *value); \
  NS_IMETHOD OnMediumRegistered(const PRUnichar *mediumId, PRUint32 mediumType, PRBool registered); \
  NS_IMETHOD OnMachineRegistered(const PRUnichar *machineId, PRBool registered); \
  NS_IMETHOD OnSessionStateChange(const PRUnichar *machineId, PRUint32 state); \
  NS_IMETHOD OnSnapshotTaken(const PRUnichar *machineId, const PRUnichar *snapshotId); \
  NS_IMETHOD OnSnapshotDeleted(const PRUnichar *machineId, const PRUnichar *snapshotId); \
  NS_IMETHOD OnSnapshotChange(const PRUnichar *machineId, const PRUnichar *snapshotId); \
  NS_IMETHOD OnGuestPropertyChange(const PRUnichar *machineId, const PRUnichar *name, const PRUnichar *value, const PRUnichar *flags); 

/* 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 PRUnichar *machineId, PRUint32 state) { return _to OnMachineStateChange(machineId, state); } \
  NS_IMETHOD OnMachineDataChange(const PRUnichar *machineId) { return _to OnMachineDataChange(machineId); } \
  NS_IMETHOD OnExtraDataCanChange(const PRUnichar *machineId, const PRUnichar *key, const PRUnichar *value, PRUnichar **error, PRBool *allowChange) { return _to OnExtraDataCanChange(machineId, key, value, error, allowChange); } \
  NS_IMETHOD OnExtraDataChange(const PRUnichar *machineId, const PRUnichar *key, const PRUnichar *value) { return _to OnExtraDataChange(machineId, key, value); } \
  NS_IMETHOD OnMediumRegistered(const PRUnichar *mediumId, PRUint32 mediumType, PRBool registered) { return _to OnMediumRegistered(mediumId, mediumType, registered); } \
  NS_IMETHOD OnMachineRegistered(const PRUnichar *machineId, PRBool registered) { return _to OnMachineRegistered(machineId, registered); } \
  NS_IMETHOD OnSessionStateChange(const PRUnichar *machineId, PRUint32 state) { return _to OnSessionStateChange(machineId, state); } \
  NS_IMETHOD OnSnapshotTaken(const PRUnichar *machineId, const PRUnichar *snapshotId) { return _to OnSnapshotTaken(machineId, snapshotId); } \
  NS_IMETHOD OnSnapshotDeleted(const PRUnichar *machineId, const PRUnichar *snapshotId) { return _to OnSnapshotDeleted(machineId, snapshotId); } \
  NS_IMETHOD OnSnapshotChange(const PRUnichar *machineId, const PRUnichar *snapshotId) { return _to OnSnapshotChange(machineId, snapshotId); } \
  NS_IMETHOD OnGuestPropertyChange(const PRUnichar *machineId, const PRUnichar *name, const PRUnichar *value, const PRUnichar *flags) { return _to OnGuestPropertyChange(machineId, name, value, flags); } 

/* 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 PRUnichar *machineId, PRUint32 state) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnMachineStateChange(machineId, state); } \
  NS_IMETHOD OnMachineDataChange(const PRUnichar *machineId) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnMachineDataChange(machineId); } \
  NS_IMETHOD OnExtraDataCanChange(const PRUnichar *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 PRUnichar *machineId, const PRUnichar *key, const PRUnichar *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnExtraDataChange(machineId, key, value); } \
  NS_IMETHOD OnMediumRegistered(const PRUnichar *mediumId, PRUint32 mediumType, PRBool registered) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnMediumRegistered(mediumId, mediumType, registered); } \
  NS_IMETHOD OnMachineRegistered(const PRUnichar *machineId, PRBool registered) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnMachineRegistered(machineId, registered); } \
  NS_IMETHOD OnSessionStateChange(const PRUnichar *machineId, PRUint32 state) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnSessionStateChange(machineId, state); } \
  NS_IMETHOD OnSnapshotTaken(const PRUnichar *machineId, const PRUnichar *snapshotId) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnSnapshotTaken(machineId, snapshotId); } \
  NS_IMETHOD OnSnapshotDeleted(const PRUnichar *machineId, const PRUnichar *snapshotId) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnSnapshotDeleted(machineId, snapshotId); } \
  NS_IMETHOD OnSnapshotChange(const PRUnichar *machineId, const PRUnichar *snapshotId) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnSnapshotChange(machineId, snapshotId); } \
  NS_IMETHOD OnGuestPropertyChange(const PRUnichar *machineId, const PRUnichar *name, const PRUnichar *value, const PRUnichar *flags) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnGuestPropertyChange(machineId, name, value, flags); } 

#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 wstring machineId, in PRUint32 state); */
NS_IMETHODIMP _MYCLASS_::OnMachineStateChange(const PRUnichar *machineId, PRUint32 state)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onMachineDataChange (in wstring machineId); */
NS_IMETHODIMP _MYCLASS_::OnMachineDataChange(const PRUnichar *machineId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

/* void onMediumRegistered (in wstring mediumId, in PRUint32 mediumType, in boolean registered); */
NS_IMETHODIMP _MYCLASS_::OnMediumRegistered(const PRUnichar *mediumId, PRUint32 mediumType, PRBool registered)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

/* void onSnapshotDeleted (in wstring machineId, in wstring snapshotId); */
NS_IMETHODIMP _MYCLASS_::OnSnapshotDeleted(const PRUnichar *machineId, const PRUnichar *snapshotId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void onGuestPropertyChange (in wstring machineId, in wstring name, in wstring value, in wstring flags); */
NS_IMETHODIMP _MYCLASS_::OnGuestPropertyChange(const PRUnichar *machineId, const PRUnichar *name, const PRUnichar *value, const PRUnichar *flags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IVirtualBoxCallback_OnMachineStateChange_TO(smth) NS_IMETHOD OnMachineStateChange (PRUnichar * aMachineId, PRUint32 aState) { return smth OnMachineStateChange (aMachineId, aState); }
#define COM_FORWARD_IVirtualBoxCallback_OnMachineStateChange_TO_OBJ(obj) COM_FORWARD_IVirtualBoxCallback_OnMachineStateChange_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxCallback_OnMachineStateChange_TO_BASE(base) COM_FORWARD_IVirtualBoxCallback_OnMachineStateChange_TO (base::)
#define COM_FORWARD_IVirtualBoxCallback_OnMachineDataChange_TO(smth) NS_IMETHOD OnMachineDataChange (PRUnichar * aMachineId) { return smth OnMachineDataChange (aMachineId); }
#define COM_FORWARD_IVirtualBoxCallback_OnMachineDataChange_TO_OBJ(obj) COM_FORWARD_IVirtualBoxCallback_OnMachineDataChange_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxCallback_OnMachineDataChange_TO_BASE(base) COM_FORWARD_IVirtualBoxCallback_OnMachineDataChange_TO (base::)
#define COM_FORWARD_IVirtualBoxCallback_OnExtraDataCanChange_TO(smth) NS_IMETHOD OnExtraDataCanChange (PRUnichar * aMachineId, PRUnichar * aKey, PRUnichar * aValue, PRUnichar * * aError, PRBool * aAllowChange) { return smth OnExtraDataCanChange (aMachineId, aKey, aValue, aError, aAllowChange); }
#define COM_FORWARD_IVirtualBoxCallback_OnExtraDataCanChange_TO_OBJ(obj) COM_FORWARD_IVirtualBoxCallback_OnExtraDataCanChange_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxCallback_OnExtraDataCanChange_TO_BASE(base) COM_FORWARD_IVirtualBoxCallback_OnExtraDataCanChange_TO (base::)
#define COM_FORWARD_IVirtualBoxCallback_OnExtraDataChange_TO(smth) NS_IMETHOD OnExtraDataChange (PRUnichar * aMachineId, PRUnichar * aKey, PRUnichar * aValue) { return smth OnExtraDataChange (aMachineId, aKey, aValue); }
#define COM_FORWARD_IVirtualBoxCallback_OnExtraDataChange_TO_OBJ(obj) COM_FORWARD_IVirtualBoxCallback_OnExtraDataChange_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxCallback_OnExtraDataChange_TO_BASE(base) COM_FORWARD_IVirtualBoxCallback_OnExtraDataChange_TO (base::)
#define COM_FORWARD_IVirtualBoxCallback_OnMediumRegistered_TO(smth) NS_IMETHOD OnMediumRegistered (PRUnichar * aMediumId, PRUint32 aMediumType, PRBool aRegistered) { return smth OnMediumRegistered (aMediumId, aMediumType, aRegistered); }
#define COM_FORWARD_IVirtualBoxCallback_OnMediumRegistered_TO_OBJ(obj) COM_FORWARD_IVirtualBoxCallback_OnMediumRegistered_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxCallback_OnMediumRegistered_TO_BASE(base) COM_FORWARD_IVirtualBoxCallback_OnMediumRegistered_TO (base::)
#define COM_FORWARD_IVirtualBoxCallback_OnMachineRegistered_TO(smth) NS_IMETHOD OnMachineRegistered (PRUnichar * aMachineId, PRBool aRegistered) { return smth OnMachineRegistered (aMachineId, aRegistered); }
#define COM_FORWARD_IVirtualBoxCallback_OnMachineRegistered_TO_OBJ(obj) COM_FORWARD_IVirtualBoxCallback_OnMachineRegistered_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxCallback_OnMachineRegistered_TO_BASE(base) COM_FORWARD_IVirtualBoxCallback_OnMachineRegistered_TO (base::)
#define COM_FORWARD_IVirtualBoxCallback_OnSessionStateChange_TO(smth) NS_IMETHOD OnSessionStateChange (PRUnichar * aMachineId, PRUint32 aState) { return smth OnSessionStateChange (aMachineId, aState); }
#define COM_FORWARD_IVirtualBoxCallback_OnSessionStateChange_TO_OBJ(obj) COM_FORWARD_IVirtualBoxCallback_OnSessionStateChange_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxCallback_OnSessionStateChange_TO_BASE(base) COM_FORWARD_IVirtualBoxCallback_OnSessionStateChange_TO (base::)
#define COM_FORWARD_IVirtualBoxCallback_OnSnapshotTaken_TO(smth) NS_IMETHOD OnSnapshotTaken (PRUnichar * aMachineId, PRUnichar * aSnapshotId) { return smth OnSnapshotTaken (aMachineId, aSnapshotId); }
#define COM_FORWARD_IVirtualBoxCallback_OnSnapshotTaken_TO_OBJ(obj) COM_FORWARD_IVirtualBoxCallback_OnSnapshotTaken_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxCallback_OnSnapshotTaken_TO_BASE(base) COM_FORWARD_IVirtualBoxCallback_OnSnapshotTaken_TO (base::)
#define COM_FORWARD_IVirtualBoxCallback_OnSnapshotDeleted_TO(smth) NS_IMETHOD OnSnapshotDeleted (PRUnichar * aMachineId, PRUnichar * aSnapshotId) { return smth OnSnapshotDeleted (aMachineId, aSnapshotId); }
#define COM_FORWARD_IVirtualBoxCallback_OnSnapshotDeleted_TO_OBJ(obj) COM_FORWARD_IVirtualBoxCallback_OnSnapshotDeleted_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxCallback_OnSnapshotDeleted_TO_BASE(base) COM_FORWARD_IVirtualBoxCallback_OnSnapshotDeleted_TO (base::)
#define COM_FORWARD_IVirtualBoxCallback_OnSnapshotChange_TO(smth) NS_IMETHOD OnSnapshotChange (PRUnichar * aMachineId, PRUnichar * aSnapshotId) { return smth OnSnapshotChange (aMachineId, aSnapshotId); }
#define COM_FORWARD_IVirtualBoxCallback_OnSnapshotChange_TO_OBJ(obj) COM_FORWARD_IVirtualBoxCallback_OnSnapshotChange_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxCallback_OnSnapshotChange_TO_BASE(base) COM_FORWARD_IVirtualBoxCallback_OnSnapshotChange_TO (base::)
#define COM_FORWARD_IVirtualBoxCallback_OnGuestPropertyChange_TO(smth) NS_IMETHOD OnGuestPropertyChange (PRUnichar * aMachineId, PRUnichar * aName, PRUnichar * aValue, PRUnichar * aFlags) { return smth OnGuestPropertyChange (aMachineId, aName, aValue, aFlags); }
#define COM_FORWARD_IVirtualBoxCallback_OnGuestPropertyChange_TO_OBJ(obj) COM_FORWARD_IVirtualBoxCallback_OnGuestPropertyChange_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxCallback_OnGuestPropertyChange_TO_BASE(base) COM_FORWARD_IVirtualBoxCallback_OnGuestPropertyChange_TO (base::)
#define COM_FORWARD_IVirtualBoxCallback_TO(smth) NS_FORWARD_IVIRTUALBOXCALLBACK (smth)
#define COM_FORWARD_IVirtualBoxCallback_TO_OBJ(obj) COM_FORWARD_IVirtualBoxCallback_TO ((obj)->)
#define COM_FORWARD_IVirtualBoxCallback_TO_BASE(base) COM_FORWARD_IVirtualBoxCallback_TO (base::)

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

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

class NS_NO_VTABLE IDHCPServer : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IDHCPSERVER_IID)

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

  /* readonly attribute wstring IPAddress; */
  NS_IMETHOD GetIPAddress(PRUnichar * *aIPAddress) = 0;

  /* readonly attribute wstring networkMask; */
  NS_IMETHOD GetNetworkMask(PRUnichar * *aNetworkMask) = 0;

  /* readonly attribute wstring networkName; */
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName) = 0;

  /* readonly attribute wstring lowerIP; */
  NS_IMETHOD GetLowerIP(PRUnichar * *aLowerIP) = 0;

  /* readonly attribute wstring upperIP; */
  NS_IMETHOD GetUpperIP(PRUnichar * *aUpperIP) = 0;

  /* void setConfiguration (in wstring IPAddress, in wstring networkMask, in wstring FromIPAddress, in wstring ToIPAddress); */
  NS_IMETHOD SetConfiguration(const PRUnichar *IPAddress, const PRUnichar *networkMask, const PRUnichar *FromIPAddress, const PRUnichar *ToIPAddress) = 0;

  /* void start (in wstring networkName, in wstring trunkName, in wstring trunkType); */
  NS_IMETHOD Start(const PRUnichar *networkName, const PRUnichar *trunkName, const PRUnichar *trunkType) = 0;

  /* void stop (); */
  NS_IMETHOD Stop(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IDHCPSERVER \
  NS_IMETHOD GetEnabled(PRBool *aEnabled); \
  NS_IMETHOD SetEnabled(PRBool aEnabled); \
  NS_IMETHOD GetIPAddress(PRUnichar * *aIPAddress); \
  NS_IMETHOD GetNetworkMask(PRUnichar * *aNetworkMask); \
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName); \
  NS_IMETHOD GetLowerIP(PRUnichar * *aLowerIP); \
  NS_IMETHOD GetUpperIP(PRUnichar * *aUpperIP); \
  NS_IMETHOD SetConfiguration(const PRUnichar *IPAddress, const PRUnichar *networkMask, const PRUnichar *FromIPAddress, const PRUnichar *ToIPAddress); \
  NS_IMETHOD Start(const PRUnichar *networkName, const PRUnichar *trunkName, const PRUnichar *trunkType); \
  NS_IMETHOD Stop(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IDHCPSERVER(_to) \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return _to GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return _to SetEnabled(aEnabled); } \
  NS_IMETHOD GetIPAddress(PRUnichar * *aIPAddress) { return _to GetIPAddress(aIPAddress); } \
  NS_IMETHOD GetNetworkMask(PRUnichar * *aNetworkMask) { return _to GetNetworkMask(aNetworkMask); } \
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName) { return _to GetNetworkName(aNetworkName); } \
  NS_IMETHOD GetLowerIP(PRUnichar * *aLowerIP) { return _to GetLowerIP(aLowerIP); } \
  NS_IMETHOD GetUpperIP(PRUnichar * *aUpperIP) { return _to GetUpperIP(aUpperIP); } \
  NS_IMETHOD SetConfiguration(const PRUnichar *IPAddress, const PRUnichar *networkMask, const PRUnichar *FromIPAddress, const PRUnichar *ToIPAddress) { return _to SetConfiguration(IPAddress, networkMask, FromIPAddress, ToIPAddress); } \
  NS_IMETHOD Start(const PRUnichar *networkName, const PRUnichar *trunkName, const PRUnichar *trunkType) { return _to Start(networkName, trunkName, trunkType); } \
  NS_IMETHOD Stop(void) { return _to Stop(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IDHCPSERVER(_to) \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEnabled(aEnabled); } \
  NS_IMETHOD GetIPAddress(PRUnichar * *aIPAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIPAddress(aIPAddress); } \
  NS_IMETHOD GetNetworkMask(PRUnichar * *aNetworkMask) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworkMask(aNetworkMask); } \
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworkName(aNetworkName); } \
  NS_IMETHOD GetLowerIP(PRUnichar * *aLowerIP) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLowerIP(aLowerIP); } \
  NS_IMETHOD GetUpperIP(PRUnichar * *aUpperIP) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUpperIP(aUpperIP); } \
  NS_IMETHOD SetConfiguration(const PRUnichar *IPAddress, const PRUnichar *networkMask, const PRUnichar *FromIPAddress, const PRUnichar *ToIPAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetConfiguration(IPAddress, networkMask, FromIPAddress, ToIPAddress); } \
  NS_IMETHOD Start(const PRUnichar *networkName, const PRUnichar *trunkName, const PRUnichar *trunkType) { return !_to ? NS_ERROR_NULL_POINTER : _to->Start(networkName, trunkName, trunkType); } \
  NS_IMETHOD Stop(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Stop(); } 

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

/* Header file */
class _MYCLASS_ : public IDHCPServer
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IDHCPSERVER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* attribute boolean enabled; */
NS_IMETHODIMP _MYCLASS_::GetEnabled(PRBool *aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetEnabled(PRBool aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring IPAddress; */
NS_IMETHODIMP _MYCLASS_::GetIPAddress(PRUnichar * *aIPAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring networkMask; */
NS_IMETHODIMP _MYCLASS_::GetNetworkMask(PRUnichar * *aNetworkMask)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring networkName; */
NS_IMETHODIMP _MYCLASS_::GetNetworkName(PRUnichar * *aNetworkName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring lowerIP; */
NS_IMETHODIMP _MYCLASS_::GetLowerIP(PRUnichar * *aLowerIP)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring upperIP; */
NS_IMETHODIMP _MYCLASS_::GetUpperIP(PRUnichar * *aUpperIP)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setConfiguration (in wstring IPAddress, in wstring networkMask, in wstring FromIPAddress, in wstring ToIPAddress); */
NS_IMETHODIMP _MYCLASS_::SetConfiguration(const PRUnichar *IPAddress, const PRUnichar *networkMask, const PRUnichar *FromIPAddress, const PRUnichar *ToIPAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void start (in wstring networkName, in wstring trunkName, in wstring trunkType); */
NS_IMETHODIMP _MYCLASS_::Start(const PRUnichar *networkName, const PRUnichar *trunkName, const PRUnichar *trunkType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void stop (); */
NS_IMETHODIMP _MYCLASS_::Stop()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IDHCPServer_GETTER_Enabled_TO(smth) NS_IMETHOD GetEnabled (PRBool * aEnabled) { return smth GetEnabled (aEnabled); }
#define COM_FORWARD_IDHCPServer_GETTER_Enabled_TO_OBJ(obj) COM_FORWARD_IDHCPServer_GETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_GETTER_Enabled_TO_BASE(base) COM_FORWARD_IDHCPServer_GETTER_Enabled_TO (base::)
#define COM_FORWARD_IDHCPServer_SETTER_Enabled_TO(smth) NS_IMETHOD SetEnabled (PRBool aEnabled) { return smth SetEnabled (aEnabled); }
#define COM_FORWARD_IDHCPServer_SETTER_Enabled_TO_OBJ(obj) COM_FORWARD_IDHCPServer_SETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_SETTER_Enabled_TO_BASE(base) COM_FORWARD_IDHCPServer_SETTER_Enabled_TO (base::)
#define COM_FORWARD_IDHCPServer_GETTER_IPAddress_TO(smth) NS_IMETHOD GetIPAddress (PRUnichar * * aIPAddress) { return smth GetIPAddress (aIPAddress); }
#define COM_FORWARD_IDHCPServer_GETTER_IPAddress_TO_OBJ(obj) COM_FORWARD_IDHCPServer_GETTER_IPAddress_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_GETTER_IPAddress_TO_BASE(base) COM_FORWARD_IDHCPServer_GETTER_IPAddress_TO (base::)
#define COM_FORWARD_IDHCPServer_GETTER_NetworkMask_TO(smth) NS_IMETHOD GetNetworkMask (PRUnichar * * aNetworkMask) { return smth GetNetworkMask (aNetworkMask); }
#define COM_FORWARD_IDHCPServer_GETTER_NetworkMask_TO_OBJ(obj) COM_FORWARD_IDHCPServer_GETTER_NetworkMask_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_GETTER_NetworkMask_TO_BASE(base) COM_FORWARD_IDHCPServer_GETTER_NetworkMask_TO (base::)
#define COM_FORWARD_IDHCPServer_GETTER_NetworkName_TO(smth) NS_IMETHOD GetNetworkName (PRUnichar * * aNetworkName) { return smth GetNetworkName (aNetworkName); }
#define COM_FORWARD_IDHCPServer_GETTER_NetworkName_TO_OBJ(obj) COM_FORWARD_IDHCPServer_GETTER_NetworkName_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_GETTER_NetworkName_TO_BASE(base) COM_FORWARD_IDHCPServer_GETTER_NetworkName_TO (base::)
#define COM_FORWARD_IDHCPServer_GETTER_LowerIP_TO(smth) NS_IMETHOD GetLowerIP (PRUnichar * * aLowerIP) { return smth GetLowerIP (aLowerIP); }
#define COM_FORWARD_IDHCPServer_GETTER_LowerIP_TO_OBJ(obj) COM_FORWARD_IDHCPServer_GETTER_LowerIP_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_GETTER_LowerIP_TO_BASE(base) COM_FORWARD_IDHCPServer_GETTER_LowerIP_TO (base::)
#define COM_FORWARD_IDHCPServer_GETTER_UpperIP_TO(smth) NS_IMETHOD GetUpperIP (PRUnichar * * aUpperIP) { return smth GetUpperIP (aUpperIP); }
#define COM_FORWARD_IDHCPServer_GETTER_UpperIP_TO_OBJ(obj) COM_FORWARD_IDHCPServer_GETTER_UpperIP_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_GETTER_UpperIP_TO_BASE(base) COM_FORWARD_IDHCPServer_GETTER_UpperIP_TO (base::)
#define COM_FORWARD_IDHCPServer_SetConfiguration_TO(smth) NS_IMETHOD SetConfiguration (PRUnichar * aIPAddress, PRUnichar * aNetworkMask, PRUnichar * aFromIPAddress, PRUnichar * aToIPAddress) { return smth SetConfiguration (aIPAddress, aNetworkMask, aFromIPAddress, aToIPAddress); }
#define COM_FORWARD_IDHCPServer_SetConfiguration_TO_OBJ(obj) COM_FORWARD_IDHCPServer_SetConfiguration_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_SetConfiguration_TO_BASE(base) COM_FORWARD_IDHCPServer_SetConfiguration_TO (base::)
#define COM_FORWARD_IDHCPServer_Start_TO(smth) NS_IMETHOD Start (PRUnichar * aNetworkName, PRUnichar * aTrunkName, PRUnichar * aTrunkType) { return smth Start (aNetworkName, aTrunkName, aTrunkType); }
#define COM_FORWARD_IDHCPServer_Start_TO_OBJ(obj) COM_FORWARD_IDHCPServer_Start_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_Start_TO_BASE(base) COM_FORWARD_IDHCPServer_Start_TO (base::)
#define COM_FORWARD_IDHCPServer_Stop_TO(smth) NS_IMETHOD Stop() { return smth Stop(); }
#define COM_FORWARD_IDHCPServer_Stop_TO_OBJ(obj) COM_FORWARD_IDHCPServer_Stop_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_Stop_TO_BASE(base) COM_FORWARD_IDHCPServer_Stop_TO (base::)
#define COM_FORWARD_IDHCPServer_TO(smth) NS_FORWARD_IDHCPSERVER (smth)
#define COM_FORWARD_IDHCPServer_TO_OBJ(obj) COM_FORWARD_IDHCPServer_TO ((obj)->)
#define COM_FORWARD_IDHCPServer_TO_BASE(base) COM_FORWARD_IDHCPServer_TO (base::)

/* starting interface:    IVirtualBox */
#define IVIRTUALBOX_IID_STR "3f36e024-7fed-4f20-a02c-9158a82b44e6"

#define IVIRTUALBOX_IID \
  {0x3f36e024, 0x7fed, 0x4f20, \
    { 0xa0, 0x2c, 0x91, 0x58, 0xa8, 0x2b, 0x44, 0xe6 }}

class NS_NO_VTABLE IVirtualBox : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVIRTUALBOX_IID)

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

  /* readonly attribute unsigned long revision; */
  NS_IMETHOD GetRevision(PRUint32 *aRevision) = 0;

  /* readonly attribute wstring packageType; */
  NS_IMETHOD GetPackageType(PRUnichar * *aPackageType) = 0;

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

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

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

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

  /* void getMachines (out unsigned long machinesSize, [array, size_is (machinesSize), retval] out IMachine machines); */
  NS_IMETHOD GetMachines(PRUint32 *machinesSize, IMachine ***machines) = 0;

  /* void getHardDisks (out unsigned long hardDisksSize, [array, size_is (hardDisksSize), retval] out IMedium hardDisks); */
  NS_IMETHOD GetHardDisks(PRUint32 *hardDisksSize, IMedium ***hardDisks) = 0;

  /* void getDVDImages (out unsigned long DVDImagesSize, [array, size_is (DVDImagesSize), retval] out IMedium DVDImages); */
  NS_IMETHOD GetDVDImages(PRUint32 *DVDImagesSize, IMedium ***DVDImages) = 0;

  /* void getFloppyImages (out unsigned long floppyImagesSize, [array, size_is (floppyImagesSize), retval] out IMedium floppyImages); */
  NS_IMETHOD GetFloppyImages(PRUint32 *floppyImagesSize, IMedium ***floppyImages) = 0;

  /* void getProgressOperations (out unsigned long progressOperationsSize, [array, size_is (progressOperationsSize), retval] out IProgress progressOperations); */
  NS_IMETHOD GetProgressOperations(PRUint32 *progressOperationsSize, IProgress ***progressOperations) = 0;

  /* void getGuestOSTypes (out unsigned long guestOSTypesSize, [array, size_is (guestOSTypesSize), retval] out IGuestOSType guestOSTypes); */
  NS_IMETHOD GetGuestOSTypes(PRUint32 *guestOSTypesSize, IGuestOSType ***guestOSTypes) = 0;

  /* void getSharedFolders (out unsigned long sharedFoldersSize, [array, size_is (sharedFoldersSize), retval] out ISharedFolder sharedFolders); */
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders) = 0;

  /* readonly attribute IPerformanceCollector performanceCollector; */
  NS_IMETHOD GetPerformanceCollector(IPerformanceCollector * *aPerformanceCollector) = 0;

  /* void getDHCPServers (out unsigned long DHCPServersSize, [array, size_is (DHCPServersSize), retval] out IDHCPServer DHCPServers); */
  NS_IMETHOD GetDHCPServers(PRUint32 *DHCPServersSize, IDHCPServer ***DHCPServers) = 0;

  /* void createMachine (in wstring name, in wstring osTypeId, in wstring baseFolder, in wstring id, in boolean override, [retval] out IMachine machine); */
  NS_IMETHOD CreateMachine(const PRUnichar *name, const PRUnichar *osTypeId, const PRUnichar *baseFolder, const PRUnichar *id, PRBool override, IMachine **machine) = 0;

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

  /* void createAppliance ([retval] out IAppliance appliance); */
  NS_IMETHOD CreateAppliance(IAppliance **appliance) = 0;

  /* void createHardDisk (in wstring format, in wstring location, [retval] out IMedium medium); */
  NS_IMETHOD CreateHardDisk(const PRUnichar *format, const PRUnichar *location, IMedium **medium) = 0;

  /* void openHardDisk (in wstring location, in PRUint32 accessMode, in boolean setImageId, in wstring imageId, in boolean setParentId, in wstring parentId, [retval] out IMedium medium); */
  NS_IMETHOD OpenHardDisk(const PRUnichar *location, PRUint32 accessMode, PRBool setImageId, const PRUnichar *imageId, PRBool setParentId, const PRUnichar *parentId, IMedium **medium) = 0;

  /* void getHardDisk (in wstring id, [retval] out IMedium medium); */
  NS_IMETHOD GetHardDisk(const PRUnichar *id, IMedium **medium) = 0;

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

  /* void openDVDImage (in wstring location, in wstring id, [retval] out IMedium image); */
  NS_IMETHOD OpenDVDImage(const PRUnichar *location, const PRUnichar *id, IMedium **image) = 0;

  /* void getDVDImage (in wstring id, [retval] out IMedium image); */
  NS_IMETHOD GetDVDImage(const PRUnichar *id, IMedium **image) = 0;

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

  /* void openFloppyImage (in wstring location, in wstring id, [retval] out IMedium image); */
  NS_IMETHOD OpenFloppyImage(const PRUnichar *location, const PRUnichar *id, IMedium **image) = 0;

  /* void getFloppyImage (in wstring id, [retval] out IMedium image); */
  NS_IMETHOD GetFloppyImage(const PRUnichar *id, IMedium **image) = 0;

  /* void findFloppyImage (in wstring location, [retval] out IMedium image); */
  NS_IMETHOD FindFloppyImage(const PRUnichar *location, IMedium **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 getExtraDataKeys (out unsigned long valueSize, [array, size_is (valueSize), retval] out wstring value); */
  NS_IMETHOD GetExtraDataKeys(PRUint32 *valueSize, PRUnichar ***value) = 0;

  /* void getExtraData (in wstring key, [retval] out wstring value); */
  NS_IMETHOD GetExtraData(const PRUnichar *key, PRUnichar **value) = 0;

  /* void setExtraData (in wstring key, in wstring value); */
  NS_IMETHOD SetExtraData(const PRUnichar *key, const PRUnichar *value) = 0;

  /* void openSession (in ISession session, in wstring machineId); */
  NS_IMETHOD OpenSession(ISession *session, const PRUnichar *machineId) = 0;

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

  /* void openExistingSession (in ISession session, in wstring machineId); */
  NS_IMETHOD OpenExistingSession(ISession *session, const PRUnichar *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 createDHCPServer (in wstring name, [retval] out IDHCPServer server); */
  NS_IMETHOD CreateDHCPServer(const PRUnichar *name, IDHCPServer **server) = 0;

  /* void findDHCPServerByNetworkName (in wstring name, [retval] out IDHCPServer server); */
  NS_IMETHOD FindDHCPServerByNetworkName(const PRUnichar *name, IDHCPServer **server) = 0;

  /* void removeDHCPServer (in IDHCPServer server); */
  NS_IMETHOD RemoveDHCPServer(IDHCPServer *server) = 0;

  /* void checkFirmwarePresent (in PRUint32 firmwareType, in wstring version, out wstring url, out wstring file, [retval] out boolean result); */
  NS_IMETHOD CheckFirmwarePresent(PRUint32 firmwareType, const PRUnichar *version, PRUnichar **url, PRUnichar **file, PRBool *result) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVIRTUALBOX \
  NS_IMETHOD GetVersion(PRUnichar * *aVersion); \
  NS_IMETHOD GetRevision(PRUint32 *aRevision); \
  NS_IMETHOD GetPackageType(PRUnichar * *aPackageType); \
  NS_IMETHOD GetHomeFolder(PRUnichar * *aHomeFolder); \
  NS_IMETHOD GetSettingsFilePath(PRUnichar * *aSettingsFilePath); \
  NS_IMETHOD GetHost(IHost * *aHost); \
  NS_IMETHOD GetSystemProperties(ISystemProperties * *aSystemProperties); \
  NS_IMETHOD GetMachines(PRUint32 *machinesSize, IMachine ***machines); \
  NS_IMETHOD GetHardDisks(PRUint32 *hardDisksSize, IMedium ***hardDisks); \
  NS_IMETHOD GetDVDImages(PRUint32 *DVDImagesSize, IMedium ***DVDImages); \
  NS_IMETHOD GetFloppyImages(PRUint32 *floppyImagesSize, IMedium ***floppyImages); \
  NS_IMETHOD GetProgressOperations(PRUint32 *progressOperationsSize, IProgress ***progressOperations); \
  NS_IMETHOD GetGuestOSTypes(PRUint32 *guestOSTypesSize, IGuestOSType ***guestOSTypes); \
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders); \
  NS_IMETHOD GetPerformanceCollector(IPerformanceCollector * *aPerformanceCollector); \
  NS_IMETHOD GetDHCPServers(PRUint32 *DHCPServersSize, IDHCPServer ***DHCPServers); \
  NS_IMETHOD CreateMachine(const PRUnichar *name, const PRUnichar *osTypeId, const PRUnichar *baseFolder, const PRUnichar *id, PRBool override, IMachine **machine); \
  NS_IMETHOD CreateLegacyMachine(const PRUnichar *name, const PRUnichar *osTypeId, const PRUnichar *settingsFile, const PRUnichar *id, IMachine **machine); \
  NS_IMETHOD OpenMachine(const PRUnichar *settingsFile, IMachine **machine); \
  NS_IMETHOD RegisterMachine(IMachine *machine); \
  NS_IMETHOD GetMachine(const PRUnichar *id, IMachine **machine); \
  NS_IMETHOD FindMachine(const PRUnichar *name, IMachine **machine); \
  NS_IMETHOD UnregisterMachine(const PRUnichar *id, IMachine **machine); \
  NS_IMETHOD CreateAppliance(IAppliance **appliance); \
  NS_IMETHOD CreateHardDisk(const PRUnichar *format, const PRUnichar *location, IMedium **medium); \
  NS_IMETHOD OpenHardDisk(const PRUnichar *location, PRUint32 accessMode, PRBool setImageId, const PRUnichar *imageId, PRBool setParentId, const PRUnichar *parentId, IMedium **medium); \
  NS_IMETHOD GetHardDisk(const PRUnichar *id, IMedium **medium); \
  NS_IMETHOD FindHardDisk(const PRUnichar *location, IMedium **medium); \
  NS_IMETHOD OpenDVDImage(const PRUnichar *location, const PRUnichar *id, IMedium **image); \
  NS_IMETHOD GetDVDImage(const PRUnichar *id, IMedium **image); \
  NS_IMETHOD FindDVDImage(const PRUnichar *location, IMedium **image); \
  NS_IMETHOD OpenFloppyImage(const PRUnichar *location, const PRUnichar *id, IMedium **image); \
  NS_IMETHOD GetFloppyImage(const PRUnichar *id, IMedium **image); \
  NS_IMETHOD FindFloppyImage(const PRUnichar *location, IMedium **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 GetExtraDataKeys(PRUint32 *valueSize, PRUnichar ***value); \
  NS_IMETHOD GetExtraData(const PRUnichar *key, PRUnichar **value); \
  NS_IMETHOD SetExtraData(const PRUnichar *key, const PRUnichar *value); \
  NS_IMETHOD OpenSession(ISession *session, const PRUnichar *machineId); \
  NS_IMETHOD OpenRemoteSession(ISession *session, const PRUnichar *machineId, const PRUnichar *type, const PRUnichar *environment, IProgress **progress); \
  NS_IMETHOD OpenExistingSession(ISession *session, const PRUnichar *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 CreateDHCPServer(const PRUnichar *name, IDHCPServer **server); \
  NS_IMETHOD FindDHCPServerByNetworkName(const PRUnichar *name, IDHCPServer **server); \
  NS_IMETHOD RemoveDHCPServer(IDHCPServer *server); \
  NS_IMETHOD CheckFirmwarePresent(PRUint32 firmwareType, const PRUnichar *version, PRUnichar **url, PRUnichar **file, PRBool *result); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IVIRTUALBOX(_to) \
  NS_IMETHOD GetVersion(PRUnichar * *aVersion) { return _to GetVersion(aVersion); } \
  NS_IMETHOD GetRevision(PRUint32 *aRevision) { return _to GetRevision(aRevision); } \
  NS_IMETHOD GetPackageType(PRUnichar * *aPackageType) { return _to GetPackageType(aPackageType); } \
  NS_IMETHOD GetHomeFolder(PRUnichar * *aHomeFolder) { return _to GetHomeFolder(aHomeFolder); } \
  NS_IMETHOD GetSettingsFilePath(PRUnichar * *aSettingsFilePath) { return _to GetSettingsFilePath(aSettingsFilePath); } \
  NS_IMETHOD GetHost(IHost * *aHost) { return _to GetHost(aHost); } \
  NS_IMETHOD GetSystemProperties(ISystemProperties * *aSystemProperties) { return _to GetSystemProperties(aSystemProperties); } \
  NS_IMETHOD GetMachines(PRUint32 *machinesSize, IMachine ***machines) { return _to GetMachines(machinesSize, machines); } \
  NS_IMETHOD GetHardDisks(PRUint32 *hardDisksSize, IMedium ***hardDisks) { return _to GetHardDisks(hardDisksSize, hardDisks); } \
  NS_IMETHOD GetDVDImages(PRUint32 *DVDImagesSize, IMedium ***DVDImages) { return _to GetDVDImages(DVDImagesSize, DVDImages); } \
  NS_IMETHOD GetFloppyImages(PRUint32 *floppyImagesSize, IMedium ***floppyImages) { return _to GetFloppyImages(floppyImagesSize, floppyImages); } \
  NS_IMETHOD GetProgressOperations(PRUint32 *progressOperationsSize, IProgress ***progressOperations) { return _to GetProgressOperations(progressOperationsSize, progressOperations); } \
  NS_IMETHOD GetGuestOSTypes(PRUint32 *guestOSTypesSize, IGuestOSType ***guestOSTypes) { return _to GetGuestOSTypes(guestOSTypesSize, guestOSTypes); } \
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders) { return _to GetSharedFolders(sharedFoldersSize, sharedFolders); } \
  NS_IMETHOD GetPerformanceCollector(IPerformanceCollector * *aPerformanceCollector) { return _to GetPerformanceCollector(aPerformanceCollector); } \
  NS_IMETHOD GetDHCPServers(PRUint32 *DHCPServersSize, IDHCPServer ***DHCPServers) { return _to GetDHCPServers(DHCPServersSize, DHCPServers); } \
  NS_IMETHOD CreateMachine(const PRUnichar *name, const PRUnichar *osTypeId, const PRUnichar *baseFolder, const PRUnichar *id, PRBool override, IMachine **machine) { return _to CreateMachine(name, osTypeId, baseFolder, id, override, machine); } \
  NS_IMETHOD CreateLegacyMachine(const PRUnichar *name, const PRUnichar *osTypeId, const PRUnichar *settingsFile, const PRUnichar *id, IMachine **machine) { return _to CreateLegacyMachine(name, osTypeId, settingsFile, 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 PRUnichar *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 PRUnichar *id, IMachine **machine) { return _to UnregisterMachine(id, machine); } \
  NS_IMETHOD CreateAppliance(IAppliance **appliance) { return _to CreateAppliance(appliance); } \
  NS_IMETHOD CreateHardDisk(const PRUnichar *format, const PRUnichar *location, IMedium **medium) { return _to CreateHardDisk(format, location, medium); } \
  NS_IMETHOD OpenHardDisk(const PRUnichar *location, PRUint32 accessMode, PRBool setImageId, const PRUnichar *imageId, PRBool setParentId, const PRUnichar *parentId, IMedium **medium) { return _to OpenHardDisk(location, accessMode, setImageId, imageId, setParentId, parentId, medium); } \
  NS_IMETHOD GetHardDisk(const PRUnichar *id, IMedium **medium) { return _to GetHardDisk(id, medium); } \
  NS_IMETHOD FindHardDisk(const PRUnichar *location, IMedium **medium) { return _to FindHardDisk(location, medium); } \
  NS_IMETHOD OpenDVDImage(const PRUnichar *location, const PRUnichar *id, IMedium **image) { return _to OpenDVDImage(location, id, image); } \
  NS_IMETHOD GetDVDImage(const PRUnichar *id, IMedium **image) { return _to GetDVDImage(id, image); } \
  NS_IMETHOD FindDVDImage(const PRUnichar *location, IMedium **image) { return _to FindDVDImage(location, image); } \
  NS_IMETHOD OpenFloppyImage(const PRUnichar *location, const PRUnichar *id, IMedium **image) { return _to OpenFloppyImage(location, id, image); } \
  NS_IMETHOD GetFloppyImage(const PRUnichar *id, IMedium **image) { return _to GetFloppyImage(id, image); } \
  NS_IMETHOD FindFloppyImage(const PRUnichar *location, IMedium **image) { return _to FindFloppyImage(location, 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 GetExtraDataKeys(PRUint32 *valueSize, PRUnichar ***value) { return _to GetExtraDataKeys(valueSize, value); } \
  NS_IMETHOD GetExtraData(const PRUnichar *key, PRUnichar **value) { return _to GetExtraData(key, value); } \
  NS_IMETHOD SetExtraData(const PRUnichar *key, const PRUnichar *value) { return _to SetExtraData(key, value); } \
  NS_IMETHOD OpenSession(ISession *session, const PRUnichar *machineId) { return _to OpenSession(session, machineId); } \
  NS_IMETHOD OpenRemoteSession(ISession *session, const PRUnichar *machineId, const PRUnichar *type, const PRUnichar *environment, IProgress **progress) { return _to OpenRemoteSession(session, machineId, type, environment, progress); } \
  NS_IMETHOD OpenExistingSession(ISession *session, const PRUnichar *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 CreateDHCPServer(const PRUnichar *name, IDHCPServer **server) { return _to CreateDHCPServer(name, server); } \
  NS_IMETHOD FindDHCPServerByNetworkName(const PRUnichar *name, IDHCPServer **server) { return _to FindDHCPServerByNetworkName(name, server); } \
  NS_IMETHOD RemoveDHCPServer(IDHCPServer *server) { return _to RemoveDHCPServer(server); } \
  NS_IMETHOD CheckFirmwarePresent(PRUint32 firmwareType, const PRUnichar *version, PRUnichar **url, PRUnichar **file, PRBool *result) { return _to CheckFirmwarePresent(firmwareType, version, url, file, result); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IVIRTUALBOX(_to) \
  NS_IMETHOD GetVersion(PRUnichar * *aVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVersion(aVersion); } \
  NS_IMETHOD GetRevision(PRUint32 *aRevision) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRevision(aRevision); } \
  NS_IMETHOD GetPackageType(PRUnichar * *aPackageType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPackageType(aPackageType); } \
  NS_IMETHOD GetHomeFolder(PRUnichar * *aHomeFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHomeFolder(aHomeFolder); } \
  NS_IMETHOD GetSettingsFilePath(PRUnichar * *aSettingsFilePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSettingsFilePath(aSettingsFilePath); } \
  NS_IMETHOD GetHost(IHost * *aHost) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHost(aHost); } \
  NS_IMETHOD GetSystemProperties(ISystemProperties * *aSystemProperties) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSystemProperties(aSystemProperties); } \
  NS_IMETHOD GetMachines(PRUint32 *machinesSize, IMachine ***machines) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMachines(machinesSize, machines); } \
  NS_IMETHOD GetHardDisks(PRUint32 *hardDisksSize, IMedium ***hardDisks) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHardDisks(hardDisksSize, hardDisks); } \
  NS_IMETHOD GetDVDImages(PRUint32 *DVDImagesSize, IMedium ***DVDImages) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDVDImages(DVDImagesSize, DVDImages); } \
  NS_IMETHOD GetFloppyImages(PRUint32 *floppyImagesSize, IMedium ***floppyImages) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFloppyImages(floppyImagesSize, floppyImages); } \
  NS_IMETHOD GetProgressOperations(PRUint32 *progressOperationsSize, IProgress ***progressOperations) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProgressOperations(progressOperationsSize, progressOperations); } \
  NS_IMETHOD GetGuestOSTypes(PRUint32 *guestOSTypesSize, IGuestOSType ***guestOSTypes) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGuestOSTypes(guestOSTypesSize, guestOSTypes); } \
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSharedFolders(sharedFoldersSize, sharedFolders); } \
  NS_IMETHOD GetPerformanceCollector(IPerformanceCollector * *aPerformanceCollector) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPerformanceCollector(aPerformanceCollector); } \
  NS_IMETHOD GetDHCPServers(PRUint32 *DHCPServersSize, IDHCPServer ***DHCPServers) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDHCPServers(DHCPServersSize, DHCPServers); } \
  NS_IMETHOD CreateMachine(const PRUnichar *name, const PRUnichar *osTypeId, const PRUnichar *baseFolder, const PRUnichar *id, PRBool override, IMachine **machine) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateMachine(name, osTypeId, baseFolder, id, override, machine); } \
  NS_IMETHOD CreateLegacyMachine(const PRUnichar *name, const PRUnichar *osTypeId, const PRUnichar *settingsFile, const PRUnichar *id, IMachine **machine) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateLegacyMachine(name, osTypeId, settingsFile, 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 PRUnichar *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 PRUnichar *id, IMachine **machine) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnregisterMachine(id, machine); } \
  NS_IMETHOD CreateAppliance(IAppliance **appliance) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateAppliance(appliance); } \
  NS_IMETHOD CreateHardDisk(const PRUnichar *format, const PRUnichar *location, IMedium **medium) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateHardDisk(format, location, medium); } \
  NS_IMETHOD OpenHardDisk(const PRUnichar *location, PRUint32 accessMode, PRBool setImageId, const PRUnichar *imageId, PRBool setParentId, const PRUnichar *parentId, IMedium **medium) { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenHardDisk(location, accessMode, setImageId, imageId, setParentId, parentId, medium); } \
  NS_IMETHOD GetHardDisk(const PRUnichar *id, IMedium **medium) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHardDisk(id, medium); } \
  NS_IMETHOD FindHardDisk(const PRUnichar *location, IMedium **medium) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindHardDisk(location, medium); } \
  NS_IMETHOD OpenDVDImage(const PRUnichar *location, const PRUnichar *id, IMedium **image) { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenDVDImage(location, id, image); } \
  NS_IMETHOD GetDVDImage(const PRUnichar *id, IMedium **image) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDVDImage(id, image); } \
  NS_IMETHOD FindDVDImage(const PRUnichar *location, IMedium **image) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindDVDImage(location, image); } \
  NS_IMETHOD OpenFloppyImage(const PRUnichar *location, const PRUnichar *id, IMedium **image) { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenFloppyImage(location, id, image); } \
  NS_IMETHOD GetFloppyImage(const PRUnichar *id, IMedium **image) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFloppyImage(id, image); } \
  NS_IMETHOD FindFloppyImage(const PRUnichar *location, IMedium **image) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindFloppyImage(location, 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 GetExtraDataKeys(PRUint32 *valueSize, PRUnichar ***value) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExtraDataKeys(valueSize, value); } \
  NS_IMETHOD GetExtraData(const PRUnichar *key, PRUnichar **value) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExtraData(key, value); } \
  NS_IMETHOD SetExtraData(const PRUnichar *key, const PRUnichar *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetExtraData(key, value); } \
  NS_IMETHOD OpenSession(ISession *session, const PRUnichar *machineId) { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenSession(session, machineId); } \
  NS_IMETHOD OpenRemoteSession(ISession *session, const PRUnichar *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 PRUnichar *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 CreateDHCPServer(const PRUnichar *name, IDHCPServer **server) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateDHCPServer(name, server); } \
  NS_IMETHOD FindDHCPServerByNetworkName(const PRUnichar *name, IDHCPServer **server) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindDHCPServerByNetworkName(name, server); } \
  NS_IMETHOD RemoveDHCPServer(IDHCPServer *server) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveDHCPServer(server); } \
  NS_IMETHOD CheckFirmwarePresent(PRUint32 firmwareType, const PRUnichar *version, PRUnichar **url, PRUnichar **file, PRBool *result) { return !_to ? NS_ERROR_NULL_POINTER : _to->CheckFirmwarePresent(firmwareType, version, url, file, result); } 

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

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

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

/* readonly attribute unsigned long revision; */
NS_IMETHODIMP _MYCLASS_::GetRevision(PRUint32 *aRevision)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring packageType; */
NS_IMETHODIMP _MYCLASS_::GetPackageType(PRUnichar * *aPackageType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring homeFolder; */
NS_IMETHODIMP _MYCLASS_::GetHomeFolder(PRUnichar * *aHomeFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* readonly attribute IHost host; */
NS_IMETHODIMP _MYCLASS_::GetHost(IHost * *aHost)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute ISystemProperties systemProperties; */
NS_IMETHODIMP _MYCLASS_::GetSystemProperties(ISystemProperties * *aSystemProperties)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMachines (out unsigned long machinesSize, [array, size_is (machinesSize), retval] out IMachine machines); */
NS_IMETHODIMP _MYCLASS_::GetMachines(PRUint32 *machinesSize, IMachine ***machines)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getHardDisks (out unsigned long hardDisksSize, [array, size_is (hardDisksSize), retval] out IMedium hardDisks); */
NS_IMETHODIMP _MYCLASS_::GetHardDisks(PRUint32 *hardDisksSize, IMedium ***hardDisks)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getDVDImages (out unsigned long DVDImagesSize, [array, size_is (DVDImagesSize), retval] out IMedium DVDImages); */
NS_IMETHODIMP _MYCLASS_::GetDVDImages(PRUint32 *DVDImagesSize, IMedium ***DVDImages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getFloppyImages (out unsigned long floppyImagesSize, [array, size_is (floppyImagesSize), retval] out IMedium floppyImages); */
NS_IMETHODIMP _MYCLASS_::GetFloppyImages(PRUint32 *floppyImagesSize, IMedium ***floppyImages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getProgressOperations (out unsigned long progressOperationsSize, [array, size_is (progressOperationsSize), retval] out IProgress progressOperations); */
NS_IMETHODIMP _MYCLASS_::GetProgressOperations(PRUint32 *progressOperationsSize, IProgress ***progressOperations)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getGuestOSTypes (out unsigned long guestOSTypesSize, [array, size_is (guestOSTypesSize), retval] out IGuestOSType guestOSTypes); */
NS_IMETHODIMP _MYCLASS_::GetGuestOSTypes(PRUint32 *guestOSTypesSize, IGuestOSType ***guestOSTypes)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getSharedFolders (out unsigned long sharedFoldersSize, [array, size_is (sharedFoldersSize), retval] out ISharedFolder sharedFolders); */
NS_IMETHODIMP _MYCLASS_::GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IPerformanceCollector performanceCollector; */
NS_IMETHODIMP _MYCLASS_::GetPerformanceCollector(IPerformanceCollector * *aPerformanceCollector)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getDHCPServers (out unsigned long DHCPServersSize, [array, size_is (DHCPServersSize), retval] out IDHCPServer DHCPServers); */
NS_IMETHODIMP _MYCLASS_::GetDHCPServers(PRUint32 *DHCPServersSize, IDHCPServer ***DHCPServers)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

/* void createAppliance ([retval] out IAppliance appliance); */
NS_IMETHODIMP _MYCLASS_::CreateAppliance(IAppliance **appliance)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createHardDisk (in wstring format, in wstring location, [retval] out IMedium medium); */
NS_IMETHODIMP _MYCLASS_::CreateHardDisk(const PRUnichar *format, const PRUnichar *location, IMedium **medium)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void openHardDisk (in wstring location, in PRUint32 accessMode, in boolean setImageId, in wstring imageId, in boolean setParentId, in wstring parentId, [retval] out IMedium medium); */
NS_IMETHODIMP _MYCLASS_::OpenHardDisk(const PRUnichar *location, PRUint32 accessMode, PRBool setImageId, const PRUnichar *imageId, PRBool setParentId, const PRUnichar *parentId, IMedium **medium)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getHardDisk (in wstring id, [retval] out IMedium medium); */
NS_IMETHODIMP _MYCLASS_::GetHardDisk(const PRUnichar *id, IMedium **medium)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void openDVDImage (in wstring location, in wstring id, [retval] out IMedium image); */
NS_IMETHODIMP _MYCLASS_::OpenDVDImage(const PRUnichar *location, const PRUnichar *id, IMedium **image)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getDVDImage (in wstring id, [retval] out IMedium image); */
NS_IMETHODIMP _MYCLASS_::GetDVDImage(const PRUnichar *id, IMedium **image)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void openFloppyImage (in wstring location, in wstring id, [retval] out IMedium image); */
NS_IMETHODIMP _MYCLASS_::OpenFloppyImage(const PRUnichar *location, const PRUnichar *id, IMedium **image)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getFloppyImage (in wstring id, [retval] out IMedium image); */
NS_IMETHODIMP _MYCLASS_::GetFloppyImage(const PRUnichar *id, IMedium **image)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findFloppyImage (in wstring location, [retval] out IMedium image); */
NS_IMETHODIMP _MYCLASS_::FindFloppyImage(const PRUnichar *location, IMedium **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 getExtraDataKeys (out unsigned long valueSize, [array, size_is (valueSize), retval] out wstring value); */
NS_IMETHODIMP _MYCLASS_::GetExtraDataKeys(PRUint32 *valueSize, PRUnichar ***value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getExtraData (in wstring key, [retval] out wstring value); */
NS_IMETHODIMP _MYCLASS_::GetExtraData(const PRUnichar *key, PRUnichar **value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setExtraData (in wstring key, in wstring value); */
NS_IMETHODIMP _MYCLASS_::SetExtraData(const PRUnichar *key, const PRUnichar *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void openSession (in ISession session, in wstring machineId); */
NS_IMETHODIMP _MYCLASS_::OpenSession(ISession *session, const PRUnichar *machineId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void openExistingSession (in ISession session, in wstring machineId); */
NS_IMETHODIMP _MYCLASS_::OpenExistingSession(ISession *session, const PRUnichar *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 createDHCPServer (in wstring name, [retval] out IDHCPServer server); */
NS_IMETHODIMP _MYCLASS_::CreateDHCPServer(const PRUnichar *name, IDHCPServer **server)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findDHCPServerByNetworkName (in wstring name, [retval] out IDHCPServer server); */
NS_IMETHODIMP _MYCLASS_::FindDHCPServerByNetworkName(const PRUnichar *name, IDHCPServer **server)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeDHCPServer (in IDHCPServer server); */
NS_IMETHODIMP _MYCLASS_::RemoveDHCPServer(IDHCPServer *server)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void checkFirmwarePresent (in PRUint32 firmwareType, in wstring version, out wstring url, out wstring file, [retval] out boolean result); */
NS_IMETHODIMP _MYCLASS_::CheckFirmwarePresent(PRUint32 firmwareType, const PRUnichar *version, PRUnichar **url, PRUnichar **file, PRBool *result)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IVirtualBox_GETTER_Version_TO(smth) NS_IMETHOD GetVersion (PRUnichar * * aVersion) { return smth GetVersion (aVersion); }
#define COM_FORWARD_IVirtualBox_GETTER_Version_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_Version_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_Version_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_Version_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_Revision_TO(smth) NS_IMETHOD GetRevision (PRUint32 * aRevision) { return smth GetRevision (aRevision); }
#define COM_FORWARD_IVirtualBox_GETTER_Revision_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_Revision_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_Revision_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_Revision_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_PackageType_TO(smth) NS_IMETHOD GetPackageType (PRUnichar * * aPackageType) { return smth GetPackageType (aPackageType); }
#define COM_FORWARD_IVirtualBox_GETTER_PackageType_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_PackageType_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_PackageType_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_PackageType_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_HomeFolder_TO(smth) NS_IMETHOD GetHomeFolder (PRUnichar * * aHomeFolder) { return smth GetHomeFolder (aHomeFolder); }
#define COM_FORWARD_IVirtualBox_GETTER_HomeFolder_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_HomeFolder_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_HomeFolder_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_HomeFolder_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_SettingsFilePath_TO(smth) NS_IMETHOD GetSettingsFilePath (PRUnichar * * aSettingsFilePath) { return smth GetSettingsFilePath (aSettingsFilePath); }
#define COM_FORWARD_IVirtualBox_GETTER_SettingsFilePath_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_SettingsFilePath_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_SettingsFilePath_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_SettingsFilePath_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_Host_TO(smth) NS_IMETHOD GetHost (IHost * * aHost) { return smth GetHost (aHost); }
#define COM_FORWARD_IVirtualBox_GETTER_Host_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_Host_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_Host_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_Host_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_SystemProperties_TO(smth) NS_IMETHOD GetSystemProperties (ISystemProperties * * aSystemProperties) { return smth GetSystemProperties (aSystemProperties); }
#define COM_FORWARD_IVirtualBox_GETTER_SystemProperties_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_SystemProperties_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_SystemProperties_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_SystemProperties_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_Machines_TO(smth) NS_IMETHOD GetMachines (PRUint32 * aMachinesSize, IMachine * * * aMachines) { return smth GetMachines (aMachinesSize, aMachines); }
#define COM_FORWARD_IVirtualBox_GETTER_Machines_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_Machines_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_Machines_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_Machines_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_HardDisks_TO(smth) NS_IMETHOD GetHardDisks (PRUint32 * aHardDisksSize, IMedium * * * aHardDisks) { return smth GetHardDisks (aHardDisksSize, aHardDisks); }
#define COM_FORWARD_IVirtualBox_GETTER_HardDisks_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_HardDisks_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_HardDisks_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_HardDisks_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_DVDImages_TO(smth) NS_IMETHOD GetDVDImages (PRUint32 * aDVDImagesSize, IMedium * * * aDVDImages) { return smth GetDVDImages (aDVDImagesSize, aDVDImages); }
#define COM_FORWARD_IVirtualBox_GETTER_DVDImages_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_DVDImages_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_DVDImages_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_DVDImages_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_FloppyImages_TO(smth) NS_IMETHOD GetFloppyImages (PRUint32 * aFloppyImagesSize, IMedium * * * aFloppyImages) { return smth GetFloppyImages (aFloppyImagesSize, aFloppyImages); }
#define COM_FORWARD_IVirtualBox_GETTER_FloppyImages_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_FloppyImages_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_FloppyImages_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_FloppyImages_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_ProgressOperations_TO(smth) NS_IMETHOD GetProgressOperations (PRUint32 * aProgressOperationsSize, IProgress * * * aProgressOperations) { return smth GetProgressOperations (aProgressOperationsSize, aProgressOperations); }
#define COM_FORWARD_IVirtualBox_GETTER_ProgressOperations_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_ProgressOperations_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_ProgressOperations_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_ProgressOperations_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_GuestOSTypes_TO(smth) NS_IMETHOD GetGuestOSTypes (PRUint32 * aGuestOSTypesSize, IGuestOSType * * * aGuestOSTypes) { return smth GetGuestOSTypes (aGuestOSTypesSize, aGuestOSTypes); }
#define COM_FORWARD_IVirtualBox_GETTER_GuestOSTypes_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_GuestOSTypes_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_GuestOSTypes_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_GuestOSTypes_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_SharedFolders_TO(smth) NS_IMETHOD GetSharedFolders (PRUint32 * aSharedFoldersSize, ISharedFolder * * * aSharedFolders) { return smth GetSharedFolders (aSharedFoldersSize, aSharedFolders); }
#define COM_FORWARD_IVirtualBox_GETTER_SharedFolders_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_SharedFolders_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_SharedFolders_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_SharedFolders_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_PerformanceCollector_TO(smth) NS_IMETHOD GetPerformanceCollector (IPerformanceCollector * * aPerformanceCollector) { return smth GetPerformanceCollector (aPerformanceCollector); }
#define COM_FORWARD_IVirtualBox_GETTER_PerformanceCollector_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_PerformanceCollector_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_PerformanceCollector_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_PerformanceCollector_TO (base::)
#define COM_FORWARD_IVirtualBox_GETTER_DHCPServers_TO(smth) NS_IMETHOD GetDHCPServers (PRUint32 * aDHCPServersSize, IDHCPServer * * * aDHCPServers) { return smth GetDHCPServers (aDHCPServersSize, aDHCPServers); }
#define COM_FORWARD_IVirtualBox_GETTER_DHCPServers_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GETTER_DHCPServers_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GETTER_DHCPServers_TO_BASE(base) COM_FORWARD_IVirtualBox_GETTER_DHCPServers_TO (base::)
#define COM_FORWARD_IVirtualBox_CreateMachine_TO(smth) NS_IMETHOD CreateMachine (PRUnichar * aName, PRUnichar * aOsTypeId, PRUnichar * aBaseFolder, PRUnichar * aId, PRBool aOverride, IMachine * * aMachine) { return smth CreateMachine (aName, aOsTypeId, aBaseFolder, aId, aOverride, aMachine); }
#define COM_FORWARD_IVirtualBox_CreateMachine_TO_OBJ(obj) COM_FORWARD_IVirtualBox_CreateMachine_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_CreateMachine_TO_BASE(base) COM_FORWARD_IVirtualBox_CreateMachine_TO (base::)
#define COM_FORWARD_IVirtualBox_CreateLegacyMachine_TO(smth) NS_IMETHOD CreateLegacyMachine (PRUnichar * aName, PRUnichar * aOsTypeId, PRUnichar * aSettingsFile, PRUnichar * aId, IMachine * * aMachine) { return smth CreateLegacyMachine (aName, aOsTypeId, aSettingsFile, aId, aMachine); }
#define COM_FORWARD_IVirtualBox_CreateLegacyMachine_TO_OBJ(obj) COM_FORWARD_IVirtualBox_CreateLegacyMachine_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_CreateLegacyMachine_TO_BASE(base) COM_FORWARD_IVirtualBox_CreateLegacyMachine_TO (base::)
#define COM_FORWARD_IVirtualBox_OpenMachine_TO(smth) NS_IMETHOD OpenMachine (PRUnichar * aSettingsFile, IMachine * * aMachine) { return smth OpenMachine (aSettingsFile, aMachine); }
#define COM_FORWARD_IVirtualBox_OpenMachine_TO_OBJ(obj) COM_FORWARD_IVirtualBox_OpenMachine_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_OpenMachine_TO_BASE(base) COM_FORWARD_IVirtualBox_OpenMachine_TO (base::)
#define COM_FORWARD_IVirtualBox_RegisterMachine_TO(smth) NS_IMETHOD RegisterMachine (IMachine * aMachine) { return smth RegisterMachine (aMachine); }
#define COM_FORWARD_IVirtualBox_RegisterMachine_TO_OBJ(obj) COM_FORWARD_IVirtualBox_RegisterMachine_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_RegisterMachine_TO_BASE(base) COM_FORWARD_IVirtualBox_RegisterMachine_TO (base::)
#define COM_FORWARD_IVirtualBox_GetMachine_TO(smth) NS_IMETHOD GetMachine (PRUnichar * aId, IMachine * * aMachine) { return smth GetMachine (aId, aMachine); }
#define COM_FORWARD_IVirtualBox_GetMachine_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GetMachine_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GetMachine_TO_BASE(base) COM_FORWARD_IVirtualBox_GetMachine_TO (base::)
#define COM_FORWARD_IVirtualBox_FindMachine_TO(smth) NS_IMETHOD FindMachine (PRUnichar * aName, IMachine * * aMachine) { return smth FindMachine (aName, aMachine); }
#define COM_FORWARD_IVirtualBox_FindMachine_TO_OBJ(obj) COM_FORWARD_IVirtualBox_FindMachine_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_FindMachine_TO_BASE(base) COM_FORWARD_IVirtualBox_FindMachine_TO (base::)
#define COM_FORWARD_IVirtualBox_UnregisterMachine_TO(smth) NS_IMETHOD UnregisterMachine (PRUnichar * aId, IMachine * * aMachine) { return smth UnregisterMachine (aId, aMachine); }
#define COM_FORWARD_IVirtualBox_UnregisterMachine_TO_OBJ(obj) COM_FORWARD_IVirtualBox_UnregisterMachine_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_UnregisterMachine_TO_BASE(base) COM_FORWARD_IVirtualBox_UnregisterMachine_TO (base::)
#define COM_FORWARD_IVirtualBox_CreateAppliance_TO(smth) NS_IMETHOD CreateAppliance (IAppliance * * aAppliance) { return smth CreateAppliance (aAppliance); }
#define COM_FORWARD_IVirtualBox_CreateAppliance_TO_OBJ(obj) COM_FORWARD_IVirtualBox_CreateAppliance_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_CreateAppliance_TO_BASE(base) COM_FORWARD_IVirtualBox_CreateAppliance_TO (base::)
#define COM_FORWARD_IVirtualBox_CreateHardDisk_TO(smth) NS_IMETHOD CreateHardDisk (PRUnichar * aFormat, PRUnichar * aLocation, IMedium * * aMedium) { return smth CreateHardDisk (aFormat, aLocation, aMedium); }
#define COM_FORWARD_IVirtualBox_CreateHardDisk_TO_OBJ(obj) COM_FORWARD_IVirtualBox_CreateHardDisk_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_CreateHardDisk_TO_BASE(base) COM_FORWARD_IVirtualBox_CreateHardDisk_TO (base::)
#define COM_FORWARD_IVirtualBox_OpenHardDisk_TO(smth) NS_IMETHOD OpenHardDisk (PRUnichar * aLocation, PRUint32 aAccessMode, PRBool aSetImageId, PRUnichar * aImageId, PRBool aSetParentId, PRUnichar * aParentId, IMedium * * aMedium) { return smth OpenHardDisk (aLocation, aAccessMode, aSetImageId, aImageId, aSetParentId, aParentId, aMedium); }
#define COM_FORWARD_IVirtualBox_OpenHardDisk_TO_OBJ(obj) COM_FORWARD_IVirtualBox_OpenHardDisk_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_OpenHardDisk_TO_BASE(base) COM_FORWARD_IVirtualBox_OpenHardDisk_TO (base::)
#define COM_FORWARD_IVirtualBox_GetHardDisk_TO(smth) NS_IMETHOD GetHardDisk (PRUnichar * aId, IMedium * * aMedium) { return smth GetHardDisk (aId, aMedium); }
#define COM_FORWARD_IVirtualBox_GetHardDisk_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GetHardDisk_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GetHardDisk_TO_BASE(base) COM_FORWARD_IVirtualBox_GetHardDisk_TO (base::)
#define COM_FORWARD_IVirtualBox_FindHardDisk_TO(smth) NS_IMETHOD FindHardDisk (PRUnichar * aLocation, IMedium * * aMedium) { return smth FindHardDisk (aLocation, aMedium); }
#define COM_FORWARD_IVirtualBox_FindHardDisk_TO_OBJ(obj) COM_FORWARD_IVirtualBox_FindHardDisk_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_FindHardDisk_TO_BASE(base) COM_FORWARD_IVirtualBox_FindHardDisk_TO (base::)
#define COM_FORWARD_IVirtualBox_OpenDVDImage_TO(smth) NS_IMETHOD OpenDVDImage (PRUnichar * aLocation, PRUnichar * aId, IMedium * * aImage) { return smth OpenDVDImage (aLocation, aId, aImage); }
#define COM_FORWARD_IVirtualBox_OpenDVDImage_TO_OBJ(obj) COM_FORWARD_IVirtualBox_OpenDVDImage_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_OpenDVDImage_TO_BASE(base) COM_FORWARD_IVirtualBox_OpenDVDImage_TO (base::)
#define COM_FORWARD_IVirtualBox_GetDVDImage_TO(smth) NS_IMETHOD GetDVDImage (PRUnichar * aId, IMedium * * aImage) { return smth GetDVDImage (aId, aImage); }
#define COM_FORWARD_IVirtualBox_GetDVDImage_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GetDVDImage_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GetDVDImage_TO_BASE(base) COM_FORWARD_IVirtualBox_GetDVDImage_TO (base::)
#define COM_FORWARD_IVirtualBox_FindDVDImage_TO(smth) NS_IMETHOD FindDVDImage (PRUnichar * aLocation, IMedium * * aImage) { return smth FindDVDImage (aLocation, aImage); }
#define COM_FORWARD_IVirtualBox_FindDVDImage_TO_OBJ(obj) COM_FORWARD_IVirtualBox_FindDVDImage_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_FindDVDImage_TO_BASE(base) COM_FORWARD_IVirtualBox_FindDVDImage_TO (base::)
#define COM_FORWARD_IVirtualBox_OpenFloppyImage_TO(smth) NS_IMETHOD OpenFloppyImage (PRUnichar * aLocation, PRUnichar * aId, IMedium * * aImage) { return smth OpenFloppyImage (aLocation, aId, aImage); }
#define COM_FORWARD_IVirtualBox_OpenFloppyImage_TO_OBJ(obj) COM_FORWARD_IVirtualBox_OpenFloppyImage_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_OpenFloppyImage_TO_BASE(base) COM_FORWARD_IVirtualBox_OpenFloppyImage_TO (base::)
#define COM_FORWARD_IVirtualBox_GetFloppyImage_TO(smth) NS_IMETHOD GetFloppyImage (PRUnichar * aId, IMedium * * aImage) { return smth GetFloppyImage (aId, aImage); }
#define COM_FORWARD_IVirtualBox_GetFloppyImage_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GetFloppyImage_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GetFloppyImage_TO_BASE(base) COM_FORWARD_IVirtualBox_GetFloppyImage_TO (base::)
#define COM_FORWARD_IVirtualBox_FindFloppyImage_TO(smth) NS_IMETHOD FindFloppyImage (PRUnichar * aLocation, IMedium * * aImage) { return smth FindFloppyImage (aLocation, aImage); }
#define COM_FORWARD_IVirtualBox_FindFloppyImage_TO_OBJ(obj) COM_FORWARD_IVirtualBox_FindFloppyImage_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_FindFloppyImage_TO_BASE(base) COM_FORWARD_IVirtualBox_FindFloppyImage_TO (base::)
#define COM_FORWARD_IVirtualBox_GetGuestOSType_TO(smth) NS_IMETHOD GetGuestOSType (PRUnichar * aId, IGuestOSType * * aType) { return smth GetGuestOSType (aId, aType); }
#define COM_FORWARD_IVirtualBox_GetGuestOSType_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GetGuestOSType_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GetGuestOSType_TO_BASE(base) COM_FORWARD_IVirtualBox_GetGuestOSType_TO (base::)
#define COM_FORWARD_IVirtualBox_CreateSharedFolder_TO(smth) NS_IMETHOD CreateSharedFolder (PRUnichar * aName, PRUnichar * aHostPath, PRBool aWritable) { return smth CreateSharedFolder (aName, aHostPath, aWritable); }
#define COM_FORWARD_IVirtualBox_CreateSharedFolder_TO_OBJ(obj) COM_FORWARD_IVirtualBox_CreateSharedFolder_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_CreateSharedFolder_TO_BASE(base) COM_FORWARD_IVirtualBox_CreateSharedFolder_TO (base::)
#define COM_FORWARD_IVirtualBox_RemoveSharedFolder_TO(smth) NS_IMETHOD RemoveSharedFolder (PRUnichar * aName) { return smth RemoveSharedFolder (aName); }
#define COM_FORWARD_IVirtualBox_RemoveSharedFolder_TO_OBJ(obj) COM_FORWARD_IVirtualBox_RemoveSharedFolder_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_RemoveSharedFolder_TO_BASE(base) COM_FORWARD_IVirtualBox_RemoveSharedFolder_TO (base::)
#define COM_FORWARD_IVirtualBox_GetExtraDataKeys_TO(smth) NS_IMETHOD GetExtraDataKeys (PRUint32 * aValueSize, PRUnichar * * * aValue) { return smth GetExtraDataKeys (aValueSize, aValue); }
#define COM_FORWARD_IVirtualBox_GetExtraDataKeys_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GetExtraDataKeys_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GetExtraDataKeys_TO_BASE(base) COM_FORWARD_IVirtualBox_GetExtraDataKeys_TO (base::)
#define COM_FORWARD_IVirtualBox_GetExtraData_TO(smth) NS_IMETHOD GetExtraData (PRUnichar * aKey, PRUnichar * * aValue) { return smth GetExtraData (aKey, aValue); }
#define COM_FORWARD_IVirtualBox_GetExtraData_TO_OBJ(obj) COM_FORWARD_IVirtualBox_GetExtraData_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_GetExtraData_TO_BASE(base) COM_FORWARD_IVirtualBox_GetExtraData_TO (base::)
#define COM_FORWARD_IVirtualBox_SetExtraData_TO(smth) NS_IMETHOD SetExtraData (PRUnichar * aKey, PRUnichar * aValue) { return smth SetExtraData (aKey, aValue); }
#define COM_FORWARD_IVirtualBox_SetExtraData_TO_OBJ(obj) COM_FORWARD_IVirtualBox_SetExtraData_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_SetExtraData_TO_BASE(base) COM_FORWARD_IVirtualBox_SetExtraData_TO (base::)
#define COM_FORWARD_IVirtualBox_OpenSession_TO(smth) NS_IMETHOD OpenSession (ISession * aSession, PRUnichar * aMachineId) { return smth OpenSession (aSession, aMachineId); }
#define COM_FORWARD_IVirtualBox_OpenSession_TO_OBJ(obj) COM_FORWARD_IVirtualBox_OpenSession_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_OpenSession_TO_BASE(base) COM_FORWARD_IVirtualBox_OpenSession_TO (base::)
#define COM_FORWARD_IVirtualBox_OpenRemoteSession_TO(smth) NS_IMETHOD OpenRemoteSession (ISession * aSession, PRUnichar * aMachineId, PRUnichar * aType, PRUnichar * aEnvironment, IProgress * * aProgress) { return smth OpenRemoteSession (aSession, aMachineId, aType, aEnvironment, aProgress); }
#define COM_FORWARD_IVirtualBox_OpenRemoteSession_TO_OBJ(obj) COM_FORWARD_IVirtualBox_OpenRemoteSession_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_OpenRemoteSession_TO_BASE(base) COM_FORWARD_IVirtualBox_OpenRemoteSession_TO (base::)
#define COM_FORWARD_IVirtualBox_OpenExistingSession_TO(smth) NS_IMETHOD OpenExistingSession (ISession * aSession, PRUnichar * aMachineId) { return smth OpenExistingSession (aSession, aMachineId); }
#define COM_FORWARD_IVirtualBox_OpenExistingSession_TO_OBJ(obj) COM_FORWARD_IVirtualBox_OpenExistingSession_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_OpenExistingSession_TO_BASE(base) COM_FORWARD_IVirtualBox_OpenExistingSession_TO (base::)
#define COM_FORWARD_IVirtualBox_RegisterCallback_TO(smth) NS_IMETHOD RegisterCallback (IVirtualBoxCallback * aCallback) { return smth RegisterCallback (aCallback); }
#define COM_FORWARD_IVirtualBox_RegisterCallback_TO_OBJ(obj) COM_FORWARD_IVirtualBox_RegisterCallback_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_RegisterCallback_TO_BASE(base) COM_FORWARD_IVirtualBox_RegisterCallback_TO (base::)
#define COM_FORWARD_IVirtualBox_UnregisterCallback_TO(smth) NS_IMETHOD UnregisterCallback (IVirtualBoxCallback * aCallback) { return smth UnregisterCallback (aCallback); }
#define COM_FORWARD_IVirtualBox_UnregisterCallback_TO_OBJ(obj) COM_FORWARD_IVirtualBox_UnregisterCallback_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_UnregisterCallback_TO_BASE(base) COM_FORWARD_IVirtualBox_UnregisterCallback_TO (base::)
#define COM_FORWARD_IVirtualBox_WaitForPropertyChange_TO(smth) NS_IMETHOD WaitForPropertyChange (PRUnichar * aWhat, PRUint32 aTimeout, PRUnichar * * aChanged, PRUnichar * * aValues) { return smth WaitForPropertyChange (aWhat, aTimeout, aChanged, aValues); }
#define COM_FORWARD_IVirtualBox_WaitForPropertyChange_TO_OBJ(obj) COM_FORWARD_IVirtualBox_WaitForPropertyChange_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_WaitForPropertyChange_TO_BASE(base) COM_FORWARD_IVirtualBox_WaitForPropertyChange_TO (base::)
#define COM_FORWARD_IVirtualBox_CreateDHCPServer_TO(smth) NS_IMETHOD CreateDHCPServer (PRUnichar * aName, IDHCPServer * * aServer) { return smth CreateDHCPServer (aName, aServer); }
#define COM_FORWARD_IVirtualBox_CreateDHCPServer_TO_OBJ(obj) COM_FORWARD_IVirtualBox_CreateDHCPServer_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_CreateDHCPServer_TO_BASE(base) COM_FORWARD_IVirtualBox_CreateDHCPServer_TO (base::)
#define COM_FORWARD_IVirtualBox_FindDHCPServerByNetworkName_TO(smth) NS_IMETHOD FindDHCPServerByNetworkName (PRUnichar * aName, IDHCPServer * * aServer) { return smth FindDHCPServerByNetworkName (aName, aServer); }
#define COM_FORWARD_IVirtualBox_FindDHCPServerByNetworkName_TO_OBJ(obj) COM_FORWARD_IVirtualBox_FindDHCPServerByNetworkName_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_FindDHCPServerByNetworkName_TO_BASE(base) COM_FORWARD_IVirtualBox_FindDHCPServerByNetworkName_TO (base::)
#define COM_FORWARD_IVirtualBox_RemoveDHCPServer_TO(smth) NS_IMETHOD RemoveDHCPServer (IDHCPServer * aServer) { return smth RemoveDHCPServer (aServer); }
#define COM_FORWARD_IVirtualBox_RemoveDHCPServer_TO_OBJ(obj) COM_FORWARD_IVirtualBox_RemoveDHCPServer_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_RemoveDHCPServer_TO_BASE(base) COM_FORWARD_IVirtualBox_RemoveDHCPServer_TO (base::)
#define COM_FORWARD_IVirtualBox_CheckFirmwarePresent_TO(smth) NS_IMETHOD CheckFirmwarePresent (PRUint32 aFirmwareType, PRUnichar * aVersion, PRUnichar * * aUrl, PRUnichar * * aFile, PRBool * aResult) { return smth CheckFirmwarePresent (aFirmwareType, aVersion, aUrl, aFile, aResult); }
#define COM_FORWARD_IVirtualBox_CheckFirmwarePresent_TO_OBJ(obj) COM_FORWARD_IVirtualBox_CheckFirmwarePresent_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_CheckFirmwarePresent_TO_BASE(base) COM_FORWARD_IVirtualBox_CheckFirmwarePresent_TO (base::)
#define COM_FORWARD_IVirtualBox_TO(smth) NS_FORWARD_IVIRTUALBOX (smth)
#define COM_FORWARD_IVirtualBox_TO_OBJ(obj) COM_FORWARD_IVirtualBox_TO ((obj)->)
#define COM_FORWARD_IVirtualBox_TO_BASE(base) COM_FORWARD_IVirtualBox_TO (base::)

/* starting interface:    IVFSExplorer */
#define IVFSEXPLORER_IID_STR "2bb864a1-02a3-4474-a1d4-fb5f23b742e1"

#define IVFSEXPLORER_IID \
  {0x2bb864a1, 0x02a3, 0x4474, \
    { 0xa1, 0xd4, 0xfb, 0x5f, 0x23, 0xb7, 0x42, 0xe1 }}

class NS_NO_VTABLE IVFSExplorer : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVFSEXPLORER_IID)

  /* readonly attribute wstring path; */
  NS_IMETHOD GetPath(PRUnichar * *aPath) = 0;

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

  /* void update ([retval] out IProgress aProgress); */
  NS_IMETHOD Update(IProgress **aProgress) = 0;

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

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

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

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

  /* void remove (in unsigned long aNamesSize, [array, size_is (aNamesSize)] in wstring aNames, [retval] out IProgress aProgress); */
  NS_IMETHOD Remove(PRUint32 aNamesSize, const PRUnichar **aNames, IProgress **aProgress) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IVFSEXPLORER \
  NS_IMETHOD GetPath(PRUnichar * *aPath); \
  NS_IMETHOD GetType(PRUint32 *aType); \
  NS_IMETHOD Update(IProgress **aProgress); \
  NS_IMETHOD Cd(const PRUnichar *aDir, IProgress **aProgress); \
  NS_IMETHOD CdUp(IProgress **aProgress); \
  NS_IMETHOD EntryList(PRUint32 *aNamesSize, PRUnichar ***aNames, PRUint32 *aTypesSize, PRUint32 **aTypes); \
  NS_IMETHOD Exists(PRUint32 aNamesSize, const PRUnichar **aNames, PRUint32 *aExistsSize, PRUnichar ***aExists); \
  NS_IMETHOD Remove(PRUint32 aNamesSize, const PRUnichar **aNames, IProgress **aProgress); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IVFSEXPLORER(_to) \
  NS_IMETHOD GetPath(PRUnichar * *aPath) { return _to GetPath(aPath); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return _to GetType(aType); } \
  NS_IMETHOD Update(IProgress **aProgress) { return _to Update(aProgress); } \
  NS_IMETHOD Cd(const PRUnichar *aDir, IProgress **aProgress) { return _to Cd(aDir, aProgress); } \
  NS_IMETHOD CdUp(IProgress **aProgress) { return _to CdUp(aProgress); } \
  NS_IMETHOD EntryList(PRUint32 *aNamesSize, PRUnichar ***aNames, PRUint32 *aTypesSize, PRUint32 **aTypes) { return _to EntryList(aNamesSize, aNames, aTypesSize, aTypes); } \
  NS_IMETHOD Exists(PRUint32 aNamesSize, const PRUnichar **aNames, PRUint32 *aExistsSize, PRUnichar ***aExists) { return _to Exists(aNamesSize, aNames, aExistsSize, aExists); } \
  NS_IMETHOD Remove(PRUint32 aNamesSize, const PRUnichar **aNames, IProgress **aProgress) { return _to Remove(aNamesSize, aNames, aProgress); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IVFSEXPLORER(_to) \
  NS_IMETHOD GetPath(PRUnichar * *aPath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPath(aPath); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetType(aType); } \
  NS_IMETHOD Update(IProgress **aProgress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Update(aProgress); } \
  NS_IMETHOD Cd(const PRUnichar *aDir, IProgress **aProgress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Cd(aDir, aProgress); } \
  NS_IMETHOD CdUp(IProgress **aProgress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CdUp(aProgress); } \
  NS_IMETHOD EntryList(PRUint32 *aNamesSize, PRUnichar ***aNames, PRUint32 *aTypesSize, PRUint32 **aTypes) { return !_to ? NS_ERROR_NULL_POINTER : _to->EntryList(aNamesSize, aNames, aTypesSize, aTypes); } \
  NS_IMETHOD Exists(PRUint32 aNamesSize, const PRUnichar **aNames, PRUint32 *aExistsSize, PRUnichar ***aExists) { return !_to ? NS_ERROR_NULL_POINTER : _to->Exists(aNamesSize, aNames, aExistsSize, aExists); } \
  NS_IMETHOD Remove(PRUint32 aNamesSize, const PRUnichar **aNames, IProgress **aProgress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Remove(aNamesSize, aNames, aProgress); } 

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

/* Header file */
class _MYCLASS_ : public IVFSExplorer
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IVFSEXPLORER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute wstring path; */
NS_IMETHODIMP _MYCLASS_::GetPath(PRUnichar * *aPath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 type; */
NS_IMETHODIMP _MYCLASS_::GetType(PRUint32 *aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

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

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

/* void remove (in unsigned long aNamesSize, [array, size_is (aNamesSize)] in wstring aNames, [retval] out IProgress aProgress); */
NS_IMETHODIMP _MYCLASS_::Remove(PRUint32 aNamesSize, const PRUnichar **aNames, IProgress **aProgress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IVFSExplorer_GETTER_Path_TO(smth) NS_IMETHOD GetPath (PRUnichar * * aPath) { return smth GetPath (aPath); }
#define COM_FORWARD_IVFSExplorer_GETTER_Path_TO_OBJ(obj) COM_FORWARD_IVFSExplorer_GETTER_Path_TO ((obj)->)
#define COM_FORWARD_IVFSExplorer_GETTER_Path_TO_BASE(base) COM_FORWARD_IVFSExplorer_GETTER_Path_TO (base::)
#define COM_FORWARD_IVFSExplorer_GETTER_Type_TO(smth) NS_IMETHOD GetType (PRUint32 * aType) { return smth GetType (aType); }
#define COM_FORWARD_IVFSExplorer_GETTER_Type_TO_OBJ(obj) COM_FORWARD_IVFSExplorer_GETTER_Type_TO ((obj)->)
#define COM_FORWARD_IVFSExplorer_GETTER_Type_TO_BASE(base) COM_FORWARD_IVFSExplorer_GETTER_Type_TO (base::)
#define COM_FORWARD_IVFSExplorer_Update_TO(smth) NS_IMETHOD Update (IProgress * * aAProgress) { return smth Update (aAProgress); }
#define COM_FORWARD_IVFSExplorer_Update_TO_OBJ(obj) COM_FORWARD_IVFSExplorer_Update_TO ((obj)->)
#define COM_FORWARD_IVFSExplorer_Update_TO_BASE(base) COM_FORWARD_IVFSExplorer_Update_TO (base::)
#define COM_FORWARD_IVFSExplorer_Cd_TO(smth) NS_IMETHOD Cd (PRUnichar * aADir, IProgress * * aAProgress) { return smth Cd (aADir, aAProgress); }
#define COM_FORWARD_IVFSExplorer_Cd_TO_OBJ(obj) COM_FORWARD_IVFSExplorer_Cd_TO ((obj)->)
#define COM_FORWARD_IVFSExplorer_Cd_TO_BASE(base) COM_FORWARD_IVFSExplorer_Cd_TO (base::)
#define COM_FORWARD_IVFSExplorer_CdUp_TO(smth) NS_IMETHOD CdUp (IProgress * * aAProgress) { return smth CdUp (aAProgress); }
#define COM_FORWARD_IVFSExplorer_CdUp_TO_OBJ(obj) COM_FORWARD_IVFSExplorer_CdUp_TO ((obj)->)
#define COM_FORWARD_IVFSExplorer_CdUp_TO_BASE(base) COM_FORWARD_IVFSExplorer_CdUp_TO (base::)
#define COM_FORWARD_IVFSExplorer_EntryList_TO(smth) NS_IMETHOD EntryList (PRUint32 * aANamesSize, PRUnichar * * * aANames, PRUint32 * aATypesSize, PRUint32 * * aATypes) { return smth EntryList (aANamesSize+++, aANames, aATypesSize, aATypes); }
#define COM_FORWARD_IVFSExplorer_EntryList_TO_OBJ(obj) COM_FORWARD_IVFSExplorer_EntryList_TO ((obj)->)
#define COM_FORWARD_IVFSExplorer_EntryList_TO_BASE(base) COM_FORWARD_IVFSExplorer_EntryList_TO (base::)
#define COM_FORWARD_IVFSExplorer_Exists_TO(smth) NS_IMETHOD Exists (PRUint32 aANamesSize, PRUnichar * * aANames, PRUint32 * aAExistsSize, PRUnichar * * * aAExists) { return smth Exists (aANamesSize+++, aANames, aAExistsSize, aAExists); }
#define COM_FORWARD_IVFSExplorer_Exists_TO_OBJ(obj) COM_FORWARD_IVFSExplorer_Exists_TO ((obj)->)
#define COM_FORWARD_IVFSExplorer_Exists_TO_BASE(base) COM_FORWARD_IVFSExplorer_Exists_TO (base::)
#define COM_FORWARD_IVFSExplorer_Remove_TO(smth) NS_IMETHOD Remove (PRUint32 aANamesSize, PRUnichar * * aANames, IProgress * * aAProgress) { return smth Remove (aANamesSize+++, aANames, aAProgress); }
#define COM_FORWARD_IVFSExplorer_Remove_TO_OBJ(obj) COM_FORWARD_IVFSExplorer_Remove_TO ((obj)->)
#define COM_FORWARD_IVFSExplorer_Remove_TO_BASE(base) COM_FORWARD_IVFSExplorer_Remove_TO (base::)
#define COM_FORWARD_IVFSExplorer_TO(smth) NS_FORWARD_IVFSEXPLORER (smth)
#define COM_FORWARD_IVFSExplorer_TO_OBJ(obj) COM_FORWARD_IVFSExplorer_TO ((obj)->)
#define COM_FORWARD_IVFSExplorer_TO_BASE(base) COM_FORWARD_IVFSExplorer_TO (base::)

/* starting interface:    IAppliance */
#define IAPPLIANCE_IID_STR "e3ba9ab9-ac2c-4266-8bd2-91c4bf721ceb"

#define IAPPLIANCE_IID \
  {0xe3ba9ab9, 0xac2c, 0x4266, \
    { 0x8b, 0xd2, 0x91, 0xc4, 0xbf, 0x72, 0x1c, 0xeb }}

class NS_NO_VTABLE IAppliance : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IAPPLIANCE_IID)

  /* readonly attribute wstring path; */
  NS_IMETHOD GetPath(PRUnichar * *aPath) = 0;

  /* void getDisks (out unsigned long disksSize, [array, size_is (disksSize), retval] out wstring disks); */
  NS_IMETHOD GetDisks(PRUint32 *disksSize, PRUnichar ***disks) = 0;

  /* void getVirtualSystemDescriptions (out unsigned long virtualSystemDescriptionsSize, [array, size_is (virtualSystemDescriptionsSize), retval] out IVirtualSystemDescription virtualSystemDescriptions); */
  NS_IMETHOD GetVirtualSystemDescriptions(PRUint32 *virtualSystemDescriptionsSize, IVirtualSystemDescription ***virtualSystemDescriptions) = 0;

  /* void read (in wstring file, [retval] out IProgress aProgress); */
  NS_IMETHOD Read(const PRUnichar *file, IProgress **aProgress) = 0;

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

  /* void importMachines ([retval] out IProgress aProgress); */
  NS_IMETHOD ImportMachines(IProgress **aProgress) = 0;

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

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

  /* void getWarnings (out unsigned long aWarningsSize, [array, size_is (aWarningsSize), retval] out wstring aWarnings); */
  NS_IMETHOD GetWarnings(PRUint32 *aWarningsSize, PRUnichar ***aWarnings) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IAPPLIANCE \
  NS_IMETHOD GetPath(PRUnichar * *aPath); \
  NS_IMETHOD GetDisks(PRUint32 *disksSize, PRUnichar ***disks); \
  NS_IMETHOD GetVirtualSystemDescriptions(PRUint32 *virtualSystemDescriptionsSize, IVirtualSystemDescription ***virtualSystemDescriptions); \
  NS_IMETHOD Read(const PRUnichar *file, IProgress **aProgress); \
  NS_IMETHOD Interpret(void); \
  NS_IMETHOD ImportMachines(IProgress **aProgress); \
  NS_IMETHOD CreateVFSExplorer(const PRUnichar *aUri, IVFSExplorer **aExplorer); \
  NS_IMETHOD Write(const PRUnichar *format, const PRUnichar *path, IProgress **aProgress); \
  NS_IMETHOD GetWarnings(PRUint32 *aWarningsSize, PRUnichar ***aWarnings); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IAPPLIANCE(_to) \
  NS_IMETHOD GetPath(PRUnichar * *aPath) { return _to GetPath(aPath); } \
  NS_IMETHOD GetDisks(PRUint32 *disksSize, PRUnichar ***disks) { return _to GetDisks(disksSize, disks); } \
  NS_IMETHOD GetVirtualSystemDescriptions(PRUint32 *virtualSystemDescriptionsSize, IVirtualSystemDescription ***virtualSystemDescriptions) { return _to GetVirtualSystemDescriptions(virtualSystemDescriptionsSize, virtualSystemDescriptions); } \
  NS_IMETHOD Read(const PRUnichar *file, IProgress **aProgress) { return _to Read(file, aProgress); } \
  NS_IMETHOD Interpret(void) { return _to Interpret(); } \
  NS_IMETHOD ImportMachines(IProgress **aProgress) { return _to ImportMachines(aProgress); } \
  NS_IMETHOD CreateVFSExplorer(const PRUnichar *aUri, IVFSExplorer **aExplorer) { return _to CreateVFSExplorer(aUri, aExplorer); } \
  NS_IMETHOD Write(const PRUnichar *format, const PRUnichar *path, IProgress **aProgress) { return _to Write(format, path, aProgress); } \
  NS_IMETHOD GetWarnings(PRUint32 *aWarningsSize, PRUnichar ***aWarnings) { return _to GetWarnings(aWarningsSize, aWarnings); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IAPPLIANCE(_to) \
  NS_IMETHOD GetPath(PRUnichar * *aPath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPath(aPath); } \
  NS_IMETHOD GetDisks(PRUint32 *disksSize, PRUnichar ***disks) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDisks(disksSize, disks); } \
  NS_IMETHOD GetVirtualSystemDescriptions(PRUint32 *virtualSystemDescriptionsSize, IVirtualSystemDescription ***virtualSystemDescriptions) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVirtualSystemDescriptions(virtualSystemDescriptionsSize, virtualSystemDescriptions); } \
  NS_IMETHOD Read(const PRUnichar *file, IProgress **aProgress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Read(file, aProgress); } \
  NS_IMETHOD Interpret(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Interpret(); } \
  NS_IMETHOD ImportMachines(IProgress **aProgress) { return !_to ? NS_ERROR_NULL_POINTER : _to->ImportMachines(aProgress); } \
  NS_IMETHOD CreateVFSExplorer(const PRUnichar *aUri, IVFSExplorer **aExplorer) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateVFSExplorer(aUri, aExplorer); } \
  NS_IMETHOD Write(const PRUnichar *format, const PRUnichar *path, IProgress **aProgress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Write(format, path, aProgress); } \
  NS_IMETHOD GetWarnings(PRUint32 *aWarningsSize, PRUnichar ***aWarnings) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWarnings(aWarningsSize, aWarnings); } 

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

/* Header file */
class _MYCLASS_ : public IAppliance
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IAPPLIANCE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute wstring path; */
NS_IMETHODIMP _MYCLASS_::GetPath(PRUnichar * *aPath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getDisks (out unsigned long disksSize, [array, size_is (disksSize), retval] out wstring disks); */
NS_IMETHODIMP _MYCLASS_::GetDisks(PRUint32 *disksSize, PRUnichar ***disks)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getVirtualSystemDescriptions (out unsigned long virtualSystemDescriptionsSize, [array, size_is (virtualSystemDescriptionsSize), retval] out IVirtualSystemDescription virtualSystemDescriptions); */
NS_IMETHODIMP _MYCLASS_::GetVirtualSystemDescriptions(PRUint32 *virtualSystemDescriptionsSize, IVirtualSystemDescription ***virtualSystemDescriptions)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void interpret (); */
NS_IMETHODIMP _MYCLASS_::Interpret()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

/* void getWarnings (out unsigned long aWarningsSize, [array, size_is (aWarningsSize), retval] out wstring aWarnings); */
NS_IMETHODIMP _MYCLASS_::GetWarnings(PRUint32 *aWarningsSize, PRUnichar ***aWarnings)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IAppliance_GETTER_Path_TO(smth) NS_IMETHOD GetPath (PRUnichar * * aPath) { return smth GetPath (aPath); }
#define COM_FORWARD_IAppliance_GETTER_Path_TO_OBJ(obj) COM_FORWARD_IAppliance_GETTER_Path_TO ((obj)->)
#define COM_FORWARD_IAppliance_GETTER_Path_TO_BASE(base) COM_FORWARD_IAppliance_GETTER_Path_TO (base::)
#define COM_FORWARD_IAppliance_GETTER_Disks_TO(smth) NS_IMETHOD GetDisks (PRUint32 * aDisksSize, PRUnichar * * * aDisks) { return smth GetDisks (aDisksSize, aDisks); }
#define COM_FORWARD_IAppliance_GETTER_Disks_TO_OBJ(obj) COM_FORWARD_IAppliance_GETTER_Disks_TO ((obj)->)
#define COM_FORWARD_IAppliance_GETTER_Disks_TO_BASE(base) COM_FORWARD_IAppliance_GETTER_Disks_TO (base::)
#define COM_FORWARD_IAppliance_GETTER_VirtualSystemDescriptions_TO(smth) NS_IMETHOD GetVirtualSystemDescriptions (PRUint32 * aVirtualSystemDescriptionsSize, IVirtualSystemDescription * * * aVirtualSystemDescriptions) { return smth GetVirtualSystemDescriptions (aVirtualSystemDescriptionsSize, aVirtualSystemDescriptions); }
#define COM_FORWARD_IAppliance_GETTER_VirtualSystemDescriptions_TO_OBJ(obj) COM_FORWARD_IAppliance_GETTER_VirtualSystemDescriptions_TO ((obj)->)
#define COM_FORWARD_IAppliance_GETTER_VirtualSystemDescriptions_TO_BASE(base) COM_FORWARD_IAppliance_GETTER_VirtualSystemDescriptions_TO (base::)
#define COM_FORWARD_IAppliance_Read_TO(smth) NS_IMETHOD Read (PRUnichar * aFile, IProgress * * aAProgress) { return smth Read (aFile, aAProgress); }
#define COM_FORWARD_IAppliance_Read_TO_OBJ(obj) COM_FORWARD_IAppliance_Read_TO ((obj)->)
#define COM_FORWARD_IAppliance_Read_TO_BASE(base) COM_FORWARD_IAppliance_Read_TO (base::)
#define COM_FORWARD_IAppliance_Interpret_TO(smth) NS_IMETHOD Interpret() { return smth Interpret(); }
#define COM_FORWARD_IAppliance_Interpret_TO_OBJ(obj) COM_FORWARD_IAppliance_Interpret_TO ((obj)->)
#define COM_FORWARD_IAppliance_Interpret_TO_BASE(base) COM_FORWARD_IAppliance_Interpret_TO (base::)
#define COM_FORWARD_IAppliance_ImportMachines_TO(smth) NS_IMETHOD ImportMachines (IProgress * * aAProgress) { return smth ImportMachines (aAProgress); }
#define COM_FORWARD_IAppliance_ImportMachines_TO_OBJ(obj) COM_FORWARD_IAppliance_ImportMachines_TO ((obj)->)
#define COM_FORWARD_IAppliance_ImportMachines_TO_BASE(base) COM_FORWARD_IAppliance_ImportMachines_TO (base::)
#define COM_FORWARD_IAppliance_CreateVFSExplorer_TO(smth) NS_IMETHOD CreateVFSExplorer (PRUnichar * aAUri, IVFSExplorer * * aAExplorer) { return smth CreateVFSExplorer (aAUri, aAExplorer); }
#define COM_FORWARD_IAppliance_CreateVFSExplorer_TO_OBJ(obj) COM_FORWARD_IAppliance_CreateVFSExplorer_TO ((obj)->)
#define COM_FORWARD_IAppliance_CreateVFSExplorer_TO_BASE(base) COM_FORWARD_IAppliance_CreateVFSExplorer_TO (base::)
#define COM_FORWARD_IAppliance_Write_TO(smth) NS_IMETHOD Write (PRUnichar * aFormat, PRUnichar * aPath, IProgress * * aAProgress) { return smth Write (aFormat, aPath, aAProgress); }
#define COM_FORWARD_IAppliance_Write_TO_OBJ(obj) COM_FORWARD_IAppliance_Write_TO ((obj)->)
#define COM_FORWARD_IAppliance_Write_TO_BASE(base) COM_FORWARD_IAppliance_Write_TO (base::)
#define COM_FORWARD_IAppliance_GetWarnings_TO(smth) NS_IMETHOD GetWarnings (PRUint32 * aAWarningsSize, PRUnichar * * * aAWarnings) { return smth GetWarnings (aAWarningsSize, aAWarnings); }
#define COM_FORWARD_IAppliance_GetWarnings_TO_OBJ(obj) COM_FORWARD_IAppliance_GetWarnings_TO ((obj)->)
#define COM_FORWARD_IAppliance_GetWarnings_TO_BASE(base) COM_FORWARD_IAppliance_GetWarnings_TO (base::)
#define COM_FORWARD_IAppliance_TO(smth) NS_FORWARD_IAPPLIANCE (smth)
#define COM_FORWARD_IAppliance_TO_OBJ(obj) COM_FORWARD_IAppliance_TO ((obj)->)
#define COM_FORWARD_IAppliance_TO_BASE(base) COM_FORWARD_IAppliance_TO (base::)

/* starting interface:    IVirtualSystemDescription */
#define IVIRTUALSYSTEMDESCRIPTION_IID_STR "d7525e6c-531a-4c51-8e04-41235083a3d8"

#define IVIRTUALSYSTEMDESCRIPTION_IID \
  {0xd7525e6c, 0x531a, 0x4c51, \
    { 0x8e, 0x04, 0x41, 0x23, 0x50, 0x83, 0xa3, 0xd8 }}

class NS_NO_VTABLE IVirtualSystemDescription : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IVIRTUALSYSTEMDESCRIPTION_IID)

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

  /* void getDescription (out unsigned long aTypesSize, [array, size_is (aTypesSize)] out PRUint32 aTypes, out unsigned long aRefsSize, [array, size_is (aRefsSize)] out wstring aRefs, out unsigned long aOvfValuesSize, [array, size_is (aOvfValuesSize)] out wstring aOvfValues, out unsigned long aVBoxValuesSize, [array, size_is (aVBoxValuesSize)] out wstring aVBoxValues, out unsigned long aExtraConfigValuesSize, [array, size_is (aExtraConfigValuesSize)] out wstring aExtraConfigValues); */
  NS_IMETHOD GetDescription(PRUint32 *aTypesSize, PRUint32 **aTypes, PRUint32 *aRefsSize, PRUnichar ***aRefs, PRUint32 *aOvfValuesSize, PRUnichar ***aOvfValues, PRUint32 *aVBoxValuesSize, PRUnichar ***aVBoxValues, PRUint32 *aExtraConfigValuesSize, PRUnichar ***aExtraConfigValues) = 0;

  /* void getDescriptionByType (in PRUint32 aType, out unsigned long aTypesSize, [array, size_is (aTypesSize)] out PRUint32 aTypes, out unsigned long aRefsSize, [array, size_is (aRefsSize)] out wstring aRefs, out unsigned long aOvfValuesSize, [array, size_is (aOvfValuesSize)] out wstring aOvfValues, out unsigned long aVBoxValuesSize, [array, size_is (aVBoxValuesSize)] out wstring aVBoxValues, out unsigned long aExtraConfigValuesSize, [array, size_is (aExtraConfigValuesSize)] out wstring aExtraConfigValues); */
  NS_IMETHOD GetDescriptionByType(PRUint32 aType, PRUint32 *aTypesSize, PRUint32 **aTypes, PRUint32 *aRefsSize, PRUnichar ***aRefs, PRUint32 *aOvfValuesSize, PRUnichar ***aOvfValues, PRUint32 *aVBoxValuesSize, PRUnichar ***aVBoxValues, PRUint32 *aExtraConfigValuesSize, PRUnichar ***aExtraConfigValues) = 0;

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

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

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

};

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

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IVIRTUALSYSTEMDESCRIPTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return _to GetCount(aCount); } \
  NS_IMETHOD GetDescription(PRUint32 *aTypesSize, PRUint32 **aTypes, PRUint32 *aRefsSize, PRUnichar ***aRefs, PRUint32 *aOvfValuesSize, PRUnichar ***aOvfValues, PRUint32 *aVBoxValuesSize, PRUnichar ***aVBoxValues, PRUint32 *aExtraConfigValuesSize, PRUnichar ***aExtraConfigValues) { return _to GetDescription(aTypesSize, aTypes, aRefsSize, aRefs, aOvfValuesSize, aOvfValues, aVBoxValuesSize, aVBoxValues, aExtraConfigValuesSize, aExtraConfigValues); } \
  NS_IMETHOD GetDescriptionByType(PRUint32 aType, PRUint32 *aTypesSize, PRUint32 **aTypes, PRUint32 *aRefsSize, PRUnichar ***aRefs, PRUint32 *aOvfValuesSize, PRUnichar ***aOvfValues, PRUint32 *aVBoxValuesSize, PRUnichar ***aVBoxValues, PRUint32 *aExtraConfigValuesSize, PRUnichar ***aExtraConfigValues) { return _to GetDescriptionByType(aType, aTypesSize, aTypes, aRefsSize, aRefs, aOvfValuesSize, aOvfValues, aVBoxValuesSize, aVBoxValues, aExtraConfigValuesSize, aExtraConfigValues); } \
  NS_IMETHOD GetValuesByType(PRUint32 aType, PRUint32 aWhich, PRUint32 *aValuesSize, PRUnichar ***aValues) { return _to GetValuesByType(aType, aWhich, aValuesSize, aValues); } \
  NS_IMETHOD SetFinalValues(PRUint32 aEnabledSize, PRBool *aEnabled, PRUint32 aVBoxValuesSize, const PRUnichar **aVBoxValues, PRUint32 aExtraConfigValuesSize, const PRUnichar **aExtraConfigValues) { return _to SetFinalValues(aEnabledSize, aEnabled, aVBoxValuesSize, aVBoxValues, aExtraConfigValuesSize, aExtraConfigValues); } \
  NS_IMETHOD AddDescription(PRUint32 aType, const PRUnichar *aVBoxValue, const PRUnichar *aExtraConfigValue) { return _to AddDescription(aType, aVBoxValue, aExtraConfigValue); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IVIRTUALSYSTEMDESCRIPTION(_to) \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCount(aCount); } \
  NS_IMETHOD GetDescription(PRUint32 *aTypesSize, PRUint32 **aTypes, PRUint32 *aRefsSize, PRUnichar ***aRefs, PRUint32 *aOvfValuesSize, PRUnichar ***aOvfValues, PRUint32 *aVBoxValuesSize, PRUnichar ***aVBoxValues, PRUint32 *aExtraConfigValuesSize, PRUnichar ***aExtraConfigValues) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aTypesSize, aTypes, aRefsSize, aRefs, aOvfValuesSize, aOvfValues, aVBoxValuesSize, aVBoxValues, aExtraConfigValuesSize, aExtraConfigValues); } \
  NS_IMETHOD GetDescriptionByType(PRUint32 aType, PRUint32 *aTypesSize, PRUint32 **aTypes, PRUint32 *aRefsSize, PRUnichar ***aRefs, PRUint32 *aOvfValuesSize, PRUnichar ***aOvfValues, PRUint32 *aVBoxValuesSize, PRUnichar ***aVBoxValues, PRUint32 *aExtraConfigValuesSize, PRUnichar ***aExtraConfigValues) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescriptionByType(aType, aTypesSize, aTypes, aRefsSize, aRefs, aOvfValuesSize, aOvfValues, aVBoxValuesSize, aVBoxValues, aExtraConfigValuesSize, aExtraConfigValues); } \
  NS_IMETHOD GetValuesByType(PRUint32 aType, PRUint32 aWhich, PRUint32 *aValuesSize, PRUnichar ***aValues) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetValuesByType(aType, aWhich, aValuesSize, aValues); } \
  NS_IMETHOD SetFinalValues(PRUint32 aEnabledSize, PRBool *aEnabled, PRUint32 aVBoxValuesSize, const PRUnichar **aVBoxValues, PRUint32 aExtraConfigValuesSize, const PRUnichar **aExtraConfigValues) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFinalValues(aEnabledSize, aEnabled, aVBoxValuesSize, aVBoxValues, aExtraConfigValuesSize, aExtraConfigValues); } \
  NS_IMETHOD AddDescription(PRUint32 aType, const PRUnichar *aVBoxValue, const PRUnichar *aExtraConfigValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddDescription(aType, aVBoxValue, aExtraConfigValue); } 

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

/* Header file */
class _MYCLASS_ : public IVirtualSystemDescription
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IVIRTUALSYSTEMDESCRIPTION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute unsigned long count; */
NS_IMETHODIMP _MYCLASS_::GetCount(PRUint32 *aCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

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

/* void addDescription (in PRUint32 aType, in wstring aVBoxValue, in wstring aExtraConfigValue); */
NS_IMETHODIMP _MYCLASS_::AddDescription(PRUint32 aType, const PRUnichar *aVBoxValue, const PRUnichar *aExtraConfigValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IVirtualSystemDescription_GETTER_Count_TO(smth) NS_IMETHOD GetCount (PRUint32 * aCount) { return smth GetCount (aCount); }
#define COM_FORWARD_IVirtualSystemDescription_GETTER_Count_TO_OBJ(obj) COM_FORWARD_IVirtualSystemDescription_GETTER_Count_TO ((obj)->)
#define COM_FORWARD_IVirtualSystemDescription_GETTER_Count_TO_BASE(base) COM_FORWARD_IVirtualSystemDescription_GETTER_Count_TO (base::)
#define COM_FORWARD_IVirtualSystemDescription_GetDescription_TO(smth) NS_IMETHOD GetDescription (PRUint32 * aATypesSize, PRUint32 * * aATypes, PRUint32 * aARefsSize, PRUnichar * * * aARefs, PRUint32 * aAOvfValuesSize, PRUnichar * * * aAOvfValues, PRUint32 * aAVBoxValuesSize, PRUnichar * * * aAVBoxValues, PRUint32 * aAExtraConfigValuesSize, PRUnichar * * * aAExtraConfigValues) { return smth GetDescription (aATypesSize+++, aATypes, aARefsSize+++, aARefs, aAOvfValuesSize+++, aAOvfValues, aAVBoxValuesSize+++, aAVBoxValues, aAExtraConfigValuesSize, aAExtraConfigValues); }
#define COM_FORWARD_IVirtualSystemDescription_GetDescription_TO_OBJ(obj) COM_FORWARD_IVirtualSystemDescription_GetDescription_TO ((obj)->)
#define COM_FORWARD_IVirtualSystemDescription_GetDescription_TO_BASE(base) COM_FORWARD_IVirtualSystemDescription_GetDescription_TO (base::)
#define COM_FORWARD_IVirtualSystemDescription_GetDescriptionByType_TO(smth) NS_IMETHOD GetDescriptionByType (PRUint32 aAType, PRUint32 * aATypesSize, PRUint32 * * aATypes, PRUint32 * aARefsSize, PRUnichar * * * aARefs, PRUint32 * aAOvfValuesSize, PRUnichar * * * aAOvfValues, PRUint32 * aAVBoxValuesSize, PRUnichar * * * aAVBoxValues, PRUint32 * aAExtraConfigValuesSize, PRUnichar * * * aAExtraConfigValues) { return smth GetDescriptionByType (aAType, aATypesSize+++, aATypes, aARefsSize+++, aARefs, aAOvfValuesSize+++, aAOvfValues, aAVBoxValuesSize+++, aAVBoxValues, aAExtraConfigValuesSize, aAExtraConfigValues); }
#define COM_FORWARD_IVirtualSystemDescription_GetDescriptionByType_TO_OBJ(obj) COM_FORWARD_IVirtualSystemDescription_GetDescriptionByType_TO ((obj)->)
#define COM_FORWARD_IVirtualSystemDescription_GetDescriptionByType_TO_BASE(base) COM_FORWARD_IVirtualSystemDescription_GetDescriptionByType_TO (base::)
#define COM_FORWARD_IVirtualSystemDescription_GetValuesByType_TO(smth) NS_IMETHOD GetValuesByType (PRUint32 aAType, PRUint32 aAWhich, PRUint32 * aAValuesSize, PRUnichar * * * aAValues) { return smth GetValuesByType (aAType, aAWhich, aAValuesSize, aAValues); }
#define COM_FORWARD_IVirtualSystemDescription_GetValuesByType_TO_OBJ(obj) COM_FORWARD_IVirtualSystemDescription_GetValuesByType_TO ((obj)->)
#define COM_FORWARD_IVirtualSystemDescription_GetValuesByType_TO_BASE(base) COM_FORWARD_IVirtualSystemDescription_GetValuesByType_TO (base::)
#define COM_FORWARD_IVirtualSystemDescription_SetFinalValues_TO(smth) NS_IMETHOD SetFinalValues (PRUint32 aAEnabledSize, PRBool * aAEnabled, PRUint32 aAVBoxValuesSize, PRUnichar * * aAVBoxValues, PRUint32 aAExtraConfigValuesSize, PRUnichar * * aAExtraConfigValues) { return smth SetFinalValues (aAEnabledSize+++, aAEnabled, aAVBoxValuesSize+++, aAVBoxValues, aAExtraConfigValuesSize, aAExtraConfigValues); }
#define COM_FORWARD_IVirtualSystemDescription_SetFinalValues_TO_OBJ(obj) COM_FORWARD_IVirtualSystemDescription_SetFinalValues_TO ((obj)->)
#define COM_FORWARD_IVirtualSystemDescription_SetFinalValues_TO_BASE(base) COM_FORWARD_IVirtualSystemDescription_SetFinalValues_TO (base::)
#define COM_FORWARD_IVirtualSystemDescription_AddDescription_TO(smth) NS_IMETHOD AddDescription (PRUint32 aAType, PRUnichar * aAVBoxValue, PRUnichar * aAExtraConfigValue) { return smth AddDescription (aAType, aAVBoxValue, aAExtraConfigValue); }
#define COM_FORWARD_IVirtualSystemDescription_AddDescription_TO_OBJ(obj) COM_FORWARD_IVirtualSystemDescription_AddDescription_TO ((obj)->)
#define COM_FORWARD_IVirtualSystemDescription_AddDescription_TO_BASE(base) COM_FORWARD_IVirtualSystemDescription_AddDescription_TO (base::)
#define COM_FORWARD_IVirtualSystemDescription_TO(smth) NS_FORWARD_IVIRTUALSYSTEMDESCRIPTION (smth)
#define COM_FORWARD_IVirtualSystemDescription_TO_OBJ(obj) COM_FORWARD_IVirtualSystemDescription_TO ((obj)->)
#define COM_FORWARD_IVirtualSystemDescription_TO_BASE(base) COM_FORWARD_IVirtualSystemDescription_TO (base::)

/* starting interface:    IInternalMachineControl */
#define IINTERNALMACHINECONTROL_IID_STR "26604a54-8628-491b-a0ea-e1392a16d13b"

#define IINTERNALMACHINECONTROL_IID \
  {0x26604a54, 0x8628, 0x491b, \
    { 0xa0, 0xea, 0xe1, 0x39, 0x2a, 0x16, 0xd1, 0x3b }}

class NS_NO_VTABLE IInternalMachineControl : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IINTERNALMACHINECONTROL_IID)

  /* void setRemoveSavedState (in boolean aRemove); */
  NS_IMETHOD SetRemoveSavedState(PRBool aRemove) = 0;

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

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

  /* void beginPowerUp (in IProgress progress); */
  NS_IMETHOD BeginPowerUp(IProgress *progress) = 0;

  /* void endPowerUp (in long result); */
  NS_IMETHOD EndPowerUp(PRInt32 result) = 0;

  /* void runUSBDeviceFilters (in IUSBDevice device, out boolean matched, out unsigned long maskedInterfaces); */
  NS_IMETHOD RunUSBDeviceFilters(IUSBDevice *device, PRBool *matched, PRUint32 *maskedInterfaces) = 0;

  /* void captureUSBDevice (in wstring id); */
  NS_IMETHOD CaptureUSBDevice(const PRUnichar *id) = 0;

  /* void detachUSBDevice (in wstring id, in boolean done); */
  NS_IMETHOD DetachUSBDevice(const PRUnichar *id, PRBool done) = 0;

  /* void autoCaptureUSBDevices (); */
  NS_IMETHOD AutoCaptureUSBDevices(void) = 0;

  /* void detachAllUSBDevices (in boolean done); */
  NS_IMETHOD DetachAllUSBDevices(PRBool done) = 0;

  /* void onSessionEnd (in ISession session, [retval] out IProgress progress); */
  NS_IMETHOD OnSessionEnd(ISession *session, IProgress **progress) = 0;

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

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

  /* void deleteSnapshot (in IConsole initiator, in wstring id, out PRUint32 machineState, [retval] out IProgress progress); */
  NS_IMETHOD DeleteSnapshot(IConsole *initiator, const PRUnichar *id, PRUint32 *machineState, IProgress **progress) = 0;

  /* void finishOnlineMergeMedium (in IMediumAttachment mediumAttachment, in IMedium source, in IMedium target, in boolean mergeForward, in IMedium parentForTarget, in unsigned long childrenToReparentSize, [array, size_is (childrenToReparentSize)] in IMedium childrenToReparent); */
  NS_IMETHOD FinishOnlineMergeMedium(IMediumAttachment *mediumAttachment, IMedium *source, IMedium *target, PRBool mergeForward, IMedium *parentForTarget, PRUint32 childrenToReparentSize, IMedium **childrenToReparent) = 0;

  /* void restoreSnapshot (in IConsole initiator, in ISnapshot snapshot, out PRUint32 machineState, [retval] out IProgress progress); */
  NS_IMETHOD RestoreSnapshot(IConsole *initiator, ISnapshot *snapshot, PRUint32 *machineState, IProgress **progress) = 0;

  /* void pullGuestProperties (out unsigned long nameSize, [array, size_is (nameSize)] out wstring name, out unsigned long valueSize, [array, size_is (valueSize)] out wstring value, out unsigned long timestampSize, [array, size_is (timestampSize)] out unsigned long long timestamp, out unsigned long flagsSize, [array, size_is (flagsSize)] out wstring flags); */
  NS_IMETHOD PullGuestProperties(PRUint32 *nameSize, PRUnichar ***name, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRUint64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags) = 0;

  /* void pushGuestProperty (in wstring name, in wstring value, in unsigned long long timestamp, in wstring flags); */
  NS_IMETHOD PushGuestProperty(const PRUnichar *name, const PRUnichar *value, PRUint64 timestamp, const PRUnichar *flags) = 0;

  /* void lockMedia (); */
  NS_IMETHOD LockMedia(void) = 0;

  /* void unlockMedia (); */
  NS_IMETHOD UnlockMedia(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IINTERNALMACHINECONTROL \
  NS_IMETHOD SetRemoveSavedState(PRBool aRemove); \
  NS_IMETHOD UpdateState(PRUint32 state); \
  NS_IMETHOD GetIPCId(PRUnichar **id); \
  NS_IMETHOD BeginPowerUp(IProgress *progress); \
  NS_IMETHOD EndPowerUp(PRInt32 result); \
  NS_IMETHOD RunUSBDeviceFilters(IUSBDevice *device, PRBool *matched, PRUint32 *maskedInterfaces); \
  NS_IMETHOD CaptureUSBDevice(const PRUnichar *id); \
  NS_IMETHOD DetachUSBDevice(const PRUnichar *id, PRBool done); \
  NS_IMETHOD AutoCaptureUSBDevices(void); \
  NS_IMETHOD DetachAllUSBDevices(PRBool done); \
  NS_IMETHOD OnSessionEnd(ISession *session, IProgress **progress); \
  NS_IMETHOD BeginSavingState(IProgress *progress, PRUnichar **stateFilePath); \
  NS_IMETHOD EndSavingState(PRBool success); \
  NS_IMETHOD AdoptSavedState(const PRUnichar *savedStateFile); \
  NS_IMETHOD BeginTakingSnapshot(IConsole *initiator, const PRUnichar *name, const PRUnichar *description, IProgress *consoleProgress, PRBool fTakingSnapshotOnline, PRUnichar **stateFilePath); \
  NS_IMETHOD EndTakingSnapshot(PRBool success); \
  NS_IMETHOD DeleteSnapshot(IConsole *initiator, const PRUnichar *id, PRUint32 *machineState, IProgress **progress); \
  NS_IMETHOD FinishOnlineMergeMedium(IMediumAttachment *mediumAttachment, IMedium *source, IMedium *target, PRBool mergeForward, IMedium *parentForTarget, PRUint32 childrenToReparentSize, IMedium **childrenToReparent); \
  NS_IMETHOD RestoreSnapshot(IConsole *initiator, ISnapshot *snapshot, PRUint32 *machineState, IProgress **progress); \
  NS_IMETHOD PullGuestProperties(PRUint32 *nameSize, PRUnichar ***name, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRUint64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags); \
  NS_IMETHOD PushGuestProperty(const PRUnichar *name, const PRUnichar *value, PRUint64 timestamp, const PRUnichar *flags); \
  NS_IMETHOD LockMedia(void); \
  NS_IMETHOD UnlockMedia(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IINTERNALMACHINECONTROL(_to) \
  NS_IMETHOD SetRemoveSavedState(PRBool aRemove) { return _to SetRemoveSavedState(aRemove); } \
  NS_IMETHOD UpdateState(PRUint32 state) { return _to UpdateState(state); } \
  NS_IMETHOD GetIPCId(PRUnichar **id) { return _to GetIPCId(id); } \
  NS_IMETHOD BeginPowerUp(IProgress *progress) { return _to BeginPowerUp(progress); } \
  NS_IMETHOD EndPowerUp(PRInt32 result) { return _to EndPowerUp(result); } \
  NS_IMETHOD RunUSBDeviceFilters(IUSBDevice *device, PRBool *matched, PRUint32 *maskedInterfaces) { return _to RunUSBDeviceFilters(device, matched, maskedInterfaces); } \
  NS_IMETHOD CaptureUSBDevice(const PRUnichar *id) { return _to CaptureUSBDevice(id); } \
  NS_IMETHOD DetachUSBDevice(const PRUnichar *id, PRBool done) { return _to DetachUSBDevice(id, done); } \
  NS_IMETHOD AutoCaptureUSBDevices(void) { return _to AutoCaptureUSBDevices(); } \
  NS_IMETHOD DetachAllUSBDevices(PRBool done) { return _to DetachAllUSBDevices(done); } \
  NS_IMETHOD OnSessionEnd(ISession *session, IProgress **progress) { return _to OnSessionEnd(session, progress); } \
  NS_IMETHOD BeginSavingState(IProgress *progress, PRUnichar **stateFilePath) { return _to BeginSavingState(progress, stateFilePath); } \
  NS_IMETHOD EndSavingState(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 *consoleProgress, PRBool fTakingSnapshotOnline, PRUnichar **stateFilePath) { return _to BeginTakingSnapshot(initiator, name, description, consoleProgress, fTakingSnapshotOnline, stateFilePath); } \
  NS_IMETHOD EndTakingSnapshot(PRBool success) { return _to EndTakingSnapshot(success); } \
  NS_IMETHOD DeleteSnapshot(IConsole *initiator, const PRUnichar *id, PRUint32 *machineState, IProgress **progress) { return _to DeleteSnapshot(initiator, id, machineState, progress); } \
  NS_IMETHOD FinishOnlineMergeMedium(IMediumAttachment *mediumAttachment, IMedium *source, IMedium *target, PRBool mergeForward, IMedium *parentForTarget, PRUint32 childrenToReparentSize, IMedium **childrenToReparent) { return _to FinishOnlineMergeMedium(mediumAttachment, source, target, mergeForward, parentForTarget, childrenToReparentSize, childrenToReparent); } \
  NS_IMETHOD RestoreSnapshot(IConsole *initiator, ISnapshot *snapshot, PRUint32 *machineState, IProgress **progress) { return _to RestoreSnapshot(initiator, snapshot, machineState, progress); } \
  NS_IMETHOD PullGuestProperties(PRUint32 *nameSize, PRUnichar ***name, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRUint64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags) { return _to PullGuestProperties(nameSize, name, valueSize, value, timestampSize, timestamp, flagsSize, flags); } \
  NS_IMETHOD PushGuestProperty(const PRUnichar *name, const PRUnichar *value, PRUint64 timestamp, const PRUnichar *flags) { return _to PushGuestProperty(name, value, timestamp, flags); } \
  NS_IMETHOD LockMedia(void) { return _to LockMedia(); } \
  NS_IMETHOD UnlockMedia(void) { return _to UnlockMedia(); } 

/* 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 SetRemoveSavedState(PRBool aRemove) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRemoveSavedState(aRemove); } \
  NS_IMETHOD UpdateState(PRUint32 state) { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateState(state); } \
  NS_IMETHOD GetIPCId(PRUnichar **id) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIPCId(id); } \
  NS_IMETHOD BeginPowerUp(IProgress *progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->BeginPowerUp(progress); } \
  NS_IMETHOD EndPowerUp(PRInt32 result) { return !_to ? NS_ERROR_NULL_POINTER : _to->EndPowerUp(result); } \
  NS_IMETHOD RunUSBDeviceFilters(IUSBDevice *device, PRBool *matched, PRUint32 *maskedInterfaces) { return !_to ? NS_ERROR_NULL_POINTER : _to->RunUSBDeviceFilters(device, matched, maskedInterfaces); } \
  NS_IMETHOD CaptureUSBDevice(const PRUnichar *id) { return !_to ? NS_ERROR_NULL_POINTER : _to->CaptureUSBDevice(id); } \
  NS_IMETHOD DetachUSBDevice(const PRUnichar *id, PRBool done) { return !_to ? NS_ERROR_NULL_POINTER : _to->DetachUSBDevice(id, done); } \
  NS_IMETHOD AutoCaptureUSBDevices(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->AutoCaptureUSBDevices(); } \
  NS_IMETHOD DetachAllUSBDevices(PRBool done) { return !_to ? NS_ERROR_NULL_POINTER : _to->DetachAllUSBDevices(done); } \
  NS_IMETHOD OnSessionEnd(ISession *session, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnSessionEnd(session, progress); } \
  NS_IMETHOD BeginSavingState(IProgress *progress, PRUnichar **stateFilePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->BeginSavingState(progress, stateFilePath); } \
  NS_IMETHOD EndSavingState(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 *consoleProgress, PRBool fTakingSnapshotOnline, PRUnichar **stateFilePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->BeginTakingSnapshot(initiator, name, description, consoleProgress, fTakingSnapshotOnline, stateFilePath); } \
  NS_IMETHOD EndTakingSnapshot(PRBool success) { return !_to ? NS_ERROR_NULL_POINTER : _to->EndTakingSnapshot(success); } \
  NS_IMETHOD DeleteSnapshot(IConsole *initiator, const PRUnichar *id, PRUint32 *machineState, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteSnapshot(initiator, id, machineState, progress); } \
  NS_IMETHOD FinishOnlineMergeMedium(IMediumAttachment *mediumAttachment, IMedium *source, IMedium *target, PRBool mergeForward, IMedium *parentForTarget, PRUint32 childrenToReparentSize, IMedium **childrenToReparent) { return !_to ? NS_ERROR_NULL_POINTER : _to->FinishOnlineMergeMedium(mediumAttachment, source, target, mergeForward, parentForTarget, childrenToReparentSize, childrenToReparent); } \
  NS_IMETHOD RestoreSnapshot(IConsole *initiator, ISnapshot *snapshot, PRUint32 *machineState, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->RestoreSnapshot(initiator, snapshot, machineState, progress); } \
  NS_IMETHOD PullGuestProperties(PRUint32 *nameSize, PRUnichar ***name, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRUint64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags) { return !_to ? NS_ERROR_NULL_POINTER : _to->PullGuestProperties(nameSize, name, valueSize, value, timestampSize, timestamp, flagsSize, flags); } \
  NS_IMETHOD PushGuestProperty(const PRUnichar *name, const PRUnichar *value, PRUint64 timestamp, const PRUnichar *flags) { return !_to ? NS_ERROR_NULL_POINTER : _to->PushGuestProperty(name, value, timestamp, flags); } \
  NS_IMETHOD LockMedia(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->LockMedia(); } \
  NS_IMETHOD UnlockMedia(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnlockMedia(); } 

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

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

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

/* void beginPowerUp (in IProgress progress); */
NS_IMETHODIMP _MYCLASS_::BeginPowerUp(IProgress *progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void endPowerUp (in long result); */
NS_IMETHODIMP _MYCLASS_::EndPowerUp(PRInt32 result)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void runUSBDeviceFilters (in IUSBDevice device, out boolean matched, out unsigned long maskedInterfaces); */
NS_IMETHODIMP _MYCLASS_::RunUSBDeviceFilters(IUSBDevice *device, PRBool *matched, PRUint32 *maskedInterfaces)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void captureUSBDevice (in wstring id); */
NS_IMETHODIMP _MYCLASS_::CaptureUSBDevice(const PRUnichar *id)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void detachUSBDevice (in wstring id, in boolean done); */
NS_IMETHODIMP _MYCLASS_::DetachUSBDevice(const PRUnichar *id, PRBool done)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void autoCaptureUSBDevices (); */
NS_IMETHODIMP _MYCLASS_::AutoCaptureUSBDevices()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void detachAllUSBDevices (in boolean done); */
NS_IMETHODIMP _MYCLASS_::DetachAllUSBDevices(PRBool done)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onSessionEnd (in ISession session, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::OnSessionEnd(ISession *session, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

/* void deleteSnapshot (in IConsole initiator, in wstring id, out PRUint32 machineState, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::DeleteSnapshot(IConsole *initiator, const PRUnichar *id, PRUint32 *machineState, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void finishOnlineMergeMedium (in IMediumAttachment mediumAttachment, in IMedium source, in IMedium target, in boolean mergeForward, in IMedium parentForTarget, in unsigned long childrenToReparentSize, [array, size_is (childrenToReparentSize)] in IMedium childrenToReparent); */
NS_IMETHODIMP _MYCLASS_::FinishOnlineMergeMedium(IMediumAttachment *mediumAttachment, IMedium *source, IMedium *target, PRBool mergeForward, IMedium *parentForTarget, PRUint32 childrenToReparentSize, IMedium **childrenToReparent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void pullGuestProperties (out unsigned long nameSize, [array, size_is (nameSize)] out wstring name, out unsigned long valueSize, [array, size_is (valueSize)] out wstring value, out unsigned long timestampSize, [array, size_is (timestampSize)] out unsigned long long timestamp, out unsigned long flagsSize, [array, size_is (flagsSize)] out wstring flags); */
NS_IMETHODIMP _MYCLASS_::PullGuestProperties(PRUint32 *nameSize, PRUnichar ***name, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRUint64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void pushGuestProperty (in wstring name, in wstring value, in unsigned long long timestamp, in wstring flags); */
NS_IMETHODIMP _MYCLASS_::PushGuestProperty(const PRUnichar *name, const PRUnichar *value, PRUint64 timestamp, const PRUnichar *flags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void lockMedia (); */
NS_IMETHODIMP _MYCLASS_::LockMedia()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unlockMedia (); */
NS_IMETHODIMP _MYCLASS_::UnlockMedia()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IInternalMachineControl_SetRemoveSavedState_TO(smth) NS_IMETHOD SetRemoveSavedState (PRBool aARemove) { return smth SetRemoveSavedState (aARemove); }
#define COM_FORWARD_IInternalMachineControl_SetRemoveSavedState_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_SetRemoveSavedState_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_SetRemoveSavedState_TO_BASE(base) COM_FORWARD_IInternalMachineControl_SetRemoveSavedState_TO (base::)
#define COM_FORWARD_IInternalMachineControl_UpdateState_TO(smth) NS_IMETHOD UpdateState (PRUint32 aState) { return smth UpdateState (aState); }
#define COM_FORWARD_IInternalMachineControl_UpdateState_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_UpdateState_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_UpdateState_TO_BASE(base) COM_FORWARD_IInternalMachineControl_UpdateState_TO (base::)
#define COM_FORWARD_IInternalMachineControl_GetIPCId_TO(smth) NS_IMETHOD GetIPCId (PRUnichar * * aId) { return smth GetIPCId (aId); }
#define COM_FORWARD_IInternalMachineControl_GetIPCId_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_GetIPCId_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_GetIPCId_TO_BASE(base) COM_FORWARD_IInternalMachineControl_GetIPCId_TO (base::)
#define COM_FORWARD_IInternalMachineControl_BeginPowerUp_TO(smth) NS_IMETHOD BeginPowerUp (IProgress * aProgress) { return smth BeginPowerUp (aProgress); }
#define COM_FORWARD_IInternalMachineControl_BeginPowerUp_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_BeginPowerUp_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_BeginPowerUp_TO_BASE(base) COM_FORWARD_IInternalMachineControl_BeginPowerUp_TO (base::)
#define COM_FORWARD_IInternalMachineControl_EndPowerUp_TO(smth) NS_IMETHOD EndPowerUp (PRInt32 aResult) { return smth EndPowerUp (aResult); }
#define COM_FORWARD_IInternalMachineControl_EndPowerUp_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_EndPowerUp_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_EndPowerUp_TO_BASE(base) COM_FORWARD_IInternalMachineControl_EndPowerUp_TO (base::)
#define COM_FORWARD_IInternalMachineControl_RunUSBDeviceFilters_TO(smth) NS_IMETHOD RunUSBDeviceFilters (IUSBDevice * aDevice, PRBool * aMatched, PRUint32 * aMaskedInterfaces) { return smth RunUSBDeviceFilters (aDevice, aMatched, aMaskedInterfaces); }
#define COM_FORWARD_IInternalMachineControl_RunUSBDeviceFilters_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_RunUSBDeviceFilters_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_RunUSBDeviceFilters_TO_BASE(base) COM_FORWARD_IInternalMachineControl_RunUSBDeviceFilters_TO (base::)
#define COM_FORWARD_IInternalMachineControl_CaptureUSBDevice_TO(smth) NS_IMETHOD CaptureUSBDevice (PRUnichar * aId) { return smth CaptureUSBDevice (aId); }
#define COM_FORWARD_IInternalMachineControl_CaptureUSBDevice_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_CaptureUSBDevice_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_CaptureUSBDevice_TO_BASE(base) COM_FORWARD_IInternalMachineControl_CaptureUSBDevice_TO (base::)
#define COM_FORWARD_IInternalMachineControl_DetachUSBDevice_TO(smth) NS_IMETHOD DetachUSBDevice (PRUnichar * aId, PRBool aDone) { return smth DetachUSBDevice (aId, aDone); }
#define COM_FORWARD_IInternalMachineControl_DetachUSBDevice_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_DetachUSBDevice_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_DetachUSBDevice_TO_BASE(base) COM_FORWARD_IInternalMachineControl_DetachUSBDevice_TO (base::)
#define COM_FORWARD_IInternalMachineControl_AutoCaptureUSBDevices_TO(smth) NS_IMETHOD AutoCaptureUSBDevices() { return smth AutoCaptureUSBDevices(); }
#define COM_FORWARD_IInternalMachineControl_AutoCaptureUSBDevices_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_AutoCaptureUSBDevices_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_AutoCaptureUSBDevices_TO_BASE(base) COM_FORWARD_IInternalMachineControl_AutoCaptureUSBDevices_TO (base::)
#define COM_FORWARD_IInternalMachineControl_DetachAllUSBDevices_TO(smth) NS_IMETHOD DetachAllUSBDevices (PRBool aDone) { return smth DetachAllUSBDevices (aDone); }
#define COM_FORWARD_IInternalMachineControl_DetachAllUSBDevices_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_DetachAllUSBDevices_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_DetachAllUSBDevices_TO_BASE(base) COM_FORWARD_IInternalMachineControl_DetachAllUSBDevices_TO (base::)
#define COM_FORWARD_IInternalMachineControl_OnSessionEnd_TO(smth) NS_IMETHOD OnSessionEnd (ISession * aSession, IProgress * * aProgress) { return smth OnSessionEnd (aSession, aProgress); }
#define COM_FORWARD_IInternalMachineControl_OnSessionEnd_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_OnSessionEnd_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_OnSessionEnd_TO_BASE(base) COM_FORWARD_IInternalMachineControl_OnSessionEnd_TO (base::)
#define COM_FORWARD_IInternalMachineControl_BeginSavingState_TO(smth) NS_IMETHOD BeginSavingState (IProgress * aProgress, PRUnichar * * aStateFilePath) { return smth BeginSavingState (aProgress, aStateFilePath); }
#define COM_FORWARD_IInternalMachineControl_BeginSavingState_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_BeginSavingState_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_BeginSavingState_TO_BASE(base) COM_FORWARD_IInternalMachineControl_BeginSavingState_TO (base::)
#define COM_FORWARD_IInternalMachineControl_EndSavingState_TO(smth) NS_IMETHOD EndSavingState (PRBool aSuccess) { return smth EndSavingState (aSuccess); }
#define COM_FORWARD_IInternalMachineControl_EndSavingState_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_EndSavingState_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_EndSavingState_TO_BASE(base) COM_FORWARD_IInternalMachineControl_EndSavingState_TO (base::)
#define COM_FORWARD_IInternalMachineControl_AdoptSavedState_TO(smth) NS_IMETHOD AdoptSavedState (PRUnichar * aSavedStateFile) { return smth AdoptSavedState (aSavedStateFile); }
#define COM_FORWARD_IInternalMachineControl_AdoptSavedState_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_AdoptSavedState_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_AdoptSavedState_TO_BASE(base) COM_FORWARD_IInternalMachineControl_AdoptSavedState_TO (base::)
#define COM_FORWARD_IInternalMachineControl_BeginTakingSnapshot_TO(smth) NS_IMETHOD BeginTakingSnapshot (IConsole * aInitiator, PRUnichar * aName, PRUnichar * aDescription, IProgress * aConsoleProgress, PRBool aFTakingSnapshotOnline, PRUnichar * * aStateFilePath) { return smth BeginTakingSnapshot (aInitiator, aName, aDescription, aConsoleProgress, aFTakingSnapshotOnline, aStateFilePath); }
#define COM_FORWARD_IInternalMachineControl_BeginTakingSnapshot_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_BeginTakingSnapshot_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_BeginTakingSnapshot_TO_BASE(base) COM_FORWARD_IInternalMachineControl_BeginTakingSnapshot_TO (base::)
#define COM_FORWARD_IInternalMachineControl_EndTakingSnapshot_TO(smth) NS_IMETHOD EndTakingSnapshot (PRBool aSuccess) { return smth EndTakingSnapshot (aSuccess); }
#define COM_FORWARD_IInternalMachineControl_EndTakingSnapshot_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_EndTakingSnapshot_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_EndTakingSnapshot_TO_BASE(base) COM_FORWARD_IInternalMachineControl_EndTakingSnapshot_TO (base::)
#define COM_FORWARD_IInternalMachineControl_DeleteSnapshot_TO(smth) NS_IMETHOD DeleteSnapshot (IConsole * aInitiator, PRUnichar * aId, PRUint32 * aMachineState, IProgress * * aProgress) { return smth DeleteSnapshot (aInitiator, aId, aMachineState, aProgress); }
#define COM_FORWARD_IInternalMachineControl_DeleteSnapshot_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_DeleteSnapshot_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_DeleteSnapshot_TO_BASE(base) COM_FORWARD_IInternalMachineControl_DeleteSnapshot_TO (base::)
#define COM_FORWARD_IInternalMachineControl_FinishOnlineMergeMedium_TO(smth) NS_IMETHOD FinishOnlineMergeMedium (IMediumAttachment * aMediumAttachment, IMedium * aSource, IMedium * aTarget, PRBool aMergeForward, IMedium * aParentForTarget, PRUint32 aChildrenToReparentSize, IMedium * * aChildrenToReparent) { return smth FinishOnlineMergeMedium (aMediumAttachment, aSource, aTarget, aMergeForward, aParentForTarget, aChildrenToReparentSize, aChildrenToReparent); }
#define COM_FORWARD_IInternalMachineControl_FinishOnlineMergeMedium_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_FinishOnlineMergeMedium_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_FinishOnlineMergeMedium_TO_BASE(base) COM_FORWARD_IInternalMachineControl_FinishOnlineMergeMedium_TO (base::)
#define COM_FORWARD_IInternalMachineControl_RestoreSnapshot_TO(smth) NS_IMETHOD RestoreSnapshot (IConsole * aInitiator, ISnapshot * aSnapshot, PRUint32 * aMachineState, IProgress * * aProgress) { return smth RestoreSnapshot (aInitiator, aSnapshot, aMachineState, aProgress); }
#define COM_FORWARD_IInternalMachineControl_RestoreSnapshot_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_RestoreSnapshot_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_RestoreSnapshot_TO_BASE(base) COM_FORWARD_IInternalMachineControl_RestoreSnapshot_TO (base::)
#define COM_FORWARD_IInternalMachineControl_PullGuestProperties_TO(smth) NS_IMETHOD PullGuestProperties (PRUint32 * aNameSize, PRUnichar * * * aName, PRUint32 * aValueSize, PRUnichar * * * aValue, PRUint32 * aTimestampSize, PRUint64 * * aTimestamp, PRUint32 * aFlagsSize, PRUnichar * * * aFlags) { return smth PullGuestProperties (aNameSize+++, aName, aValueSize+++, aValue, aTimestampSize+++, aTimestamp, aFlagsSize, aFlags); }
#define COM_FORWARD_IInternalMachineControl_PullGuestProperties_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_PullGuestProperties_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_PullGuestProperties_TO_BASE(base) COM_FORWARD_IInternalMachineControl_PullGuestProperties_TO (base::)
#define COM_FORWARD_IInternalMachineControl_PushGuestProperty_TO(smth) NS_IMETHOD PushGuestProperty (PRUnichar * aName, PRUnichar * aValue, PRUint64 aTimestamp, PRUnichar * aFlags) { return smth PushGuestProperty (aName, aValue, aTimestamp, aFlags); }
#define COM_FORWARD_IInternalMachineControl_PushGuestProperty_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_PushGuestProperty_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_PushGuestProperty_TO_BASE(base) COM_FORWARD_IInternalMachineControl_PushGuestProperty_TO (base::)
#define COM_FORWARD_IInternalMachineControl_LockMedia_TO(smth) NS_IMETHOD LockMedia() { return smth LockMedia(); }
#define COM_FORWARD_IInternalMachineControl_LockMedia_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_LockMedia_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_LockMedia_TO_BASE(base) COM_FORWARD_IInternalMachineControl_LockMedia_TO (base::)
#define COM_FORWARD_IInternalMachineControl_UnlockMedia_TO(smth) NS_IMETHOD UnlockMedia() { return smth UnlockMedia(); }
#define COM_FORWARD_IInternalMachineControl_UnlockMedia_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_UnlockMedia_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_UnlockMedia_TO_BASE(base) COM_FORWARD_IInternalMachineControl_UnlockMedia_TO (base::)
#define COM_FORWARD_IInternalMachineControl_TO(smth) NS_FORWARD_IINTERNALMACHINECONTROL (smth)
#define COM_FORWARD_IInternalMachineControl_TO_OBJ(obj) COM_FORWARD_IInternalMachineControl_TO ((obj)->)
#define COM_FORWARD_IInternalMachineControl_TO_BASE(base) COM_FORWARD_IInternalMachineControl_TO (base::)

/* starting interface:    IBIOSSettings */
#define IBIOSSETTINGS_IID_STR "38b54279-dc35-4f5e-a431-835b867c6b5e"

#define IBIOSSETTINGS_IID \
  {0x38b54279, 0xdc35, 0x4f5e, \
    { 0xa4, 0x31, 0x83, 0x5b, 0x86, 0x7c, 0x6b, 0x5e }}

class NS_NO_VTABLE IBIOSSettings : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IBIOSSETTINGS_IID)

  /* attribute boolean logoFadeIn; */
  NS_IMETHOD GetLogoFadeIn(PRBool *aLogoFadeIn) = 0;
  NS_IMETHOD SetLogoFadeIn(PRBool aLogoFadeIn) = 0;

  /* attribute boolean logoFadeOut; */
  NS_IMETHOD GetLogoFadeOut(PRBool *aLogoFadeOut) = 0;
  NS_IMETHOD SetLogoFadeOut(PRBool aLogoFadeOut) = 0;

  /* attribute unsigned long logoDisplayTime; */
  NS_IMETHOD GetLogoDisplayTime(PRUint32 *aLogoDisplayTime) = 0;
  NS_IMETHOD SetLogoDisplayTime(PRUint32 aLogoDisplayTime) = 0;

  /* attribute wstring logoImagePath; */
  NS_IMETHOD GetLogoImagePath(PRUnichar * *aLogoImagePath) = 0;
  NS_IMETHOD SetLogoImagePath(const PRUnichar * aLogoImagePath) = 0;

  /* attribute PRUint32 bootMenuMode; */
  NS_IMETHOD GetBootMenuMode(PRUint32 *aBootMenuMode) = 0;
  NS_IMETHOD SetBootMenuMode(PRUint32 aBootMenuMode) = 0;

  /* attribute boolean ACPIEnabled; */
  NS_IMETHOD GetACPIEnabled(PRBool *aACPIEnabled) = 0;
  NS_IMETHOD SetACPIEnabled(PRBool aACPIEnabled) = 0;

  /* attribute boolean IOAPICEnabled; */
  NS_IMETHOD GetIOAPICEnabled(PRBool *aIOAPICEnabled) = 0;
  NS_IMETHOD SetIOAPICEnabled(PRBool aIOAPICEnabled) = 0;

  /* attribute long long timeOffset; */
  NS_IMETHOD GetTimeOffset(PRInt64 *aTimeOffset) = 0;
  NS_IMETHOD SetTimeOffset(PRInt64 aTimeOffset) = 0;

  /* attribute boolean PXEDebugEnabled; */
  NS_IMETHOD GetPXEDebugEnabled(PRBool *aPXEDebugEnabled) = 0;
  NS_IMETHOD SetPXEDebugEnabled(PRBool aPXEDebugEnabled) = 0;

};

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

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

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

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

/* Header file */
class IBOSSettings : public IBIOSSettings
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IBIOSSETTINGS

  IBOSSettings();

private:
  ~IBOSSettings();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(IBOSSettings, IBIOSSettings)

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

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

/* attribute boolean logoFadeIn; */
NS_IMETHODIMP IBOSSettings::GetLogoFadeIn(PRBool *aLogoFadeIn)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP IBOSSettings::SetLogoFadeIn(PRBool aLogoFadeIn)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean logoFadeOut; */
NS_IMETHODIMP IBOSSettings::GetLogoFadeOut(PRBool *aLogoFadeOut)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP IBOSSettings::SetLogoFadeOut(PRBool aLogoFadeOut)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long logoDisplayTime; */
NS_IMETHODIMP IBOSSettings::GetLogoDisplayTime(PRUint32 *aLogoDisplayTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP IBOSSettings::SetLogoDisplayTime(PRUint32 aLogoDisplayTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring logoImagePath; */
NS_IMETHODIMP IBOSSettings::GetLogoImagePath(PRUnichar * *aLogoImagePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP IBOSSettings::SetLogoImagePath(const PRUnichar * aLogoImagePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 bootMenuMode; */
NS_IMETHODIMP IBOSSettings::GetBootMenuMode(PRUint32 *aBootMenuMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP IBOSSettings::SetBootMenuMode(PRUint32 aBootMenuMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean ACPIEnabled; */
NS_IMETHODIMP IBOSSettings::GetACPIEnabled(PRBool *aACPIEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP IBOSSettings::SetACPIEnabled(PRBool aACPIEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean IOAPICEnabled; */
NS_IMETHODIMP IBOSSettings::GetIOAPICEnabled(PRBool *aIOAPICEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP IBOSSettings::SetIOAPICEnabled(PRBool aIOAPICEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute long long timeOffset; */
NS_IMETHODIMP IBOSSettings::GetTimeOffset(PRInt64 *aTimeOffset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP IBOSSettings::SetTimeOffset(PRInt64 aTimeOffset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean PXEDebugEnabled; */
NS_IMETHODIMP IBOSSettings::GetPXEDebugEnabled(PRBool *aPXEDebugEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP IBOSSettings::SetPXEDebugEnabled(PRBool aPXEDebugEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IBIOSSettings_GETTER_LogoFadeIn_TO(smth) NS_IMETHOD GetLogoFadeIn (PRBool * aLogoFadeIn) { return smth GetLogoFadeIn (aLogoFadeIn); }
#define COM_FORWARD_IBIOSSettings_GETTER_LogoFadeIn_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_GETTER_LogoFadeIn_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_GETTER_LogoFadeIn_TO_BASE(base) COM_FORWARD_IBIOSSettings_GETTER_LogoFadeIn_TO (base::)
#define COM_FORWARD_IBIOSSettings_SETTER_LogoFadeIn_TO(smth) NS_IMETHOD SetLogoFadeIn (PRBool aLogoFadeIn) { return smth SetLogoFadeIn (aLogoFadeIn); }
#define COM_FORWARD_IBIOSSettings_SETTER_LogoFadeIn_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_SETTER_LogoFadeIn_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_SETTER_LogoFadeIn_TO_BASE(base) COM_FORWARD_IBIOSSettings_SETTER_LogoFadeIn_TO (base::)
#define COM_FORWARD_IBIOSSettings_GETTER_LogoFadeOut_TO(smth) NS_IMETHOD GetLogoFadeOut (PRBool * aLogoFadeOut) { return smth GetLogoFadeOut (aLogoFadeOut); }
#define COM_FORWARD_IBIOSSettings_GETTER_LogoFadeOut_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_GETTER_LogoFadeOut_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_GETTER_LogoFadeOut_TO_BASE(base) COM_FORWARD_IBIOSSettings_GETTER_LogoFadeOut_TO (base::)
#define COM_FORWARD_IBIOSSettings_SETTER_LogoFadeOut_TO(smth) NS_IMETHOD SetLogoFadeOut (PRBool aLogoFadeOut) { return smth SetLogoFadeOut (aLogoFadeOut); }
#define COM_FORWARD_IBIOSSettings_SETTER_LogoFadeOut_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_SETTER_LogoFadeOut_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_SETTER_LogoFadeOut_TO_BASE(base) COM_FORWARD_IBIOSSettings_SETTER_LogoFadeOut_TO (base::)
#define COM_FORWARD_IBIOSSettings_GETTER_LogoDisplayTime_TO(smth) NS_IMETHOD GetLogoDisplayTime (PRUint32 * aLogoDisplayTime) { return smth GetLogoDisplayTime (aLogoDisplayTime); }
#define COM_FORWARD_IBIOSSettings_GETTER_LogoDisplayTime_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_GETTER_LogoDisplayTime_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_GETTER_LogoDisplayTime_TO_BASE(base) COM_FORWARD_IBIOSSettings_GETTER_LogoDisplayTime_TO (base::)
#define COM_FORWARD_IBIOSSettings_SETTER_LogoDisplayTime_TO(smth) NS_IMETHOD SetLogoDisplayTime (PRUint32 aLogoDisplayTime) { return smth SetLogoDisplayTime (aLogoDisplayTime); }
#define COM_FORWARD_IBIOSSettings_SETTER_LogoDisplayTime_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_SETTER_LogoDisplayTime_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_SETTER_LogoDisplayTime_TO_BASE(base) COM_FORWARD_IBIOSSettings_SETTER_LogoDisplayTime_TO (base::)
#define COM_FORWARD_IBIOSSettings_GETTER_LogoImagePath_TO(smth) NS_IMETHOD GetLogoImagePath (PRUnichar * * aLogoImagePath) { return smth GetLogoImagePath (aLogoImagePath); }
#define COM_FORWARD_IBIOSSettings_GETTER_LogoImagePath_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_GETTER_LogoImagePath_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_GETTER_LogoImagePath_TO_BASE(base) COM_FORWARD_IBIOSSettings_GETTER_LogoImagePath_TO (base::)
#define COM_FORWARD_IBIOSSettings_SETTER_LogoImagePath_TO(smth) NS_IMETHOD SetLogoImagePath (const PRUnichar * aLogoImagePath) { return smth SetLogoImagePath (aLogoImagePath); }
#define COM_FORWARD_IBIOSSettings_SETTER_LogoImagePath_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_SETTER_LogoImagePath_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_SETTER_LogoImagePath_TO_BASE(base) COM_FORWARD_IBIOSSettings_SETTER_LogoImagePath_TO (base::)
#define COM_FORWARD_IBIOSSettings_GETTER_BootMenuMode_TO(smth) NS_IMETHOD GetBootMenuMode (PRUint32 * aBootMenuMode) { return smth GetBootMenuMode (aBootMenuMode); }
#define COM_FORWARD_IBIOSSettings_GETTER_BootMenuMode_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_GETTER_BootMenuMode_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_GETTER_BootMenuMode_TO_BASE(base) COM_FORWARD_IBIOSSettings_GETTER_BootMenuMode_TO (base::)
#define COM_FORWARD_IBIOSSettings_SETTER_BootMenuMode_TO(smth) NS_IMETHOD SetBootMenuMode (PRUint32 aBootMenuMode) { return smth SetBootMenuMode (aBootMenuMode); }
#define COM_FORWARD_IBIOSSettings_SETTER_BootMenuMode_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_SETTER_BootMenuMode_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_SETTER_BootMenuMode_TO_BASE(base) COM_FORWARD_IBIOSSettings_SETTER_BootMenuMode_TO (base::)
#define COM_FORWARD_IBIOSSettings_GETTER_ACPIEnabled_TO(smth) NS_IMETHOD GetACPIEnabled (PRBool * aACPIEnabled) { return smth GetACPIEnabled (aACPIEnabled); }
#define COM_FORWARD_IBIOSSettings_GETTER_ACPIEnabled_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_GETTER_ACPIEnabled_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_GETTER_ACPIEnabled_TO_BASE(base) COM_FORWARD_IBIOSSettings_GETTER_ACPIEnabled_TO (base::)
#define COM_FORWARD_IBIOSSettings_SETTER_ACPIEnabled_TO(smth) NS_IMETHOD SetACPIEnabled (PRBool aACPIEnabled) { return smth SetACPIEnabled (aACPIEnabled); }
#define COM_FORWARD_IBIOSSettings_SETTER_ACPIEnabled_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_SETTER_ACPIEnabled_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_SETTER_ACPIEnabled_TO_BASE(base) COM_FORWARD_IBIOSSettings_SETTER_ACPIEnabled_TO (base::)
#define COM_FORWARD_IBIOSSettings_GETTER_IOAPICEnabled_TO(smth) NS_IMETHOD GetIOAPICEnabled (PRBool * aIOAPICEnabled) { return smth GetIOAPICEnabled (aIOAPICEnabled); }
#define COM_FORWARD_IBIOSSettings_GETTER_IOAPICEnabled_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_GETTER_IOAPICEnabled_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_GETTER_IOAPICEnabled_TO_BASE(base) COM_FORWARD_IBIOSSettings_GETTER_IOAPICEnabled_TO (base::)
#define COM_FORWARD_IBIOSSettings_SETTER_IOAPICEnabled_TO(smth) NS_IMETHOD SetIOAPICEnabled (PRBool aIOAPICEnabled) { return smth SetIOAPICEnabled (aIOAPICEnabled); }
#define COM_FORWARD_IBIOSSettings_SETTER_IOAPICEnabled_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_SETTER_IOAPICEnabled_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_SETTER_IOAPICEnabled_TO_BASE(base) COM_FORWARD_IBIOSSettings_SETTER_IOAPICEnabled_TO (base::)
#define COM_FORWARD_IBIOSSettings_GETTER_TimeOffset_TO(smth) NS_IMETHOD GetTimeOffset (PRInt64 * aTimeOffset) { return smth GetTimeOffset (aTimeOffset); }
#define COM_FORWARD_IBIOSSettings_GETTER_TimeOffset_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_GETTER_TimeOffset_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_GETTER_TimeOffset_TO_BASE(base) COM_FORWARD_IBIOSSettings_GETTER_TimeOffset_TO (base::)
#define COM_FORWARD_IBIOSSettings_SETTER_TimeOffset_TO(smth) NS_IMETHOD SetTimeOffset (PRInt64 aTimeOffset) { return smth SetTimeOffset (aTimeOffset); }
#define COM_FORWARD_IBIOSSettings_SETTER_TimeOffset_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_SETTER_TimeOffset_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_SETTER_TimeOffset_TO_BASE(base) COM_FORWARD_IBIOSSettings_SETTER_TimeOffset_TO (base::)
#define COM_FORWARD_IBIOSSettings_GETTER_PXEDebugEnabled_TO(smth) NS_IMETHOD GetPXEDebugEnabled (PRBool * aPXEDebugEnabled) { return smth GetPXEDebugEnabled (aPXEDebugEnabled); }
#define COM_FORWARD_IBIOSSettings_GETTER_PXEDebugEnabled_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_GETTER_PXEDebugEnabled_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_GETTER_PXEDebugEnabled_TO_BASE(base) COM_FORWARD_IBIOSSettings_GETTER_PXEDebugEnabled_TO (base::)
#define COM_FORWARD_IBIOSSettings_SETTER_PXEDebugEnabled_TO(smth) NS_IMETHOD SetPXEDebugEnabled (PRBool aPXEDebugEnabled) { return smth SetPXEDebugEnabled (aPXEDebugEnabled); }
#define COM_FORWARD_IBIOSSettings_SETTER_PXEDebugEnabled_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_SETTER_PXEDebugEnabled_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_SETTER_PXEDebugEnabled_TO_BASE(base) COM_FORWARD_IBIOSSettings_SETTER_PXEDebugEnabled_TO (base::)
#define COM_FORWARD_IBIOSSettings_TO(smth) NS_FORWARD_IBIOSSETTINGS (smth)
#define COM_FORWARD_IBIOSSettings_TO_OBJ(obj) COM_FORWARD_IBIOSSettings_TO ((obj)->)
#define COM_FORWARD_IBIOSSettings_TO_BASE(base) COM_FORWARD_IBIOSSettings_TO (base::)

/* starting interface:    IMachine */
#define IMACHINE_IID_STR "6d9212cb-a5c0-48b7-bbc1-3fa2ba2ee6d2"

#define IMACHINE_IID \
  {0x6d9212cb, 0xa5c0, 0x48b7, \
    { 0xbb, 0xc1, 0x3f, 0xa2, 0xba, 0x2e, 0xe6, 0xd2 }}

class NS_NO_VTABLE IMachine : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMACHINE_IID)

  /* readonly attribute IVirtualBox parent; */
  NS_IMETHOD GetParent(IVirtualBox * *aParent) = 0;

  /* readonly attribute boolean accessible; */
  NS_IMETHOD GetAccessible(PRBool *aAccessible) = 0;

  /* readonly attribute IVirtualBoxErrorInfo accessError; */
  NS_IMETHOD GetAccessError(IVirtualBoxErrorInfo * *aAccessError) = 0;

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

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

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

  /* attribute wstring OSTypeId; */
  NS_IMETHOD GetOSTypeId(PRUnichar * *aOSTypeId) = 0;
  NS_IMETHOD SetOSTypeId(const PRUnichar * aOSTypeId) = 0;

  /* attribute wstring HardwareVersion; */
  NS_IMETHOD GetHardwareVersion(PRUnichar * *aHardwareVersion) = 0;
  NS_IMETHOD SetHardwareVersion(const PRUnichar * aHardwareVersion) = 0;

  /* attribute wstring hardwareUUID; */
  NS_IMETHOD GetHardwareUUID(PRUnichar * *aHardwareUUID) = 0;
  NS_IMETHOD SetHardwareUUID(const PRUnichar * aHardwareUUID) = 0;

  /* attribute unsigned long CPUCount; */
  NS_IMETHOD GetCPUCount(PRUint32 *aCPUCount) = 0;
  NS_IMETHOD SetCPUCount(PRUint32 aCPUCount) = 0;

  /* attribute boolean CPUHotPlugEnabled; */
  NS_IMETHOD GetCPUHotPlugEnabled(PRBool *aCPUHotPlugEnabled) = 0;
  NS_IMETHOD SetCPUHotPlugEnabled(PRBool aCPUHotPlugEnabled) = 0;

  /* attribute unsigned long memorySize; */
  NS_IMETHOD GetMemorySize(PRUint32 *aMemorySize) = 0;
  NS_IMETHOD SetMemorySize(PRUint32 aMemorySize) = 0;

  /* attribute unsigned long memoryBalloonSize; */
  NS_IMETHOD GetMemoryBalloonSize(PRUint32 *aMemoryBalloonSize) = 0;
  NS_IMETHOD SetMemoryBalloonSize(PRUint32 aMemoryBalloonSize) = 0;

  /* attribute boolean PageFusionEnabled; */
  NS_IMETHOD GetPageFusionEnabled(PRBool *aPageFusionEnabled) = 0;
  NS_IMETHOD SetPageFusionEnabled(PRBool aPageFusionEnabled) = 0;

  /* attribute unsigned long VRAMSize; */
  NS_IMETHOD GetVRAMSize(PRUint32 *aVRAMSize) = 0;
  NS_IMETHOD SetVRAMSize(PRUint32 aVRAMSize) = 0;

  /* attribute boolean accelerate3DEnabled; */
  NS_IMETHOD GetAccelerate3DEnabled(PRBool *aAccelerate3DEnabled) = 0;
  NS_IMETHOD SetAccelerate3DEnabled(PRBool aAccelerate3DEnabled) = 0;

  /* attribute boolean accelerate2DVideoEnabled; */
  NS_IMETHOD GetAccelerate2DVideoEnabled(PRBool *aAccelerate2DVideoEnabled) = 0;
  NS_IMETHOD SetAccelerate2DVideoEnabled(PRBool aAccelerate2DVideoEnabled) = 0;

  /* attribute unsigned long monitorCount; */
  NS_IMETHOD GetMonitorCount(PRUint32 *aMonitorCount) = 0;
  NS_IMETHOD SetMonitorCount(PRUint32 aMonitorCount) = 0;

  /* readonly attribute IBIOSSettings BIOSSettings; */
  NS_IMETHOD GetBIOSSettings(IBIOSSettings * *aBIOSSettings) = 0;

  /* attribute PRUint32 firmwareType; */
  NS_IMETHOD GetFirmwareType(PRUint32 *aFirmwareType) = 0;
  NS_IMETHOD SetFirmwareType(PRUint32 aFirmwareType) = 0;

  /* attribute PRUint32 pointingHidType; */
  NS_IMETHOD GetPointingHidType(PRUint32 *aPointingHidType) = 0;
  NS_IMETHOD SetPointingHidType(PRUint32 aPointingHidType) = 0;

  /* attribute PRUint32 keyboardHidType; */
  NS_IMETHOD GetKeyboardHidType(PRUint32 *aKeyboardHidType) = 0;
  NS_IMETHOD SetKeyboardHidType(PRUint32 aKeyboardHidType) = 0;

  /* attribute boolean hpetEnabled; */
  NS_IMETHOD GetHpetEnabled(PRBool *aHpetEnabled) = 0;
  NS_IMETHOD SetHpetEnabled(PRBool aHpetEnabled) = 0;

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

  /* void getMediumAttachments (out unsigned long mediumAttachmentsSize, [array, size_is (mediumAttachmentsSize), retval] out IMediumAttachment mediumAttachments); */
  NS_IMETHOD GetMediumAttachments(PRUint32 *mediumAttachmentsSize, IMediumAttachment ***mediumAttachments) = 0;

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

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

  /* void getStorageControllers (out unsigned long storageControllersSize, [array, size_is (storageControllersSize), retval] out IStorageController storageControllers); */
  NS_IMETHOD GetStorageControllers(PRUint32 *storageControllersSize, IStorageController ***storageControllers) = 0;

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

  /* readonly attribute boolean settingsModified; */
  NS_IMETHOD GetSettingsModified(PRBool *aSettingsModified) = 0;

  /* readonly attribute PRUint32 sessionState; */
  NS_IMETHOD GetSessionState(PRUint32 *aSessionState) = 0;

  /* readonly attribute wstring sessionType; */
  NS_IMETHOD GetSessionType(PRUnichar * *aSessionType) = 0;

  /* readonly attribute unsigned long sessionPid; */
  NS_IMETHOD GetSessionPid(PRUint32 *aSessionPid) = 0;

  /* readonly attribute PRUint32 state; */
  NS_IMETHOD GetState(PRUint32 *aState) = 0;

  /* readonly attribute long long lastStateChange; */
  NS_IMETHOD GetLastStateChange(PRInt64 *aLastStateChange) = 0;

  /* readonly attribute wstring stateFilePath; */
  NS_IMETHOD GetStateFilePath(PRUnichar * *aStateFilePath) = 0;

  /* readonly attribute wstring logFolder; */
  NS_IMETHOD GetLogFolder(PRUnichar * *aLogFolder) = 0;

  /* readonly attribute ISnapshot currentSnapshot; */
  NS_IMETHOD GetCurrentSnapshot(ISnapshot * *aCurrentSnapshot) = 0;

  /* readonly attribute unsigned long snapshotCount; */
  NS_IMETHOD GetSnapshotCount(PRUint32 *aSnapshotCount) = 0;

  /* readonly attribute boolean currentStateModified; */
  NS_IMETHOD GetCurrentStateModified(PRBool *aCurrentStateModified) = 0;

  /* void getSharedFolders (out unsigned long sharedFoldersSize, [array, size_is (sharedFoldersSize), retval] out ISharedFolder sharedFolders); */
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders) = 0;

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

  /* attribute wstring guestPropertyNotificationPatterns; */
  NS_IMETHOD GetGuestPropertyNotificationPatterns(PRUnichar * *aGuestPropertyNotificationPatterns) = 0;
  NS_IMETHOD SetGuestPropertyNotificationPatterns(const PRUnichar * aGuestPropertyNotificationPatterns) = 0;

  /* attribute boolean teleporterEnabled; */
  NS_IMETHOD GetTeleporterEnabled(PRBool *aTeleporterEnabled) = 0;
  NS_IMETHOD SetTeleporterEnabled(PRBool aTeleporterEnabled) = 0;

  /* attribute unsigned long teleporterPort; */
  NS_IMETHOD GetTeleporterPort(PRUint32 *aTeleporterPort) = 0;
  NS_IMETHOD SetTeleporterPort(PRUint32 aTeleporterPort) = 0;

  /* attribute wstring teleporterAddress; */
  NS_IMETHOD GetTeleporterAddress(PRUnichar * *aTeleporterAddress) = 0;
  NS_IMETHOD SetTeleporterAddress(const PRUnichar * aTeleporterAddress) = 0;

  /* attribute wstring teleporterPassword; */
  NS_IMETHOD GetTeleporterPassword(PRUnichar * *aTeleporterPassword) = 0;
  NS_IMETHOD SetTeleporterPassword(const PRUnichar * aTeleporterPassword) = 0;

  /* attribute boolean RTCUseUTC; */
  NS_IMETHOD GetRTCUseUTC(PRBool *aRTCUseUTC) = 0;
  NS_IMETHOD SetRTCUseUTC(PRBool aRTCUseUTC) = 0;

  /* attribute boolean ioCacheEnabled; */
  NS_IMETHOD GetIoCacheEnabled(PRBool *aIoCacheEnabled) = 0;
  NS_IMETHOD SetIoCacheEnabled(PRBool aIoCacheEnabled) = 0;

  /* attribute unsigned long ioCacheSize; */
  NS_IMETHOD GetIoCacheSize(PRUint32 *aIoCacheSize) = 0;
  NS_IMETHOD SetIoCacheSize(PRUint32 aIoCacheSize) = 0;

  /* attribute unsigned long ioBandwidthMax; */
  NS_IMETHOD GetIoBandwidthMax(PRUint32 *aIoBandwidthMax) = 0;
  NS_IMETHOD SetIoBandwidthMax(PRUint32 aIoBandwidthMax) = 0;

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

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

  /* void attachDevice (in wstring name, in long controllerPort, in long device, in PRUint32 type, in wstring id); */
  NS_IMETHOD AttachDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRUint32 type, const PRUnichar *id) = 0;

  /* void detachDevice (in wstring name, in long controllerPort, in long device); */
  NS_IMETHOD DetachDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device) = 0;

  /* void passthroughDevice (in wstring name, in long controllerPort, in long device, in boolean passthrough); */
  NS_IMETHOD PassthroughDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool passthrough) = 0;

  /* void mountMedium (in wstring name, in long controllerPort, in long device, in wstring medium, in boolean force); */
  NS_IMETHOD MountMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, const PRUnichar *medium, PRBool force) = 0;

  /* void getMedium (in wstring name, in long controllerPort, in long device, [retval] out IMedium medium); */
  NS_IMETHOD GetMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMedium **medium) = 0;

  /* void getMediumAttachmentsOfController (in wstring name, out unsigned long mediumAttachmentsSize, [array, size_is (mediumAttachmentsSize), retval] out IMediumAttachment mediumAttachments); */
  NS_IMETHOD GetMediumAttachmentsOfController(const PRUnichar *name, PRUint32 *mediumAttachmentsSize, IMediumAttachment ***mediumAttachments) = 0;

  /* void getMediumAttachment (in wstring name, in long controllerPort, in long device, [retval] out IMediumAttachment attachment); */
  NS_IMETHOD GetMediumAttachment(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMediumAttachment **attachment) = 0;

  /* void getNetworkAdapter (in unsigned long slot, [retval] out INetworkAdapter adapter); */
  NS_IMETHOD GetNetworkAdapter(PRUint32 slot, INetworkAdapter **adapter) = 0;

  /* void addStorageController (in wstring name, in PRUint32 connectionType, [retval] out IStorageController controller); */
  NS_IMETHOD AddStorageController(const PRUnichar *name, PRUint32 connectionType, IStorageController **controller) = 0;

  /* void getStorageControllerByName (in wstring name, [retval] out IStorageController storageController); */
  NS_IMETHOD GetStorageControllerByName(const PRUnichar *name, IStorageController **storageController) = 0;

  /* void getStorageControllerByInstance (in unsigned long instance, [retval] out IStorageController storageController); */
  NS_IMETHOD GetStorageControllerByInstance(PRUint32 instance, IStorageController **storageController) = 0;

  /* void removeStorageController (in wstring name); */
  NS_IMETHOD RemoveStorageController(const PRUnichar *name) = 0;

  /* void getSerialPort (in unsigned long slot, [retval] out ISerialPort port); */
  NS_IMETHOD GetSerialPort(PRUint32 slot, ISerialPort **port) = 0;

  /* void getParallelPort (in unsigned long slot, [retval] out IParallelPort port); */
  NS_IMETHOD GetParallelPort(PRUint32 slot, IParallelPort **port) = 0;

  /* void getExtraDataKeys (out unsigned long valueSize, [array, size_is (valueSize), retval] out wstring value); */
  NS_IMETHOD GetExtraDataKeys(PRUint32 *valueSize, PRUnichar ***value) = 0;

  /* void getExtraData (in wstring key, [retval] out wstring value); */
  NS_IMETHOD GetExtraData(const PRUnichar *key, PRUnichar **value) = 0;

  /* void setExtraData (in wstring key, in wstring value); */
  NS_IMETHOD SetExtraData(const PRUnichar *key, const PRUnichar *value) = 0;

  /* void getCPUProperty (in PRUint32 property, [retval] out boolean value); */
  NS_IMETHOD GetCPUProperty(PRUint32 property, PRBool *value) = 0;

  /* void setCPUProperty (in PRUint32 property, in boolean value); */
  NS_IMETHOD SetCPUProperty(PRUint32 property, PRBool value) = 0;

  /* void getCPUIDLeaf (in unsigned long id, out unsigned long valEax, out unsigned long valEbx, out unsigned long valEcx, out unsigned long valEdx); */
  NS_IMETHOD GetCPUIDLeaf(PRUint32 id, PRUint32 *valEax, PRUint32 *valEbx, PRUint32 *valEcx, PRUint32 *valEdx) = 0;

  /* void setCPUIDLeaf (in unsigned long id, in unsigned long valEax, in unsigned long valEbx, in unsigned long valEcx, in unsigned long valEdx); */
  NS_IMETHOD SetCPUIDLeaf(PRUint32 id, PRUint32 valEax, PRUint32 valEbx, PRUint32 valEcx, PRUint32 valEdx) = 0;

  /* void removeCPUIDLeaf (in unsigned long id); */
  NS_IMETHOD RemoveCPUIDLeaf(PRUint32 id) = 0;

  /* void removeAllCPUIDLeaves (); */
  NS_IMETHOD RemoveAllCPUIDLeaves(void) = 0;

  /* void getHWVirtExProperty (in PRUint32 property, [retval] out boolean value); */
  NS_IMETHOD GetHWVirtExProperty(PRUint32 property, PRBool *value) = 0;

  /* void setHWVirtExProperty (in PRUint32 property, in boolean value); */
  NS_IMETHOD SetHWVirtExProperty(PRUint32 property, PRBool value) = 0;

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

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

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

  /* void export (in IAppliance aAppliance, [retval] out IVirtualSystemDescription aDescription); */
  NS_IMETHOD Export(IAppliance *aAppliance, IVirtualSystemDescription **aDescription) = 0;

  /* void getSnapshot (in wstring id, [retval] out ISnapshot snapshot); */
  NS_IMETHOD GetSnapshot(const PRUnichar *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 wstring id); */
  NS_IMETHOD SetCurrentSnapshot(const PRUnichar *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;

  /* void getGuestProperty (in wstring name, out wstring value, out unsigned long long timestamp, out wstring flags); */
  NS_IMETHOD GetGuestProperty(const PRUnichar *name, PRUnichar **value, PRUint64 *timestamp, PRUnichar **flags) = 0;

  /* void getGuestPropertyValue (in wstring property, [retval] out wstring value); */
  NS_IMETHOD GetGuestPropertyValue(const PRUnichar *property, PRUnichar **value) = 0;

  /* void getGuestPropertyTimestamp (in wstring property, [retval] out unsigned long long value); */
  NS_IMETHOD GetGuestPropertyTimestamp(const PRUnichar *property, PRUint64 *value) = 0;

  /* void setGuestProperty (in wstring property, in wstring value, in wstring flags); */
  NS_IMETHOD SetGuestProperty(const PRUnichar *property, const PRUnichar *value, const PRUnichar *flags) = 0;

  /* void setGuestPropertyValue (in wstring property, in wstring value); */
  NS_IMETHOD SetGuestPropertyValue(const PRUnichar *property, const PRUnichar *value) = 0;

  /* void enumerateGuestProperties (in wstring patterns, out unsigned long nameSize, [array, size_is (nameSize)] out wstring name, out unsigned long valueSize, [array, size_is (valueSize)] out wstring value, out unsigned long timestampSize, [array, size_is (timestampSize)] out unsigned long long timestamp, out unsigned long flagsSize, [array, size_is (flagsSize)] out wstring flags); */
  NS_IMETHOD EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *nameSize, PRUnichar ***name, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRUint64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags) = 0;

  /* void querySavedThumbnailSize (in unsigned long screenId, out unsigned long size, out unsigned long width, out unsigned long height); */
  NS_IMETHOD QuerySavedThumbnailSize(PRUint32 screenId, PRUint32 *size, PRUint32 *width, PRUint32 *height) = 0;

  /* void readSavedThumbnailToArray (in unsigned long screenId, in boolean BGR, out unsigned long width, out unsigned long height, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
  NS_IMETHOD ReadSavedThumbnailToArray(PRUint32 screenId, PRBool BGR, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data) = 0;

  /* void querySavedScreenshotPNGSize (in unsigned long screenId, out unsigned long size, out unsigned long width, out unsigned long height); */
  NS_IMETHOD QuerySavedScreenshotPNGSize(PRUint32 screenId, PRUint32 *size, PRUint32 *width, PRUint32 *height) = 0;

  /* void readSavedScreenshotPNGToArray (in unsigned long screenId, out unsigned long width, out unsigned long height, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
  NS_IMETHOD ReadSavedScreenshotPNGToArray(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data) = 0;

  /* void hotPlugCPU (in unsigned long cpu); */
  NS_IMETHOD HotPlugCPU(PRUint32 cpu) = 0;

  /* void hotUnplugCPU (in unsigned long cpu); */
  NS_IMETHOD HotUnplugCPU(PRUint32 cpu) = 0;

  /* void getCPUStatus (in unsigned long cpu, [retval] out boolean attached); */
  NS_IMETHOD GetCPUStatus(PRUint32 cpu, PRBool *attached) = 0;

  /* void queryLogFilename (in unsigned long idx, [retval] out wstring filename); */
  NS_IMETHOD QueryLogFilename(PRUint32 idx, PRUnichar **filename) = 0;

  /* void readLog (in unsigned long idx, in unsigned long long offset, in unsigned long long size, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
  NS_IMETHOD ReadLog(PRUint32 idx, PRUint64 offset, PRUint64 size, PRUint32 *dataSize, PRUint8 **data) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMACHINE \
  NS_IMETHOD GetParent(IVirtualBox * *aParent); \
  NS_IMETHOD GetAccessible(PRBool *aAccessible); \
  NS_IMETHOD GetAccessError(IVirtualBoxErrorInfo * *aAccessError); \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD SetName(const PRUnichar * aName); \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription); \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription); \
  NS_IMETHOD GetId(PRUnichar * *aId); \
  NS_IMETHOD GetOSTypeId(PRUnichar * *aOSTypeId); \
  NS_IMETHOD SetOSTypeId(const PRUnichar * aOSTypeId); \
  NS_IMETHOD GetHardwareVersion(PRUnichar * *aHardwareVersion); \
  NS_IMETHOD SetHardwareVersion(const PRUnichar * aHardwareVersion); \
  NS_IMETHOD GetHardwareUUID(PRUnichar * *aHardwareUUID); \
  NS_IMETHOD SetHardwareUUID(const PRUnichar * aHardwareUUID); \
  NS_IMETHOD GetCPUCount(PRUint32 *aCPUCount); \
  NS_IMETHOD SetCPUCount(PRUint32 aCPUCount); \
  NS_IMETHOD GetCPUHotPlugEnabled(PRBool *aCPUHotPlugEnabled); \
  NS_IMETHOD SetCPUHotPlugEnabled(PRBool aCPUHotPlugEnabled); \
  NS_IMETHOD GetMemorySize(PRUint32 *aMemorySize); \
  NS_IMETHOD SetMemorySize(PRUint32 aMemorySize); \
  NS_IMETHOD GetMemoryBalloonSize(PRUint32 *aMemoryBalloonSize); \
  NS_IMETHOD SetMemoryBalloonSize(PRUint32 aMemoryBalloonSize); \
  NS_IMETHOD GetPageFusionEnabled(PRBool *aPageFusionEnabled); \
  NS_IMETHOD SetPageFusionEnabled(PRBool aPageFusionEnabled); \
  NS_IMETHOD GetVRAMSize(PRUint32 *aVRAMSize); \
  NS_IMETHOD SetVRAMSize(PRUint32 aVRAMSize); \
  NS_IMETHOD GetAccelerate3DEnabled(PRBool *aAccelerate3DEnabled); \
  NS_IMETHOD SetAccelerate3DEnabled(PRBool aAccelerate3DEnabled); \
  NS_IMETHOD GetAccelerate2DVideoEnabled(PRBool *aAccelerate2DVideoEnabled); \
  NS_IMETHOD SetAccelerate2DVideoEnabled(PRBool aAccelerate2DVideoEnabled); \
  NS_IMETHOD GetMonitorCount(PRUint32 *aMonitorCount); \
  NS_IMETHOD SetMonitorCount(PRUint32 aMonitorCount); \
  NS_IMETHOD GetBIOSSettings(IBIOSSettings * *aBIOSSettings); \
  NS_IMETHOD GetFirmwareType(PRUint32 *aFirmwareType); \
  NS_IMETHOD SetFirmwareType(PRUint32 aFirmwareType); \
  NS_IMETHOD GetPointingHidType(PRUint32 *aPointingHidType); \
  NS_IMETHOD SetPointingHidType(PRUint32 aPointingHidType); \
  NS_IMETHOD GetKeyboardHidType(PRUint32 *aKeyboardHidType); \
  NS_IMETHOD SetKeyboardHidType(PRUint32 aKeyboardHidType); \
  NS_IMETHOD GetHpetEnabled(PRBool *aHpetEnabled); \
  NS_IMETHOD SetHpetEnabled(PRBool aHpetEnabled); \
  NS_IMETHOD GetSnapshotFolder(PRUnichar * *aSnapshotFolder); \
  NS_IMETHOD SetSnapshotFolder(const PRUnichar * aSnapshotFolder); \
  NS_IMETHOD GetVRDPServer(IVRDPServer * *aVRDPServer); \
  NS_IMETHOD GetMediumAttachments(PRUint32 *mediumAttachmentsSize, IMediumAttachment ***mediumAttachments); \
  NS_IMETHOD GetUSBController(IUSBController * *aUSBController); \
  NS_IMETHOD GetAudioAdapter(IAudioAdapter * *aAudioAdapter); \
  NS_IMETHOD GetStorageControllers(PRUint32 *storageControllersSize, IStorageController ***storageControllers); \
  NS_IMETHOD GetSettingsFilePath(PRUnichar * *aSettingsFilePath); \
  NS_IMETHOD GetSettingsModified(PRBool *aSettingsModified); \
  NS_IMETHOD GetSessionState(PRUint32 *aSessionState); \
  NS_IMETHOD GetSessionType(PRUnichar * *aSessionType); \
  NS_IMETHOD GetSessionPid(PRUint32 *aSessionPid); \
  NS_IMETHOD GetState(PRUint32 *aState); \
  NS_IMETHOD GetLastStateChange(PRInt64 *aLastStateChange); \
  NS_IMETHOD GetStateFilePath(PRUnichar * *aStateFilePath); \
  NS_IMETHOD GetLogFolder(PRUnichar * *aLogFolder); \
  NS_IMETHOD GetCurrentSnapshot(ISnapshot * *aCurrentSnapshot); \
  NS_IMETHOD GetSnapshotCount(PRUint32 *aSnapshotCount); \
  NS_IMETHOD GetCurrentStateModified(PRBool *aCurrentStateModified); \
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders); \
  NS_IMETHOD GetClipboardMode(PRUint32 *aClipboardMode); \
  NS_IMETHOD SetClipboardMode(PRUint32 aClipboardMode); \
  NS_IMETHOD GetGuestPropertyNotificationPatterns(PRUnichar * *aGuestPropertyNotificationPatterns); \
  NS_IMETHOD SetGuestPropertyNotificationPatterns(const PRUnichar * aGuestPropertyNotificationPatterns); \
  NS_IMETHOD GetTeleporterEnabled(PRBool *aTeleporterEnabled); \
  NS_IMETHOD SetTeleporterEnabled(PRBool aTeleporterEnabled); \
  NS_IMETHOD GetTeleporterPort(PRUint32 *aTeleporterPort); \
  NS_IMETHOD SetTeleporterPort(PRUint32 aTeleporterPort); \
  NS_IMETHOD GetTeleporterAddress(PRUnichar * *aTeleporterAddress); \
  NS_IMETHOD SetTeleporterAddress(const PRUnichar * aTeleporterAddress); \
  NS_IMETHOD GetTeleporterPassword(PRUnichar * *aTeleporterPassword); \
  NS_IMETHOD SetTeleporterPassword(const PRUnichar * aTeleporterPassword); \
  NS_IMETHOD GetRTCUseUTC(PRBool *aRTCUseUTC); \
  NS_IMETHOD SetRTCUseUTC(PRBool aRTCUseUTC); \
  NS_IMETHOD GetIoCacheEnabled(PRBool *aIoCacheEnabled); \
  NS_IMETHOD SetIoCacheEnabled(PRBool aIoCacheEnabled); \
  NS_IMETHOD GetIoCacheSize(PRUint32 *aIoCacheSize); \
  NS_IMETHOD SetIoCacheSize(PRUint32 aIoCacheSize); \
  NS_IMETHOD GetIoBandwidthMax(PRUint32 *aIoBandwidthMax); \
  NS_IMETHOD SetIoBandwidthMax(PRUint32 aIoBandwidthMax); \
  NS_IMETHOD SetBootOrder(PRUint32 position, PRUint32 device); \
  NS_IMETHOD GetBootOrder(PRUint32 position, PRUint32 *device); \
  NS_IMETHOD AttachDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRUint32 type, const PRUnichar *id); \
  NS_IMETHOD DetachDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device); \
  NS_IMETHOD PassthroughDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool passthrough); \
  NS_IMETHOD MountMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, const PRUnichar *medium, PRBool force); \
  NS_IMETHOD GetMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMedium **medium); \
  NS_IMETHOD GetMediumAttachmentsOfController(const PRUnichar *name, PRUint32 *mediumAttachmentsSize, IMediumAttachment ***mediumAttachments); \
  NS_IMETHOD GetMediumAttachment(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMediumAttachment **attachment); \
  NS_IMETHOD GetNetworkAdapter(PRUint32 slot, INetworkAdapter **adapter); \
  NS_IMETHOD AddStorageController(const PRUnichar *name, PRUint32 connectionType, IStorageController **controller); \
  NS_IMETHOD GetStorageControllerByName(const PRUnichar *name, IStorageController **storageController); \
  NS_IMETHOD GetStorageControllerByInstance(PRUint32 instance, IStorageController **storageController); \
  NS_IMETHOD RemoveStorageController(const PRUnichar *name); \
  NS_IMETHOD GetSerialPort(PRUint32 slot, ISerialPort **port); \
  NS_IMETHOD GetParallelPort(PRUint32 slot, IParallelPort **port); \
  NS_IMETHOD GetExtraDataKeys(PRUint32 *valueSize, PRUnichar ***value); \
  NS_IMETHOD GetExtraData(const PRUnichar *key, PRUnichar **value); \
  NS_IMETHOD SetExtraData(const PRUnichar *key, const PRUnichar *value); \
  NS_IMETHOD GetCPUProperty(PRUint32 property, PRBool *value); \
  NS_IMETHOD SetCPUProperty(PRUint32 property, PRBool value); \
  NS_IMETHOD GetCPUIDLeaf(PRUint32 id, PRUint32 *valEax, PRUint32 *valEbx, PRUint32 *valEcx, PRUint32 *valEdx); \
  NS_IMETHOD SetCPUIDLeaf(PRUint32 id, PRUint32 valEax, PRUint32 valEbx, PRUint32 valEcx, PRUint32 valEdx); \
  NS_IMETHOD RemoveCPUIDLeaf(PRUint32 id); \
  NS_IMETHOD RemoveAllCPUIDLeaves(void); \
  NS_IMETHOD GetHWVirtExProperty(PRUint32 property, PRBool *value); \
  NS_IMETHOD SetHWVirtExProperty(PRUint32 property, PRBool value); \
  NS_IMETHOD SaveSettings(void); \
  NS_IMETHOD DiscardSettings(void); \
  NS_IMETHOD DeleteSettings(void); \
  NS_IMETHOD Export(IAppliance *aAppliance, IVirtualSystemDescription **aDescription); \
  NS_IMETHOD GetSnapshot(const PRUnichar *id, ISnapshot **snapshot); \
  NS_IMETHOD FindSnapshot(const PRUnichar *name, ISnapshot **snapshot); \
  NS_IMETHOD SetCurrentSnapshot(const PRUnichar *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); \
  NS_IMETHOD GetGuestProperty(const PRUnichar *name, PRUnichar **value, PRUint64 *timestamp, PRUnichar **flags); \
  NS_IMETHOD GetGuestPropertyValue(const PRUnichar *property, PRUnichar **value); \
  NS_IMETHOD GetGuestPropertyTimestamp(const PRUnichar *property, PRUint64 *value); \
  NS_IMETHOD SetGuestProperty(const PRUnichar *property, const PRUnichar *value, const PRUnichar *flags); \
  NS_IMETHOD SetGuestPropertyValue(const PRUnichar *property, const PRUnichar *value); \
  NS_IMETHOD EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *nameSize, PRUnichar ***name, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRUint64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags); \
  NS_IMETHOD QuerySavedThumbnailSize(PRUint32 screenId, PRUint32 *size, PRUint32 *width, PRUint32 *height); \
  NS_IMETHOD ReadSavedThumbnailToArray(PRUint32 screenId, PRBool BGR, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data); \
  NS_IMETHOD QuerySavedScreenshotPNGSize(PRUint32 screenId, PRUint32 *size, PRUint32 *width, PRUint32 *height); \
  NS_IMETHOD ReadSavedScreenshotPNGToArray(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data); \
  NS_IMETHOD HotPlugCPU(PRUint32 cpu); \
  NS_IMETHOD HotUnplugCPU(PRUint32 cpu); \
  NS_IMETHOD GetCPUStatus(PRUint32 cpu, PRBool *attached); \
  NS_IMETHOD QueryLogFilename(PRUint32 idx, PRUnichar **filename); \
  NS_IMETHOD ReadLog(PRUint32 idx, PRUint64 offset, PRUint64 size, PRUint32 *dataSize, PRUint8 **data); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMACHINE(_to) \
  NS_IMETHOD GetParent(IVirtualBox * *aParent) { return _to GetParent(aParent); } \
  NS_IMETHOD GetAccessible(PRBool *aAccessible) { return _to GetAccessible(aAccessible); } \
  NS_IMETHOD GetAccessError(IVirtualBoxErrorInfo * *aAccessError) { return _to GetAccessError(aAccessError); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD SetName(const PRUnichar * aName) { return _to SetName(aName); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return _to GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription) { return _to SetDescription(aDescription); } \
  NS_IMETHOD GetId(PRUnichar * *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetOSTypeId(PRUnichar * *aOSTypeId) { return _to GetOSTypeId(aOSTypeId); } \
  NS_IMETHOD SetOSTypeId(const PRUnichar * aOSTypeId) { return _to SetOSTypeId(aOSTypeId); } \
  NS_IMETHOD GetHardwareVersion(PRUnichar * *aHardwareVersion) { return _to GetHardwareVersion(aHardwareVersion); } \
  NS_IMETHOD SetHardwareVersion(const PRUnichar * aHardwareVersion) { return _to SetHardwareVersion(aHardwareVersion); } \
  NS_IMETHOD GetHardwareUUID(PRUnichar * *aHardwareUUID) { return _to GetHardwareUUID(aHardwareUUID); } \
  NS_IMETHOD SetHardwareUUID(const PRUnichar * aHardwareUUID) { return _to SetHardwareUUID(aHardwareUUID); } \
  NS_IMETHOD GetCPUCount(PRUint32 *aCPUCount) { return _to GetCPUCount(aCPUCount); } \
  NS_IMETHOD SetCPUCount(PRUint32 aCPUCount) { return _to SetCPUCount(aCPUCount); } \
  NS_IMETHOD GetCPUHotPlugEnabled(PRBool *aCPUHotPlugEnabled) { return _to GetCPUHotPlugEnabled(aCPUHotPlugEnabled); } \
  NS_IMETHOD SetCPUHotPlugEnabled(PRBool aCPUHotPlugEnabled) { return _to SetCPUHotPlugEnabled(aCPUHotPlugEnabled); } \
  NS_IMETHOD GetMemorySize(PRUint32 *aMemorySize) { return _to GetMemorySize(aMemorySize); } \
  NS_IMETHOD SetMemorySize(PRUint32 aMemorySize) { return _to SetMemorySize(aMemorySize); } \
  NS_IMETHOD GetMemoryBalloonSize(PRUint32 *aMemoryBalloonSize) { return _to GetMemoryBalloonSize(aMemoryBalloonSize); } \
  NS_IMETHOD SetMemoryBalloonSize(PRUint32 aMemoryBalloonSize) { return _to SetMemoryBalloonSize(aMemoryBalloonSize); } \
  NS_IMETHOD GetPageFusionEnabled(PRBool *aPageFusionEnabled) { return _to GetPageFusionEnabled(aPageFusionEnabled); } \
  NS_IMETHOD SetPageFusionEnabled(PRBool aPageFusionEnabled) { return _to SetPageFusionEnabled(aPageFusionEnabled); } \
  NS_IMETHOD GetVRAMSize(PRUint32 *aVRAMSize) { return _to GetVRAMSize(aVRAMSize); } \
  NS_IMETHOD SetVRAMSize(PRUint32 aVRAMSize) { return _to SetVRAMSize(aVRAMSize); } \
  NS_IMETHOD GetAccelerate3DEnabled(PRBool *aAccelerate3DEnabled) { return _to GetAccelerate3DEnabled(aAccelerate3DEnabled); } \
  NS_IMETHOD SetAccelerate3DEnabled(PRBool aAccelerate3DEnabled) { return _to SetAccelerate3DEnabled(aAccelerate3DEnabled); } \
  NS_IMETHOD GetAccelerate2DVideoEnabled(PRBool *aAccelerate2DVideoEnabled) { return _to GetAccelerate2DVideoEnabled(aAccelerate2DVideoEnabled); } \
  NS_IMETHOD SetAccelerate2DVideoEnabled(PRBool aAccelerate2DVideoEnabled) { return _to SetAccelerate2DVideoEnabled(aAccelerate2DVideoEnabled); } \
  NS_IMETHOD GetMonitorCount(PRUint32 *aMonitorCount) { return _to GetMonitorCount(aMonitorCount); } \
  NS_IMETHOD SetMonitorCount(PRUint32 aMonitorCount) { return _to SetMonitorCount(aMonitorCount); } \
  NS_IMETHOD GetBIOSSettings(IBIOSSettings * *aBIOSSettings) { return _to GetBIOSSettings(aBIOSSettings); } \
  NS_IMETHOD GetFirmwareType(PRUint32 *aFirmwareType) { return _to GetFirmwareType(aFirmwareType); } \
  NS_IMETHOD SetFirmwareType(PRUint32 aFirmwareType) { return _to SetFirmwareType(aFirmwareType); } \
  NS_IMETHOD GetPointingHidType(PRUint32 *aPointingHidType) { return _to GetPointingHidType(aPointingHidType); } \
  NS_IMETHOD SetPointingHidType(PRUint32 aPointingHidType) { return _to SetPointingHidType(aPointingHidType); } \
  NS_IMETHOD GetKeyboardHidType(PRUint32 *aKeyboardHidType) { return _to GetKeyboardHidType(aKeyboardHidType); } \
  NS_IMETHOD SetKeyboardHidType(PRUint32 aKeyboardHidType) { return _to SetKeyboardHidType(aKeyboardHidType); } \
  NS_IMETHOD GetHpetEnabled(PRBool *aHpetEnabled) { return _to GetHpetEnabled(aHpetEnabled); } \
  NS_IMETHOD SetHpetEnabled(PRBool aHpetEnabled) { return _to SetHpetEnabled(aHpetEnabled); } \
  NS_IMETHOD 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 GetMediumAttachments(PRUint32 *mediumAttachmentsSize, IMediumAttachment ***mediumAttachments) { return _to GetMediumAttachments(mediumAttachmentsSize, mediumAttachments); } \
  NS_IMETHOD GetUSBController(IUSBController * *aUSBController) { return _to GetUSBController(aUSBController); } \
  NS_IMETHOD GetAudioAdapter(IAudioAdapter * *aAudioAdapter) { return _to GetAudioAdapter(aAudioAdapter); } \
  NS_IMETHOD GetStorageControllers(PRUint32 *storageControllersSize, IStorageController ***storageControllers) { return _to GetStorageControllers(storageControllersSize, storageControllers); } \
  NS_IMETHOD GetSettingsFilePath(PRUnichar * *aSettingsFilePath) { return _to GetSettingsFilePath(aSettingsFilePath); } \
  NS_IMETHOD GetSettingsModified(PRBool *aSettingsModified) { return _to GetSettingsModified(aSettingsModified); } \
  NS_IMETHOD GetSessionState(PRUint32 *aSessionState) { return _to GetSessionState(aSessionState); } \
  NS_IMETHOD GetSessionType(PRUnichar * *aSessionType) { return _to GetSessionType(aSessionType); } \
  NS_IMETHOD GetSessionPid(PRUint32 *aSessionPid) { return _to GetSessionPid(aSessionPid); } \
  NS_IMETHOD GetState(PRUint32 *aState) { return _to GetState(aState); } \
  NS_IMETHOD GetLastStateChange(PRInt64 *aLastStateChange) { return _to GetLastStateChange(aLastStateChange); } \
  NS_IMETHOD GetStateFilePath(PRUnichar * *aStateFilePath) { return _to GetStateFilePath(aStateFilePath); } \
  NS_IMETHOD GetLogFolder(PRUnichar * *aLogFolder) { return _to GetLogFolder(aLogFolder); } \
  NS_IMETHOD GetCurrentSnapshot(ISnapshot * *aCurrentSnapshot) { return _to GetCurrentSnapshot(aCurrentSnapshot); } \
  NS_IMETHOD GetSnapshotCount(PRUint32 *aSnapshotCount) { return _to GetSnapshotCount(aSnapshotCount); } \
  NS_IMETHOD GetCurrentStateModified(PRBool *aCurrentStateModified) { return _to GetCurrentStateModified(aCurrentStateModified); } \
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders) { return _to GetSharedFolders(sharedFoldersSize, sharedFolders); } \
  NS_IMETHOD GetClipboardMode(PRUint32 *aClipboardMode) { return _to GetClipboardMode(aClipboardMode); } \
  NS_IMETHOD SetClipboardMode(PRUint32 aClipboardMode) { return _to SetClipboardMode(aClipboardMode); } \
  NS_IMETHOD GetGuestPropertyNotificationPatterns(PRUnichar * *aGuestPropertyNotificationPatterns) { return _to GetGuestPropertyNotificationPatterns(aGuestPropertyNotificationPatterns); } \
  NS_IMETHOD SetGuestPropertyNotificationPatterns(const PRUnichar * aGuestPropertyNotificationPatterns) { return _to SetGuestPropertyNotificationPatterns(aGuestPropertyNotificationPatterns); } \
  NS_IMETHOD GetTeleporterEnabled(PRBool *aTeleporterEnabled) { return _to GetTeleporterEnabled(aTeleporterEnabled); } \
  NS_IMETHOD SetTeleporterEnabled(PRBool aTeleporterEnabled) { return _to SetTeleporterEnabled(aTeleporterEnabled); } \
  NS_IMETHOD GetTeleporterPort(PRUint32 *aTeleporterPort) { return _to GetTeleporterPort(aTeleporterPort); } \
  NS_IMETHOD SetTeleporterPort(PRUint32 aTeleporterPort) { return _to SetTeleporterPort(aTeleporterPort); } \
  NS_IMETHOD GetTeleporterAddress(PRUnichar * *aTeleporterAddress) { return _to GetTeleporterAddress(aTeleporterAddress); } \
  NS_IMETHOD SetTeleporterAddress(const PRUnichar * aTeleporterAddress) { return _to SetTeleporterAddress(aTeleporterAddress); } \
  NS_IMETHOD GetTeleporterPassword(PRUnichar * *aTeleporterPassword) { return _to GetTeleporterPassword(aTeleporterPassword); } \
  NS_IMETHOD SetTeleporterPassword(const PRUnichar * aTeleporterPassword) { return _to SetTeleporterPassword(aTeleporterPassword); } \
  NS_IMETHOD GetRTCUseUTC(PRBool *aRTCUseUTC) { return _to GetRTCUseUTC(aRTCUseUTC); } \
  NS_IMETHOD SetRTCUseUTC(PRBool aRTCUseUTC) { return _to SetRTCUseUTC(aRTCUseUTC); } \
  NS_IMETHOD GetIoCacheEnabled(PRBool *aIoCacheEnabled) { return _to GetIoCacheEnabled(aIoCacheEnabled); } \
  NS_IMETHOD SetIoCacheEnabled(PRBool aIoCacheEnabled) { return _to SetIoCacheEnabled(aIoCacheEnabled); } \
  NS_IMETHOD GetIoCacheSize(PRUint32 *aIoCacheSize) { return _to GetIoCacheSize(aIoCacheSize); } \
  NS_IMETHOD SetIoCacheSize(PRUint32 aIoCacheSize) { return _to SetIoCacheSize(aIoCacheSize); } \
  NS_IMETHOD GetIoBandwidthMax(PRUint32 *aIoBandwidthMax) { return _to GetIoBandwidthMax(aIoBandwidthMax); } \
  NS_IMETHOD SetIoBandwidthMax(PRUint32 aIoBandwidthMax) { return _to SetIoBandwidthMax(aIoBandwidthMax); } \
  NS_IMETHOD SetBootOrder(PRUint32 position, PRUint32 device) { return _to SetBootOrder(position, device); } \
  NS_IMETHOD GetBootOrder(PRUint32 position, PRUint32 *device) { return _to GetBootOrder(position, device); } \
  NS_IMETHOD AttachDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRUint32 type, const PRUnichar *id) { return _to AttachDevice(name, controllerPort, device, type, id); } \
  NS_IMETHOD DetachDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device) { return _to DetachDevice(name, controllerPort, device); } \
  NS_IMETHOD PassthroughDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool passthrough) { return _to PassthroughDevice(name, controllerPort, device, passthrough); } \
  NS_IMETHOD MountMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, const PRUnichar *medium, PRBool force) { return _to MountMedium(name, controllerPort, device, medium, force); } \
  NS_IMETHOD GetMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMedium **medium) { return _to GetMedium(name, controllerPort, device, medium); } \
  NS_IMETHOD GetMediumAttachmentsOfController(const PRUnichar *name, PRUint32 *mediumAttachmentsSize, IMediumAttachment ***mediumAttachments) { return _to GetMediumAttachmentsOfController(name, mediumAttachmentsSize, mediumAttachments); } \
  NS_IMETHOD GetMediumAttachment(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMediumAttachment **attachment) { return _to GetMediumAttachment(name, controllerPort, device, attachment); } \
  NS_IMETHOD GetNetworkAdapter(PRUint32 slot, INetworkAdapter **adapter) { return _to GetNetworkAdapter(slot, adapter); } \
  NS_IMETHOD AddStorageController(const PRUnichar *name, PRUint32 connectionType, IStorageController **controller) { return _to AddStorageController(name, connectionType, controller); } \
  NS_IMETHOD GetStorageControllerByName(const PRUnichar *name, IStorageController **storageController) { return _to GetStorageControllerByName(name, storageController); } \
  NS_IMETHOD GetStorageControllerByInstance(PRUint32 instance, IStorageController **storageController) { return _to GetStorageControllerByInstance(instance, storageController); } \
  NS_IMETHOD RemoveStorageController(const PRUnichar *name) { return _to RemoveStorageController(name); } \
  NS_IMETHOD GetSerialPort(PRUint32 slot, ISerialPort **port) { return _to GetSerialPort(slot, port); } \
  NS_IMETHOD GetParallelPort(PRUint32 slot, IParallelPort **port) { return _to GetParallelPort(slot, port); } \
  NS_IMETHOD GetExtraDataKeys(PRUint32 *valueSize, PRUnichar ***value) { return _to GetExtraDataKeys(valueSize, value); } \
  NS_IMETHOD GetExtraData(const PRUnichar *key, PRUnichar **value) { return _to GetExtraData(key, value); } \
  NS_IMETHOD SetExtraData(const PRUnichar *key, const PRUnichar *value) { return _to SetExtraData(key, value); } \
  NS_IMETHOD GetCPUProperty(PRUint32 property, PRBool *value) { return _to GetCPUProperty(property, value); } \
  NS_IMETHOD SetCPUProperty(PRUint32 property, PRBool value) { return _to SetCPUProperty(property, value); } \
  NS_IMETHOD GetCPUIDLeaf(PRUint32 id, PRUint32 *valEax, PRUint32 *valEbx, PRUint32 *valEcx, PRUint32 *valEdx) { return _to GetCPUIDLeaf(id, valEax, valEbx, valEcx, valEdx); } \
  NS_IMETHOD SetCPUIDLeaf(PRUint32 id, PRUint32 valEax, PRUint32 valEbx, PRUint32 valEcx, PRUint32 valEdx) { return _to SetCPUIDLeaf(id, valEax, valEbx, valEcx, valEdx); } \
  NS_IMETHOD RemoveCPUIDLeaf(PRUint32 id) { return _to RemoveCPUIDLeaf(id); } \
  NS_IMETHOD RemoveAllCPUIDLeaves(void) { return _to RemoveAllCPUIDLeaves(); } \
  NS_IMETHOD GetHWVirtExProperty(PRUint32 property, PRBool *value) { return _to GetHWVirtExProperty(property, value); } \
  NS_IMETHOD SetHWVirtExProperty(PRUint32 property, PRBool value) { return _to SetHWVirtExProperty(property, value); } \
  NS_IMETHOD SaveSettings(void) { return _to SaveSettings(); } \
  NS_IMETHOD DiscardSettings(void) { return _to DiscardSettings(); } \
  NS_IMETHOD DeleteSettings(void) { return _to DeleteSettings(); } \
  NS_IMETHOD Export(IAppliance *aAppliance, IVirtualSystemDescription **aDescription) { return _to Export(aAppliance, aDescription); } \
  NS_IMETHOD GetSnapshot(const PRUnichar *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 PRUnichar *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); } \
  NS_IMETHOD GetGuestProperty(const PRUnichar *name, PRUnichar **value, PRUint64 *timestamp, PRUnichar **flags) { return _to GetGuestProperty(name, value, timestamp, flags); } \
  NS_IMETHOD GetGuestPropertyValue(const PRUnichar *property, PRUnichar **value) { return _to GetGuestPropertyValue(property, value); } \
  NS_IMETHOD GetGuestPropertyTimestamp(const PRUnichar *property, PRUint64 *value) { return _to GetGuestPropertyTimestamp(property, value); } \
  NS_IMETHOD SetGuestProperty(const PRUnichar *property, const PRUnichar *value, const PRUnichar *flags) { return _to SetGuestProperty(property, value, flags); } \
  NS_IMETHOD SetGuestPropertyValue(const PRUnichar *property, const PRUnichar *value) { return _to SetGuestPropertyValue(property, value); } \
  NS_IMETHOD EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *nameSize, PRUnichar ***name, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRUint64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags) { return _to EnumerateGuestProperties(patterns, nameSize, name, valueSize, value, timestampSize, timestamp, flagsSize, flags); } \
  NS_IMETHOD QuerySavedThumbnailSize(PRUint32 screenId, PRUint32 *size, PRUint32 *width, PRUint32 *height) { return _to QuerySavedThumbnailSize(screenId, size, width, height); } \
  NS_IMETHOD ReadSavedThumbnailToArray(PRUint32 screenId, PRBool BGR, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data) { return _to ReadSavedThumbnailToArray(screenId, BGR, width, height, dataSize, data); } \
  NS_IMETHOD QuerySavedScreenshotPNGSize(PRUint32 screenId, PRUint32 *size, PRUint32 *width, PRUint32 *height) { return _to QuerySavedScreenshotPNGSize(screenId, size, width, height); } \
  NS_IMETHOD ReadSavedScreenshotPNGToArray(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data) { return _to ReadSavedScreenshotPNGToArray(screenId, width, height, dataSize, data); } \
  NS_IMETHOD HotPlugCPU(PRUint32 cpu) { return _to HotPlugCPU(cpu); } \
  NS_IMETHOD HotUnplugCPU(PRUint32 cpu) { return _to HotUnplugCPU(cpu); } \
  NS_IMETHOD GetCPUStatus(PRUint32 cpu, PRBool *attached) { return _to GetCPUStatus(cpu, attached); } \
  NS_IMETHOD QueryLogFilename(PRUint32 idx, PRUnichar **filename) { return _to QueryLogFilename(idx, filename); } \
  NS_IMETHOD ReadLog(PRUint32 idx, PRUint64 offset, PRUint64 size, PRUint32 *dataSize, PRUint8 **data) { return _to ReadLog(idx, offset, size, dataSize, data); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMACHINE(_to) \
  NS_IMETHOD GetParent(IVirtualBox * *aParent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParent(aParent); } \
  NS_IMETHOD GetAccessible(PRBool *aAccessible) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAccessible(aAccessible); } \
  NS_IMETHOD GetAccessError(IVirtualBoxErrorInfo * *aAccessError) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAccessError(aAccessError); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(const PRUnichar * aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetName(aName); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDescription(aDescription); } \
  NS_IMETHOD GetId(PRUnichar * *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetOSTypeId(PRUnichar * *aOSTypeId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOSTypeId(aOSTypeId); } \
  NS_IMETHOD SetOSTypeId(const PRUnichar * aOSTypeId) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetOSTypeId(aOSTypeId); } \
  NS_IMETHOD GetHardwareVersion(PRUnichar * *aHardwareVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHardwareVersion(aHardwareVersion); } \
  NS_IMETHOD SetHardwareVersion(const PRUnichar * aHardwareVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHardwareVersion(aHardwareVersion); } \
  NS_IMETHOD GetHardwareUUID(PRUnichar * *aHardwareUUID) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHardwareUUID(aHardwareUUID); } \
  NS_IMETHOD SetHardwareUUID(const PRUnichar * aHardwareUUID) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHardwareUUID(aHardwareUUID); } \
  NS_IMETHOD GetCPUCount(PRUint32 *aCPUCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCPUCount(aCPUCount); } \
  NS_IMETHOD SetCPUCount(PRUint32 aCPUCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCPUCount(aCPUCount); } \
  NS_IMETHOD GetCPUHotPlugEnabled(PRBool *aCPUHotPlugEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCPUHotPlugEnabled(aCPUHotPlugEnabled); } \
  NS_IMETHOD SetCPUHotPlugEnabled(PRBool aCPUHotPlugEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCPUHotPlugEnabled(aCPUHotPlugEnabled); } \
  NS_IMETHOD GetMemorySize(PRUint32 *aMemorySize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMemorySize(aMemorySize); } \
  NS_IMETHOD SetMemorySize(PRUint32 aMemorySize) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMemorySize(aMemorySize); } \
  NS_IMETHOD GetMemoryBalloonSize(PRUint32 *aMemoryBalloonSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMemoryBalloonSize(aMemoryBalloonSize); } \
  NS_IMETHOD SetMemoryBalloonSize(PRUint32 aMemoryBalloonSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMemoryBalloonSize(aMemoryBalloonSize); } \
  NS_IMETHOD GetPageFusionEnabled(PRBool *aPageFusionEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPageFusionEnabled(aPageFusionEnabled); } \
  NS_IMETHOD SetPageFusionEnabled(PRBool aPageFusionEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPageFusionEnabled(aPageFusionEnabled); } \
  NS_IMETHOD GetVRAMSize(PRUint32 *aVRAMSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVRAMSize(aVRAMSize); } \
  NS_IMETHOD SetVRAMSize(PRUint32 aVRAMSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVRAMSize(aVRAMSize); } \
  NS_IMETHOD GetAccelerate3DEnabled(PRBool *aAccelerate3DEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAccelerate3DEnabled(aAccelerate3DEnabled); } \
  NS_IMETHOD SetAccelerate3DEnabled(PRBool aAccelerate3DEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAccelerate3DEnabled(aAccelerate3DEnabled); } \
  NS_IMETHOD GetAccelerate2DVideoEnabled(PRBool *aAccelerate2DVideoEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAccelerate2DVideoEnabled(aAccelerate2DVideoEnabled); } \
  NS_IMETHOD SetAccelerate2DVideoEnabled(PRBool aAccelerate2DVideoEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAccelerate2DVideoEnabled(aAccelerate2DVideoEnabled); } \
  NS_IMETHOD GetMonitorCount(PRUint32 *aMonitorCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMonitorCount(aMonitorCount); } \
  NS_IMETHOD SetMonitorCount(PRUint32 aMonitorCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMonitorCount(aMonitorCount); } \
  NS_IMETHOD GetBIOSSettings(IBIOSSettings * *aBIOSSettings) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBIOSSettings(aBIOSSettings); } \
  NS_IMETHOD GetFirmwareType(PRUint32 *aFirmwareType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFirmwareType(aFirmwareType); } \
  NS_IMETHOD SetFirmwareType(PRUint32 aFirmwareType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFirmwareType(aFirmwareType); } \
  NS_IMETHOD GetPointingHidType(PRUint32 *aPointingHidType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPointingHidType(aPointingHidType); } \
  NS_IMETHOD SetPointingHidType(PRUint32 aPointingHidType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPointingHidType(aPointingHidType); } \
  NS_IMETHOD GetKeyboardHidType(PRUint32 *aKeyboardHidType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetKeyboardHidType(aKeyboardHidType); } \
  NS_IMETHOD SetKeyboardHidType(PRUint32 aKeyboardHidType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetKeyboardHidType(aKeyboardHidType); } \
  NS_IMETHOD GetHpetEnabled(PRBool *aHpetEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHpetEnabled(aHpetEnabled); } \
  NS_IMETHOD SetHpetEnabled(PRBool aHpetEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHpetEnabled(aHpetEnabled); } \
  NS_IMETHOD 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 GetMediumAttachments(PRUint32 *mediumAttachmentsSize, IMediumAttachment ***mediumAttachments) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMediumAttachments(mediumAttachmentsSize, mediumAttachments); } \
  NS_IMETHOD GetUSBController(IUSBController * *aUSBController) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUSBController(aUSBController); } \
  NS_IMETHOD GetAudioAdapter(IAudioAdapter * *aAudioAdapter) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAudioAdapter(aAudioAdapter); } \
  NS_IMETHOD GetStorageControllers(PRUint32 *storageControllersSize, IStorageController ***storageControllers) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStorageControllers(storageControllersSize, storageControllers); } \
  NS_IMETHOD GetSettingsFilePath(PRUnichar * *aSettingsFilePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSettingsFilePath(aSettingsFilePath); } \
  NS_IMETHOD GetSettingsModified(PRBool *aSettingsModified) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSettingsModified(aSettingsModified); } \
  NS_IMETHOD GetSessionState(PRUint32 *aSessionState) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSessionState(aSessionState); } \
  NS_IMETHOD GetSessionType(PRUnichar * *aSessionType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSessionType(aSessionType); } \
  NS_IMETHOD GetSessionPid(PRUint32 *aSessionPid) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSessionPid(aSessionPid); } \
  NS_IMETHOD GetState(PRUint32 *aState) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetState(aState); } \
  NS_IMETHOD GetLastStateChange(PRInt64 *aLastStateChange) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastStateChange(aLastStateChange); } \
  NS_IMETHOD GetStateFilePath(PRUnichar * *aStateFilePath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStateFilePath(aStateFilePath); } \
  NS_IMETHOD GetLogFolder(PRUnichar * *aLogFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogFolder(aLogFolder); } \
  NS_IMETHOD GetCurrentSnapshot(ISnapshot * *aCurrentSnapshot) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCurrentSnapshot(aCurrentSnapshot); } \
  NS_IMETHOD GetSnapshotCount(PRUint32 *aSnapshotCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSnapshotCount(aSnapshotCount); } \
  NS_IMETHOD GetCurrentStateModified(PRBool *aCurrentStateModified) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCurrentStateModified(aCurrentStateModified); } \
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSharedFolders(sharedFoldersSize, sharedFolders); } \
  NS_IMETHOD GetClipboardMode(PRUint32 *aClipboardMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetClipboardMode(aClipboardMode); } \
  NS_IMETHOD SetClipboardMode(PRUint32 aClipboardMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetClipboardMode(aClipboardMode); } \
  NS_IMETHOD GetGuestPropertyNotificationPatterns(PRUnichar * *aGuestPropertyNotificationPatterns) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGuestPropertyNotificationPatterns(aGuestPropertyNotificationPatterns); } \
  NS_IMETHOD SetGuestPropertyNotificationPatterns(const PRUnichar * aGuestPropertyNotificationPatterns) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetGuestPropertyNotificationPatterns(aGuestPropertyNotificationPatterns); } \
  NS_IMETHOD GetTeleporterEnabled(PRBool *aTeleporterEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTeleporterEnabled(aTeleporterEnabled); } \
  NS_IMETHOD SetTeleporterEnabled(PRBool aTeleporterEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTeleporterEnabled(aTeleporterEnabled); } \
  NS_IMETHOD GetTeleporterPort(PRUint32 *aTeleporterPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTeleporterPort(aTeleporterPort); } \
  NS_IMETHOD SetTeleporterPort(PRUint32 aTeleporterPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTeleporterPort(aTeleporterPort); } \
  NS_IMETHOD GetTeleporterAddress(PRUnichar * *aTeleporterAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTeleporterAddress(aTeleporterAddress); } \
  NS_IMETHOD SetTeleporterAddress(const PRUnichar * aTeleporterAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTeleporterAddress(aTeleporterAddress); } \
  NS_IMETHOD GetTeleporterPassword(PRUnichar * *aTeleporterPassword) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTeleporterPassword(aTeleporterPassword); } \
  NS_IMETHOD SetTeleporterPassword(const PRUnichar * aTeleporterPassword) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTeleporterPassword(aTeleporterPassword); } \
  NS_IMETHOD GetRTCUseUTC(PRBool *aRTCUseUTC) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRTCUseUTC(aRTCUseUTC); } \
  NS_IMETHOD SetRTCUseUTC(PRBool aRTCUseUTC) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRTCUseUTC(aRTCUseUTC); } \
  NS_IMETHOD GetIoCacheEnabled(PRBool *aIoCacheEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIoCacheEnabled(aIoCacheEnabled); } \
  NS_IMETHOD SetIoCacheEnabled(PRBool aIoCacheEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIoCacheEnabled(aIoCacheEnabled); } \
  NS_IMETHOD GetIoCacheSize(PRUint32 *aIoCacheSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIoCacheSize(aIoCacheSize); } \
  NS_IMETHOD SetIoCacheSize(PRUint32 aIoCacheSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIoCacheSize(aIoCacheSize); } \
  NS_IMETHOD GetIoBandwidthMax(PRUint32 *aIoBandwidthMax) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIoBandwidthMax(aIoBandwidthMax); } \
  NS_IMETHOD SetIoBandwidthMax(PRUint32 aIoBandwidthMax) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIoBandwidthMax(aIoBandwidthMax); } \
  NS_IMETHOD SetBootOrder(PRUint32 position, PRUint32 device) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBootOrder(position, device); } \
  NS_IMETHOD GetBootOrder(PRUint32 position, PRUint32 *device) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBootOrder(position, device); } \
  NS_IMETHOD AttachDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRUint32 type, const PRUnichar *id) { return !_to ? NS_ERROR_NULL_POINTER : _to->AttachDevice(name, controllerPort, device, type, id); } \
  NS_IMETHOD DetachDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device) { return !_to ? NS_ERROR_NULL_POINTER : _to->DetachDevice(name, controllerPort, device); } \
  NS_IMETHOD PassthroughDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool passthrough) { return !_to ? NS_ERROR_NULL_POINTER : _to->PassthroughDevice(name, controllerPort, device, passthrough); } \
  NS_IMETHOD MountMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, const PRUnichar *medium, PRBool force) { return !_to ? NS_ERROR_NULL_POINTER : _to->MountMedium(name, controllerPort, device, medium, force); } \
  NS_IMETHOD GetMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMedium **medium) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMedium(name, controllerPort, device, medium); } \
  NS_IMETHOD GetMediumAttachmentsOfController(const PRUnichar *name, PRUint32 *mediumAttachmentsSize, IMediumAttachment ***mediumAttachments) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMediumAttachmentsOfController(name, mediumAttachmentsSize, mediumAttachments); } \
  NS_IMETHOD GetMediumAttachment(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMediumAttachment **attachment) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMediumAttachment(name, controllerPort, device, attachment); } \
  NS_IMETHOD GetNetworkAdapter(PRUint32 slot, INetworkAdapter **adapter) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworkAdapter(slot, adapter); } \
  NS_IMETHOD AddStorageController(const PRUnichar *name, PRUint32 connectionType, IStorageController **controller) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddStorageController(name, connectionType, controller); } \
  NS_IMETHOD GetStorageControllerByName(const PRUnichar *name, IStorageController **storageController) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStorageControllerByName(name, storageController); } \
  NS_IMETHOD GetStorageControllerByInstance(PRUint32 instance, IStorageController **storageController) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStorageControllerByInstance(instance, storageController); } \
  NS_IMETHOD RemoveStorageController(const PRUnichar *name) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveStorageController(name); } \
  NS_IMETHOD GetSerialPort(PRUint32 slot, ISerialPort **port) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSerialPort(slot, port); } \
  NS_IMETHOD GetParallelPort(PRUint32 slot, IParallelPort **port) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParallelPort(slot, port); } \
  NS_IMETHOD GetExtraDataKeys(PRUint32 *valueSize, PRUnichar ***value) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExtraDataKeys(valueSize, value); } \
  NS_IMETHOD GetExtraData(const PRUnichar *key, PRUnichar **value) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExtraData(key, value); } \
  NS_IMETHOD SetExtraData(const PRUnichar *key, const PRUnichar *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetExtraData(key, value); } \
  NS_IMETHOD GetCPUProperty(PRUint32 property, PRBool *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCPUProperty(property, value); } \
  NS_IMETHOD SetCPUProperty(PRUint32 property, PRBool value) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCPUProperty(property, value); } \
  NS_IMETHOD GetCPUIDLeaf(PRUint32 id, PRUint32 *valEax, PRUint32 *valEbx, PRUint32 *valEcx, PRUint32 *valEdx) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCPUIDLeaf(id, valEax, valEbx, valEcx, valEdx); } \
  NS_IMETHOD SetCPUIDLeaf(PRUint32 id, PRUint32 valEax, PRUint32 valEbx, PRUint32 valEcx, PRUint32 valEdx) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCPUIDLeaf(id, valEax, valEbx, valEcx, valEdx); } \
  NS_IMETHOD RemoveCPUIDLeaf(PRUint32 id) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveCPUIDLeaf(id); } \
  NS_IMETHOD RemoveAllCPUIDLeaves(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveAllCPUIDLeaves(); } \
  NS_IMETHOD GetHWVirtExProperty(PRUint32 property, PRBool *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHWVirtExProperty(property, value); } \
  NS_IMETHOD SetHWVirtExProperty(PRUint32 property, PRBool value) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHWVirtExProperty(property, value); } \
  NS_IMETHOD SaveSettings(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->SaveSettings(); } \
  NS_IMETHOD DiscardSettings(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->DiscardSettings(); } \
  NS_IMETHOD DeleteSettings(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteSettings(); } \
  NS_IMETHOD Export(IAppliance *aAppliance, IVirtualSystemDescription **aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->Export(aAppliance, aDescription); } \
  NS_IMETHOD GetSnapshot(const PRUnichar *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 PRUnichar *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); } \
  NS_IMETHOD GetGuestProperty(const PRUnichar *name, PRUnichar **value, PRUint64 *timestamp, PRUnichar **flags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGuestProperty(name, value, timestamp, flags); } \
  NS_IMETHOD GetGuestPropertyValue(const PRUnichar *property, PRUnichar **value) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGuestPropertyValue(property, value); } \
  NS_IMETHOD GetGuestPropertyTimestamp(const PRUnichar *property, PRUint64 *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGuestPropertyTimestamp(property, value); } \
  NS_IMETHOD SetGuestProperty(const PRUnichar *property, const PRUnichar *value, const PRUnichar *flags) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetGuestProperty(property, value, flags); } \
  NS_IMETHOD SetGuestPropertyValue(const PRUnichar *property, const PRUnichar *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetGuestPropertyValue(property, value); } \
  NS_IMETHOD EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *nameSize, PRUnichar ***name, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRUint64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnumerateGuestProperties(patterns, nameSize, name, valueSize, value, timestampSize, timestamp, flagsSize, flags); } \
  NS_IMETHOD QuerySavedThumbnailSize(PRUint32 screenId, PRUint32 *size, PRUint32 *width, PRUint32 *height) { return !_to ? NS_ERROR_NULL_POINTER : _to->QuerySavedThumbnailSize(screenId, size, width, height); } \
  NS_IMETHOD ReadSavedThumbnailToArray(PRUint32 screenId, PRBool BGR, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data) { return !_to ? NS_ERROR_NULL_POINTER : _to->ReadSavedThumbnailToArray(screenId, BGR, width, height, dataSize, data); } \
  NS_IMETHOD QuerySavedScreenshotPNGSize(PRUint32 screenId, PRUint32 *size, PRUint32 *width, PRUint32 *height) { return !_to ? NS_ERROR_NULL_POINTER : _to->QuerySavedScreenshotPNGSize(screenId, size, width, height); } \
  NS_IMETHOD ReadSavedScreenshotPNGToArray(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data) { return !_to ? NS_ERROR_NULL_POINTER : _to->ReadSavedScreenshotPNGToArray(screenId, width, height, dataSize, data); } \
  NS_IMETHOD HotPlugCPU(PRUint32 cpu) { return !_to ? NS_ERROR_NULL_POINTER : _to->HotPlugCPU(cpu); } \
  NS_IMETHOD HotUnplugCPU(PRUint32 cpu) { return !_to ? NS_ERROR_NULL_POINTER : _to->HotUnplugCPU(cpu); } \
  NS_IMETHOD GetCPUStatus(PRUint32 cpu, PRBool *attached) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCPUStatus(cpu, attached); } \
  NS_IMETHOD QueryLogFilename(PRUint32 idx, PRUnichar **filename) { return !_to ? NS_ERROR_NULL_POINTER : _to->QueryLogFilename(idx, filename); } \
  NS_IMETHOD ReadLog(PRUint32 idx, PRUint64 offset, PRUint64 size, PRUint32 *dataSize, PRUint8 **data) { return !_to ? NS_ERROR_NULL_POINTER : _to->ReadLog(idx, offset, size, dataSize, data); } 

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

/* Header file */
class _MYCLASS_ : public IMachine
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMACHINE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute IVirtualBox parent; */
NS_IMETHODIMP _MYCLASS_::GetParent(IVirtualBox * *aParent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean accessible; */
NS_IMETHODIMP _MYCLASS_::GetAccessible(PRBool *aAccessible)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IVirtualBoxErrorInfo accessError; */
NS_IMETHODIMP _MYCLASS_::GetAccessError(IVirtualBoxErrorInfo * *aAccessError)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetName(const PRUnichar * aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring description; */
NS_IMETHODIMP _MYCLASS_::GetDescription(PRUnichar * *aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDescription(const PRUnichar * aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring id; */
NS_IMETHODIMP _MYCLASS_::GetId(PRUnichar * *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring OSTypeId; */
NS_IMETHODIMP _MYCLASS_::GetOSTypeId(PRUnichar * *aOSTypeId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetOSTypeId(const PRUnichar * aOSTypeId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring HardwareVersion; */
NS_IMETHODIMP _MYCLASS_::GetHardwareVersion(PRUnichar * *aHardwareVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetHardwareVersion(const PRUnichar * aHardwareVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring hardwareUUID; */
NS_IMETHODIMP _MYCLASS_::GetHardwareUUID(PRUnichar * *aHardwareUUID)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetHardwareUUID(const PRUnichar * aHardwareUUID)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long CPUCount; */
NS_IMETHODIMP _MYCLASS_::GetCPUCount(PRUint32 *aCPUCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetCPUCount(PRUint32 aCPUCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean CPUHotPlugEnabled; */
NS_IMETHODIMP _MYCLASS_::GetCPUHotPlugEnabled(PRBool *aCPUHotPlugEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetCPUHotPlugEnabled(PRBool aCPUHotPlugEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long memorySize; */
NS_IMETHODIMP _MYCLASS_::GetMemorySize(PRUint32 *aMemorySize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetMemorySize(PRUint32 aMemorySize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long memoryBalloonSize; */
NS_IMETHODIMP _MYCLASS_::GetMemoryBalloonSize(PRUint32 *aMemoryBalloonSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetMemoryBalloonSize(PRUint32 aMemoryBalloonSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean PageFusionEnabled; */
NS_IMETHODIMP _MYCLASS_::GetPageFusionEnabled(PRBool *aPageFusionEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPageFusionEnabled(PRBool aPageFusionEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long VRAMSize; */
NS_IMETHODIMP _MYCLASS_::GetVRAMSize(PRUint32 *aVRAMSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetVRAMSize(PRUint32 aVRAMSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean accelerate3DEnabled; */
NS_IMETHODIMP _MYCLASS_::GetAccelerate3DEnabled(PRBool *aAccelerate3DEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAccelerate3DEnabled(PRBool aAccelerate3DEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean accelerate2DVideoEnabled; */
NS_IMETHODIMP _MYCLASS_::GetAccelerate2DVideoEnabled(PRBool *aAccelerate2DVideoEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAccelerate2DVideoEnabled(PRBool aAccelerate2DVideoEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long monitorCount; */
NS_IMETHODIMP _MYCLASS_::GetMonitorCount(PRUint32 *aMonitorCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetMonitorCount(PRUint32 aMonitorCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IBIOSSettings BIOSSettings; */
NS_IMETHODIMP _MYCLASS_::GetBIOSSettings(IBIOSSettings * *aBIOSSettings)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 firmwareType; */
NS_IMETHODIMP _MYCLASS_::GetFirmwareType(PRUint32 *aFirmwareType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetFirmwareType(PRUint32 aFirmwareType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 pointingHidType; */
NS_IMETHODIMP _MYCLASS_::GetPointingHidType(PRUint32 *aPointingHidType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPointingHidType(PRUint32 aPointingHidType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 keyboardHidType; */
NS_IMETHODIMP _MYCLASS_::GetKeyboardHidType(PRUint32 *aKeyboardHidType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetKeyboardHidType(PRUint32 aKeyboardHidType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean hpetEnabled; */
NS_IMETHODIMP _MYCLASS_::GetHpetEnabled(PRBool *aHpetEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetHpetEnabled(PRBool aHpetEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void getMediumAttachments (out unsigned long mediumAttachmentsSize, [array, size_is (mediumAttachmentsSize), retval] out IMediumAttachment mediumAttachments); */
NS_IMETHODIMP _MYCLASS_::GetMediumAttachments(PRUint32 *mediumAttachmentsSize, IMediumAttachment ***mediumAttachments)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IUSBController USBController; */
NS_IMETHODIMP _MYCLASS_::GetUSBController(IUSBController * *aUSBController)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IAudioAdapter audioAdapter; */
NS_IMETHODIMP _MYCLASS_::GetAudioAdapter(IAudioAdapter * *aAudioAdapter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getStorageControllers (out unsigned long storageControllersSize, [array, size_is (storageControllersSize), retval] out IStorageController storageControllers); */
NS_IMETHODIMP _MYCLASS_::GetStorageControllers(PRUint32 *storageControllersSize, IStorageController ***storageControllers)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* readonly attribute boolean settingsModified; */
NS_IMETHODIMP _MYCLASS_::GetSettingsModified(PRBool *aSettingsModified)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 sessionState; */
NS_IMETHODIMP _MYCLASS_::GetSessionState(PRUint32 *aSessionState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring sessionType; */
NS_IMETHODIMP _MYCLASS_::GetSessionType(PRUnichar * *aSessionType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long sessionPid; */
NS_IMETHODIMP _MYCLASS_::GetSessionPid(PRUint32 *aSessionPid)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 state; */
NS_IMETHODIMP _MYCLASS_::GetState(PRUint32 *aState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long lastStateChange; */
NS_IMETHODIMP _MYCLASS_::GetLastStateChange(PRInt64 *aLastStateChange)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring stateFilePath; */
NS_IMETHODIMP _MYCLASS_::GetStateFilePath(PRUnichar * *aStateFilePath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring logFolder; */
NS_IMETHODIMP _MYCLASS_::GetLogFolder(PRUnichar * *aLogFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute ISnapshot currentSnapshot; */
NS_IMETHODIMP _MYCLASS_::GetCurrentSnapshot(ISnapshot * *aCurrentSnapshot)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long snapshotCount; */
NS_IMETHODIMP _MYCLASS_::GetSnapshotCount(PRUint32 *aSnapshotCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean currentStateModified; */
NS_IMETHODIMP _MYCLASS_::GetCurrentStateModified(PRBool *aCurrentStateModified)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getSharedFolders (out unsigned long sharedFoldersSize, [array, size_is (sharedFoldersSize), retval] out ISharedFolder sharedFolders); */
NS_IMETHODIMP _MYCLASS_::GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 clipboardMode; */
NS_IMETHODIMP _MYCLASS_::GetClipboardMode(PRUint32 *aClipboardMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetClipboardMode(PRUint32 aClipboardMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring guestPropertyNotificationPatterns; */
NS_IMETHODIMP _MYCLASS_::GetGuestPropertyNotificationPatterns(PRUnichar * *aGuestPropertyNotificationPatterns)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetGuestPropertyNotificationPatterns(const PRUnichar * aGuestPropertyNotificationPatterns)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean teleporterEnabled; */
NS_IMETHODIMP _MYCLASS_::GetTeleporterEnabled(PRBool *aTeleporterEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTeleporterEnabled(PRBool aTeleporterEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long teleporterPort; */
NS_IMETHODIMP _MYCLASS_::GetTeleporterPort(PRUint32 *aTeleporterPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTeleporterPort(PRUint32 aTeleporterPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring teleporterAddress; */
NS_IMETHODIMP _MYCLASS_::GetTeleporterAddress(PRUnichar * *aTeleporterAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTeleporterAddress(const PRUnichar * aTeleporterAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring teleporterPassword; */
NS_IMETHODIMP _MYCLASS_::GetTeleporterPassword(PRUnichar * *aTeleporterPassword)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTeleporterPassword(const PRUnichar * aTeleporterPassword)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean RTCUseUTC; */
NS_IMETHODIMP _MYCLASS_::GetRTCUseUTC(PRBool *aRTCUseUTC)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetRTCUseUTC(PRBool aRTCUseUTC)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean ioCacheEnabled; */
NS_IMETHODIMP _MYCLASS_::GetIoCacheEnabled(PRBool *aIoCacheEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIoCacheEnabled(PRBool aIoCacheEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long ioCacheSize; */
NS_IMETHODIMP _MYCLASS_::GetIoCacheSize(PRUint32 *aIoCacheSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIoCacheSize(PRUint32 aIoCacheSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long ioBandwidthMax; */
NS_IMETHODIMP _MYCLASS_::GetIoBandwidthMax(PRUint32 *aIoBandwidthMax)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIoBandwidthMax(PRUint32 aIoBandwidthMax)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setBootOrder (in unsigned long position, in PRUint32 device); */
NS_IMETHODIMP _MYCLASS_::SetBootOrder(PRUint32 position, PRUint32 device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getBootOrder (in unsigned long position, [retval] out PRUint32 device); */
NS_IMETHODIMP _MYCLASS_::GetBootOrder(PRUint32 position, PRUint32 *device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void attachDevice (in wstring name, in long controllerPort, in long device, in PRUint32 type, in wstring id); */
NS_IMETHODIMP _MYCLASS_::AttachDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRUint32 type, const PRUnichar *id)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void detachDevice (in wstring name, in long controllerPort, in long device); */
NS_IMETHODIMP _MYCLASS_::DetachDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void passthroughDevice (in wstring name, in long controllerPort, in long device, in boolean passthrough); */
NS_IMETHODIMP _MYCLASS_::PassthroughDevice(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, PRBool passthrough)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void mountMedium (in wstring name, in long controllerPort, in long device, in wstring medium, in boolean force); */
NS_IMETHODIMP _MYCLASS_::MountMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, const PRUnichar *medium, PRBool force)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMedium (in wstring name, in long controllerPort, in long device, [retval] out IMedium medium); */
NS_IMETHODIMP _MYCLASS_::GetMedium(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMedium **medium)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMediumAttachmentsOfController (in wstring name, out unsigned long mediumAttachmentsSize, [array, size_is (mediumAttachmentsSize), retval] out IMediumAttachment mediumAttachments); */
NS_IMETHODIMP _MYCLASS_::GetMediumAttachmentsOfController(const PRUnichar *name, PRUint32 *mediumAttachmentsSize, IMediumAttachment ***mediumAttachments)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMediumAttachment (in wstring name, in long controllerPort, in long device, [retval] out IMediumAttachment attachment); */
NS_IMETHODIMP _MYCLASS_::GetMediumAttachment(const PRUnichar *name, PRInt32 controllerPort, PRInt32 device, IMediumAttachment **attachment)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNetworkAdapter (in unsigned long slot, [retval] out INetworkAdapter adapter); */
NS_IMETHODIMP _MYCLASS_::GetNetworkAdapter(PRUint32 slot, INetworkAdapter **adapter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addStorageController (in wstring name, in PRUint32 connectionType, [retval] out IStorageController controller); */
NS_IMETHODIMP _MYCLASS_::AddStorageController(const PRUnichar *name, PRUint32 connectionType, IStorageController **controller)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getStorageControllerByName (in wstring name, [retval] out IStorageController storageController); */
NS_IMETHODIMP _MYCLASS_::GetStorageControllerByName(const PRUnichar *name, IStorageController **storageController)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getStorageControllerByInstance (in unsigned long instance, [retval] out IStorageController storageController); */
NS_IMETHODIMP _MYCLASS_::GetStorageControllerByInstance(PRUint32 instance, IStorageController **storageController)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void getSerialPort (in unsigned long slot, [retval] out ISerialPort port); */
NS_IMETHODIMP _MYCLASS_::GetSerialPort(PRUint32 slot, ISerialPort **port)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getParallelPort (in unsigned long slot, [retval] out IParallelPort port); */
NS_IMETHODIMP _MYCLASS_::GetParallelPort(PRUint32 slot, IParallelPort **port)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getExtraDataKeys (out unsigned long valueSize, [array, size_is (valueSize), retval] out wstring value); */
NS_IMETHODIMP _MYCLASS_::GetExtraDataKeys(PRUint32 *valueSize, PRUnichar ***value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getExtraData (in wstring key, [retval] out wstring value); */
NS_IMETHODIMP _MYCLASS_::GetExtraData(const PRUnichar *key, PRUnichar **value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setExtraData (in wstring key, in wstring value); */
NS_IMETHODIMP _MYCLASS_::SetExtraData(const PRUnichar *key, const PRUnichar *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getCPUProperty (in PRUint32 property, [retval] out boolean value); */
NS_IMETHODIMP _MYCLASS_::GetCPUProperty(PRUint32 property, PRBool *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setCPUProperty (in PRUint32 property, in boolean value); */
NS_IMETHODIMP _MYCLASS_::SetCPUProperty(PRUint32 property, PRBool value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getCPUIDLeaf (in unsigned long id, out unsigned long valEax, out unsigned long valEbx, out unsigned long valEcx, out unsigned long valEdx); */
NS_IMETHODIMP _MYCLASS_::GetCPUIDLeaf(PRUint32 id, PRUint32 *valEax, PRUint32 *valEbx, PRUint32 *valEcx, PRUint32 *valEdx)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setCPUIDLeaf (in unsigned long id, in unsigned long valEax, in unsigned long valEbx, in unsigned long valEcx, in unsigned long valEdx); */
NS_IMETHODIMP _MYCLASS_::SetCPUIDLeaf(PRUint32 id, PRUint32 valEax, PRUint32 valEbx, PRUint32 valEcx, PRUint32 valEdx)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeCPUIDLeaf (in unsigned long id); */
NS_IMETHODIMP _MYCLASS_::RemoveCPUIDLeaf(PRUint32 id)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeAllCPUIDLeaves (); */
NS_IMETHODIMP _MYCLASS_::RemoveAllCPUIDLeaves()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getHWVirtExProperty (in PRUint32 property, [retval] out boolean value); */
NS_IMETHODIMP _MYCLASS_::GetHWVirtExProperty(PRUint32 property, PRBool *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setHWVirtExProperty (in PRUint32 property, in boolean value); */
NS_IMETHODIMP _MYCLASS_::SetHWVirtExProperty(PRUint32 property, PRBool value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

/* void export (in IAppliance aAppliance, [retval] out IVirtualSystemDescription aDescription); */
NS_IMETHODIMP _MYCLASS_::Export(IAppliance *aAppliance, IVirtualSystemDescription **aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getSnapshot (in wstring id, [retval] out ISnapshot snapshot); */
NS_IMETHODIMP _MYCLASS_::GetSnapshot(const PRUnichar *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 wstring id); */
NS_IMETHODIMP _MYCLASS_::SetCurrentSnapshot(const PRUnichar *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;
}

/* void getGuestProperty (in wstring name, out wstring value, out unsigned long long timestamp, out wstring flags); */
NS_IMETHODIMP _MYCLASS_::GetGuestProperty(const PRUnichar *name, PRUnichar **value, PRUint64 *timestamp, PRUnichar **flags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getGuestPropertyValue (in wstring property, [retval] out wstring value); */
NS_IMETHODIMP _MYCLASS_::GetGuestPropertyValue(const PRUnichar *property, PRUnichar **value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getGuestPropertyTimestamp (in wstring property, [retval] out unsigned long long value); */
NS_IMETHODIMP _MYCLASS_::GetGuestPropertyTimestamp(const PRUnichar *property, PRUint64 *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setGuestProperty (in wstring property, in wstring value, in wstring flags); */
NS_IMETHODIMP _MYCLASS_::SetGuestProperty(const PRUnichar *property, const PRUnichar *value, const PRUnichar *flags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setGuestPropertyValue (in wstring property, in wstring value); */
NS_IMETHODIMP _MYCLASS_::SetGuestPropertyValue(const PRUnichar *property, const PRUnichar *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enumerateGuestProperties (in wstring patterns, out unsigned long nameSize, [array, size_is (nameSize)] out wstring name, out unsigned long valueSize, [array, size_is (valueSize)] out wstring value, out unsigned long timestampSize, [array, size_is (timestampSize)] out unsigned long long timestamp, out unsigned long flagsSize, [array, size_is (flagsSize)] out wstring flags); */
NS_IMETHODIMP _MYCLASS_::EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *nameSize, PRUnichar ***name, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRUint64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void querySavedThumbnailSize (in unsigned long screenId, out unsigned long size, out unsigned long width, out unsigned long height); */
NS_IMETHODIMP _MYCLASS_::QuerySavedThumbnailSize(PRUint32 screenId, PRUint32 *size, PRUint32 *width, PRUint32 *height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void readSavedThumbnailToArray (in unsigned long screenId, in boolean BGR, out unsigned long width, out unsigned long height, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
NS_IMETHODIMP _MYCLASS_::ReadSavedThumbnailToArray(PRUint32 screenId, PRBool BGR, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void querySavedScreenshotPNGSize (in unsigned long screenId, out unsigned long size, out unsigned long width, out unsigned long height); */
NS_IMETHODIMP _MYCLASS_::QuerySavedScreenshotPNGSize(PRUint32 screenId, PRUint32 *size, PRUint32 *width, PRUint32 *height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void readSavedScreenshotPNGToArray (in unsigned long screenId, out unsigned long width, out unsigned long height, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
NS_IMETHODIMP _MYCLASS_::ReadSavedScreenshotPNGToArray(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *dataSize, PRUint8 **data)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void hotPlugCPU (in unsigned long cpu); */
NS_IMETHODIMP _MYCLASS_::HotPlugCPU(PRUint32 cpu)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void hotUnplugCPU (in unsigned long cpu); */
NS_IMETHODIMP _MYCLASS_::HotUnplugCPU(PRUint32 cpu)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getCPUStatus (in unsigned long cpu, [retval] out boolean attached); */
NS_IMETHODIMP _MYCLASS_::GetCPUStatus(PRUint32 cpu, PRBool *attached)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void queryLogFilename (in unsigned long idx, [retval] out wstring filename); */
NS_IMETHODIMP _MYCLASS_::QueryLogFilename(PRUint32 idx, PRUnichar **filename)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void readLog (in unsigned long idx, in unsigned long long offset, in unsigned long long size, out unsigned long dataSize, [array, size_is (dataSize), retval] out octet data); */
NS_IMETHODIMP _MYCLASS_::ReadLog(PRUint32 idx, PRUint64 offset, PRUint64 size, PRUint32 *dataSize, PRUint8 **data)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IMachine_GETTER_Parent_TO(smth) NS_IMETHOD GetParent (IVirtualBox * * aParent) { return smth GetParent (aParent); }
#define COM_FORWARD_IMachine_GETTER_Parent_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_Parent_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_Parent_TO_BASE(base) COM_FORWARD_IMachine_GETTER_Parent_TO (base::)
#define COM_FORWARD_IMachine_GETTER_Accessible_TO(smth) NS_IMETHOD GetAccessible (PRBool * aAccessible) { return smth GetAccessible (aAccessible); }
#define COM_FORWARD_IMachine_GETTER_Accessible_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_Accessible_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_Accessible_TO_BASE(base) COM_FORWARD_IMachine_GETTER_Accessible_TO (base::)
#define COM_FORWARD_IMachine_GETTER_AccessError_TO(smth) NS_IMETHOD GetAccessError (IVirtualBoxErrorInfo * * aAccessError) { return smth GetAccessError (aAccessError); }
#define COM_FORWARD_IMachine_GETTER_AccessError_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_AccessError_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_AccessError_TO_BASE(base) COM_FORWARD_IMachine_GETTER_AccessError_TO (base::)
#define COM_FORWARD_IMachine_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IMachine_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_Name_TO_BASE(base) COM_FORWARD_IMachine_GETTER_Name_TO (base::)
#define COM_FORWARD_IMachine_SETTER_Name_TO(smth) NS_IMETHOD SetName (const PRUnichar * aName) { return smth SetName (aName); }
#define COM_FORWARD_IMachine_SETTER_Name_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_Name_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_Name_TO_BASE(base) COM_FORWARD_IMachine_SETTER_Name_TO (base::)
#define COM_FORWARD_IMachine_GETTER_Description_TO(smth) NS_IMETHOD GetDescription (PRUnichar * * aDescription) { return smth GetDescription (aDescription); }
#define COM_FORWARD_IMachine_GETTER_Description_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_Description_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_Description_TO_BASE(base) COM_FORWARD_IMachine_GETTER_Description_TO (base::)
#define COM_FORWARD_IMachine_SETTER_Description_TO(smth) NS_IMETHOD SetDescription (const PRUnichar * aDescription) { return smth SetDescription (aDescription); }
#define COM_FORWARD_IMachine_SETTER_Description_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_Description_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_Description_TO_BASE(base) COM_FORWARD_IMachine_SETTER_Description_TO (base::)
#define COM_FORWARD_IMachine_GETTER_Id_TO(smth) NS_IMETHOD GetId (PRUnichar * * aId) { return smth GetId (aId); }
#define COM_FORWARD_IMachine_GETTER_Id_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_Id_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_Id_TO_BASE(base) COM_FORWARD_IMachine_GETTER_Id_TO (base::)
#define COM_FORWARD_IMachine_GETTER_OSTypeId_TO(smth) NS_IMETHOD GetOSTypeId (PRUnichar * * aOSTypeId) { return smth GetOSTypeId (aOSTypeId); }
#define COM_FORWARD_IMachine_GETTER_OSTypeId_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_OSTypeId_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_OSTypeId_TO_BASE(base) COM_FORWARD_IMachine_GETTER_OSTypeId_TO (base::)
#define COM_FORWARD_IMachine_SETTER_OSTypeId_TO(smth) NS_IMETHOD SetOSTypeId (const PRUnichar * aOSTypeId) { return smth SetOSTypeId (aOSTypeId); }
#define COM_FORWARD_IMachine_SETTER_OSTypeId_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_OSTypeId_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_OSTypeId_TO_BASE(base) COM_FORWARD_IMachine_SETTER_OSTypeId_TO (base::)
#define COM_FORWARD_IMachine_GETTER_HardwareVersion_TO(smth) NS_IMETHOD GetHardwareVersion (PRUnichar * * aHardwareVersion) { return smth GetHardwareVersion (aHardwareVersion); }
#define COM_FORWARD_IMachine_GETTER_HardwareVersion_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_HardwareVersion_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_HardwareVersion_TO_BASE(base) COM_FORWARD_IMachine_GETTER_HardwareVersion_TO (base::)
#define COM_FORWARD_IMachine_SETTER_HardwareVersion_TO(smth) NS_IMETHOD SetHardwareVersion (const PRUnichar * aHardwareVersion) { return smth SetHardwareVersion (aHardwareVersion); }
#define COM_FORWARD_IMachine_SETTER_HardwareVersion_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_HardwareVersion_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_HardwareVersion_TO_BASE(base) COM_FORWARD_IMachine_SETTER_HardwareVersion_TO (base::)
#define COM_FORWARD_IMachine_GETTER_HardwareUUID_TO(smth) NS_IMETHOD GetHardwareUUID (PRUnichar * * aHardwareUUID) { return smth GetHardwareUUID (aHardwareUUID); }
#define COM_FORWARD_IMachine_GETTER_HardwareUUID_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_HardwareUUID_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_HardwareUUID_TO_BASE(base) COM_FORWARD_IMachine_GETTER_HardwareUUID_TO (base::)
#define COM_FORWARD_IMachine_SETTER_HardwareUUID_TO(smth) NS_IMETHOD SetHardwareUUID (PRUnichar * aHardwareUUID) { return smth SetHardwareUUID (aHardwareUUID); }
#define COM_FORWARD_IMachine_SETTER_HardwareUUID_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_HardwareUUID_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_HardwareUUID_TO_BASE(base) COM_FORWARD_IMachine_SETTER_HardwareUUID_TO (base::)
#define COM_FORWARD_IMachine_GETTER_CPUCount_TO(smth) NS_IMETHOD GetCPUCount (PRUint32 * aCPUCount) { return smth GetCPUCount (aCPUCount); }
#define COM_FORWARD_IMachine_GETTER_CPUCount_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_CPUCount_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_CPUCount_TO_BASE(base) COM_FORWARD_IMachine_GETTER_CPUCount_TO (base::)
#define COM_FORWARD_IMachine_SETTER_CPUCount_TO(smth) NS_IMETHOD SetCPUCount (PRUint32 aCPUCount) { return smth SetCPUCount (aCPUCount); }
#define COM_FORWARD_IMachine_SETTER_CPUCount_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_CPUCount_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_CPUCount_TO_BASE(base) COM_FORWARD_IMachine_SETTER_CPUCount_TO (base::)
#define COM_FORWARD_IMachine_GETTER_CPUHotPlugEnabled_TO(smth) NS_IMETHOD GetCPUHotPlugEnabled (PRBool * aCPUHotPlugEnabled) { return smth GetCPUHotPlugEnabled (aCPUHotPlugEnabled); }
#define COM_FORWARD_IMachine_GETTER_CPUHotPlugEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_CPUHotPlugEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_CPUHotPlugEnabled_TO_BASE(base) COM_FORWARD_IMachine_GETTER_CPUHotPlugEnabled_TO (base::)
#define COM_FORWARD_IMachine_SETTER_CPUHotPlugEnabled_TO(smth) NS_IMETHOD SetCPUHotPlugEnabled (PRBool aCPUHotPlugEnabled) { return smth SetCPUHotPlugEnabled (aCPUHotPlugEnabled); }
#define COM_FORWARD_IMachine_SETTER_CPUHotPlugEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_CPUHotPlugEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_CPUHotPlugEnabled_TO_BASE(base) COM_FORWARD_IMachine_SETTER_CPUHotPlugEnabled_TO (base::)
#define COM_FORWARD_IMachine_GETTER_MemorySize_TO(smth) NS_IMETHOD GetMemorySize (PRUint32 * aMemorySize) { return smth GetMemorySize (aMemorySize); }
#define COM_FORWARD_IMachine_GETTER_MemorySize_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_MemorySize_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_MemorySize_TO_BASE(base) COM_FORWARD_IMachine_GETTER_MemorySize_TO (base::)
#define COM_FORWARD_IMachine_SETTER_MemorySize_TO(smth) NS_IMETHOD SetMemorySize (PRUint32 aMemorySize) { return smth SetMemorySize (aMemorySize); }
#define COM_FORWARD_IMachine_SETTER_MemorySize_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_MemorySize_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_MemorySize_TO_BASE(base) COM_FORWARD_IMachine_SETTER_MemorySize_TO (base::)
#define COM_FORWARD_IMachine_GETTER_MemoryBalloonSize_TO(smth) NS_IMETHOD GetMemoryBalloonSize (PRUint32 * aMemoryBalloonSize) { return smth GetMemoryBalloonSize (aMemoryBalloonSize); }
#define COM_FORWARD_IMachine_GETTER_MemoryBalloonSize_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_MemoryBalloonSize_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_MemoryBalloonSize_TO_BASE(base) COM_FORWARD_IMachine_GETTER_MemoryBalloonSize_TO (base::)
#define COM_FORWARD_IMachine_SETTER_MemoryBalloonSize_TO(smth) NS_IMETHOD SetMemoryBalloonSize (PRUint32 aMemoryBalloonSize) { return smth SetMemoryBalloonSize (aMemoryBalloonSize); }
#define COM_FORWARD_IMachine_SETTER_MemoryBalloonSize_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_MemoryBalloonSize_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_MemoryBalloonSize_TO_BASE(base) COM_FORWARD_IMachine_SETTER_MemoryBalloonSize_TO (base::)
#define COM_FORWARD_IMachine_GETTER_PageFusionEnabled_TO(smth) NS_IMETHOD GetPageFusionEnabled (PRBool * aPageFusionEnabled) { return smth GetPageFusionEnabled (aPageFusionEnabled); }
#define COM_FORWARD_IMachine_GETTER_PageFusionEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_PageFusionEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_PageFusionEnabled_TO_BASE(base) COM_FORWARD_IMachine_GETTER_PageFusionEnabled_TO (base::)
#define COM_FORWARD_IMachine_SETTER_PageFusionEnabled_TO(smth) NS_IMETHOD SetPageFusionEnabled (PRBool aPageFusionEnabled) { return smth SetPageFusionEnabled (aPageFusionEnabled); }
#define COM_FORWARD_IMachine_SETTER_PageFusionEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_PageFusionEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_PageFusionEnabled_TO_BASE(base) COM_FORWARD_IMachine_SETTER_PageFusionEnabled_TO (base::)
#define COM_FORWARD_IMachine_GETTER_VRAMSize_TO(smth) NS_IMETHOD GetVRAMSize (PRUint32 * aVRAMSize) { return smth GetVRAMSize (aVRAMSize); }
#define COM_FORWARD_IMachine_GETTER_VRAMSize_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_VRAMSize_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_VRAMSize_TO_BASE(base) COM_FORWARD_IMachine_GETTER_VRAMSize_TO (base::)
#define COM_FORWARD_IMachine_SETTER_VRAMSize_TO(smth) NS_IMETHOD SetVRAMSize (PRUint32 aVRAMSize) { return smth SetVRAMSize (aVRAMSize); }
#define COM_FORWARD_IMachine_SETTER_VRAMSize_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_VRAMSize_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_VRAMSize_TO_BASE(base) COM_FORWARD_IMachine_SETTER_VRAMSize_TO (base::)
#define COM_FORWARD_IMachine_GETTER_Accelerate3DEnabled_TO(smth) NS_IMETHOD GetAccelerate3DEnabled (PRBool * aAccelerate3DEnabled) { return smth GetAccelerate3DEnabled (aAccelerate3DEnabled); }
#define COM_FORWARD_IMachine_GETTER_Accelerate3DEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_Accelerate3DEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_Accelerate3DEnabled_TO_BASE(base) COM_FORWARD_IMachine_GETTER_Accelerate3DEnabled_TO (base::)
#define COM_FORWARD_IMachine_SETTER_Accelerate3DEnabled_TO(smth) NS_IMETHOD SetAccelerate3DEnabled (PRBool aAccelerate3DEnabled) { return smth SetAccelerate3DEnabled (aAccelerate3DEnabled); }
#define COM_FORWARD_IMachine_SETTER_Accelerate3DEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_Accelerate3DEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_Accelerate3DEnabled_TO_BASE(base) COM_FORWARD_IMachine_SETTER_Accelerate3DEnabled_TO (base::)
#define COM_FORWARD_IMachine_GETTER_Accelerate2DVideoEnabled_TO(smth) NS_IMETHOD GetAccelerate2DVideoEnabled (PRBool * aAccelerate2DVideoEnabled) { return smth GetAccelerate2DVideoEnabled (aAccelerate2DVideoEnabled); }
#define COM_FORWARD_IMachine_GETTER_Accelerate2DVideoEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_Accelerate2DVideoEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_Accelerate2DVideoEnabled_TO_BASE(base) COM_FORWARD_IMachine_GETTER_Accelerate2DVideoEnabled_TO (base::)
#define COM_FORWARD_IMachine_SETTER_Accelerate2DVideoEnabled_TO(smth) NS_IMETHOD SetAccelerate2DVideoEnabled (PRBool aAccelerate2DVideoEnabled) { return smth SetAccelerate2DVideoEnabled (aAccelerate2DVideoEnabled); }
#define COM_FORWARD_IMachine_SETTER_Accelerate2DVideoEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_Accelerate2DVideoEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_Accelerate2DVideoEnabled_TO_BASE(base) COM_FORWARD_IMachine_SETTER_Accelerate2DVideoEnabled_TO (base::)
#define COM_FORWARD_IMachine_GETTER_MonitorCount_TO(smth) NS_IMETHOD GetMonitorCount (PRUint32 * aMonitorCount) { return smth GetMonitorCount (aMonitorCount); }
#define COM_FORWARD_IMachine_GETTER_MonitorCount_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_MonitorCount_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_MonitorCount_TO_BASE(base) COM_FORWARD_IMachine_GETTER_MonitorCount_TO (base::)
#define COM_FORWARD_IMachine_SETTER_MonitorCount_TO(smth) NS_IMETHOD SetMonitorCount (PRUint32 aMonitorCount) { return smth SetMonitorCount (aMonitorCount); }
#define COM_FORWARD_IMachine_SETTER_MonitorCount_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_MonitorCount_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_MonitorCount_TO_BASE(base) COM_FORWARD_IMachine_SETTER_MonitorCount_TO (base::)
#define COM_FORWARD_IMachine_GETTER_BIOSSettings_TO(smth) NS_IMETHOD GetBIOSSettings (IBIOSSettings * * aBIOSSettings) { return smth GetBIOSSettings (aBIOSSettings); }
#define COM_FORWARD_IMachine_GETTER_BIOSSettings_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_BIOSSettings_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_BIOSSettings_TO_BASE(base) COM_FORWARD_IMachine_GETTER_BIOSSettings_TO (base::)
#define COM_FORWARD_IMachine_GETTER_FirmwareType_TO(smth) NS_IMETHOD GetFirmwareType (PRUint32 * aFirmwareType) { return smth GetFirmwareType (aFirmwareType); }
#define COM_FORWARD_IMachine_GETTER_FirmwareType_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_FirmwareType_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_FirmwareType_TO_BASE(base) COM_FORWARD_IMachine_GETTER_FirmwareType_TO (base::)
#define COM_FORWARD_IMachine_SETTER_FirmwareType_TO(smth) NS_IMETHOD SetFirmwareType (PRUint32 aFirmwareType) { return smth SetFirmwareType (aFirmwareType); }
#define COM_FORWARD_IMachine_SETTER_FirmwareType_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_FirmwareType_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_FirmwareType_TO_BASE(base) COM_FORWARD_IMachine_SETTER_FirmwareType_TO (base::)
#define COM_FORWARD_IMachine_GETTER_PointingHidType_TO(smth) NS_IMETHOD GetPointingHidType (PRUint32 * aPointingHidType) { return smth GetPointingHidType (aPointingHidType); }
#define COM_FORWARD_IMachine_GETTER_PointingHidType_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_PointingHidType_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_PointingHidType_TO_BASE(base) COM_FORWARD_IMachine_GETTER_PointingHidType_TO (base::)
#define COM_FORWARD_IMachine_SETTER_PointingHidType_TO(smth) NS_IMETHOD SetPointingHidType (PRUint32 aPointingHidType) { return smth SetPointingHidType (aPointingHidType); }
#define COM_FORWARD_IMachine_SETTER_PointingHidType_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_PointingHidType_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_PointingHidType_TO_BASE(base) COM_FORWARD_IMachine_SETTER_PointingHidType_TO (base::)
#define COM_FORWARD_IMachine_GETTER_KeyboardHidType_TO(smth) NS_IMETHOD GetKeyboardHidType (PRUint32 * aKeyboardHidType) { return smth GetKeyboardHidType (aKeyboardHidType); }
#define COM_FORWARD_IMachine_GETTER_KeyboardHidType_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_KeyboardHidType_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_KeyboardHidType_TO_BASE(base) COM_FORWARD_IMachine_GETTER_KeyboardHidType_TO (base::)
#define COM_FORWARD_IMachine_SETTER_KeyboardHidType_TO(smth) NS_IMETHOD SetKeyboardHidType (PRUint32 aKeyboardHidType) { return smth SetKeyboardHidType (aKeyboardHidType); }
#define COM_FORWARD_IMachine_SETTER_KeyboardHidType_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_KeyboardHidType_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_KeyboardHidType_TO_BASE(base) COM_FORWARD_IMachine_SETTER_KeyboardHidType_TO (base::)
#define COM_FORWARD_IMachine_GETTER_HpetEnabled_TO(smth) NS_IMETHOD GetHpetEnabled (PRBool * aHpetEnabled) { return smth GetHpetEnabled (aHpetEnabled); }
#define COM_FORWARD_IMachine_GETTER_HpetEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_HpetEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_HpetEnabled_TO_BASE(base) COM_FORWARD_IMachine_GETTER_HpetEnabled_TO (base::)
#define COM_FORWARD_IMachine_SETTER_HpetEnabled_TO(smth) NS_IMETHOD SetHpetEnabled (PRBool aHpetEnabled) { return smth SetHpetEnabled (aHpetEnabled); }
#define COM_FORWARD_IMachine_SETTER_HpetEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_HpetEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_HpetEnabled_TO_BASE(base) COM_FORWARD_IMachine_SETTER_HpetEnabled_TO (base::)
#define COM_FORWARD_IMachine_GETTER_SnapshotFolder_TO(smth) NS_IMETHOD GetSnapshotFolder (PRUnichar * * aSnapshotFolder) { return smth GetSnapshotFolder (aSnapshotFolder); }
#define COM_FORWARD_IMachine_GETTER_SnapshotFolder_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_SnapshotFolder_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_SnapshotFolder_TO_BASE(base) COM_FORWARD_IMachine_GETTER_SnapshotFolder_TO (base::)
#define COM_FORWARD_IMachine_SETTER_SnapshotFolder_TO(smth) NS_IMETHOD SetSnapshotFolder (const PRUnichar * aSnapshotFolder) { return smth SetSnapshotFolder (aSnapshotFolder); }
#define COM_FORWARD_IMachine_SETTER_SnapshotFolder_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_SnapshotFolder_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_SnapshotFolder_TO_BASE(base) COM_FORWARD_IMachine_SETTER_SnapshotFolder_TO (base::)
#define COM_FORWARD_IMachine_GETTER_VRDPServer_TO(smth) NS_IMETHOD GetVRDPServer (IVRDPServer * * aVRDPServer) { return smth GetVRDPServer (aVRDPServer); }
#define COM_FORWARD_IMachine_GETTER_VRDPServer_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_VRDPServer_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_VRDPServer_TO_BASE(base) COM_FORWARD_IMachine_GETTER_VRDPServer_TO (base::)
#define COM_FORWARD_IMachine_GETTER_MediumAttachments_TO(smth) NS_IMETHOD GetMediumAttachments (PRUint32 * aMediumAttachmentsSize, IMediumAttachment * * * aMediumAttachments) { return smth GetMediumAttachments (aMediumAttachmentsSize, aMediumAttachments); }
#define COM_FORWARD_IMachine_GETTER_MediumAttachments_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_MediumAttachments_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_MediumAttachments_TO_BASE(base) COM_FORWARD_IMachine_GETTER_MediumAttachments_TO (base::)
#define COM_FORWARD_IMachine_GETTER_USBController_TO(smth) NS_IMETHOD GetUSBController (IUSBController * * aUSBController) { return smth GetUSBController (aUSBController); }
#define COM_FORWARD_IMachine_GETTER_USBController_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_USBController_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_USBController_TO_BASE(base) COM_FORWARD_IMachine_GETTER_USBController_TO (base::)
#define COM_FORWARD_IMachine_GETTER_AudioAdapter_TO(smth) NS_IMETHOD GetAudioAdapter (IAudioAdapter * * aAudioAdapter) { return smth GetAudioAdapter (aAudioAdapter); }
#define COM_FORWARD_IMachine_GETTER_AudioAdapter_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_AudioAdapter_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_AudioAdapter_TO_BASE(base) COM_FORWARD_IMachine_GETTER_AudioAdapter_TO (base::)
#define COM_FORWARD_IMachine_GETTER_StorageControllers_TO(smth) NS_IMETHOD GetStorageControllers (PRUint32 * aStorageControllersSize, IStorageController * * * aStorageControllers) { return smth GetStorageControllers (aStorageControllersSize, aStorageControllers); }
#define COM_FORWARD_IMachine_GETTER_StorageControllers_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_StorageControllers_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_StorageControllers_TO_BASE(base) COM_FORWARD_IMachine_GETTER_StorageControllers_TO (base::)
#define COM_FORWARD_IMachine_GETTER_SettingsFilePath_TO(smth) NS_IMETHOD GetSettingsFilePath (PRUnichar * * aSettingsFilePath) { return smth GetSettingsFilePath (aSettingsFilePath); }
#define COM_FORWARD_IMachine_GETTER_SettingsFilePath_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_SettingsFilePath_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_SettingsFilePath_TO_BASE(base) COM_FORWARD_IMachine_GETTER_SettingsFilePath_TO (base::)
#define COM_FORWARD_IMachine_GETTER_SettingsModified_TO(smth) NS_IMETHOD GetSettingsModified (PRBool * aSettingsModified) { return smth GetSettingsModified (aSettingsModified); }
#define COM_FORWARD_IMachine_GETTER_SettingsModified_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_SettingsModified_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_SettingsModified_TO_BASE(base) COM_FORWARD_IMachine_GETTER_SettingsModified_TO (base::)
#define COM_FORWARD_IMachine_GETTER_SessionState_TO(smth) NS_IMETHOD GetSessionState (PRUint32 * aSessionState) { return smth GetSessionState (aSessionState); }
#define COM_FORWARD_IMachine_GETTER_SessionState_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_SessionState_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_SessionState_TO_BASE(base) COM_FORWARD_IMachine_GETTER_SessionState_TO (base::)
#define COM_FORWARD_IMachine_GETTER_SessionType_TO(smth) NS_IMETHOD GetSessionType (PRUnichar * * aSessionType) { return smth GetSessionType (aSessionType); }
#define COM_FORWARD_IMachine_GETTER_SessionType_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_SessionType_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_SessionType_TO_BASE(base) COM_FORWARD_IMachine_GETTER_SessionType_TO (base::)
#define COM_FORWARD_IMachine_GETTER_SessionPid_TO(smth) NS_IMETHOD GetSessionPid (PRUint32 * aSessionPid) { return smth GetSessionPid (aSessionPid); }
#define COM_FORWARD_IMachine_GETTER_SessionPid_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_SessionPid_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_SessionPid_TO_BASE(base) COM_FORWARD_IMachine_GETTER_SessionPid_TO (base::)
#define COM_FORWARD_IMachine_GETTER_State_TO(smth) NS_IMETHOD GetState (PRUint32 * aState) { return smth GetState (aState); }
#define COM_FORWARD_IMachine_GETTER_State_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_State_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_State_TO_BASE(base) COM_FORWARD_IMachine_GETTER_State_TO (base::)
#define COM_FORWARD_IMachine_GETTER_LastStateChange_TO(smth) NS_IMETHOD GetLastStateChange (PRInt64 * aLastStateChange) { return smth GetLastStateChange (aLastStateChange); }
#define COM_FORWARD_IMachine_GETTER_LastStateChange_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_LastStateChange_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_LastStateChange_TO_BASE(base) COM_FORWARD_IMachine_GETTER_LastStateChange_TO (base::)
#define COM_FORWARD_IMachine_GETTER_StateFilePath_TO(smth) NS_IMETHOD GetStateFilePath (PRUnichar * * aStateFilePath) { return smth GetStateFilePath (aStateFilePath); }
#define COM_FORWARD_IMachine_GETTER_StateFilePath_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_StateFilePath_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_StateFilePath_TO_BASE(base) COM_FORWARD_IMachine_GETTER_StateFilePath_TO (base::)
#define COM_FORWARD_IMachine_GETTER_LogFolder_TO(smth) NS_IMETHOD GetLogFolder (PRUnichar * * aLogFolder) { return smth GetLogFolder (aLogFolder); }
#define COM_FORWARD_IMachine_GETTER_LogFolder_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_LogFolder_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_LogFolder_TO_BASE(base) COM_FORWARD_IMachine_GETTER_LogFolder_TO (base::)
#define COM_FORWARD_IMachine_GETTER_CurrentSnapshot_TO(smth) NS_IMETHOD GetCurrentSnapshot (ISnapshot * * aCurrentSnapshot) { return smth GetCurrentSnapshot (aCurrentSnapshot); }
#define COM_FORWARD_IMachine_GETTER_CurrentSnapshot_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_CurrentSnapshot_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_CurrentSnapshot_TO_BASE(base) COM_FORWARD_IMachine_GETTER_CurrentSnapshot_TO (base::)
#define COM_FORWARD_IMachine_GETTER_SnapshotCount_TO(smth) NS_IMETHOD GetSnapshotCount (PRUint32 * aSnapshotCount) { return smth GetSnapshotCount (aSnapshotCount); }
#define COM_FORWARD_IMachine_GETTER_SnapshotCount_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_SnapshotCount_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_SnapshotCount_TO_BASE(base) COM_FORWARD_IMachine_GETTER_SnapshotCount_TO (base::)
#define COM_FORWARD_IMachine_GETTER_CurrentStateModified_TO(smth) NS_IMETHOD GetCurrentStateModified (PRBool * aCurrentStateModified) { return smth GetCurrentStateModified (aCurrentStateModified); }
#define COM_FORWARD_IMachine_GETTER_CurrentStateModified_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_CurrentStateModified_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_CurrentStateModified_TO_BASE(base) COM_FORWARD_IMachine_GETTER_CurrentStateModified_TO (base::)
#define COM_FORWARD_IMachine_GETTER_SharedFolders_TO(smth) NS_IMETHOD GetSharedFolders (PRUint32 * aSharedFoldersSize, ISharedFolder * * * aSharedFolders) { return smth GetSharedFolders (aSharedFoldersSize, aSharedFolders); }
#define COM_FORWARD_IMachine_GETTER_SharedFolders_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_SharedFolders_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_SharedFolders_TO_BASE(base) COM_FORWARD_IMachine_GETTER_SharedFolders_TO (base::)
#define COM_FORWARD_IMachine_GETTER_ClipboardMode_TO(smth) NS_IMETHOD GetClipboardMode (PRUint32 * aClipboardMode) { return smth GetClipboardMode (aClipboardMode); }
#define COM_FORWARD_IMachine_GETTER_ClipboardMode_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_ClipboardMode_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_ClipboardMode_TO_BASE(base) COM_FORWARD_IMachine_GETTER_ClipboardMode_TO (base::)
#define COM_FORWARD_IMachine_SETTER_ClipboardMode_TO(smth) NS_IMETHOD SetClipboardMode (PRUint32 aClipboardMode) { return smth SetClipboardMode (aClipboardMode); }
#define COM_FORWARD_IMachine_SETTER_ClipboardMode_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_ClipboardMode_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_ClipboardMode_TO_BASE(base) COM_FORWARD_IMachine_SETTER_ClipboardMode_TO (base::)
#define COM_FORWARD_IMachine_GETTER_GuestPropertyNotificationPatterns_TO(smth) NS_IMETHOD GetGuestPropertyNotificationPatterns (PRUnichar * * aGuestPropertyNotificationPatterns) { return smth GetGuestPropertyNotificationPatterns (aGuestPropertyNotificationPatterns); }
#define COM_FORWARD_IMachine_GETTER_GuestPropertyNotificationPatterns_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_GuestPropertyNotificationPatterns_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_GuestPropertyNotificationPatterns_TO_BASE(base) COM_FORWARD_IMachine_GETTER_GuestPropertyNotificationPatterns_TO (base::)
#define COM_FORWARD_IMachine_SETTER_GuestPropertyNotificationPatterns_TO(smth) NS_IMETHOD SetGuestPropertyNotificationPatterns (const PRUnichar * aGuestPropertyNotificationPatterns) { return smth SetGuestPropertyNotificationPatterns (aGuestPropertyNotificationPatterns); }
#define COM_FORWARD_IMachine_SETTER_GuestPropertyNotificationPatterns_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_GuestPropertyNotificationPatterns_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_GuestPropertyNotificationPatterns_TO_BASE(base) COM_FORWARD_IMachine_SETTER_GuestPropertyNotificationPatterns_TO (base::)
#define COM_FORWARD_IMachine_GETTER_TeleporterEnabled_TO(smth) NS_IMETHOD GetTeleporterEnabled (PRBool * aTeleporterEnabled) { return smth GetTeleporterEnabled (aTeleporterEnabled); }
#define COM_FORWARD_IMachine_GETTER_TeleporterEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_TeleporterEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_TeleporterEnabled_TO_BASE(base) COM_FORWARD_IMachine_GETTER_TeleporterEnabled_TO (base::)
#define COM_FORWARD_IMachine_SETTER_TeleporterEnabled_TO(smth) NS_IMETHOD SetTeleporterEnabled (PRBool aTeleporterEnabled) { return smth SetTeleporterEnabled (aTeleporterEnabled); }
#define COM_FORWARD_IMachine_SETTER_TeleporterEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_TeleporterEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_TeleporterEnabled_TO_BASE(base) COM_FORWARD_IMachine_SETTER_TeleporterEnabled_TO (base::)
#define COM_FORWARD_IMachine_GETTER_TeleporterPort_TO(smth) NS_IMETHOD GetTeleporterPort (PRUint32 * aTeleporterPort) { return smth GetTeleporterPort (aTeleporterPort); }
#define COM_FORWARD_IMachine_GETTER_TeleporterPort_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_TeleporterPort_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_TeleporterPort_TO_BASE(base) COM_FORWARD_IMachine_GETTER_TeleporterPort_TO (base::)
#define COM_FORWARD_IMachine_SETTER_TeleporterPort_TO(smth) NS_IMETHOD SetTeleporterPort (PRUint32 aTeleporterPort) { return smth SetTeleporterPort (aTeleporterPort); }
#define COM_FORWARD_IMachine_SETTER_TeleporterPort_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_TeleporterPort_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_TeleporterPort_TO_BASE(base) COM_FORWARD_IMachine_SETTER_TeleporterPort_TO (base::)
#define COM_FORWARD_IMachine_GETTER_TeleporterAddress_TO(smth) NS_IMETHOD GetTeleporterAddress (PRUnichar * * aTeleporterAddress) { return smth GetTeleporterAddress (aTeleporterAddress); }
#define COM_FORWARD_IMachine_GETTER_TeleporterAddress_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_TeleporterAddress_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_TeleporterAddress_TO_BASE(base) COM_FORWARD_IMachine_GETTER_TeleporterAddress_TO (base::)
#define COM_FORWARD_IMachine_SETTER_TeleporterAddress_TO(smth) NS_IMETHOD SetTeleporterAddress (const PRUnichar * aTeleporterAddress) { return smth SetTeleporterAddress (aTeleporterAddress); }
#define COM_FORWARD_IMachine_SETTER_TeleporterAddress_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_TeleporterAddress_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_TeleporterAddress_TO_BASE(base) COM_FORWARD_IMachine_SETTER_TeleporterAddress_TO (base::)
#define COM_FORWARD_IMachine_GETTER_TeleporterPassword_TO(smth) NS_IMETHOD GetTeleporterPassword (PRUnichar * * aTeleporterPassword) { return smth GetTeleporterPassword (aTeleporterPassword); }
#define COM_FORWARD_IMachine_GETTER_TeleporterPassword_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_TeleporterPassword_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_TeleporterPassword_TO_BASE(base) COM_FORWARD_IMachine_GETTER_TeleporterPassword_TO (base::)
#define COM_FORWARD_IMachine_SETTER_TeleporterPassword_TO(smth) NS_IMETHOD SetTeleporterPassword (const PRUnichar * aTeleporterPassword) { return smth SetTeleporterPassword (aTeleporterPassword); }
#define COM_FORWARD_IMachine_SETTER_TeleporterPassword_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_TeleporterPassword_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_TeleporterPassword_TO_BASE(base) COM_FORWARD_IMachine_SETTER_TeleporterPassword_TO (base::)
#define COM_FORWARD_IMachine_GETTER_RTCUseUTC_TO(smth) NS_IMETHOD GetRTCUseUTC (PRBool * aRTCUseUTC) { return smth GetRTCUseUTC (aRTCUseUTC); }
#define COM_FORWARD_IMachine_GETTER_RTCUseUTC_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_RTCUseUTC_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_RTCUseUTC_TO_BASE(base) COM_FORWARD_IMachine_GETTER_RTCUseUTC_TO (base::)
#define COM_FORWARD_IMachine_SETTER_RTCUseUTC_TO(smth) NS_IMETHOD SetRTCUseUTC (PRBool aRTCUseUTC) { return smth SetRTCUseUTC (aRTCUseUTC); }
#define COM_FORWARD_IMachine_SETTER_RTCUseUTC_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_RTCUseUTC_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_RTCUseUTC_TO_BASE(base) COM_FORWARD_IMachine_SETTER_RTCUseUTC_TO (base::)
#define COM_FORWARD_IMachine_GETTER_IoCacheEnabled_TO(smth) NS_IMETHOD GetIoCacheEnabled (PRBool * aIoCacheEnabled) { return smth GetIoCacheEnabled (aIoCacheEnabled); }
#define COM_FORWARD_IMachine_GETTER_IoCacheEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_IoCacheEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_IoCacheEnabled_TO_BASE(base) COM_FORWARD_IMachine_GETTER_IoCacheEnabled_TO (base::)
#define COM_FORWARD_IMachine_SETTER_IoCacheEnabled_TO(smth) NS_IMETHOD SetIoCacheEnabled (PRBool aIoCacheEnabled) { return smth SetIoCacheEnabled (aIoCacheEnabled); }
#define COM_FORWARD_IMachine_SETTER_IoCacheEnabled_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_IoCacheEnabled_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_IoCacheEnabled_TO_BASE(base) COM_FORWARD_IMachine_SETTER_IoCacheEnabled_TO (base::)
#define COM_FORWARD_IMachine_GETTER_IoCacheSize_TO(smth) NS_IMETHOD GetIoCacheSize (PRUint32 * aIoCacheSize) { return smth GetIoCacheSize (aIoCacheSize); }
#define COM_FORWARD_IMachine_GETTER_IoCacheSize_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_IoCacheSize_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_IoCacheSize_TO_BASE(base) COM_FORWARD_IMachine_GETTER_IoCacheSize_TO (base::)
#define COM_FORWARD_IMachine_SETTER_IoCacheSize_TO(smth) NS_IMETHOD SetIoCacheSize (PRUint32 aIoCacheSize) { return smth SetIoCacheSize (aIoCacheSize); }
#define COM_FORWARD_IMachine_SETTER_IoCacheSize_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_IoCacheSize_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_IoCacheSize_TO_BASE(base) COM_FORWARD_IMachine_SETTER_IoCacheSize_TO (base::)
#define COM_FORWARD_IMachine_GETTER_IoBandwidthMax_TO(smth) NS_IMETHOD GetIoBandwidthMax (PRUint32 * aIoBandwidthMax) { return smth GetIoBandwidthMax (aIoBandwidthMax); }
#define COM_FORWARD_IMachine_GETTER_IoBandwidthMax_TO_OBJ(obj) COM_FORWARD_IMachine_GETTER_IoBandwidthMax_TO ((obj)->)
#define COM_FORWARD_IMachine_GETTER_IoBandwidthMax_TO_BASE(base) COM_FORWARD_IMachine_GETTER_IoBandwidthMax_TO (base::)
#define COM_FORWARD_IMachine_SETTER_IoBandwidthMax_TO(smth) NS_IMETHOD SetIoBandwidthMax (PRUint32 aIoBandwidthMax) { return smth SetIoBandwidthMax (aIoBandwidthMax); }
#define COM_FORWARD_IMachine_SETTER_IoBandwidthMax_TO_OBJ(obj) COM_FORWARD_IMachine_SETTER_IoBandwidthMax_TO ((obj)->)
#define COM_FORWARD_IMachine_SETTER_IoBandwidthMax_TO_BASE(base) COM_FORWARD_IMachine_SETTER_IoBandwidthMax_TO (base::)
#define COM_FORWARD_IMachine_SetBootOrder_TO(smth) NS_IMETHOD SetBootOrder (PRUint32 aPosition, PRUint32 aDevice) { return smth SetBootOrder (aPosition, aDevice); }
#define COM_FORWARD_IMachine_SetBootOrder_TO_OBJ(obj) COM_FORWARD_IMachine_SetBootOrder_TO ((obj)->)
#define COM_FORWARD_IMachine_SetBootOrder_TO_BASE(base) COM_FORWARD_IMachine_SetBootOrder_TO (base::)
#define COM_FORWARD_IMachine_GetBootOrder_TO(smth) NS_IMETHOD GetBootOrder (PRUint32 aPosition, PRUint32 * aDevice) { return smth GetBootOrder (aPosition, aDevice); }
#define COM_FORWARD_IMachine_GetBootOrder_TO_OBJ(obj) COM_FORWARD_IMachine_GetBootOrder_TO ((obj)->)
#define COM_FORWARD_IMachine_GetBootOrder_TO_BASE(base) COM_FORWARD_IMachine_GetBootOrder_TO (base::)
#define COM_FORWARD_IMachine_AttachDevice_TO(smth) NS_IMETHOD AttachDevice (PRUnichar * aName, PRInt32 aControllerPort, PRInt32 aDevice, PRUint32 aType, PRUnichar * aId) { return smth AttachDevice (aName, aControllerPort, aDevice, aType, aId); }
#define COM_FORWARD_IMachine_AttachDevice_TO_OBJ(obj) COM_FORWARD_IMachine_AttachDevice_TO ((obj)->)
#define COM_FORWARD_IMachine_AttachDevice_TO_BASE(base) COM_FORWARD_IMachine_AttachDevice_TO (base::)
#define COM_FORWARD_IMachine_DetachDevice_TO(smth) NS_IMETHOD DetachDevice (PRUnichar * aName, PRInt32 aControllerPort, PRInt32 aDevice) { return smth DetachDevice (aName, aControllerPort, aDevice); }
#define COM_FORWARD_IMachine_DetachDevice_TO_OBJ(obj) COM_FORWARD_IMachine_DetachDevice_TO ((obj)->)
#define COM_FORWARD_IMachine_DetachDevice_TO_BASE(base) COM_FORWARD_IMachine_DetachDevice_TO (base::)
#define COM_FORWARD_IMachine_PassthroughDevice_TO(smth) NS_IMETHOD PassthroughDevice (PRUnichar * aName, PRInt32 aControllerPort, PRInt32 aDevice, PRBool aPassthrough) { return smth PassthroughDevice (aName, aControllerPort, aDevice, aPassthrough); }
#define COM_FORWARD_IMachine_PassthroughDevice_TO_OBJ(obj) COM_FORWARD_IMachine_PassthroughDevice_TO ((obj)->)
#define COM_FORWARD_IMachine_PassthroughDevice_TO_BASE(base) COM_FORWARD_IMachine_PassthroughDevice_TO (base::)
#define COM_FORWARD_IMachine_MountMedium_TO(smth) NS_IMETHOD MountMedium (PRUnichar * aName, PRInt32 aControllerPort, PRInt32 aDevice, PRUnichar * aMedium, PRBool aForce) { return smth MountMedium (aName, aControllerPort, aDevice, aMedium, aForce); }
#define COM_FORWARD_IMachine_MountMedium_TO_OBJ(obj) COM_FORWARD_IMachine_MountMedium_TO ((obj)->)
#define COM_FORWARD_IMachine_MountMedium_TO_BASE(base) COM_FORWARD_IMachine_MountMedium_TO (base::)
#define COM_FORWARD_IMachine_GetMedium_TO(smth) NS_IMETHOD GetMedium (PRUnichar * aName, PRInt32 aControllerPort, PRInt32 aDevice, IMedium * * aMedium) { return smth GetMedium (aName, aControllerPort, aDevice, aMedium); }
#define COM_FORWARD_IMachine_GetMedium_TO_OBJ(obj) COM_FORWARD_IMachine_GetMedium_TO ((obj)->)
#define COM_FORWARD_IMachine_GetMedium_TO_BASE(base) COM_FORWARD_IMachine_GetMedium_TO (base::)
#define COM_FORWARD_IMachine_GetMediumAttachmentsOfController_TO(smth) NS_IMETHOD GetMediumAttachmentsOfController (PRUnichar * aName, PRUint32 * aMediumAttachmentsSize, IMediumAttachment * * * aMediumAttachments) { return smth GetMediumAttachmentsOfController (aName, aMediumAttachmentsSize, aMediumAttachments); }
#define COM_FORWARD_IMachine_GetMediumAttachmentsOfController_TO_OBJ(obj) COM_FORWARD_IMachine_GetMediumAttachmentsOfController_TO ((obj)->)
#define COM_FORWARD_IMachine_GetMediumAttachmentsOfController_TO_BASE(base) COM_FORWARD_IMachine_GetMediumAttachmentsOfController_TO (base::)
#define COM_FORWARD_IMachine_GetMediumAttachment_TO(smth) NS_IMETHOD GetMediumAttachment (PRUnichar * aName, PRInt32 aControllerPort, PRInt32 aDevice, IMediumAttachment * * aAttachment) { return smth GetMediumAttachment (aName, aControllerPort, aDevice, aAttachment); }
#define COM_FORWARD_IMachine_GetMediumAttachment_TO_OBJ(obj) COM_FORWARD_IMachine_GetMediumAttachment_TO ((obj)->)
#define COM_FORWARD_IMachine_GetMediumAttachment_TO_BASE(base) COM_FORWARD_IMachine_GetMediumAttachment_TO (base::)
#define COM_FORWARD_IMachine_GetNetworkAdapter_TO(smth) NS_IMETHOD GetNetworkAdapter (PRUint32 aSlot, INetworkAdapter * * aAdapter) { return smth GetNetworkAdapter (aSlot, aAdapter); }
#define COM_FORWARD_IMachine_GetNetworkAdapter_TO_OBJ(obj) COM_FORWARD_IMachine_GetNetworkAdapter_TO ((obj)->)
#define COM_FORWARD_IMachine_GetNetworkAdapter_TO_BASE(base) COM_FORWARD_IMachine_GetNetworkAdapter_TO (base::)
#define COM_FORWARD_IMachine_AddStorageController_TO(smth) NS_IMETHOD AddStorageController (PRUnichar * aName, PRUint32 aConnectionType, IStorageController * * aController) { return smth AddStorageController (aName, aConnectionType, aController); }
#define COM_FORWARD_IMachine_AddStorageController_TO_OBJ(obj) COM_FORWARD_IMachine_AddStorageController_TO ((obj)->)
#define COM_FORWARD_IMachine_AddStorageController_TO_BASE(base) COM_FORWARD_IMachine_AddStorageController_TO (base::)
#define COM_FORWARD_IMachine_GetStorageControllerByName_TO(smth) NS_IMETHOD GetStorageControllerByName (PRUnichar * aName, IStorageController * * aStorageController) { return smth GetStorageControllerByName (aName, aStorageController); }
#define COM_FORWARD_IMachine_GetStorageControllerByName_TO_OBJ(obj) COM_FORWARD_IMachine_GetStorageControllerByName_TO ((obj)->)
#define COM_FORWARD_IMachine_GetStorageControllerByName_TO_BASE(base) COM_FORWARD_IMachine_GetStorageControllerByName_TO (base::)
#define COM_FORWARD_IMachine_GetStorageControllerByInstance_TO(smth) NS_IMETHOD GetStorageControllerByInstance (PRUint32 aInstance, IStorageController * * aStorageController) { return smth GetStorageControllerByInstance (aInstance, aStorageController); }
#define COM_FORWARD_IMachine_GetStorageControllerByInstance_TO_OBJ(obj) COM_FORWARD_IMachine_GetStorageControllerByInstance_TO ((obj)->)
#define COM_FORWARD_IMachine_GetStorageControllerByInstance_TO_BASE(base) COM_FORWARD_IMachine_GetStorageControllerByInstance_TO (base::)
#define COM_FORWARD_IMachine_RemoveStorageController_TO(smth) NS_IMETHOD RemoveStorageController (PRUnichar * aName) { return smth RemoveStorageController (aName); }
#define COM_FORWARD_IMachine_RemoveStorageController_TO_OBJ(obj) COM_FORWARD_IMachine_RemoveStorageController_TO ((obj)->)
#define COM_FORWARD_IMachine_RemoveStorageController_TO_BASE(base) COM_FORWARD_IMachine_RemoveStorageController_TO (base::)
#define COM_FORWARD_IMachine_GetSerialPort_TO(smth) NS_IMETHOD GetSerialPort (PRUint32 aSlot, ISerialPort * * aPort) { return smth GetSerialPort (aSlot, aPort); }
#define COM_FORWARD_IMachine_GetSerialPort_TO_OBJ(obj) COM_FORWARD_IMachine_GetSerialPort_TO ((obj)->)
#define COM_FORWARD_IMachine_GetSerialPort_TO_BASE(base) COM_FORWARD_IMachine_GetSerialPort_TO (base::)
#define COM_FORWARD_IMachine_GetParallelPort_TO(smth) NS_IMETHOD GetParallelPort (PRUint32 aSlot, IParallelPort * * aPort) { return smth GetParallelPort (aSlot, aPort); }
#define COM_FORWARD_IMachine_GetParallelPort_TO_OBJ(obj) COM_FORWARD_IMachine_GetParallelPort_TO ((obj)->)
#define COM_FORWARD_IMachine_GetParallelPort_TO_BASE(base) COM_FORWARD_IMachine_GetParallelPort_TO (base::)
#define COM_FORWARD_IMachine_GetExtraDataKeys_TO(smth) NS_IMETHOD GetExtraDataKeys (PRUint32 * aValueSize, PRUnichar * * * aValue) { return smth GetExtraDataKeys (aValueSize, aValue); }
#define COM_FORWARD_IMachine_GetExtraDataKeys_TO_OBJ(obj) COM_FORWARD_IMachine_GetExtraDataKeys_TO ((obj)->)
#define COM_FORWARD_IMachine_GetExtraDataKeys_TO_BASE(base) COM_FORWARD_IMachine_GetExtraDataKeys_TO (base::)
#define COM_FORWARD_IMachine_GetExtraData_TO(smth) NS_IMETHOD GetExtraData (PRUnichar * aKey, PRUnichar * * aValue) { return smth GetExtraData (aKey, aValue); }
#define COM_FORWARD_IMachine_GetExtraData_TO_OBJ(obj) COM_FORWARD_IMachine_GetExtraData_TO ((obj)->)
#define COM_FORWARD_IMachine_GetExtraData_TO_BASE(base) COM_FORWARD_IMachine_GetExtraData_TO (base::)
#define COM_FORWARD_IMachine_SetExtraData_TO(smth) NS_IMETHOD SetExtraData (PRUnichar * aKey, PRUnichar * aValue) { return smth SetExtraData (aKey, aValue); }
#define COM_FORWARD_IMachine_SetExtraData_TO_OBJ(obj) COM_FORWARD_IMachine_SetExtraData_TO ((obj)->)
#define COM_FORWARD_IMachine_SetExtraData_TO_BASE(base) COM_FORWARD_IMachine_SetExtraData_TO (base::)
#define COM_FORWARD_IMachine_GetCPUProperty_TO(smth) NS_IMETHOD GetCPUProperty (PRUint32 aProperty, PRBool * aValue) { return smth GetCPUProperty (aProperty, aValue); }
#define COM_FORWARD_IMachine_GetCPUProperty_TO_OBJ(obj) COM_FORWARD_IMachine_GetCPUProperty_TO ((obj)->)
#define COM_FORWARD_IMachine_GetCPUProperty_TO_BASE(base) COM_FORWARD_IMachine_GetCPUProperty_TO (base::)
#define COM_FORWARD_IMachine_SetCPUProperty_TO(smth) NS_IMETHOD SetCPUProperty (PRUint32 aProperty, PRBool aValue) { return smth SetCPUProperty (aProperty, aValue); }
#define COM_FORWARD_IMachine_SetCPUProperty_TO_OBJ(obj) COM_FORWARD_IMachine_SetCPUProperty_TO ((obj)->)
#define COM_FORWARD_IMachine_SetCPUProperty_TO_BASE(base) COM_FORWARD_IMachine_SetCPUProperty_TO (base::)
#define COM_FORWARD_IMachine_GetCPUIDLeaf_TO(smth) NS_IMETHOD GetCPUIDLeaf (PRUint32 aId, PRUint32 * aValEax, PRUint32 * aValEbx, PRUint32 * aValEcx, PRUint32 * aValEdx) { return smth GetCPUIDLeaf (aId, aValEax, aValEbx, aValEcx, aValEdx); }
#define COM_FORWARD_IMachine_GetCPUIDLeaf_TO_OBJ(obj) COM_FORWARD_IMachine_GetCPUIDLeaf_TO ((obj)->)
#define COM_FORWARD_IMachine_GetCPUIDLeaf_TO_BASE(base) COM_FORWARD_IMachine_GetCPUIDLeaf_TO (base::)
#define COM_FORWARD_IMachine_SetCPUIDLeaf_TO(smth) NS_IMETHOD SetCPUIDLeaf (PRUint32 aId, PRUint32 aValEax, PRUint32 aValEbx, PRUint32 aValEcx, PRUint32 aValEdx) { return smth SetCPUIDLeaf (aId, aValEax, aValEbx, aValEcx, aValEdx); }
#define COM_FORWARD_IMachine_SetCPUIDLeaf_TO_OBJ(obj) COM_FORWARD_IMachine_SetCPUIDLeaf_TO ((obj)->)
#define COM_FORWARD_IMachine_SetCPUIDLeaf_TO_BASE(base) COM_FORWARD_IMachine_SetCPUIDLeaf_TO (base::)
#define COM_FORWARD_IMachine_RemoveCPUIDLeaf_TO(smth) NS_IMETHOD RemoveCPUIDLeaf (PRUint32 aId) { return smth RemoveCPUIDLeaf (aId); }
#define COM_FORWARD_IMachine_RemoveCPUIDLeaf_TO_OBJ(obj) COM_FORWARD_IMachine_RemoveCPUIDLeaf_TO ((obj)->)
#define COM_FORWARD_IMachine_RemoveCPUIDLeaf_TO_BASE(base) COM_FORWARD_IMachine_RemoveCPUIDLeaf_TO (base::)
#define COM_FORWARD_IMachine_RemoveAllCPUIDLeaves_TO(smth) NS_IMETHOD RemoveAllCPUIDLeaves() { return smth RemoveAllCPUIDLeaves(); }
#define COM_FORWARD_IMachine_RemoveAllCPUIDLeaves_TO_OBJ(obj) COM_FORWARD_IMachine_RemoveAllCPUIDLeaves_TO ((obj)->)
#define COM_FORWARD_IMachine_RemoveAllCPUIDLeaves_TO_BASE(base) COM_FORWARD_IMachine_RemoveAllCPUIDLeaves_TO (base::)
#define COM_FORWARD_IMachine_GetHWVirtExProperty_TO(smth) NS_IMETHOD GetHWVirtExProperty (PRUint32 aProperty, PRBool * aValue) { return smth GetHWVirtExProperty (aProperty, aValue); }
#define COM_FORWARD_IMachine_GetHWVirtExProperty_TO_OBJ(obj) COM_FORWARD_IMachine_GetHWVirtExProperty_TO ((obj)->)
#define COM_FORWARD_IMachine_GetHWVirtExProperty_TO_BASE(base) COM_FORWARD_IMachine_GetHWVirtExProperty_TO (base::)
#define COM_FORWARD_IMachine_SetHWVirtExProperty_TO(smth) NS_IMETHOD SetHWVirtExProperty (PRUint32 aProperty, PRBool aValue) { return smth SetHWVirtExProperty (aProperty, aValue); }
#define COM_FORWARD_IMachine_SetHWVirtExProperty_TO_OBJ(obj) COM_FORWARD_IMachine_SetHWVirtExProperty_TO ((obj)->)
#define COM_FORWARD_IMachine_SetHWVirtExProperty_TO_BASE(base) COM_FORWARD_IMachine_SetHWVirtExProperty_TO (base::)
#define COM_FORWARD_IMachine_SaveSettings_TO(smth) NS_IMETHOD SaveSettings() { return smth SaveSettings(); }
#define COM_FORWARD_IMachine_SaveSettings_TO_OBJ(obj) COM_FORWARD_IMachine_SaveSettings_TO ((obj)->)
#define COM_FORWARD_IMachine_SaveSettings_TO_BASE(base) COM_FORWARD_IMachine_SaveSettings_TO (base::)
#define COM_FORWARD_IMachine_DiscardSettings_TO(smth) NS_IMETHOD DiscardSettings() { return smth DiscardSettings(); }
#define COM_FORWARD_IMachine_DiscardSettings_TO_OBJ(obj) COM_FORWARD_IMachine_DiscardSettings_TO ((obj)->)
#define COM_FORWARD_IMachine_DiscardSettings_TO_BASE(base) COM_FORWARD_IMachine_DiscardSettings_TO (base::)
#define COM_FORWARD_IMachine_DeleteSettings_TO(smth) NS_IMETHOD DeleteSettings() { return smth DeleteSettings(); }
#define COM_FORWARD_IMachine_DeleteSettings_TO_OBJ(obj) COM_FORWARD_IMachine_DeleteSettings_TO ((obj)->)
#define COM_FORWARD_IMachine_DeleteSettings_TO_BASE(base) COM_FORWARD_IMachine_DeleteSettings_TO (base::)
#define COM_FORWARD_IMachine_Export_TO(smth) NS_IMETHOD Export (IAppliance * aAAppliance, IVirtualSystemDescription * * aADescription) { return smth Export (aAAppliance, aADescription); }
#define COM_FORWARD_IMachine_Export_TO_OBJ(obj) COM_FORWARD_IMachine_Export_TO ((obj)->)
#define COM_FORWARD_IMachine_Export_TO_BASE(base) COM_FORWARD_IMachine_Export_TO (base::)
#define COM_FORWARD_IMachine_GetSnapshot_TO(smth) NS_IMETHOD GetSnapshot (PRUnichar * aId, ISnapshot * * aSnapshot) { return smth GetSnapshot (aId, aSnapshot); }
#define COM_FORWARD_IMachine_GetSnapshot_TO_OBJ(obj) COM_FORWARD_IMachine_GetSnapshot_TO ((obj)->)
#define COM_FORWARD_IMachine_GetSnapshot_TO_BASE(base) COM_FORWARD_IMachine_GetSnapshot_TO (base::)
#define COM_FORWARD_IMachine_FindSnapshot_TO(smth) NS_IMETHOD FindSnapshot (PRUnichar * aName, ISnapshot * * aSnapshot) { return smth FindSnapshot (aName, aSnapshot); }
#define COM_FORWARD_IMachine_FindSnapshot_TO_OBJ(obj) COM_FORWARD_IMachine_FindSnapshot_TO ((obj)->)
#define COM_FORWARD_IMachine_FindSnapshot_TO_BASE(base) COM_FORWARD_IMachine_FindSnapshot_TO (base::)
#define COM_FORWARD_IMachine_SetCurrentSnapshot_TO(smth) NS_IMETHOD SetCurrentSnapshot (PRUnichar * aId) { return smth SetCurrentSnapshot (aId); }
#define COM_FORWARD_IMachine_SetCurrentSnapshot_TO_OBJ(obj) COM_FORWARD_IMachine_SetCurrentSnapshot_TO ((obj)->)
#define COM_FORWARD_IMachine_SetCurrentSnapshot_TO_BASE(base) COM_FORWARD_IMachine_SetCurrentSnapshot_TO (base::)
#define COM_FORWARD_IMachine_CreateSharedFolder_TO(smth) NS_IMETHOD CreateSharedFolder (PRUnichar * aName, PRUnichar * aHostPath, PRBool aWritable) { return smth CreateSharedFolder (aName, aHostPath, aWritable); }
#define COM_FORWARD_IMachine_CreateSharedFolder_TO_OBJ(obj) COM_FORWARD_IMachine_CreateSharedFolder_TO ((obj)->)
#define COM_FORWARD_IMachine_CreateSharedFolder_TO_BASE(base) COM_FORWARD_IMachine_CreateSharedFolder_TO (base::)
#define COM_FORWARD_IMachine_RemoveSharedFolder_TO(smth) NS_IMETHOD RemoveSharedFolder (PRUnichar * aName) { return smth RemoveSharedFolder (aName); }
#define COM_FORWARD_IMachine_RemoveSharedFolder_TO_OBJ(obj) COM_FORWARD_IMachine_RemoveSharedFolder_TO ((obj)->)
#define COM_FORWARD_IMachine_RemoveSharedFolder_TO_BASE(base) COM_FORWARD_IMachine_RemoveSharedFolder_TO (base::)
#define COM_FORWARD_IMachine_CanShowConsoleWindow_TO(smth) NS_IMETHOD CanShowConsoleWindow (PRBool * aCanShow) { return smth CanShowConsoleWindow (aCanShow); }
#define COM_FORWARD_IMachine_CanShowConsoleWindow_TO_OBJ(obj) COM_FORWARD_IMachine_CanShowConsoleWindow_TO ((obj)->)
#define COM_FORWARD_IMachine_CanShowConsoleWindow_TO_BASE(base) COM_FORWARD_IMachine_CanShowConsoleWindow_TO (base::)
#define COM_FORWARD_IMachine_ShowConsoleWindow_TO(smth) NS_IMETHOD ShowConsoleWindow (PRUint64 * aWinId) { return smth ShowConsoleWindow (aWinId); }
#define COM_FORWARD_IMachine_ShowConsoleWindow_TO_OBJ(obj) COM_FORWARD_IMachine_ShowConsoleWindow_TO ((obj)->)
#define COM_FORWARD_IMachine_ShowConsoleWindow_TO_BASE(base) COM_FORWARD_IMachine_ShowConsoleWindow_TO (base::)
#define COM_FORWARD_IMachine_GetGuestProperty_TO(smth) NS_IMETHOD GetGuestProperty (PRUnichar * aName, PRUnichar * * aValue, PRUint64 * aTimestamp, PRUnichar * * aFlags) { return smth GetGuestProperty (aName, aValue, aTimestamp, aFlags); }
#define COM_FORWARD_IMachine_GetGuestProperty_TO_OBJ(obj) COM_FORWARD_IMachine_GetGuestProperty_TO ((obj)->)
#define COM_FORWARD_IMachine_GetGuestProperty_TO_BASE(base) COM_FORWARD_IMachine_GetGuestProperty_TO (base::)
#define COM_FORWARD_IMachine_GetGuestPropertyValue_TO(smth) NS_IMETHOD GetGuestPropertyValue (PRUnichar * aProperty, PRUnichar * * aValue) { return smth GetGuestPropertyValue (aProperty, aValue); }
#define COM_FORWARD_IMachine_GetGuestPropertyValue_TO_OBJ(obj) COM_FORWARD_IMachine_GetGuestPropertyValue_TO ((obj)->)
#define COM_FORWARD_IMachine_GetGuestPropertyValue_TO_BASE(base) COM_FORWARD_IMachine_GetGuestPropertyValue_TO (base::)
#define COM_FORWARD_IMachine_GetGuestPropertyTimestamp_TO(smth) NS_IMETHOD GetGuestPropertyTimestamp (PRUnichar * aProperty, PRUint64 * aValue) { return smth GetGuestPropertyTimestamp (aProperty, aValue); }
#define COM_FORWARD_IMachine_GetGuestPropertyTimestamp_TO_OBJ(obj) COM_FORWARD_IMachine_GetGuestPropertyTimestamp_TO ((obj)->)
#define COM_FORWARD_IMachine_GetGuestPropertyTimestamp_TO_BASE(base) COM_FORWARD_IMachine_GetGuestPropertyTimestamp_TO (base::)
#define COM_FORWARD_IMachine_SetGuestProperty_TO(smth) NS_IMETHOD SetGuestProperty (PRUnichar * aProperty, PRUnichar * aValue, PRUnichar * aFlags) { return smth SetGuestProperty (aProperty, aValue, aFlags); }
#define COM_FORWARD_IMachine_SetGuestProperty_TO_OBJ(obj) COM_FORWARD_IMachine_SetGuestProperty_TO ((obj)->)
#define COM_FORWARD_IMachine_SetGuestProperty_TO_BASE(base) COM_FORWARD_IMachine_SetGuestProperty_TO (base::)
#define COM_FORWARD_IMachine_SetGuestPropertyValue_TO(smth) NS_IMETHOD SetGuestPropertyValue (PRUnichar * aProperty, PRUnichar * aValue) { return smth SetGuestPropertyValue (aProperty, aValue); }
#define COM_FORWARD_IMachine_SetGuestPropertyValue_TO_OBJ(obj) COM_FORWARD_IMachine_SetGuestPropertyValue_TO ((obj)->)
#define COM_FORWARD_IMachine_SetGuestPropertyValue_TO_BASE(base) COM_FORWARD_IMachine_SetGuestPropertyValue_TO (base::)
#define COM_FORWARD_IMachine_EnumerateGuestProperties_TO(smth) NS_IMETHOD EnumerateGuestProperties (PRUnichar * aPatterns, PRUint32 * aNameSize, PRUnichar * * * aName, PRUint32 * aValueSize, PRUnichar * * * aValue, PRUint32 * aTimestampSize, PRUint64 * * aTimestamp, PRUint32 * aFlagsSize, PRUnichar * * * aFlags) { return smth EnumerateGuestProperties (aPatterns, aNameSize+++, aName, aValueSize+++, aValue, aTimestampSize+++, aTimestamp, aFlagsSize, aFlags); }
#define COM_FORWARD_IMachine_EnumerateGuestProperties_TO_OBJ(obj) COM_FORWARD_IMachine_EnumerateGuestProperties_TO ((obj)->)
#define COM_FORWARD_IMachine_EnumerateGuestProperties_TO_BASE(base) COM_FORWARD_IMachine_EnumerateGuestProperties_TO (base::)
#define COM_FORWARD_IMachine_QuerySavedThumbnailSize_TO(smth) NS_IMETHOD QuerySavedThumbnailSize (PRUint32 aScreenId, PRUint32 * aSize, PRUint32 * aWidth, PRUint32 * aHeight) { return smth QuerySavedThumbnailSize (aScreenId, aSize, aWidth, aHeight); }
#define COM_FORWARD_IMachine_QuerySavedThumbnailSize_TO_OBJ(obj) COM_FORWARD_IMachine_QuerySavedThumbnailSize_TO ((obj)->)
#define COM_FORWARD_IMachine_QuerySavedThumbnailSize_TO_BASE(base) COM_FORWARD_IMachine_QuerySavedThumbnailSize_TO (base::)
#define COM_FORWARD_IMachine_ReadSavedThumbnailToArray_TO(smth) NS_IMETHOD ReadSavedThumbnailToArray (PRUint32 aScreenId, PRBool aBGR, PRUint32 * aWidth, PRUint32 * aHeight, PRUint32 * aDataSize, PRUint8 * * aData) { return smth ReadSavedThumbnailToArray (aScreenId, aBGR, aWidth, aHeight, aDataSize, aData); }
#define COM_FORWARD_IMachine_ReadSavedThumbnailToArray_TO_OBJ(obj) COM_FORWARD_IMachine_ReadSavedThumbnailToArray_TO ((obj)->)
#define COM_FORWARD_IMachine_ReadSavedThumbnailToArray_TO_BASE(base) COM_FORWARD_IMachine_ReadSavedThumbnailToArray_TO (base::)
#define COM_FORWARD_IMachine_QuerySavedScreenshotPNGSize_TO(smth) NS_IMETHOD QuerySavedScreenshotPNGSize (PRUint32 aScreenId, PRUint32 * aSize, PRUint32 * aWidth, PRUint32 * aHeight) { return smth QuerySavedScreenshotPNGSize (aScreenId, aSize, aWidth, aHeight); }
#define COM_FORWARD_IMachine_QuerySavedScreenshotPNGSize_TO_OBJ(obj) COM_FORWARD_IMachine_QuerySavedScreenshotPNGSize_TO ((obj)->)
#define COM_FORWARD_IMachine_QuerySavedScreenshotPNGSize_TO_BASE(base) COM_FORWARD_IMachine_QuerySavedScreenshotPNGSize_TO (base::)
#define COM_FORWARD_IMachine_ReadSavedScreenshotPNGToArray_TO(smth) NS_IMETHOD ReadSavedScreenshotPNGToArray (PRUint32 aScreenId, PRUint32 * aWidth, PRUint32 * aHeight, PRUint32 * aDataSize, PRUint8 * * aData) { return smth ReadSavedScreenshotPNGToArray (aScreenId, aWidth, aHeight, aDataSize, aData); }
#define COM_FORWARD_IMachine_ReadSavedScreenshotPNGToArray_TO_OBJ(obj) COM_FORWARD_IMachine_ReadSavedScreenshotPNGToArray_TO ((obj)->)
#define COM_FORWARD_IMachine_ReadSavedScreenshotPNGToArray_TO_BASE(base) COM_FORWARD_IMachine_ReadSavedScreenshotPNGToArray_TO (base::)
#define COM_FORWARD_IMachine_HotPlugCPU_TO(smth) NS_IMETHOD HotPlugCPU (PRUint32 aCpu) { return smth HotPlugCPU (aCpu); }
#define COM_FORWARD_IMachine_HotPlugCPU_TO_OBJ(obj) COM_FORWARD_IMachine_HotPlugCPU_TO ((obj)->)
#define COM_FORWARD_IMachine_HotPlugCPU_TO_BASE(base) COM_FORWARD_IMachine_HotPlugCPU_TO (base::)
#define COM_FORWARD_IMachine_HotUnplugCPU_TO(smth) NS_IMETHOD HotUnplugCPU (PRUint32 aCpu) { return smth HotUnplugCPU (aCpu); }
#define COM_FORWARD_IMachine_HotUnplugCPU_TO_OBJ(obj) COM_FORWARD_IMachine_HotUnplugCPU_TO ((obj)->)
#define COM_FORWARD_IMachine_HotUnplugCPU_TO_BASE(base) COM_FORWARD_IMachine_HotUnplugCPU_TO (base::)
#define COM_FORWARD_IMachine_GetCPUStatus_TO(smth) NS_IMETHOD GetCPUStatus (PRUint32 aCpu, PRBool * aAttached) { return smth GetCPUStatus (aCpu, aAttached); }
#define COM_FORWARD_IMachine_GetCPUStatus_TO_OBJ(obj) COM_FORWARD_IMachine_GetCPUStatus_TO ((obj)->)
#define COM_FORWARD_IMachine_GetCPUStatus_TO_BASE(base) COM_FORWARD_IMachine_GetCPUStatus_TO (base::)
#define COM_FORWARD_IMachine_QueryLogFilename_TO(smth) NS_IMETHOD QueryLogFilename (PRUint32 aIdx, PRUnichar * * aFilename) { return smth QueryLogFilename (aIdx, aFilename); }
#define COM_FORWARD_IMachine_QueryLogFilename_TO_OBJ(obj) COM_FORWARD_IMachine_QueryLogFilename_TO ((obj)->)
#define COM_FORWARD_IMachine_QueryLogFilename_TO_BASE(base) COM_FORWARD_IMachine_QueryLogFilename_TO (base::)
#define COM_FORWARD_IMachine_ReadLog_TO(smth) NS_IMETHOD ReadLog (PRUint32 aIdx, PRUint64 aOffset, PRUint64 aSize, PRUint32 * aDataSize, PRUint8 * * aData) { return smth ReadLog (aIdx, aOffset, aSize, aDataSize, aData); }
#define COM_FORWARD_IMachine_ReadLog_TO_OBJ(obj) COM_FORWARD_IMachine_ReadLog_TO ((obj)->)
#define COM_FORWARD_IMachine_ReadLog_TO_BASE(base) COM_FORWARD_IMachine_ReadLog_TO (base::)
#define COM_FORWARD_IMachine_TO(smth) NS_FORWARD_IMACHINE (smth)
#define COM_FORWARD_IMachine_TO_OBJ(obj) COM_FORWARD_IMachine_TO ((obj)->)
#define COM_FORWARD_IMachine_TO_BASE(base) COM_FORWARD_IMachine_TO (base::)

/* starting interface:    IConsoleCallback */
#define ICONSOLECALLBACK_IID_STR "60703f8d-81e4-4b45-a147-dcfd07692b19"

#define ICONSOLECALLBACK_IID \
  {0x60703f8d, 0x81e4, 0x4b45, \
    { 0xa1, 0x47, 0xdc, 0xfd, 0x07, 0x69, 0x2b, 0x19 }}

class NS_NO_VTABLE IConsoleCallback : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ICONSOLECALLBACK_IID)

  /* 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 unsigned long shapeSize, [array, size_is (shapeSize)] in octet shape); */
  NS_IMETHOD OnMousePointerShapeChange(PRBool visible, PRBool alpha, PRUint32 xHot, PRUint32 yHot, PRUint32 width, PRUint32 height, PRUint32 shapeSize, PRUint8 *shape) = 0;

  /* void onMouseCapabilityChange (in boolean supportsAbsolute, in boolean supportsRelative, in boolean needsHostCursor); */
  NS_IMETHOD OnMouseCapabilityChange(PRBool supportsAbsolute, PRBool supportsRelative, 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 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 onStorageControllerChange (); */
  NS_IMETHOD OnStorageControllerChange(void) = 0;

  /* void onMediumChange (in IMediumAttachment mediumAttachment); */
  NS_IMETHOD OnMediumChange(IMediumAttachment *mediumAttachment) = 0;

  /* void onCPUChange (in unsigned long cpu, in boolean add); */
  NS_IMETHOD OnCPUChange(PRUint32 cpu, PRBool add) = 0;

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

  /* void onRemoteDisplayInfoChange (); */
  NS_IMETHOD OnRemoteDisplayInfoChange(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, PRUint32 shapeSize, PRUint8 *shape); \
  NS_IMETHOD OnMouseCapabilityChange(PRBool supportsAbsolute, PRBool supportsRelative, PRBool needsHostCursor); \
  NS_IMETHOD OnKeyboardLedsChange(PRBool numLock, PRBool capsLock, PRBool scrollLock); \
  NS_IMETHOD OnStateChange(PRUint32 state); \
  NS_IMETHOD OnAdditionsStateChange(void); \
  NS_IMETHOD OnNetworkAdapterChange(INetworkAdapter *networkAdapter); \
  NS_IMETHOD OnSerialPortChange(ISerialPort *serialPort); \
  NS_IMETHOD OnParallelPortChange(IParallelPort *parallelPort); \
  NS_IMETHOD OnStorageControllerChange(void); \
  NS_IMETHOD OnMediumChange(IMediumAttachment *mediumAttachment); \
  NS_IMETHOD OnCPUChange(PRUint32 cpu, PRBool add); \
  NS_IMETHOD OnVRDPServerChange(void); \
  NS_IMETHOD OnRemoteDisplayInfoChange(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, PRUint32 shapeSize, PRUint8 *shape) { return _to OnMousePointerShapeChange(visible, alpha, xHot, yHot, width, height, shapeSize, shape); } \
  NS_IMETHOD OnMouseCapabilityChange(PRBool supportsAbsolute, PRBool supportsRelative, PRBool needsHostCursor) { return _to OnMouseCapabilityChange(supportsAbsolute, supportsRelative, 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 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 OnStorageControllerChange(void) { return _to OnStorageControllerChange(); } \
  NS_IMETHOD OnMediumChange(IMediumAttachment *mediumAttachment) { return _to OnMediumChange(mediumAttachment); } \
  NS_IMETHOD OnCPUChange(PRUint32 cpu, PRBool add) { return _to OnCPUChange(cpu, add); } \
  NS_IMETHOD OnVRDPServerChange(void) { return _to OnVRDPServerChange(); } \
  NS_IMETHOD OnRemoteDisplayInfoChange(void) { return _to OnRemoteDisplayInfoChange(); } \
  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, PRUint32 shapeSize, PRUint8 *shape) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnMousePointerShapeChange(visible, alpha, xHot, yHot, width, height, shapeSize, shape); } \
  NS_IMETHOD OnMouseCapabilityChange(PRBool supportsAbsolute, PRBool supportsRelative, PRBool needsHostCursor) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnMouseCapabilityChange(supportsAbsolute, supportsRelative, 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 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 OnStorageControllerChange(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnStorageControllerChange(); } \
  NS_IMETHOD OnMediumChange(IMediumAttachment *mediumAttachment) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnMediumChange(mediumAttachment); } \
  NS_IMETHOD OnCPUChange(PRUint32 cpu, PRBool add) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnCPUChange(cpu, add); } \
  NS_IMETHOD OnVRDPServerChange(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnVRDPServerChange(); } \
  NS_IMETHOD OnRemoteDisplayInfoChange(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnRemoteDisplayInfoChange(); } \
  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 */
}

/* 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 unsigned long shapeSize, [array, size_is (shapeSize)] in octet shape); */
NS_IMETHODIMP _MYCLASS_::OnMousePointerShapeChange(PRBool visible, PRBool alpha, PRUint32 xHot, PRUint32 yHot, PRUint32 width, PRUint32 height, PRUint32 shapeSize, PRUint8 *shape)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onMouseCapabilityChange (in boolean supportsAbsolute, in boolean supportsRelative, in boolean needsHostCursor); */
NS_IMETHODIMP _MYCLASS_::OnMouseCapabilityChange(PRBool supportsAbsolute, PRBool supportsRelative, 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 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 onStorageControllerChange (); */
NS_IMETHODIMP _MYCLASS_::OnStorageControllerChange()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onMediumChange (in IMediumAttachment mediumAttachment); */
NS_IMETHODIMP _MYCLASS_::OnMediumChange(IMediumAttachment *mediumAttachment)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onCPUChange (in unsigned long cpu, in boolean add); */
NS_IMETHODIMP _MYCLASS_::OnCPUChange(PRUint32 cpu, PRBool add)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onVRDPServerChange (); */
NS_IMETHODIMP _MYCLASS_::OnVRDPServerChange()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onRemoteDisplayInfoChange (); */
NS_IMETHODIMP _MYCLASS_::OnRemoteDisplayInfoChange()
{
    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

#define COM_FORWARD_IConsoleCallback_OnMousePointerShapeChange_TO(smth) NS_IMETHOD OnMousePointerShapeChange (PRBool aVisible, PRBool aAlpha, PRUint32 aXHot, PRUint32 aYHot, PRUint32 aWidth, PRUint32 aHeight, PRUint32 aShapeSize, PRUint8 * aShape) { return smth OnMousePointerShapeChange (aVisible, aAlpha, aXHot, aYHot, aWidth, aHeight, aShapeSize, aShape); }
#define COM_FORWARD_IConsoleCallback_OnMousePointerShapeChange_TO_OBJ(obj) COM_FORWARD_IConsoleCallback_OnMousePointerShapeChange_TO ((obj)->)
#define COM_FORWARD_IConsoleCallback_OnMousePointerShapeChange_TO_BASE(base) COM_FORWARD_IConsoleCallback_OnMousePointerShapeChange_TO (base::)
#define COM_FORWARD_IConsoleCallback_OnMouseCapabilityChange_TO(smth) NS_IMETHOD OnMouseCapabilityChange (PRBool aSupportsAbsolute, PRBool aSupportsRelative, PRBool aNeedsHostCursor) { return smth OnMouseCapabilityChange (aSupportsAbsolute, aSupportsRelative, aNeedsHostCursor); }
#define COM_FORWARD_IConsoleCallback_OnMouseCapabilityChange_TO_OBJ(obj) COM_FORWARD_IConsoleCallback_OnMouseCapabilityChange_TO ((obj)->)
#define COM_FORWARD_IConsoleCallback_OnMouseCapabilityChange_TO_BASE(base) COM_FORWARD_IConsoleCallback_OnMouseCapabilityChange_TO (base::)
#define COM_FORWARD_IConsoleCallback_OnKeyboardLedsChange_TO(smth) NS_IMETHOD OnKeyboardLedsChange (PRBool aNumLock, PRBool aCapsLock, PRBool aScrollLock) { return smth OnKeyboardLedsChange (aNumLock, aCapsLock, aScrollLock); }
#define COM_FORWARD_IConsoleCallback_OnKeyboardLedsChange_TO_OBJ(obj) COM_FORWARD_IConsoleCallback_OnKeyboardLedsChange_TO ((obj)->)
#define COM_FORWARD_IConsoleCallback_OnKeyboardLedsChange_TO_BASE(base) COM_FORWARD_IConsoleCallback_OnKeyboardLedsChange_TO (base::)
#define COM_FORWARD_IConsoleCallback_OnStateChange_TO(smth) NS_IMETHOD OnStateChange (PRUint32 aState) { return smth OnStateChange (aState); }
#define COM_FORWARD_IConsoleCallback_OnStateChange_TO_OBJ(obj) COM_FORWARD_IConsoleCallback_OnStateChange_TO ((obj)->)
#define COM_FORWARD_IConsoleCallback_OnStateChange_TO_BASE(base) COM_FORWARD_IConsoleCallback_OnStateChange_TO (base::)
#define COM_FORWARD_IConsoleCallback_OnAdditionsStateChange_TO(smth) NS_IMETHOD OnAdditionsStateChange() { return smth OnAdditionsStateChange(); }
#define COM_FORWARD_IConsoleCallback_OnAdditionsStateChange_TO_OBJ(obj) COM_FORWARD_IConsoleCallback_OnAdditionsStateChange_TO ((obj)->)
#define COM_FORWARD_IConsoleCallback_OnAdditionsStateChange_TO_BASE(base) COM_FORWARD_IConsoleCallback_OnAdditionsStateChange_TO (base::)
#define COM_FORWARD_IConsoleCallback_OnNetworkAdapterChange_TO(smth) NS_IMETHOD OnNetworkAdapterChange (INetworkAdapter * aNetworkAdapter) { return smth OnNetworkAdapterChange (aNetworkAdapter); }
#define COM_FORWARD_IConsoleCallback_OnNetworkAdapterChange_TO_OBJ(obj) COM_FORWARD_IConsoleCallback_OnNetworkAdapterChange_TO ((obj)->)
#define COM_FORWARD_IConsoleCallback_OnNetworkAdapterChange_TO_BASE(base) COM_FORWARD_IConsoleCallback_OnNetworkAdapterChange_TO (base::)
#define COM_FORWARD_IConsoleCallback_OnSerialPortChange_TO(smth) NS_IMETHOD OnSerialPortChange (ISerialPort * aSerialPort) { return smth OnSerialPortChange (aSerialPort); }
#define COM_FORWARD_IConsoleCallback_OnSerialPortChange_TO_OBJ(obj) COM_FORWARD_IConsoleCallback_OnSerialPortChange_TO ((obj)->)
#define COM_FORWARD_IConsoleCallback_OnSerialPortChange_TO_BASE(base) COM_FORWARD_IConsoleCallback_OnSerialPortChange_TO (base::)
#define COM_FORWARD_IConsoleCallback_OnParallelPortChange_TO(smth) NS_IMETHOD OnParallelPortChange (IParallelPort * aParallelPort) { return smth OnParallelPortChange (aParallelPort); }
#define COM_FORWARD_IConsoleCallback_OnParallelPortChange_TO_OBJ(obj) COM_FORWARD_IConsoleCallback_OnParallelPortChange_TO ((obj)->)
#define COM_FORWARD_IConsoleCallback_OnParallelPortChange_TO_BASE(base) COM_FORWARD_IConsoleCallback_OnParallelPortChange_TO (base::)
#define COM_FORWARD_IConsoleCallback_OnStorageControllerChange_TO(smth) NS_IMETHOD OnStorageControllerChange() { return smth OnStorageControllerChange(); }
#define COM_FORWARD_IConsoleCallback_OnStorageControllerChange_TO_OBJ(obj) COM_FORWARD_IConsoleCallback_OnStorageControllerChange_TO ((obj)->)
#define COM_FORWARD_IConsoleCallback_OnStorageControllerChange_TO_BASE(base) COM_FORWARD_IConsoleCallback_OnStorageControllerChange_TO (base::)
#define COM_FORWARD_IConsoleCallback_OnMediumChange_TO(smth) NS_IMETHOD OnMediumChange (IMediumAttachment * aMediumAttachment) { return smth OnMediumChange (aMediumAttachment); }
#define COM_FORWARD_IConsoleCallback_OnMediumChange_TO_OBJ(obj) COM_FORWARD_IConsoleCallback_OnMediumChange_TO ((obj)->)
#define COM_FORWARD_IConsoleCallback_OnMediumChange_TO_BASE(base) COM_FORWARD_IConsoleCallback_OnMediumChange_TO (base::)
#define COM_FORWARD_IConsoleCallback_OnCPUChange_TO(smth) NS_IMETHOD OnCPUChange (PRUint32 aCpu, PRBool aAdd) { return smth OnCPUChange (aCpu, aAdd); }
#define COM_FORWARD_IConsoleCallback_OnCPUChange_TO_OBJ(obj) COM_FORWARD_IConsoleCallback_OnCPUChange_TO ((obj)->)
#define COM_FORWARD_IConsoleCallback_OnCPUChange_TO_BASE(base) COM_FORWARD_IConsoleCallback_OnCPUChange_TO (base::)
#define COM_FORWARD_IConsoleCallback_OnVRDPServerChange_TO(smth) NS_IMETHOD OnVRDPServerChange() { return smth OnVRDPServerChange(); }
#define COM_FORWARD_IConsoleCallback_OnVRDPServerChange_TO_OBJ(obj) COM_FORWARD_IConsoleCallback_OnVRDPServerChange_TO ((obj)->)
#define COM_FORWARD_IConsoleCallback_OnVRDPServerChange_TO_BASE(base) COM_FORWARD_IConsoleCallback_OnVRDPServerChange_TO (base::)
#define COM_FORWARD_IConsoleCallback_OnRemoteDisplayInfoChange_TO(smth) NS_IMETHOD OnRemoteDisplayInfoChange() { return smth OnRemoteDisplayInfoChange(); }
#define COM_FORWARD_IConsoleCallback_OnRemoteDisplayInfoChange_TO_OBJ(obj) COM_FORWARD_IConsoleCallback_OnRemoteDisplayInfoChange_TO ((obj)->)
#define COM_FORWARD_IConsoleCallback_OnRemoteDisplayInfoChange_TO_BASE(base) COM_FORWARD_IConsoleCallback_OnRemoteDisplayInfoChange_TO (base::)
#define COM_FORWARD_IConsoleCallback_OnUSBControllerChange_TO(smth) NS_IMETHOD OnUSBControllerChange() { return smth OnUSBControllerChange(); }
#define COM_FORWARD_IConsoleCallback_OnUSBControllerChange_TO_OBJ(obj) COM_FORWARD_IConsoleCallback_OnUSBControllerChange_TO ((obj)->)
#define COM_FORWARD_IConsoleCallback_OnUSBControllerChange_TO_BASE(base) COM_FORWARD_IConsoleCallback_OnUSBControllerChange_TO (base::)
#define COM_FORWARD_IConsoleCallback_OnUSBDeviceStateChange_TO(smth) NS_IMETHOD OnUSBDeviceStateChange (IUSBDevice * aDevice, PRBool aAttached, IVirtualBoxErrorInfo * aError) { return smth OnUSBDeviceStateChange (aDevice, aAttached, aError); }
#define COM_FORWARD_IConsoleCallback_OnUSBDeviceStateChange_TO_OBJ(obj) COM_FORWARD_IConsoleCallback_OnUSBDeviceStateChange_TO ((obj)->)
#define COM_FORWARD_IConsoleCallback_OnUSBDeviceStateChange_TO_BASE(base) COM_FORWARD_IConsoleCallback_OnUSBDeviceStateChange_TO (base::)
#define COM_FORWARD_IConsoleCallback_OnSharedFolderChange_TO(smth) NS_IMETHOD OnSharedFolderChange (PRUint32 aScope) { return smth OnSharedFolderChange (aScope); }
#define COM_FORWARD_IConsoleCallback_OnSharedFolderChange_TO_OBJ(obj) COM_FORWARD_IConsoleCallback_OnSharedFolderChange_TO ((obj)->)
#define COM_FORWARD_IConsoleCallback_OnSharedFolderChange_TO_BASE(base) COM_FORWARD_IConsoleCallback_OnSharedFolderChange_TO (base::)
#define COM_FORWARD_IConsoleCallback_OnRuntimeError_TO(smth) NS_IMETHOD OnRuntimeError (PRBool aFatal, PRUnichar * aId, PRUnichar * aMessage) { return smth OnRuntimeError (aFatal, aId, aMessage); }
#define COM_FORWARD_IConsoleCallback_OnRuntimeError_TO_OBJ(obj) COM_FORWARD_IConsoleCallback_OnRuntimeError_TO ((obj)->)
#define COM_FORWARD_IConsoleCallback_OnRuntimeError_TO_BASE(base) COM_FORWARD_IConsoleCallback_OnRuntimeError_TO (base::)
#define COM_FORWARD_IConsoleCallback_OnCanShowWindow_TO(smth) NS_IMETHOD OnCanShowWindow (PRBool * aCanShow) { return smth OnCanShowWindow (aCanShow); }
#define COM_FORWARD_IConsoleCallback_OnCanShowWindow_TO_OBJ(obj) COM_FORWARD_IConsoleCallback_OnCanShowWindow_TO ((obj)->)
#define COM_FORWARD_IConsoleCallback_OnCanShowWindow_TO_BASE(base) COM_FORWARD_IConsoleCallback_OnCanShowWindow_TO (base::)
#define COM_FORWARD_IConsoleCallback_OnShowWindow_TO(smth) NS_IMETHOD OnShowWindow (PRUint64 * aWinId) { return smth OnShowWindow (aWinId); }
#define COM_FORWARD_IConsoleCallback_OnShowWindow_TO_OBJ(obj) COM_FORWARD_IConsoleCallback_OnShowWindow_TO ((obj)->)
#define COM_FORWARD_IConsoleCallback_OnShowWindow_TO_BASE(base) COM_FORWARD_IConsoleCallback_OnShowWindow_TO (base::)
#define COM_FORWARD_IConsoleCallback_TO(smth) NS_FORWARD_ICONSOLECALLBACK (smth)
#define COM_FORWARD_IConsoleCallback_TO_OBJ(obj) COM_FORWARD_IConsoleCallback_TO ((obj)->)
#define COM_FORWARD_IConsoleCallback_TO_BASE(base) COM_FORWARD_IConsoleCallback_TO (base::)

/* starting interface:    IRemoteDisplayInfo */
#define IREMOTEDISPLAYINFO_IID_STR "b3741084-806f-4c3b-8c42-ebad1a81e45a"

#define IREMOTEDISPLAYINFO_IID \
  {0xb3741084, 0x806f, 0x4c3b, \
    { 0x8c, 0x42, 0xeb, 0xad, 0x1a, 0x81, 0xe4, 0x5a }}

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 long port; */
  NS_IMETHOD GetPort(PRInt32 *aPort) = 0;

  /* readonly attribute unsigned long numberOfClients; */
  NS_IMETHOD GetNumberOfClients(PRUint32 *aNumberOfClients) = 0;

  /* readonly attribute long long beginTime; */
  NS_IMETHOD GetBeginTime(PRInt64 *aBeginTime) = 0;

  /* readonly attribute long long endTime; */
  NS_IMETHOD GetEndTime(PRInt64 *aEndTime) = 0;

  /* readonly attribute 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 GetPort(PRInt32 *aPort); \
  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 GetPort(PRInt32 *aPort) { return _to GetPort(aPort); } \
  NS_IMETHOD GetNumberOfClients(PRUint32 *aNumberOfClients) { return _to GetNumberOfClients(aNumberOfClients); } \
  NS_IMETHOD GetBeginTime(PRInt64 *aBeginTime) { return _to GetBeginTime(aBeginTime); } \
  NS_IMETHOD GetEndTime(PRInt64 *aEndTime) { return _to GetEndTime(aEndTime); } \
  NS_IMETHOD GetBytesSent(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 GetPort(PRInt32 *aPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPort(aPort); } \
  NS_IMETHOD GetNumberOfClients(PRUint32 *aNumberOfClients) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNumberOfClients(aNumberOfClients); } \
  NS_IMETHOD GetBeginTime(PRInt64 *aBeginTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBeginTime(aBeginTime); } \
  NS_IMETHOD GetEndTime(PRInt64 *aEndTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEndTime(aEndTime); } \
  NS_IMETHOD GetBytesSent(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 long port; */
NS_IMETHODIMP _MYCLASS_::GetPort(PRInt32 *aPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long numberOfClients; */
NS_IMETHODIMP _MYCLASS_::GetNumberOfClients(PRUint32 *aNumberOfClients)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long beginTime; */
NS_IMETHODIMP _MYCLASS_::GetBeginTime(PRInt64 *aBeginTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long endTime; */
NS_IMETHODIMP _MYCLASS_::GetEndTime(PRInt64 *aEndTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IRemoteDisplayInfo_GETTER_Active_TO(smth) NS_IMETHOD GetActive (PRBool * aActive) { return smth GetActive (aActive); }
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_Active_TO_OBJ(obj) COM_FORWARD_IRemoteDisplayInfo_GETTER_Active_TO ((obj)->)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_Active_TO_BASE(base) COM_FORWARD_IRemoteDisplayInfo_GETTER_Active_TO (base::)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_Port_TO(smth) NS_IMETHOD GetPort (PRInt32 * aPort) { return smth GetPort (aPort); }
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_Port_TO_OBJ(obj) COM_FORWARD_IRemoteDisplayInfo_GETTER_Port_TO ((obj)->)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_Port_TO_BASE(base) COM_FORWARD_IRemoteDisplayInfo_GETTER_Port_TO (base::)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_NumberOfClients_TO(smth) NS_IMETHOD GetNumberOfClients (PRUint32 * aNumberOfClients) { return smth GetNumberOfClients (aNumberOfClients); }
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_NumberOfClients_TO_OBJ(obj) COM_FORWARD_IRemoteDisplayInfo_GETTER_NumberOfClients_TO ((obj)->)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_NumberOfClients_TO_BASE(base) COM_FORWARD_IRemoteDisplayInfo_GETTER_NumberOfClients_TO (base::)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_BeginTime_TO(smth) NS_IMETHOD GetBeginTime (PRInt64 * aBeginTime) { return smth GetBeginTime (aBeginTime); }
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_BeginTime_TO_OBJ(obj) COM_FORWARD_IRemoteDisplayInfo_GETTER_BeginTime_TO ((obj)->)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_BeginTime_TO_BASE(base) COM_FORWARD_IRemoteDisplayInfo_GETTER_BeginTime_TO (base::)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_EndTime_TO(smth) NS_IMETHOD GetEndTime (PRInt64 * aEndTime) { return smth GetEndTime (aEndTime); }
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_EndTime_TO_OBJ(obj) COM_FORWARD_IRemoteDisplayInfo_GETTER_EndTime_TO ((obj)->)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_EndTime_TO_BASE(base) COM_FORWARD_IRemoteDisplayInfo_GETTER_EndTime_TO (base::)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_BytesSent_TO(smth) NS_IMETHOD GetBytesSent (PRUint64 * aBytesSent) { return smth GetBytesSent (aBytesSent); }
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_BytesSent_TO_OBJ(obj) COM_FORWARD_IRemoteDisplayInfo_GETTER_BytesSent_TO ((obj)->)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_BytesSent_TO_BASE(base) COM_FORWARD_IRemoteDisplayInfo_GETTER_BytesSent_TO (base::)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_BytesSentTotal_TO(smth) NS_IMETHOD GetBytesSentTotal (PRUint64 * aBytesSentTotal) { return smth GetBytesSentTotal (aBytesSentTotal); }
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_BytesSentTotal_TO_OBJ(obj) COM_FORWARD_IRemoteDisplayInfo_GETTER_BytesSentTotal_TO ((obj)->)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_BytesSentTotal_TO_BASE(base) COM_FORWARD_IRemoteDisplayInfo_GETTER_BytesSentTotal_TO (base::)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_BytesReceived_TO(smth) NS_IMETHOD GetBytesReceived (PRUint64 * aBytesReceived) { return smth GetBytesReceived (aBytesReceived); }
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_BytesReceived_TO_OBJ(obj) COM_FORWARD_IRemoteDisplayInfo_GETTER_BytesReceived_TO ((obj)->)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_BytesReceived_TO_BASE(base) COM_FORWARD_IRemoteDisplayInfo_GETTER_BytesReceived_TO (base::)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_BytesReceivedTotal_TO(smth) NS_IMETHOD GetBytesReceivedTotal (PRUint64 * aBytesReceivedTotal) { return smth GetBytesReceivedTotal (aBytesReceivedTotal); }
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_BytesReceivedTotal_TO_OBJ(obj) COM_FORWARD_IRemoteDisplayInfo_GETTER_BytesReceivedTotal_TO ((obj)->)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_BytesReceivedTotal_TO_BASE(base) COM_FORWARD_IRemoteDisplayInfo_GETTER_BytesReceivedTotal_TO (base::)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_User_TO(smth) NS_IMETHOD GetUser (PRUnichar * * aUser) { return smth GetUser (aUser); }
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_User_TO_OBJ(obj) COM_FORWARD_IRemoteDisplayInfo_GETTER_User_TO ((obj)->)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_User_TO_BASE(base) COM_FORWARD_IRemoteDisplayInfo_GETTER_User_TO (base::)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_Domain_TO(smth) NS_IMETHOD GetDomain (PRUnichar * * aDomain) { return smth GetDomain (aDomain); }
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_Domain_TO_OBJ(obj) COM_FORWARD_IRemoteDisplayInfo_GETTER_Domain_TO ((obj)->)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_Domain_TO_BASE(base) COM_FORWARD_IRemoteDisplayInfo_GETTER_Domain_TO (base::)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_ClientName_TO(smth) NS_IMETHOD GetClientName (PRUnichar * * aClientName) { return smth GetClientName (aClientName); }
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_ClientName_TO_OBJ(obj) COM_FORWARD_IRemoteDisplayInfo_GETTER_ClientName_TO ((obj)->)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_ClientName_TO_BASE(base) COM_FORWARD_IRemoteDisplayInfo_GETTER_ClientName_TO (base::)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_ClientIP_TO(smth) NS_IMETHOD GetClientIP (PRUnichar * * aClientIP) { return smth GetClientIP (aClientIP); }
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_ClientIP_TO_OBJ(obj) COM_FORWARD_IRemoteDisplayInfo_GETTER_ClientIP_TO ((obj)->)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_ClientIP_TO_BASE(base) COM_FORWARD_IRemoteDisplayInfo_GETTER_ClientIP_TO (base::)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_ClientVersion_TO(smth) NS_IMETHOD GetClientVersion (PRUint32 * aClientVersion) { return smth GetClientVersion (aClientVersion); }
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_ClientVersion_TO_OBJ(obj) COM_FORWARD_IRemoteDisplayInfo_GETTER_ClientVersion_TO ((obj)->)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_ClientVersion_TO_BASE(base) COM_FORWARD_IRemoteDisplayInfo_GETTER_ClientVersion_TO (base::)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_EncryptionStyle_TO(smth) NS_IMETHOD GetEncryptionStyle (PRUint32 * aEncryptionStyle) { return smth GetEncryptionStyle (aEncryptionStyle); }
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_EncryptionStyle_TO_OBJ(obj) COM_FORWARD_IRemoteDisplayInfo_GETTER_EncryptionStyle_TO ((obj)->)
#define COM_FORWARD_IRemoteDisplayInfo_GETTER_EncryptionStyle_TO_BASE(base) COM_FORWARD_IRemoteDisplayInfo_GETTER_EncryptionStyle_TO (base::)
#define COM_FORWARD_IRemoteDisplayInfo_TO(smth) NS_FORWARD_IREMOTEDISPLAYINFO (smth)
#define COM_FORWARD_IRemoteDisplayInfo_TO_OBJ(obj) COM_FORWARD_IRemoteDisplayInfo_TO ((obj)->)
#define COM_FORWARD_IRemoteDisplayInfo_TO_BASE(base) COM_FORWARD_IRemoteDisplayInfo_TO (base::)

/* starting interface:    IConsole */
#define ICONSOLE_IID_STR "6375231a-c17c-464b-92cb-ae9e128d71c3"

#define ICONSOLE_IID \
  {0x6375231a, 0xc17c, 0x464b, \
    { 0x92, 0xcb, 0xae, 0x9e, 0x12, 0x8d, 0x71, 0xc3 }}

class NS_NO_VTABLE IConsole : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ICONSOLE_IID)

  /* readonly attribute IMachine machine; */
  NS_IMETHOD GetMachine(IMachine * *aMachine) = 0;

  /* readonly attribute PRUint32 state; */
  NS_IMETHOD GetState(PRUint32 *aState) = 0;

  /* readonly attribute IGuest guest; */
  NS_IMETHOD GetGuest(IGuest * *aGuest) = 0;

  /* readonly attribute IKeyboard keyboard; */
  NS_IMETHOD GetKeyboard(IKeyboard * *aKeyboard) = 0;

  /* readonly attribute IMouse mouse; */
  NS_IMETHOD GetMouse(IMouse * *aMouse) = 0;

  /* readonly attribute IDisplay display; */
  NS_IMETHOD GetDisplay(IDisplay * *aDisplay) = 0;

  /* readonly attribute IMachineDebugger debugger; */
  NS_IMETHOD GetDebugger(IMachineDebugger * *aDebugger) = 0;

  /* void getUSBDevices (out unsigned long USBDevicesSize, [array, size_is (USBDevicesSize), retval] out IUSBDevice USBDevices); */
  NS_IMETHOD GetUSBDevices(PRUint32 *USBDevicesSize, IUSBDevice ***USBDevices) = 0;

  /* void getRemoteUSBDevices (out unsigned long remoteUSBDevicesSize, [array, size_is (remoteUSBDevicesSize), retval] out IHostUSBDevice remoteUSBDevices); */
  NS_IMETHOD GetRemoteUSBDevices(PRUint32 *remoteUSBDevicesSize, IHostUSBDevice ***remoteUSBDevices) = 0;

  /* void getSharedFolders (out unsigned long sharedFoldersSize, [array, size_is (sharedFoldersSize), retval] out ISharedFolder sharedFolders); */
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders) = 0;

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

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

  /* void powerUpPaused ([retval] out IProgress progress); */
  NS_IMETHOD PowerUpPaused(IProgress **progress) = 0;

  /* void powerDown ([retval] out IProgress progress); */
  NS_IMETHOD PowerDown(IProgress **progress) = 0;

  /* void reset (); */
  NS_IMETHOD Reset(void) = 0;

  /* void pause (); */
  NS_IMETHOD Pause(void) = 0;

  /* void resume (); */
  NS_IMETHOD Resume(void) = 0;

  /* void powerButton (); */
  NS_IMETHOD PowerButton(void) = 0;

  /* void sleepButton (); */
  NS_IMETHOD SleepButton(void) = 0;

  /* void getPowerButtonHandled ([retval] out boolean handled); */
  NS_IMETHOD GetPowerButtonHandled(PRBool *handled) = 0;

  /* void getGuestEnteredACPIMode ([retval] out boolean entered); */
  NS_IMETHOD GetGuestEnteredACPIMode(PRBool *entered) = 0;

  /* void saveState ([retval] out IProgress progress); */
  NS_IMETHOD SaveState(IProgress **progress) = 0;

  /* void adoptSavedState (in wstring savedStateFile); */
  NS_IMETHOD AdoptSavedState(const PRUnichar *savedStateFile) = 0;

  /* void forgetSavedState (in boolean remove); */
  NS_IMETHOD ForgetSavedState(PRBool remove) = 0;

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

  /* void attachUSBDevice (in wstring id); */
  NS_IMETHOD AttachUSBDevice(const PRUnichar *id) = 0;

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

  /* void findUSBDeviceByAddress (in wstring name, [retval] out IUSBDevice device); */
  NS_IMETHOD FindUSBDeviceByAddress(const PRUnichar *name, IUSBDevice **device) = 0;

  /* void findUSBDeviceById (in wstring id, [retval] out IUSBDevice device); */
  NS_IMETHOD FindUSBDeviceById(const PRUnichar *id, IUSBDevice **device) = 0;

  /* void createSharedFolder (in wstring name, in wstring hostPath, in boolean writable); */
  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 deleteSnapshot (in wstring id, [retval] out IProgress progress); */
  NS_IMETHOD DeleteSnapshot(const PRUnichar *id, IProgress **progress) = 0;

  /* void restoreSnapshot (in ISnapshot snapshot, [retval] out IProgress progress); */
  NS_IMETHOD RestoreSnapshot(ISnapshot *snapshot, IProgress **progress) = 0;

  /* void teleport (in wstring hostname, in unsigned long tcpport, in wstring password, in unsigned long maxDowntime, [retval] out IProgress progress); */
  NS_IMETHOD Teleport(const PRUnichar *hostname, PRUint32 tcpport, const PRUnichar *password, PRUint32 maxDowntime, IProgress **progress) = 0;

  /* 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(PRUint32 *USBDevicesSize, IUSBDevice ***USBDevices); \
  NS_IMETHOD GetRemoteUSBDevices(PRUint32 *remoteUSBDevicesSize, IHostUSBDevice ***remoteUSBDevices); \
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders); \
  NS_IMETHOD GetRemoteDisplayInfo(IRemoteDisplayInfo * *aRemoteDisplayInfo); \
  NS_IMETHOD PowerUp(IProgress **progress); \
  NS_IMETHOD PowerUpPaused(IProgress **progress); \
  NS_IMETHOD PowerDown(IProgress **progress); \
  NS_IMETHOD Reset(void); \
  NS_IMETHOD Pause(void); \
  NS_IMETHOD Resume(void); \
  NS_IMETHOD PowerButton(void); \
  NS_IMETHOD SleepButton(void); \
  NS_IMETHOD GetPowerButtonHandled(PRBool *handled); \
  NS_IMETHOD GetGuestEnteredACPIMode(PRBool *entered); \
  NS_IMETHOD SaveState(IProgress **progress); \
  NS_IMETHOD AdoptSavedState(const PRUnichar *savedStateFile); \
  NS_IMETHOD ForgetSavedState(PRBool remove); \
  NS_IMETHOD GetDeviceActivity(PRUint32 type, PRUint32 *activity); \
  NS_IMETHOD AttachUSBDevice(const PRUnichar *id); \
  NS_IMETHOD DetachUSBDevice(const PRUnichar *id, IUSBDevice **device); \
  NS_IMETHOD FindUSBDeviceByAddress(const PRUnichar *name, IUSBDevice **device); \
  NS_IMETHOD FindUSBDeviceById(const PRUnichar *id, IUSBDevice **device); \
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable); \
  NS_IMETHOD RemoveSharedFolder(const PRUnichar *name); \
  NS_IMETHOD TakeSnapshot(const PRUnichar *name, const PRUnichar *description, IProgress **progress); \
  NS_IMETHOD DeleteSnapshot(const PRUnichar *id, IProgress **progress); \
  NS_IMETHOD RestoreSnapshot(ISnapshot *snapshot, IProgress **progress); \
  NS_IMETHOD Teleport(const PRUnichar *hostname, PRUint32 tcpport, const PRUnichar *password, PRUint32 maxDowntime, 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(PRUint32 *USBDevicesSize, IUSBDevice ***USBDevices) { return _to GetUSBDevices(USBDevicesSize, USBDevices); } \
  NS_IMETHOD GetRemoteUSBDevices(PRUint32 *remoteUSBDevicesSize, IHostUSBDevice ***remoteUSBDevices) { return _to GetRemoteUSBDevices(remoteUSBDevicesSize, remoteUSBDevices); } \
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders) { return _to GetSharedFolders(sharedFoldersSize, sharedFolders); } \
  NS_IMETHOD GetRemoteDisplayInfo(IRemoteDisplayInfo * *aRemoteDisplayInfo) { return _to GetRemoteDisplayInfo(aRemoteDisplayInfo); } \
  NS_IMETHOD PowerUp(IProgress **progress) { return _to PowerUp(progress); } \
  NS_IMETHOD PowerUpPaused(IProgress **progress) { return _to PowerUpPaused(progress); } \
  NS_IMETHOD PowerDown(IProgress **progress) { return _to PowerDown(progress); } \
  NS_IMETHOD Reset(void) { return _to Reset(); } \
  NS_IMETHOD Pause(void) { return _to Pause(); } \
  NS_IMETHOD Resume(void) { return _to Resume(); } \
  NS_IMETHOD PowerButton(void) { return _to PowerButton(); } \
  NS_IMETHOD SleepButton(void) { return _to SleepButton(); } \
  NS_IMETHOD GetPowerButtonHandled(PRBool *handled) { return _to GetPowerButtonHandled(handled); } \
  NS_IMETHOD GetGuestEnteredACPIMode(PRBool *entered) { return _to GetGuestEnteredACPIMode(entered); } \
  NS_IMETHOD SaveState(IProgress **progress) { return _to SaveState(progress); } \
  NS_IMETHOD AdoptSavedState(const PRUnichar *savedStateFile) { return _to AdoptSavedState(savedStateFile); } \
  NS_IMETHOD ForgetSavedState(PRBool remove) { return _to ForgetSavedState(remove); } \
  NS_IMETHOD GetDeviceActivity(PRUint32 type, PRUint32 *activity) { return _to GetDeviceActivity(type, activity); } \
  NS_IMETHOD AttachUSBDevice(const PRUnichar *id) { return _to AttachUSBDevice(id); } \
  NS_IMETHOD DetachUSBDevice(const PRUnichar *id, IUSBDevice **device) { return _to DetachUSBDevice(id, device); } \
  NS_IMETHOD FindUSBDeviceByAddress(const PRUnichar *name, IUSBDevice **device) { return _to FindUSBDeviceByAddress(name, device); } \
  NS_IMETHOD FindUSBDeviceById(const PRUnichar *id, IUSBDevice **device) { return _to FindUSBDeviceById(id, device); } \
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable) { 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 DeleteSnapshot(const PRUnichar *id, IProgress **progress) { return _to DeleteSnapshot(id, progress); } \
  NS_IMETHOD RestoreSnapshot(ISnapshot *snapshot, IProgress **progress) { return _to RestoreSnapshot(snapshot, progress); } \
  NS_IMETHOD Teleport(const PRUnichar *hostname, PRUint32 tcpport, const PRUnichar *password, PRUint32 maxDowntime, IProgress **progress) { return _to Teleport(hostname, tcpport, password, maxDowntime, progress); } \
  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(PRUint32 *USBDevicesSize, IUSBDevice ***USBDevices) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUSBDevices(USBDevicesSize, USBDevices); } \
  NS_IMETHOD GetRemoteUSBDevices(PRUint32 *remoteUSBDevicesSize, IHostUSBDevice ***remoteUSBDevices) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRemoteUSBDevices(remoteUSBDevicesSize, remoteUSBDevices); } \
  NS_IMETHOD GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSharedFolders(sharedFoldersSize, sharedFolders); } \
  NS_IMETHOD 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 PowerUpPaused(IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->PowerUpPaused(progress); } \
  NS_IMETHOD PowerDown(IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->PowerDown(progress); } \
  NS_IMETHOD Reset(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Reset(); } \
  NS_IMETHOD Pause(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Pause(); } \
  NS_IMETHOD Resume(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Resume(); } \
  NS_IMETHOD PowerButton(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->PowerButton(); } \
  NS_IMETHOD SleepButton(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->SleepButton(); } \
  NS_IMETHOD GetPowerButtonHandled(PRBool *handled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPowerButtonHandled(handled); } \
  NS_IMETHOD GetGuestEnteredACPIMode(PRBool *entered) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGuestEnteredACPIMode(entered); } \
  NS_IMETHOD SaveState(IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->SaveState(progress); } \
  NS_IMETHOD AdoptSavedState(const PRUnichar *savedStateFile) { return !_to ? NS_ERROR_NULL_POINTER : _to->AdoptSavedState(savedStateFile); } \
  NS_IMETHOD ForgetSavedState(PRBool remove) { return !_to ? NS_ERROR_NULL_POINTER : _to->ForgetSavedState(remove); } \
  NS_IMETHOD GetDeviceActivity(PRUint32 type, PRUint32 *activity) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDeviceActivity(type, activity); } \
  NS_IMETHOD AttachUSBDevice(const PRUnichar *id) { return !_to ? NS_ERROR_NULL_POINTER : _to->AttachUSBDevice(id); } \
  NS_IMETHOD DetachUSBDevice(const PRUnichar *id, IUSBDevice **device) { return !_to ? NS_ERROR_NULL_POINTER : _to->DetachUSBDevice(id, device); } \
  NS_IMETHOD FindUSBDeviceByAddress(const PRUnichar *name, IUSBDevice **device) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindUSBDeviceByAddress(name, device); } \
  NS_IMETHOD FindUSBDeviceById(const PRUnichar *id, IUSBDevice **device) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindUSBDeviceById(id, device); } \
  NS_IMETHOD CreateSharedFolder(const PRUnichar *name, const PRUnichar *hostPath, PRBool writable) { 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 DeleteSnapshot(const PRUnichar *id, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteSnapshot(id, progress); } \
  NS_IMETHOD RestoreSnapshot(ISnapshot *snapshot, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->RestoreSnapshot(snapshot, progress); } \
  NS_IMETHOD Teleport(const PRUnichar *hostname, PRUint32 tcpport, const PRUnichar *password, PRUint32 maxDowntime, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Teleport(hostname, tcpport, password, maxDowntime, progress); } \
  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;
}

/* void getUSBDevices (out unsigned long USBDevicesSize, [array, size_is (USBDevicesSize), retval] out IUSBDevice USBDevices); */
NS_IMETHODIMP _MYCLASS_::GetUSBDevices(PRUint32 *USBDevicesSize, IUSBDevice ***USBDevices)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getRemoteUSBDevices (out unsigned long remoteUSBDevicesSize, [array, size_is (remoteUSBDevicesSize), retval] out IHostUSBDevice remoteUSBDevices); */
NS_IMETHODIMP _MYCLASS_::GetRemoteUSBDevices(PRUint32 *remoteUSBDevicesSize, IHostUSBDevice ***remoteUSBDevices)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getSharedFolders (out unsigned long sharedFoldersSize, [array, size_is (sharedFoldersSize), retval] out ISharedFolder sharedFolders); */
NS_IMETHODIMP _MYCLASS_::GetSharedFolders(PRUint32 *sharedFoldersSize, ISharedFolder ***sharedFolders)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute 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 powerUpPaused ([retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::PowerUpPaused(IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void reset (); */
NS_IMETHODIMP _MYCLASS_::Reset()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void pause (); */
NS_IMETHODIMP _MYCLASS_::Pause()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void resume (); */
NS_IMETHODIMP _MYCLASS_::Resume()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void powerButton (); */
NS_IMETHODIMP _MYCLASS_::PowerButton()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void sleepButton (); */
NS_IMETHODIMP _MYCLASS_::SleepButton()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getPowerButtonHandled ([retval] out boolean handled); */
NS_IMETHODIMP _MYCLASS_::GetPowerButtonHandled(PRBool *handled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getGuestEnteredACPIMode ([retval] out boolean entered); */
NS_IMETHODIMP _MYCLASS_::GetGuestEnteredACPIMode(PRBool *entered)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void adoptSavedState (in wstring savedStateFile); */
NS_IMETHODIMP _MYCLASS_::AdoptSavedState(const PRUnichar *savedStateFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void forgetSavedState (in boolean remove); */
NS_IMETHODIMP _MYCLASS_::ForgetSavedState(PRBool remove)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getDeviceActivity (in PRUint32 type, [retval] out PRUint32 activity); */
NS_IMETHODIMP _MYCLASS_::GetDeviceActivity(PRUint32 type, PRUint32 *activity)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void attachUSBDevice (in wstring id); */
NS_IMETHODIMP _MYCLASS_::AttachUSBDevice(const PRUnichar *id)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void findUSBDeviceByAddress (in wstring name, [retval] out IUSBDevice device); */
NS_IMETHODIMP _MYCLASS_::FindUSBDeviceByAddress(const PRUnichar *name, IUSBDevice **device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findUSBDeviceById (in wstring id, [retval] out IUSBDevice device); */
NS_IMETHODIMP _MYCLASS_::FindUSBDeviceById(const PRUnichar *id, IUSBDevice **device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void restoreSnapshot (in ISnapshot snapshot, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::RestoreSnapshot(ISnapshot *snapshot, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void teleport (in wstring hostname, in unsigned long tcpport, in wstring password, in unsigned long maxDowntime, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::Teleport(const PRUnichar *hostname, PRUint32 tcpport, const PRUnichar *password, PRUint32 maxDowntime, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IConsole_GETTER_Machine_TO(smth) NS_IMETHOD GetMachine (IMachine * * aMachine) { return smth GetMachine (aMachine); }
#define COM_FORWARD_IConsole_GETTER_Machine_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_Machine_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_Machine_TO_BASE(base) COM_FORWARD_IConsole_GETTER_Machine_TO (base::)
#define COM_FORWARD_IConsole_GETTER_State_TO(smth) NS_IMETHOD GetState (PRUint32 * aState) { return smth GetState (aState); }
#define COM_FORWARD_IConsole_GETTER_State_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_State_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_State_TO_BASE(base) COM_FORWARD_IConsole_GETTER_State_TO (base::)
#define COM_FORWARD_IConsole_GETTER_Guest_TO(smth) NS_IMETHOD GetGuest (IGuest * * aGuest) { return smth GetGuest (aGuest); }
#define COM_FORWARD_IConsole_GETTER_Guest_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_Guest_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_Guest_TO_BASE(base) COM_FORWARD_IConsole_GETTER_Guest_TO (base::)
#define COM_FORWARD_IConsole_GETTER_Keyboard_TO(smth) NS_IMETHOD GetKeyboard (IKeyboard * * aKeyboard) { return smth GetKeyboard (aKeyboard); }
#define COM_FORWARD_IConsole_GETTER_Keyboard_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_Keyboard_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_Keyboard_TO_BASE(base) COM_FORWARD_IConsole_GETTER_Keyboard_TO (base::)
#define COM_FORWARD_IConsole_GETTER_Mouse_TO(smth) NS_IMETHOD GetMouse (IMouse * * aMouse) { return smth GetMouse (aMouse); }
#define COM_FORWARD_IConsole_GETTER_Mouse_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_Mouse_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_Mouse_TO_BASE(base) COM_FORWARD_IConsole_GETTER_Mouse_TO (base::)
#define COM_FORWARD_IConsole_GETTER_Display_TO(smth) NS_IMETHOD GetDisplay (IDisplay * * aDisplay) { return smth GetDisplay (aDisplay); }
#define COM_FORWARD_IConsole_GETTER_Display_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_Display_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_Display_TO_BASE(base) COM_FORWARD_IConsole_GETTER_Display_TO (base::)
#define COM_FORWARD_IConsole_GETTER_Debugger_TO(smth) NS_IMETHOD GetDebugger (IMachineDebugger * * aDebugger) { return smth GetDebugger (aDebugger); }
#define COM_FORWARD_IConsole_GETTER_Debugger_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_Debugger_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_Debugger_TO_BASE(base) COM_FORWARD_IConsole_GETTER_Debugger_TO (base::)
#define COM_FORWARD_IConsole_GETTER_USBDevices_TO(smth) NS_IMETHOD GetUSBDevices (PRUint32 * aUSBDevicesSize, IUSBDevice * * * aUSBDevices) { return smth GetUSBDevices (aUSBDevicesSize, aUSBDevices); }
#define COM_FORWARD_IConsole_GETTER_USBDevices_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_USBDevices_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_USBDevices_TO_BASE(base) COM_FORWARD_IConsole_GETTER_USBDevices_TO (base::)
#define COM_FORWARD_IConsole_GETTER_RemoteUSBDevices_TO(smth) NS_IMETHOD GetRemoteUSBDevices (PRUint32 * aRemoteUSBDevicesSize, IHostUSBDevice * * * aRemoteUSBDevices) { return smth GetRemoteUSBDevices (aRemoteUSBDevicesSize, aRemoteUSBDevices); }
#define COM_FORWARD_IConsole_GETTER_RemoteUSBDevices_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_RemoteUSBDevices_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_RemoteUSBDevices_TO_BASE(base) COM_FORWARD_IConsole_GETTER_RemoteUSBDevices_TO (base::)
#define COM_FORWARD_IConsole_GETTER_SharedFolders_TO(smth) NS_IMETHOD GetSharedFolders (PRUint32 * aSharedFoldersSize, ISharedFolder * * * aSharedFolders) { return smth GetSharedFolders (aSharedFoldersSize, aSharedFolders); }
#define COM_FORWARD_IConsole_GETTER_SharedFolders_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_SharedFolders_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_SharedFolders_TO_BASE(base) COM_FORWARD_IConsole_GETTER_SharedFolders_TO (base::)
#define COM_FORWARD_IConsole_GETTER_RemoteDisplayInfo_TO(smth) NS_IMETHOD GetRemoteDisplayInfo (IRemoteDisplayInfo * * aRemoteDisplayInfo) { return smth GetRemoteDisplayInfo (aRemoteDisplayInfo); }
#define COM_FORWARD_IConsole_GETTER_RemoteDisplayInfo_TO_OBJ(obj) COM_FORWARD_IConsole_GETTER_RemoteDisplayInfo_TO ((obj)->)
#define COM_FORWARD_IConsole_GETTER_RemoteDisplayInfo_TO_BASE(base) COM_FORWARD_IConsole_GETTER_RemoteDisplayInfo_TO (base::)
#define COM_FORWARD_IConsole_PowerUp_TO(smth) NS_IMETHOD PowerUp (IProgress * * aProgress) { return smth PowerUp (aProgress); }
#define COM_FORWARD_IConsole_PowerUp_TO_OBJ(obj) COM_FORWARD_IConsole_PowerUp_TO ((obj)->)
#define COM_FORWARD_IConsole_PowerUp_TO_BASE(base) COM_FORWARD_IConsole_PowerUp_TO (base::)
#define COM_FORWARD_IConsole_PowerUpPaused_TO(smth) NS_IMETHOD PowerUpPaused (IProgress * * aProgress) { return smth PowerUpPaused (aProgress); }
#define COM_FORWARD_IConsole_PowerUpPaused_TO_OBJ(obj) COM_FORWARD_IConsole_PowerUpPaused_TO ((obj)->)
#define COM_FORWARD_IConsole_PowerUpPaused_TO_BASE(base) COM_FORWARD_IConsole_PowerUpPaused_TO (base::)
#define COM_FORWARD_IConsole_PowerDown_TO(smth) NS_IMETHOD PowerDown (IProgress * * aProgress) { return smth PowerDown (aProgress); }
#define COM_FORWARD_IConsole_PowerDown_TO_OBJ(obj) COM_FORWARD_IConsole_PowerDown_TO ((obj)->)
#define COM_FORWARD_IConsole_PowerDown_TO_BASE(base) COM_FORWARD_IConsole_PowerDown_TO (base::)
#define COM_FORWARD_IConsole_Reset_TO(smth) NS_IMETHOD Reset() { return smth Reset(); }
#define COM_FORWARD_IConsole_Reset_TO_OBJ(obj) COM_FORWARD_IConsole_Reset_TO ((obj)->)
#define COM_FORWARD_IConsole_Reset_TO_BASE(base) COM_FORWARD_IConsole_Reset_TO (base::)
#define COM_FORWARD_IConsole_Pause_TO(smth) NS_IMETHOD Pause() { return smth Pause(); }
#define COM_FORWARD_IConsole_Pause_TO_OBJ(obj) COM_FORWARD_IConsole_Pause_TO ((obj)->)
#define COM_FORWARD_IConsole_Pause_TO_BASE(base) COM_FORWARD_IConsole_Pause_TO (base::)
#define COM_FORWARD_IConsole_Resume_TO(smth) NS_IMETHOD Resume() { return smth Resume(); }
#define COM_FORWARD_IConsole_Resume_TO_OBJ(obj) COM_FORWARD_IConsole_Resume_TO ((obj)->)
#define COM_FORWARD_IConsole_Resume_TO_BASE(base) COM_FORWARD_IConsole_Resume_TO (base::)
#define COM_FORWARD_IConsole_PowerButton_TO(smth) NS_IMETHOD PowerButton() { return smth PowerButton(); }
#define COM_FORWARD_IConsole_PowerButton_TO_OBJ(obj) COM_FORWARD_IConsole_PowerButton_TO ((obj)->)
#define COM_FORWARD_IConsole_PowerButton_TO_BASE(base) COM_FORWARD_IConsole_PowerButton_TO (base::)
#define COM_FORWARD_IConsole_SleepButton_TO(smth) NS_IMETHOD SleepButton() { return smth SleepButton(); }
#define COM_FORWARD_IConsole_SleepButton_TO_OBJ(obj) COM_FORWARD_IConsole_SleepButton_TO ((obj)->)
#define COM_FORWARD_IConsole_SleepButton_TO_BASE(base) COM_FORWARD_IConsole_SleepButton_TO (base::)
#define COM_FORWARD_IConsole_GetPowerButtonHandled_TO(smth) NS_IMETHOD GetPowerButtonHandled (PRBool * aHandled) { return smth GetPowerButtonHandled (aHandled); }
#define COM_FORWARD_IConsole_GetPowerButtonHandled_TO_OBJ(obj) COM_FORWARD_IConsole_GetPowerButtonHandled_TO ((obj)->)
#define COM_FORWARD_IConsole_GetPowerButtonHandled_TO_BASE(base) COM_FORWARD_IConsole_GetPowerButtonHandled_TO (base::)
#define COM_FORWARD_IConsole_GetGuestEnteredACPIMode_TO(smth) NS_IMETHOD GetGuestEnteredACPIMode (PRBool * aEntered) { return smth GetGuestEnteredACPIMode (aEntered); }
#define COM_FORWARD_IConsole_GetGuestEnteredACPIMode_TO_OBJ(obj) COM_FORWARD_IConsole_GetGuestEnteredACPIMode_TO ((obj)->)
#define COM_FORWARD_IConsole_GetGuestEnteredACPIMode_TO_BASE(base) COM_FORWARD_IConsole_GetGuestEnteredACPIMode_TO (base::)
#define COM_FORWARD_IConsole_SaveState_TO(smth) NS_IMETHOD SaveState (IProgress * * aProgress) { return smth SaveState (aProgress); }
#define COM_FORWARD_IConsole_SaveState_TO_OBJ(obj) COM_FORWARD_IConsole_SaveState_TO ((obj)->)
#define COM_FORWARD_IConsole_SaveState_TO_BASE(base) COM_FORWARD_IConsole_SaveState_TO (base::)
#define COM_FORWARD_IConsole_AdoptSavedState_TO(smth) NS_IMETHOD AdoptSavedState (PRUnichar * aSavedStateFile) { return smth AdoptSavedState (aSavedStateFile); }
#define COM_FORWARD_IConsole_AdoptSavedState_TO_OBJ(obj) COM_FORWARD_IConsole_AdoptSavedState_TO ((obj)->)
#define COM_FORWARD_IConsole_AdoptSavedState_TO_BASE(base) COM_FORWARD_IConsole_AdoptSavedState_TO (base::)
#define COM_FORWARD_IConsole_ForgetSavedState_TO(smth) NS_IMETHOD ForgetSavedState (PRBool aRemove) { return smth ForgetSavedState (aRemove); }
#define COM_FORWARD_IConsole_ForgetSavedState_TO_OBJ(obj) COM_FORWARD_IConsole_ForgetSavedState_TO ((obj)->)
#define COM_FORWARD_IConsole_ForgetSavedState_TO_BASE(base) COM_FORWARD_IConsole_ForgetSavedState_TO (base::)
#define COM_FORWARD_IConsole_GetDeviceActivity_TO(smth) NS_IMETHOD GetDeviceActivity (PRUint32 aType, PRUint32 * aActivity) { return smth GetDeviceActivity (aType, aActivity); }
#define COM_FORWARD_IConsole_GetDeviceActivity_TO_OBJ(obj) COM_FORWARD_IConsole_GetDeviceActivity_TO ((obj)->)
#define COM_FORWARD_IConsole_GetDeviceActivity_TO_BASE(base) COM_FORWARD_IConsole_GetDeviceActivity_TO (base::)
#define COM_FORWARD_IConsole_AttachUSBDevice_TO(smth) NS_IMETHOD AttachUSBDevice (PRUnichar * aId) { return smth AttachUSBDevice (aId); }
#define COM_FORWARD_IConsole_AttachUSBDevice_TO_OBJ(obj) COM_FORWARD_IConsole_AttachUSBDevice_TO ((obj)->)
#define COM_FORWARD_IConsole_AttachUSBDevice_TO_BASE(base) COM_FORWARD_IConsole_AttachUSBDevice_TO (base::)
#define COM_FORWARD_IConsole_DetachUSBDevice_TO(smth) NS_IMETHOD DetachUSBDevice (PRUnichar * aId, IUSBDevice * * aDevice) { return smth DetachUSBDevice (aId, aDevice); }
#define COM_FORWARD_IConsole_DetachUSBDevice_TO_OBJ(obj) COM_FORWARD_IConsole_DetachUSBDevice_TO ((obj)->)
#define COM_FORWARD_IConsole_DetachUSBDevice_TO_BASE(base) COM_FORWARD_IConsole_DetachUSBDevice_TO (base::)
#define COM_FORWARD_IConsole_FindUSBDeviceByAddress_TO(smth) NS_IMETHOD FindUSBDeviceByAddress (PRUnichar * aName, IUSBDevice * * aDevice) { return smth FindUSBDeviceByAddress (aName, aDevice); }
#define COM_FORWARD_IConsole_FindUSBDeviceByAddress_TO_OBJ(obj) COM_FORWARD_IConsole_FindUSBDeviceByAddress_TO ((obj)->)
#define COM_FORWARD_IConsole_FindUSBDeviceByAddress_TO_BASE(base) COM_FORWARD_IConsole_FindUSBDeviceByAddress_TO (base::)
#define COM_FORWARD_IConsole_FindUSBDeviceById_TO(smth) NS_IMETHOD FindUSBDeviceById (PRUnichar * aId, IUSBDevice * * aDevice) { return smth FindUSBDeviceById (aId, aDevice); }
#define COM_FORWARD_IConsole_FindUSBDeviceById_TO_OBJ(obj) COM_FORWARD_IConsole_FindUSBDeviceById_TO ((obj)->)
#define COM_FORWARD_IConsole_FindUSBDeviceById_TO_BASE(base) COM_FORWARD_IConsole_FindUSBDeviceById_TO (base::)
#define COM_FORWARD_IConsole_CreateSharedFolder_TO(smth) NS_IMETHOD CreateSharedFolder (PRUnichar * aName, PRUnichar * aHostPath, PRBool aWritable) { return smth CreateSharedFolder (aName, aHostPath, aWritable); }
#define COM_FORWARD_IConsole_CreateSharedFolder_TO_OBJ(obj) COM_FORWARD_IConsole_CreateSharedFolder_TO ((obj)->)
#define COM_FORWARD_IConsole_CreateSharedFolder_TO_BASE(base) COM_FORWARD_IConsole_CreateSharedFolder_TO (base::)
#define COM_FORWARD_IConsole_RemoveSharedFolder_TO(smth) NS_IMETHOD RemoveSharedFolder (PRUnichar * aName) { return smth RemoveSharedFolder (aName); }
#define COM_FORWARD_IConsole_RemoveSharedFolder_TO_OBJ(obj) COM_FORWARD_IConsole_RemoveSharedFolder_TO ((obj)->)
#define COM_FORWARD_IConsole_RemoveSharedFolder_TO_BASE(base) COM_FORWARD_IConsole_RemoveSharedFolder_TO (base::)
#define COM_FORWARD_IConsole_TakeSnapshot_TO(smth) NS_IMETHOD TakeSnapshot (PRUnichar * aName, PRUnichar * aDescription, IProgress * * aProgress) { return smth TakeSnapshot (aName, aDescription, aProgress); }
#define COM_FORWARD_IConsole_TakeSnapshot_TO_OBJ(obj) COM_FORWARD_IConsole_TakeSnapshot_TO ((obj)->)
#define COM_FORWARD_IConsole_TakeSnapshot_TO_BASE(base) COM_FORWARD_IConsole_TakeSnapshot_TO (base::)
#define COM_FORWARD_IConsole_DeleteSnapshot_TO(smth) NS_IMETHOD DeleteSnapshot (PRUnichar * aId, IProgress * * aProgress) { return smth DeleteSnapshot (aId, aProgress); }
#define COM_FORWARD_IConsole_DeleteSnapshot_TO_OBJ(obj) COM_FORWARD_IConsole_DeleteSnapshot_TO ((obj)->)
#define COM_FORWARD_IConsole_DeleteSnapshot_TO_BASE(base) COM_FORWARD_IConsole_DeleteSnapshot_TO (base::)
#define COM_FORWARD_IConsole_RestoreSnapshot_TO(smth) NS_IMETHOD RestoreSnapshot (ISnapshot * aSnapshot, IProgress * * aProgress) { return smth RestoreSnapshot (aSnapshot, aProgress); }
#define COM_FORWARD_IConsole_RestoreSnapshot_TO_OBJ(obj) COM_FORWARD_IConsole_RestoreSnapshot_TO ((obj)->)
#define COM_FORWARD_IConsole_RestoreSnapshot_TO_BASE(base) COM_FORWARD_IConsole_RestoreSnapshot_TO (base::)
#define COM_FORWARD_IConsole_Teleport_TO(smth) NS_IMETHOD Teleport (PRUnichar * aHostname, PRUint32 aTcpport, PRUnichar * aPassword, PRUint32 aMaxDowntime, IProgress * * aProgress) { return smth Teleport (aHostname, aTcpport, aPassword, aMaxDowntime, aProgress); }
#define COM_FORWARD_IConsole_Teleport_TO_OBJ(obj) COM_FORWARD_IConsole_Teleport_TO ((obj)->)
#define COM_FORWARD_IConsole_Teleport_TO_BASE(base) COM_FORWARD_IConsole_Teleport_TO (base::)
#define COM_FORWARD_IConsole_RegisterCallback_TO(smth) NS_IMETHOD RegisterCallback (IConsoleCallback * aCallback) { return smth RegisterCallback (aCallback); }
#define COM_FORWARD_IConsole_RegisterCallback_TO_OBJ(obj) COM_FORWARD_IConsole_RegisterCallback_TO ((obj)->)
#define COM_FORWARD_IConsole_RegisterCallback_TO_BASE(base) COM_FORWARD_IConsole_RegisterCallback_TO (base::)
#define COM_FORWARD_IConsole_UnregisterCallback_TO(smth) NS_IMETHOD UnregisterCallback (IConsoleCallback * aCallback) { return smth UnregisterCallback (aCallback); }
#define COM_FORWARD_IConsole_UnregisterCallback_TO_OBJ(obj) COM_FORWARD_IConsole_UnregisterCallback_TO ((obj)->)
#define COM_FORWARD_IConsole_UnregisterCallback_TO_BASE(base) COM_FORWARD_IConsole_UnregisterCallback_TO (base::)
#define COM_FORWARD_IConsole_TO(smth) NS_FORWARD_ICONSOLE (smth)
#define COM_FORWARD_IConsole_TO_OBJ(obj) COM_FORWARD_IConsole_TO ((obj)->)
#define COM_FORWARD_IConsole_TO_BASE(base) COM_FORWARD_IConsole_TO (base::)

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

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

class NS_NO_VTABLE IHostNetworkInterface : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOSTNETWORKINTERFACE_IID)

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

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

  /* readonly attribute wstring networkName; */
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName) = 0;

  /* readonly attribute boolean dhcpEnabled; */
  NS_IMETHOD GetDhcpEnabled(PRBool *aDhcpEnabled) = 0;

  /* readonly attribute wstring IPAddress; */
  NS_IMETHOD GetIPAddress(PRUnichar * *aIPAddress) = 0;

  /* readonly attribute wstring networkMask; */
  NS_IMETHOD GetNetworkMask(PRUnichar * *aNetworkMask) = 0;

  /* readonly attribute boolean IPV6Supported; */
  NS_IMETHOD GetIPV6Supported(PRBool *aIPV6Supported) = 0;

  /* readonly attribute wstring IPV6Address; */
  NS_IMETHOD GetIPV6Address(PRUnichar * *aIPV6Address) = 0;

  /* readonly attribute unsigned long IPV6NetworkMaskPrefixLength; */
  NS_IMETHOD GetIPV6NetworkMaskPrefixLength(PRUint32 *aIPV6NetworkMaskPrefixLength) = 0;

  /* readonly attribute wstring hardwareAddress; */
  NS_IMETHOD GetHardwareAddress(PRUnichar * *aHardwareAddress) = 0;

  /* readonly attribute PRUint32 mediumType; */
  NS_IMETHOD GetMediumType(PRUint32 *aMediumType) = 0;

  /* readonly attribute PRUint32 status; */
  NS_IMETHOD GetStatus(PRUint32 *aStatus) = 0;

  /* readonly attribute PRUint32 interfaceType; */
  NS_IMETHOD GetInterfaceType(PRUint32 *aInterfaceType) = 0;

  /* void enableStaticIpConfig (in wstring IPAddress, in wstring networkMask); */
  NS_IMETHOD EnableStaticIpConfig(const PRUnichar *IPAddress, const PRUnichar *networkMask) = 0;

  /* void enableStaticIpConfigV6 (in wstring IPV6Address, in unsigned long IPV6NetworkMaskPrefixLength); */
  NS_IMETHOD EnableStaticIpConfigV6(const PRUnichar *IPV6Address, PRUint32 IPV6NetworkMaskPrefixLength) = 0;

  /* void enableDynamicIpConfig (); */
  NS_IMETHOD EnableDynamicIpConfig(void) = 0;

  /* void dhcpRediscover (); */
  NS_IMETHOD DhcpRediscover(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOSTNETWORKINTERFACE \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetId(PRUnichar * *aId); \
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName); \
  NS_IMETHOD GetDhcpEnabled(PRBool *aDhcpEnabled); \
  NS_IMETHOD GetIPAddress(PRUnichar * *aIPAddress); \
  NS_IMETHOD GetNetworkMask(PRUnichar * *aNetworkMask); \
  NS_IMETHOD GetIPV6Supported(PRBool *aIPV6Supported); \
  NS_IMETHOD GetIPV6Address(PRUnichar * *aIPV6Address); \
  NS_IMETHOD GetIPV6NetworkMaskPrefixLength(PRUint32 *aIPV6NetworkMaskPrefixLength); \
  NS_IMETHOD GetHardwareAddress(PRUnichar * *aHardwareAddress); \
  NS_IMETHOD GetMediumType(PRUint32 *aMediumType); \
  NS_IMETHOD GetStatus(PRUint32 *aStatus); \
  NS_IMETHOD GetInterfaceType(PRUint32 *aInterfaceType); \
  NS_IMETHOD EnableStaticIpConfig(const PRUnichar *IPAddress, const PRUnichar *networkMask); \
  NS_IMETHOD EnableStaticIpConfigV6(const PRUnichar *IPV6Address, PRUint32 IPV6NetworkMaskPrefixLength); \
  NS_IMETHOD EnableDynamicIpConfig(void); \
  NS_IMETHOD DhcpRediscover(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOSTNETWORKINTERFACE(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetId(PRUnichar * *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName) { return _to GetNetworkName(aNetworkName); } \
  NS_IMETHOD GetDhcpEnabled(PRBool *aDhcpEnabled) { return _to GetDhcpEnabled(aDhcpEnabled); } \
  NS_IMETHOD GetIPAddress(PRUnichar * *aIPAddress) { return _to GetIPAddress(aIPAddress); } \
  NS_IMETHOD GetNetworkMask(PRUnichar * *aNetworkMask) { return _to GetNetworkMask(aNetworkMask); } \
  NS_IMETHOD GetIPV6Supported(PRBool *aIPV6Supported) { return _to GetIPV6Supported(aIPV6Supported); } \
  NS_IMETHOD GetIPV6Address(PRUnichar * *aIPV6Address) { return _to GetIPV6Address(aIPV6Address); } \
  NS_IMETHOD GetIPV6NetworkMaskPrefixLength(PRUint32 *aIPV6NetworkMaskPrefixLength) { return _to GetIPV6NetworkMaskPrefixLength(aIPV6NetworkMaskPrefixLength); } \
  NS_IMETHOD GetHardwareAddress(PRUnichar * *aHardwareAddress) { return _to GetHardwareAddress(aHardwareAddress); } \
  NS_IMETHOD GetMediumType(PRUint32 *aMediumType) { return _to GetMediumType(aMediumType); } \
  NS_IMETHOD GetStatus(PRUint32 *aStatus) { return _to GetStatus(aStatus); } \
  NS_IMETHOD GetInterfaceType(PRUint32 *aInterfaceType) { return _to GetInterfaceType(aInterfaceType); } \
  NS_IMETHOD EnableStaticIpConfig(const PRUnichar *IPAddress, const PRUnichar *networkMask) { return _to EnableStaticIpConfig(IPAddress, networkMask); } \
  NS_IMETHOD EnableStaticIpConfigV6(const PRUnichar *IPV6Address, PRUint32 IPV6NetworkMaskPrefixLength) { return _to EnableStaticIpConfigV6(IPV6Address, IPV6NetworkMaskPrefixLength); } \
  NS_IMETHOD EnableDynamicIpConfig(void) { return _to EnableDynamicIpConfig(); } \
  NS_IMETHOD DhcpRediscover(void) { return _to DhcpRediscover(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHOSTNETWORKINTERFACE(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetId(PRUnichar * *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetNetworkName(PRUnichar * *aNetworkName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworkName(aNetworkName); } \
  NS_IMETHOD GetDhcpEnabled(PRBool *aDhcpEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDhcpEnabled(aDhcpEnabled); } \
  NS_IMETHOD GetIPAddress(PRUnichar * *aIPAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIPAddress(aIPAddress); } \
  NS_IMETHOD GetNetworkMask(PRUnichar * *aNetworkMask) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworkMask(aNetworkMask); } \
  NS_IMETHOD GetIPV6Supported(PRBool *aIPV6Supported) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIPV6Supported(aIPV6Supported); } \
  NS_IMETHOD GetIPV6Address(PRUnichar * *aIPV6Address) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIPV6Address(aIPV6Address); } \
  NS_IMETHOD GetIPV6NetworkMaskPrefixLength(PRUint32 *aIPV6NetworkMaskPrefixLength) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIPV6NetworkMaskPrefixLength(aIPV6NetworkMaskPrefixLength); } \
  NS_IMETHOD GetHardwareAddress(PRUnichar * *aHardwareAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHardwareAddress(aHardwareAddress); } \
  NS_IMETHOD GetMediumType(PRUint32 *aMediumType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMediumType(aMediumType); } \
  NS_IMETHOD GetStatus(PRUint32 *aStatus) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStatus(aStatus); } \
  NS_IMETHOD GetInterfaceType(PRUint32 *aInterfaceType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInterfaceType(aInterfaceType); } \
  NS_IMETHOD EnableStaticIpConfig(const PRUnichar *IPAddress, const PRUnichar *networkMask) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnableStaticIpConfig(IPAddress, networkMask); } \
  NS_IMETHOD EnableStaticIpConfigV6(const PRUnichar *IPV6Address, PRUint32 IPV6NetworkMaskPrefixLength) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnableStaticIpConfigV6(IPV6Address, IPV6NetworkMaskPrefixLength); } \
  NS_IMETHOD EnableDynamicIpConfig(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnableDynamicIpConfig(); } \
  NS_IMETHOD DhcpRediscover(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->DhcpRediscover(); } 

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

/* Header file */
class _MYCLASS_ : public IHostNetworkInterface
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHOSTNETWORKINTERFACE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring id; */
NS_IMETHODIMP _MYCLASS_::GetId(PRUnichar * *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring networkName; */
NS_IMETHODIMP _MYCLASS_::GetNetworkName(PRUnichar * *aNetworkName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean dhcpEnabled; */
NS_IMETHODIMP _MYCLASS_::GetDhcpEnabled(PRBool *aDhcpEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring IPAddress; */
NS_IMETHODIMP _MYCLASS_::GetIPAddress(PRUnichar * *aIPAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring networkMask; */
NS_IMETHODIMP _MYCLASS_::GetNetworkMask(PRUnichar * *aNetworkMask)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean IPV6Supported; */
NS_IMETHODIMP _MYCLASS_::GetIPV6Supported(PRBool *aIPV6Supported)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring IPV6Address; */
NS_IMETHODIMP _MYCLASS_::GetIPV6Address(PRUnichar * *aIPV6Address)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long IPV6NetworkMaskPrefixLength; */
NS_IMETHODIMP _MYCLASS_::GetIPV6NetworkMaskPrefixLength(PRUint32 *aIPV6NetworkMaskPrefixLength)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring hardwareAddress; */
NS_IMETHODIMP _MYCLASS_::GetHardwareAddress(PRUnichar * *aHardwareAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 mediumType; */
NS_IMETHODIMP _MYCLASS_::GetMediumType(PRUint32 *aMediumType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 status; */
NS_IMETHODIMP _MYCLASS_::GetStatus(PRUint32 *aStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 interfaceType; */
NS_IMETHODIMP _MYCLASS_::GetInterfaceType(PRUint32 *aInterfaceType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enableStaticIpConfig (in wstring IPAddress, in wstring networkMask); */
NS_IMETHODIMP _MYCLASS_::EnableStaticIpConfig(const PRUnichar *IPAddress, const PRUnichar *networkMask)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enableStaticIpConfigV6 (in wstring IPV6Address, in unsigned long IPV6NetworkMaskPrefixLength); */
NS_IMETHODIMP _MYCLASS_::EnableStaticIpConfigV6(const PRUnichar *IPV6Address, PRUint32 IPV6NetworkMaskPrefixLength)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enableDynamicIpConfig (); */
NS_IMETHODIMP _MYCLASS_::EnableDynamicIpConfig()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void dhcpRediscover (); */
NS_IMETHODIMP _MYCLASS_::DhcpRediscover()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IHostNetworkInterface_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_Name_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_Name_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_Id_TO(smth) NS_IMETHOD GetId (PRUnichar * * aId) { return smth GetId (aId); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_Id_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_Id_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_Id_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_Id_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_NetworkName_TO(smth) NS_IMETHOD GetNetworkName (PRUnichar * * aNetworkName) { return smth GetNetworkName (aNetworkName); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_NetworkName_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_NetworkName_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_NetworkName_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_NetworkName_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_DhcpEnabled_TO(smth) NS_IMETHOD GetDhcpEnabled (PRBool * aDhcpEnabled) { return smth GetDhcpEnabled (aDhcpEnabled); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_DhcpEnabled_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_DhcpEnabled_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_DhcpEnabled_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_DhcpEnabled_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPAddress_TO(smth) NS_IMETHOD GetIPAddress (PRUnichar * * aIPAddress) { return smth GetIPAddress (aIPAddress); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPAddress_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_IPAddress_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPAddress_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_IPAddress_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_NetworkMask_TO(smth) NS_IMETHOD GetNetworkMask (PRUnichar * * aNetworkMask) { return smth GetNetworkMask (aNetworkMask); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_NetworkMask_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_NetworkMask_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_NetworkMask_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_NetworkMask_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPV6Supported_TO(smth) NS_IMETHOD GetIPV6Supported (PRBool * aIPV6Supported) { return smth GetIPV6Supported (aIPV6Supported); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPV6Supported_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_IPV6Supported_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPV6Supported_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_IPV6Supported_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPV6Address_TO(smth) NS_IMETHOD GetIPV6Address (PRUnichar * * aIPV6Address) { return smth GetIPV6Address (aIPV6Address); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPV6Address_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_IPV6Address_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPV6Address_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_IPV6Address_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPV6NetworkMaskPrefixLength_TO(smth) NS_IMETHOD GetIPV6NetworkMaskPrefixLength (PRUint32 * aIPV6NetworkMaskPrefixLength) { return smth GetIPV6NetworkMaskPrefixLength (aIPV6NetworkMaskPrefixLength); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPV6NetworkMaskPrefixLength_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_IPV6NetworkMaskPrefixLength_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_IPV6NetworkMaskPrefixLength_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_IPV6NetworkMaskPrefixLength_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_HardwareAddress_TO(smth) NS_IMETHOD GetHardwareAddress (PRUnichar * * aHardwareAddress) { return smth GetHardwareAddress (aHardwareAddress); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_HardwareAddress_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_HardwareAddress_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_HardwareAddress_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_HardwareAddress_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_MediumType_TO(smth) NS_IMETHOD GetMediumType (PRUint32 * aMediumType) { return smth GetMediumType (aMediumType); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_MediumType_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_MediumType_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_MediumType_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_MediumType_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_Status_TO(smth) NS_IMETHOD GetStatus (PRUint32 * aStatus) { return smth GetStatus (aStatus); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_Status_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_Status_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_Status_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_Status_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_GETTER_InterfaceType_TO(smth) NS_IMETHOD GetInterfaceType (PRUint32 * aInterfaceType) { return smth GetInterfaceType (aInterfaceType); }
#define COM_FORWARD_IHostNetworkInterface_GETTER_InterfaceType_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_GETTER_InterfaceType_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_GETTER_InterfaceType_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_GETTER_InterfaceType_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_EnableStaticIpConfig_TO(smth) NS_IMETHOD EnableStaticIpConfig (PRUnichar * aIPAddress, PRUnichar * aNetworkMask) { return smth EnableStaticIpConfig (aIPAddress, aNetworkMask); }
#define COM_FORWARD_IHostNetworkInterface_EnableStaticIpConfig_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_EnableStaticIpConfig_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_EnableStaticIpConfig_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_EnableStaticIpConfig_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_EnableStaticIpConfigV6_TO(smth) NS_IMETHOD EnableStaticIpConfigV6 (PRUnichar * aIPV6Address, PRUint32 aIPV6NetworkMaskPrefixLength) { return smth EnableStaticIpConfigV6 (aIPV6Address, aIPV6NetworkMaskPrefixLength); }
#define COM_FORWARD_IHostNetworkInterface_EnableStaticIpConfigV6_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_EnableStaticIpConfigV6_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_EnableStaticIpConfigV6_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_EnableStaticIpConfigV6_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_EnableDynamicIpConfig_TO(smth) NS_IMETHOD EnableDynamicIpConfig() { return smth EnableDynamicIpConfig(); }
#define COM_FORWARD_IHostNetworkInterface_EnableDynamicIpConfig_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_EnableDynamicIpConfig_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_EnableDynamicIpConfig_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_EnableDynamicIpConfig_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_DhcpRediscover_TO(smth) NS_IMETHOD DhcpRediscover() { return smth DhcpRediscover(); }
#define COM_FORWARD_IHostNetworkInterface_DhcpRediscover_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_DhcpRediscover_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_DhcpRediscover_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_DhcpRediscover_TO (base::)
#define COM_FORWARD_IHostNetworkInterface_TO(smth) NS_FORWARD_IHOSTNETWORKINTERFACE (smth)
#define COM_FORWARD_IHostNetworkInterface_TO_OBJ(obj) COM_FORWARD_IHostNetworkInterface_TO ((obj)->)
#define COM_FORWARD_IHostNetworkInterface_TO_BASE(base) COM_FORWARD_IHostNetworkInterface_TO (base::)

/* starting interface:    IHost */
#define IHOST_IID_STR "35b004f4-7806-4009-bfa8-d1308adba7e5"

#define IHOST_IID \
  {0x35b004f4, 0x7806, 0x4009, \
    { 0xbf, 0xa8, 0xd1, 0x30, 0x8a, 0xdb, 0xa7, 0xe5 }}

class NS_NO_VTABLE IHost : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOST_IID)

  /* void getDVDDrives (out unsigned long DVDDrivesSize, [array, size_is (DVDDrivesSize), retval] out IMedium DVDDrives); */
  NS_IMETHOD GetDVDDrives(PRUint32 *DVDDrivesSize, IMedium ***DVDDrives) = 0;

  /* void getFloppyDrives (out unsigned long floppyDrivesSize, [array, size_is (floppyDrivesSize), retval] out IMedium floppyDrives); */
  NS_IMETHOD GetFloppyDrives(PRUint32 *floppyDrivesSize, IMedium ***floppyDrives) = 0;

  /* void getUSBDevices (out unsigned long USBDevicesSize, [array, size_is (USBDevicesSize), retval] out IHostUSBDevice USBDevices); */
  NS_IMETHOD GetUSBDevices(PRUint32 *USBDevicesSize, IHostUSBDevice ***USBDevices) = 0;

  /* void getUSBDeviceFilters (out unsigned long USBDeviceFiltersSize, [array, size_is (USBDeviceFiltersSize), retval] out IHostUSBDeviceFilter USBDeviceFilters); */
  NS_IMETHOD GetUSBDeviceFilters(PRUint32 *USBDeviceFiltersSize, IHostUSBDeviceFilter ***USBDeviceFilters) = 0;

  /* void getNetworkInterfaces (out unsigned long networkInterfacesSize, [array, size_is (networkInterfacesSize), retval] out IHostNetworkInterface networkInterfaces); */
  NS_IMETHOD GetNetworkInterfaces(PRUint32 *networkInterfacesSize, IHostNetworkInterface ***networkInterfaces) = 0;

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

  /* readonly attribute unsigned long processorOnlineCount; */
  NS_IMETHOD GetProcessorOnlineCount(PRUint32 *aProcessorOnlineCount) = 0;

  /* readonly attribute unsigned long processorCoreCount; */
  NS_IMETHOD GetProcessorCoreCount(PRUint32 *aProcessorCoreCount) = 0;

  /* readonly attribute unsigned long memorySize; */
  NS_IMETHOD GetMemorySize(PRUint32 *aMemorySize) = 0;

  /* readonly attribute unsigned long memoryAvailable; */
  NS_IMETHOD GetMemoryAvailable(PRUint32 *aMemoryAvailable) = 0;

  /* readonly attribute wstring operatingSystem; */
  NS_IMETHOD GetOperatingSystem(PRUnichar * *aOperatingSystem) = 0;

  /* readonly attribute wstring OSVersion; */
  NS_IMETHOD GetOSVersion(PRUnichar * *aOSVersion) = 0;

  /* readonly attribute long long UTCTime; */
  NS_IMETHOD GetUTCTime(PRInt64 *aUTCTime) = 0;

  /* readonly attribute boolean Acceleration3DAvailable; */
  NS_IMETHOD GetAcceleration3DAvailable(PRBool *aAcceleration3DAvailable) = 0;

  /* void getProcessorSpeed (in unsigned long cpuId, [retval] out unsigned long speed); */
  NS_IMETHOD GetProcessorSpeed(PRUint32 cpuId, PRUint32 *speed) = 0;

  /* void getProcessorFeature (in PRUint32 feature, [retval] out boolean supported); */
  NS_IMETHOD GetProcessorFeature(PRUint32 feature, PRBool *supported) = 0;

  /* void getProcessorDescription (in unsigned long cpuId, [retval] out wstring description); */
  NS_IMETHOD GetProcessorDescription(PRUint32 cpuId, PRUnichar **description) = 0;

  /* void getProcessorCPUIDLeaf (in unsigned long cpuId, in unsigned long leaf, in unsigned long subLeaf, out unsigned long valEax, out unsigned long valEbx, out unsigned long valEcx, out unsigned long valEdx); */
  NS_IMETHOD GetProcessorCPUIDLeaf(PRUint32 cpuId, PRUint32 leaf, PRUint32 subLeaf, PRUint32 *valEax, PRUint32 *valEbx, PRUint32 *valEcx, PRUint32 *valEdx) = 0;

  /* void createHostOnlyNetworkInterface (out IHostNetworkInterface hostInterface, [retval] out IProgress progress); */
  NS_IMETHOD CreateHostOnlyNetworkInterface(IHostNetworkInterface **hostInterface, IProgress **progress) = 0;

  /* void removeHostOnlyNetworkInterface (in wstring id, [retval] out IProgress progress); */
  NS_IMETHOD RemoveHostOnlyNetworkInterface(const PRUnichar *id, IProgress **progress) = 0;

  /* void createUSBDeviceFilter (in wstring name, [retval] out IHostUSBDeviceFilter filter); */
  NS_IMETHOD CreateUSBDeviceFilter(const PRUnichar *name, IHostUSBDeviceFilter **filter) = 0;

  /* void insertUSBDeviceFilter (in unsigned long position, in IHostUSBDeviceFilter filter); */
  NS_IMETHOD InsertUSBDeviceFilter(PRUint32 position, IHostUSBDeviceFilter *filter) = 0;

  /* void removeUSBDeviceFilter (in unsigned long position); */
  NS_IMETHOD RemoveUSBDeviceFilter(PRUint32 position) = 0;

  /* void findHostDVDDrive (in wstring name, [retval] out IMedium drive); */
  NS_IMETHOD FindHostDVDDrive(const PRUnichar *name, IMedium **drive) = 0;

  /* void findHostFloppyDrive (in wstring name, [retval] out IMedium drive); */
  NS_IMETHOD FindHostFloppyDrive(const PRUnichar *name, IMedium **drive) = 0;

  /* void findHostNetworkInterfaceByName (in wstring name, [retval] out IHostNetworkInterface networkInterface); */
  NS_IMETHOD FindHostNetworkInterfaceByName(const PRUnichar *name, IHostNetworkInterface **networkInterface) = 0;

  /* void findHostNetworkInterfaceById (in wstring id, [retval] out IHostNetworkInterface networkInterface); */
  NS_IMETHOD FindHostNetworkInterfaceById(const PRUnichar *id, IHostNetworkInterface **networkInterface) = 0;

  /* void findHostNetworkInterfacesOfType (in PRUint32 type, out unsigned long networkInterfacesSize, [array, size_is (networkInterfacesSize), retval] out IHostNetworkInterface networkInterfaces); */
  NS_IMETHOD FindHostNetworkInterfacesOfType(PRUint32 type, PRUint32 *networkInterfacesSize, IHostNetworkInterface ***networkInterfaces) = 0;

  /* void findUSBDeviceById (in wstring id, [retval] out IHostUSBDevice device); */
  NS_IMETHOD FindUSBDeviceById(const PRUnichar *id, IHostUSBDevice **device) = 0;

  /* void findUSBDeviceByAddress (in wstring name, [retval] out IHostUSBDevice device); */
  NS_IMETHOD FindUSBDeviceByAddress(const PRUnichar *name, IHostUSBDevice **device) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOST \
  NS_IMETHOD GetDVDDrives(PRUint32 *DVDDrivesSize, IMedium ***DVDDrives); \
  NS_IMETHOD GetFloppyDrives(PRUint32 *floppyDrivesSize, IMedium ***floppyDrives); \
  NS_IMETHOD GetUSBDevices(PRUint32 *USBDevicesSize, IHostUSBDevice ***USBDevices); \
  NS_IMETHOD GetUSBDeviceFilters(PRUint32 *USBDeviceFiltersSize, IHostUSBDeviceFilter ***USBDeviceFilters); \
  NS_IMETHOD GetNetworkInterfaces(PRUint32 *networkInterfacesSize, IHostNetworkInterface ***networkInterfaces); \
  NS_IMETHOD GetProcessorCount(PRUint32 *aProcessorCount); \
  NS_IMETHOD GetProcessorOnlineCount(PRUint32 *aProcessorOnlineCount); \
  NS_IMETHOD GetProcessorCoreCount(PRUint32 *aProcessorCoreCount); \
  NS_IMETHOD GetMemorySize(PRUint32 *aMemorySize); \
  NS_IMETHOD GetMemoryAvailable(PRUint32 *aMemoryAvailable); \
  NS_IMETHOD GetOperatingSystem(PRUnichar * *aOperatingSystem); \
  NS_IMETHOD GetOSVersion(PRUnichar * *aOSVersion); \
  NS_IMETHOD GetUTCTime(PRInt64 *aUTCTime); \
  NS_IMETHOD GetAcceleration3DAvailable(PRBool *aAcceleration3DAvailable); \
  NS_IMETHOD GetProcessorSpeed(PRUint32 cpuId, PRUint32 *speed); \
  NS_IMETHOD GetProcessorFeature(PRUint32 feature, PRBool *supported); \
  NS_IMETHOD GetProcessorDescription(PRUint32 cpuId, PRUnichar **description); \
  NS_IMETHOD GetProcessorCPUIDLeaf(PRUint32 cpuId, PRUint32 leaf, PRUint32 subLeaf, PRUint32 *valEax, PRUint32 *valEbx, PRUint32 *valEcx, PRUint32 *valEdx); \
  NS_IMETHOD CreateHostOnlyNetworkInterface(IHostNetworkInterface **hostInterface, IProgress **progress); \
  NS_IMETHOD RemoveHostOnlyNetworkInterface(const PRUnichar *id, IProgress **progress); \
  NS_IMETHOD CreateUSBDeviceFilter(const PRUnichar *name, IHostUSBDeviceFilter **filter); \
  NS_IMETHOD InsertUSBDeviceFilter(PRUint32 position, IHostUSBDeviceFilter *filter); \
  NS_IMETHOD RemoveUSBDeviceFilter(PRUint32 position); \
  NS_IMETHOD FindHostDVDDrive(const PRUnichar *name, IMedium **drive); \
  NS_IMETHOD FindHostFloppyDrive(const PRUnichar *name, IMedium **drive); \
  NS_IMETHOD FindHostNetworkInterfaceByName(const PRUnichar *name, IHostNetworkInterface **networkInterface); \
  NS_IMETHOD FindHostNetworkInterfaceById(const PRUnichar *id, IHostNetworkInterface **networkInterface); \
  NS_IMETHOD FindHostNetworkInterfacesOfType(PRUint32 type, PRUint32 *networkInterfacesSize, IHostNetworkInterface ***networkInterfaces); \
  NS_IMETHOD FindUSBDeviceById(const PRUnichar *id, IHostUSBDevice **device); \
  NS_IMETHOD FindUSBDeviceByAddress(const PRUnichar *name, IHostUSBDevice **device); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOST(_to) \
  NS_IMETHOD GetDVDDrives(PRUint32 *DVDDrivesSize, IMedium ***DVDDrives) { return _to GetDVDDrives(DVDDrivesSize, DVDDrives); } \
  NS_IMETHOD GetFloppyDrives(PRUint32 *floppyDrivesSize, IMedium ***floppyDrives) { return _to GetFloppyDrives(floppyDrivesSize, floppyDrives); } \
  NS_IMETHOD GetUSBDevices(PRUint32 *USBDevicesSize, IHostUSBDevice ***USBDevices) { return _to GetUSBDevices(USBDevicesSize, USBDevices); } \
  NS_IMETHOD GetUSBDeviceFilters(PRUint32 *USBDeviceFiltersSize, IHostUSBDeviceFilter ***USBDeviceFilters) { return _to GetUSBDeviceFilters(USBDeviceFiltersSize, USBDeviceFilters); } \
  NS_IMETHOD GetNetworkInterfaces(PRUint32 *networkInterfacesSize, IHostNetworkInterface ***networkInterfaces) { return _to GetNetworkInterfaces(networkInterfacesSize, networkInterfaces); } \
  NS_IMETHOD GetProcessorCount(PRUint32 *aProcessorCount) { return _to GetProcessorCount(aProcessorCount); } \
  NS_IMETHOD GetProcessorOnlineCount(PRUint32 *aProcessorOnlineCount) { return _to GetProcessorOnlineCount(aProcessorOnlineCount); } \
  NS_IMETHOD GetProcessorCoreCount(PRUint32 *aProcessorCoreCount) { return _to GetProcessorCoreCount(aProcessorCoreCount); } \
  NS_IMETHOD GetMemorySize(PRUint32 *aMemorySize) { return _to GetMemorySize(aMemorySize); } \
  NS_IMETHOD GetMemoryAvailable(PRUint32 *aMemoryAvailable) { return _to GetMemoryAvailable(aMemoryAvailable); } \
  NS_IMETHOD GetOperatingSystem(PRUnichar * *aOperatingSystem) { return _to GetOperatingSystem(aOperatingSystem); } \
  NS_IMETHOD GetOSVersion(PRUnichar * *aOSVersion) { return _to GetOSVersion(aOSVersion); } \
  NS_IMETHOD GetUTCTime(PRInt64 *aUTCTime) { return _to GetUTCTime(aUTCTime); } \
  NS_IMETHOD GetAcceleration3DAvailable(PRBool *aAcceleration3DAvailable) { return _to GetAcceleration3DAvailable(aAcceleration3DAvailable); } \
  NS_IMETHOD GetProcessorSpeed(PRUint32 cpuId, PRUint32 *speed) { return _to GetProcessorSpeed(cpuId, speed); } \
  NS_IMETHOD GetProcessorFeature(PRUint32 feature, PRBool *supported) { return _to GetProcessorFeature(feature, supported); } \
  NS_IMETHOD GetProcessorDescription(PRUint32 cpuId, PRUnichar **description) { return _to GetProcessorDescription(cpuId, description); } \
  NS_IMETHOD GetProcessorCPUIDLeaf(PRUint32 cpuId, PRUint32 leaf, PRUint32 subLeaf, PRUint32 *valEax, PRUint32 *valEbx, PRUint32 *valEcx, PRUint32 *valEdx) { return _to GetProcessorCPUIDLeaf(cpuId, leaf, subLeaf, valEax, valEbx, valEcx, valEdx); } \
  NS_IMETHOD CreateHostOnlyNetworkInterface(IHostNetworkInterface **hostInterface, IProgress **progress) { return _to CreateHostOnlyNetworkInterface(hostInterface, progress); } \
  NS_IMETHOD RemoveHostOnlyNetworkInterface(const PRUnichar *id, IProgress **progress) { return _to RemoveHostOnlyNetworkInterface(id, progress); } \
  NS_IMETHOD CreateUSBDeviceFilter(const PRUnichar *name, IHostUSBDeviceFilter **filter) { return _to CreateUSBDeviceFilter(name, filter); } \
  NS_IMETHOD InsertUSBDeviceFilter(PRUint32 position, IHostUSBDeviceFilter *filter) { return _to InsertUSBDeviceFilter(position, filter); } \
  NS_IMETHOD RemoveUSBDeviceFilter(PRUint32 position) { return _to RemoveUSBDeviceFilter(position); } \
  NS_IMETHOD FindHostDVDDrive(const PRUnichar *name, IMedium **drive) { return _to FindHostDVDDrive(name, drive); } \
  NS_IMETHOD FindHostFloppyDrive(const PRUnichar *name, IMedium **drive) { return _to FindHostFloppyDrive(name, drive); } \
  NS_IMETHOD FindHostNetworkInterfaceByName(const PRUnichar *name, IHostNetworkInterface **networkInterface) { return _to FindHostNetworkInterfaceByName(name, networkInterface); } \
  NS_IMETHOD FindHostNetworkInterfaceById(const PRUnichar *id, IHostNetworkInterface **networkInterface) { return _to FindHostNetworkInterfaceById(id, networkInterface); } \
  NS_IMETHOD FindHostNetworkInterfacesOfType(PRUint32 type, PRUint32 *networkInterfacesSize, IHostNetworkInterface ***networkInterfaces) { return _to FindHostNetworkInterfacesOfType(type, networkInterfacesSize, networkInterfaces); } \
  NS_IMETHOD FindUSBDeviceById(const PRUnichar *id, IHostUSBDevice **device) { return _to FindUSBDeviceById(id, device); } \
  NS_IMETHOD FindUSBDeviceByAddress(const PRUnichar *name, IHostUSBDevice **device) { return _to FindUSBDeviceByAddress(name, device); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHOST(_to) \
  NS_IMETHOD GetDVDDrives(PRUint32 *DVDDrivesSize, IMedium ***DVDDrives) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDVDDrives(DVDDrivesSize, DVDDrives); } \
  NS_IMETHOD GetFloppyDrives(PRUint32 *floppyDrivesSize, IMedium ***floppyDrives) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFloppyDrives(floppyDrivesSize, floppyDrives); } \
  NS_IMETHOD GetUSBDevices(PRUint32 *USBDevicesSize, IHostUSBDevice ***USBDevices) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUSBDevices(USBDevicesSize, USBDevices); } \
  NS_IMETHOD GetUSBDeviceFilters(PRUint32 *USBDeviceFiltersSize, IHostUSBDeviceFilter ***USBDeviceFilters) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUSBDeviceFilters(USBDeviceFiltersSize, USBDeviceFilters); } \
  NS_IMETHOD GetNetworkInterfaces(PRUint32 *networkInterfacesSize, IHostNetworkInterface ***networkInterfaces) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworkInterfaces(networkInterfacesSize, networkInterfaces); } \
  NS_IMETHOD GetProcessorCount(PRUint32 *aProcessorCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessorCount(aProcessorCount); } \
  NS_IMETHOD GetProcessorOnlineCount(PRUint32 *aProcessorOnlineCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessorOnlineCount(aProcessorOnlineCount); } \
  NS_IMETHOD GetProcessorCoreCount(PRUint32 *aProcessorCoreCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessorCoreCount(aProcessorCoreCount); } \
  NS_IMETHOD GetMemorySize(PRUint32 *aMemorySize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMemorySize(aMemorySize); } \
  NS_IMETHOD GetMemoryAvailable(PRUint32 *aMemoryAvailable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMemoryAvailable(aMemoryAvailable); } \
  NS_IMETHOD GetOperatingSystem(PRUnichar * *aOperatingSystem) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOperatingSystem(aOperatingSystem); } \
  NS_IMETHOD GetOSVersion(PRUnichar * *aOSVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOSVersion(aOSVersion); } \
  NS_IMETHOD GetUTCTime(PRInt64 *aUTCTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUTCTime(aUTCTime); } \
  NS_IMETHOD GetAcceleration3DAvailable(PRBool *aAcceleration3DAvailable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAcceleration3DAvailable(aAcceleration3DAvailable); } \
  NS_IMETHOD GetProcessorSpeed(PRUint32 cpuId, PRUint32 *speed) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessorSpeed(cpuId, speed); } \
  NS_IMETHOD GetProcessorFeature(PRUint32 feature, PRBool *supported) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessorFeature(feature, supported); } \
  NS_IMETHOD GetProcessorDescription(PRUint32 cpuId, PRUnichar **description) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessorDescription(cpuId, description); } \
  NS_IMETHOD GetProcessorCPUIDLeaf(PRUint32 cpuId, PRUint32 leaf, PRUint32 subLeaf, PRUint32 *valEax, PRUint32 *valEbx, PRUint32 *valEcx, PRUint32 *valEdx) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessorCPUIDLeaf(cpuId, leaf, subLeaf, valEax, valEbx, valEcx, valEdx); } \
  NS_IMETHOD CreateHostOnlyNetworkInterface(IHostNetworkInterface **hostInterface, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateHostOnlyNetworkInterface(hostInterface, progress); } \
  NS_IMETHOD RemoveHostOnlyNetworkInterface(const PRUnichar *id, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveHostOnlyNetworkInterface(id, progress); } \
  NS_IMETHOD CreateUSBDeviceFilter(const PRUnichar *name, IHostUSBDeviceFilter **filter) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateUSBDeviceFilter(name, filter); } \
  NS_IMETHOD InsertUSBDeviceFilter(PRUint32 position, IHostUSBDeviceFilter *filter) { return !_to ? NS_ERROR_NULL_POINTER : _to->InsertUSBDeviceFilter(position, filter); } \
  NS_IMETHOD RemoveUSBDeviceFilter(PRUint32 position) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveUSBDeviceFilter(position); } \
  NS_IMETHOD FindHostDVDDrive(const PRUnichar *name, IMedium **drive) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindHostDVDDrive(name, drive); } \
  NS_IMETHOD FindHostFloppyDrive(const PRUnichar *name, IMedium **drive) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindHostFloppyDrive(name, drive); } \
  NS_IMETHOD FindHostNetworkInterfaceByName(const PRUnichar *name, IHostNetworkInterface **networkInterface) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindHostNetworkInterfaceByName(name, networkInterface); } \
  NS_IMETHOD FindHostNetworkInterfaceById(const PRUnichar *id, IHostNetworkInterface **networkInterface) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindHostNetworkInterfaceById(id, networkInterface); } \
  NS_IMETHOD FindHostNetworkInterfacesOfType(PRUint32 type, PRUint32 *networkInterfacesSize, IHostNetworkInterface ***networkInterfaces) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindHostNetworkInterfacesOfType(type, networkInterfacesSize, networkInterfaces); } \
  NS_IMETHOD FindUSBDeviceById(const PRUnichar *id, IHostUSBDevice **device) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindUSBDeviceById(id, device); } \
  NS_IMETHOD FindUSBDeviceByAddress(const PRUnichar *name, IHostUSBDevice **device) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindUSBDeviceByAddress(name, device); } 

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

/* Header file */
class _MYCLASS_ : public IHost
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHOST

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void getDVDDrives (out unsigned long DVDDrivesSize, [array, size_is (DVDDrivesSize), retval] out IMedium DVDDrives); */
NS_IMETHODIMP _MYCLASS_::GetDVDDrives(PRUint32 *DVDDrivesSize, IMedium ***DVDDrives)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getFloppyDrives (out unsigned long floppyDrivesSize, [array, size_is (floppyDrivesSize), retval] out IMedium floppyDrives); */
NS_IMETHODIMP _MYCLASS_::GetFloppyDrives(PRUint32 *floppyDrivesSize, IMedium ***floppyDrives)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getUSBDevices (out unsigned long USBDevicesSize, [array, size_is (USBDevicesSize), retval] out IHostUSBDevice USBDevices); */
NS_IMETHODIMP _MYCLASS_::GetUSBDevices(PRUint32 *USBDevicesSize, IHostUSBDevice ***USBDevices)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getUSBDeviceFilters (out unsigned long USBDeviceFiltersSize, [array, size_is (USBDeviceFiltersSize), retval] out IHostUSBDeviceFilter USBDeviceFilters); */
NS_IMETHODIMP _MYCLASS_::GetUSBDeviceFilters(PRUint32 *USBDeviceFiltersSize, IHostUSBDeviceFilter ***USBDeviceFilters)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNetworkInterfaces (out unsigned long networkInterfacesSize, [array, size_is (networkInterfacesSize), retval] out IHostNetworkInterface networkInterfaces); */
NS_IMETHODIMP _MYCLASS_::GetNetworkInterfaces(PRUint32 *networkInterfacesSize, IHostNetworkInterface ***networkInterfaces)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long processorCount; */
NS_IMETHODIMP _MYCLASS_::GetProcessorCount(PRUint32 *aProcessorCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long processorOnlineCount; */
NS_IMETHODIMP _MYCLASS_::GetProcessorOnlineCount(PRUint32 *aProcessorOnlineCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long processorCoreCount; */
NS_IMETHODIMP _MYCLASS_::GetProcessorCoreCount(PRUint32 *aProcessorCoreCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long memorySize; */
NS_IMETHODIMP _MYCLASS_::GetMemorySize(PRUint32 *aMemorySize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long memoryAvailable; */
NS_IMETHODIMP _MYCLASS_::GetMemoryAvailable(PRUint32 *aMemoryAvailable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring operatingSystem; */
NS_IMETHODIMP _MYCLASS_::GetOperatingSystem(PRUnichar * *aOperatingSystem)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring OSVersion; */
NS_IMETHODIMP _MYCLASS_::GetOSVersion(PRUnichar * *aOSVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long UTCTime; */
NS_IMETHODIMP _MYCLASS_::GetUTCTime(PRInt64 *aUTCTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean Acceleration3DAvailable; */
NS_IMETHODIMP _MYCLASS_::GetAcceleration3DAvailable(PRBool *aAcceleration3DAvailable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getProcessorSpeed (in unsigned long cpuId, [retval] out unsigned long speed); */
NS_IMETHODIMP _MYCLASS_::GetProcessorSpeed(PRUint32 cpuId, PRUint32 *speed)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getProcessorFeature (in PRUint32 feature, [retval] out boolean supported); */
NS_IMETHODIMP _MYCLASS_::GetProcessorFeature(PRUint32 feature, PRBool *supported)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getProcessorDescription (in unsigned long cpuId, [retval] out wstring description); */
NS_IMETHODIMP _MYCLASS_::GetProcessorDescription(PRUint32 cpuId, PRUnichar **description)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getProcessorCPUIDLeaf (in unsigned long cpuId, in unsigned long leaf, in unsigned long subLeaf, out unsigned long valEax, out unsigned long valEbx, out unsigned long valEcx, out unsigned long valEdx); */
NS_IMETHODIMP _MYCLASS_::GetProcessorCPUIDLeaf(PRUint32 cpuId, PRUint32 leaf, PRUint32 subLeaf, PRUint32 *valEax, PRUint32 *valEbx, PRUint32 *valEcx, PRUint32 *valEdx)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createHostOnlyNetworkInterface (out IHostNetworkInterface hostInterface, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CreateHostOnlyNetworkInterface(IHostNetworkInterface **hostInterface, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeHostOnlyNetworkInterface (in wstring id, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::RemoveHostOnlyNetworkInterface(const PRUnichar *id, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createUSBDeviceFilter (in wstring name, [retval] out IHostUSBDeviceFilter filter); */
NS_IMETHODIMP _MYCLASS_::CreateUSBDeviceFilter(const PRUnichar *name, IHostUSBDeviceFilter **filter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void insertUSBDeviceFilter (in unsigned long position, in IHostUSBDeviceFilter filter); */
NS_IMETHODIMP _MYCLASS_::InsertUSBDeviceFilter(PRUint32 position, IHostUSBDeviceFilter *filter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeUSBDeviceFilter (in unsigned long position); */
NS_IMETHODIMP _MYCLASS_::RemoveUSBDeviceFilter(PRUint32 position)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

/* void findHostNetworkInterfaceByName (in wstring name, [retval] out IHostNetworkInterface networkInterface); */
NS_IMETHODIMP _MYCLASS_::FindHostNetworkInterfaceByName(const PRUnichar *name, IHostNetworkInterface **networkInterface)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findHostNetworkInterfaceById (in wstring id, [retval] out IHostNetworkInterface networkInterface); */
NS_IMETHODIMP _MYCLASS_::FindHostNetworkInterfaceById(const PRUnichar *id, IHostNetworkInterface **networkInterface)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findHostNetworkInterfacesOfType (in PRUint32 type, out unsigned long networkInterfacesSize, [array, size_is (networkInterfacesSize), retval] out IHostNetworkInterface networkInterfaces); */
NS_IMETHODIMP _MYCLASS_::FindHostNetworkInterfacesOfType(PRUint32 type, PRUint32 *networkInterfacesSize, IHostNetworkInterface ***networkInterfaces)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findUSBDeviceById (in wstring id, [retval] out IHostUSBDevice device); */
NS_IMETHODIMP _MYCLASS_::FindUSBDeviceById(const PRUnichar *id, IHostUSBDevice **device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void findUSBDeviceByAddress (in wstring name, [retval] out IHostUSBDevice device); */
NS_IMETHODIMP _MYCLASS_::FindUSBDeviceByAddress(const PRUnichar *name, IHostUSBDevice **device)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IHost_GETTER_DVDDrives_TO(smth) NS_IMETHOD GetDVDDrives (PRUint32 * aDVDDrivesSize, IMedium * * * aDVDDrives) { return smth GetDVDDrives (aDVDDrivesSize, aDVDDrives); }
#define COM_FORWARD_IHost_GETTER_DVDDrives_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_DVDDrives_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_DVDDrives_TO_BASE(base) COM_FORWARD_IHost_GETTER_DVDDrives_TO (base::)
#define COM_FORWARD_IHost_GETTER_FloppyDrives_TO(smth) NS_IMETHOD GetFloppyDrives (PRUint32 * aFloppyDrivesSize, IMedium * * * aFloppyDrives) { return smth GetFloppyDrives (aFloppyDrivesSize, aFloppyDrives); }
#define COM_FORWARD_IHost_GETTER_FloppyDrives_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_FloppyDrives_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_FloppyDrives_TO_BASE(base) COM_FORWARD_IHost_GETTER_FloppyDrives_TO (base::)
#define COM_FORWARD_IHost_GETTER_USBDevices_TO(smth) NS_IMETHOD GetUSBDevices (PRUint32 * aUSBDevicesSize, IHostUSBDevice * * * aUSBDevices) { return smth GetUSBDevices (aUSBDevicesSize, aUSBDevices); }
#define COM_FORWARD_IHost_GETTER_USBDevices_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_USBDevices_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_USBDevices_TO_BASE(base) COM_FORWARD_IHost_GETTER_USBDevices_TO (base::)
#define COM_FORWARD_IHost_GETTER_USBDeviceFilters_TO(smth) NS_IMETHOD GetUSBDeviceFilters (PRUint32 * aUSBDeviceFiltersSize, IHostUSBDeviceFilter * * * aUSBDeviceFilters) { return smth GetUSBDeviceFilters (aUSBDeviceFiltersSize, aUSBDeviceFilters); }
#define COM_FORWARD_IHost_GETTER_USBDeviceFilters_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_USBDeviceFilters_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_USBDeviceFilters_TO_BASE(base) COM_FORWARD_IHost_GETTER_USBDeviceFilters_TO (base::)
#define COM_FORWARD_IHost_GETTER_NetworkInterfaces_TO(smth) NS_IMETHOD GetNetworkInterfaces (PRUint32 * aNetworkInterfacesSize, IHostNetworkInterface * * * aNetworkInterfaces) { return smth GetNetworkInterfaces (aNetworkInterfacesSize, aNetworkInterfaces); }
#define COM_FORWARD_IHost_GETTER_NetworkInterfaces_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_NetworkInterfaces_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_NetworkInterfaces_TO_BASE(base) COM_FORWARD_IHost_GETTER_NetworkInterfaces_TO (base::)
#define COM_FORWARD_IHost_GETTER_ProcessorCount_TO(smth) NS_IMETHOD GetProcessorCount (PRUint32 * aProcessorCount) { return smth GetProcessorCount (aProcessorCount); }
#define COM_FORWARD_IHost_GETTER_ProcessorCount_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_ProcessorCount_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_ProcessorCount_TO_BASE(base) COM_FORWARD_IHost_GETTER_ProcessorCount_TO (base::)
#define COM_FORWARD_IHost_GETTER_ProcessorOnlineCount_TO(smth) NS_IMETHOD GetProcessorOnlineCount (PRUint32 * aProcessorOnlineCount) { return smth GetProcessorOnlineCount (aProcessorOnlineCount); }
#define COM_FORWARD_IHost_GETTER_ProcessorOnlineCount_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_ProcessorOnlineCount_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_ProcessorOnlineCount_TO_BASE(base) COM_FORWARD_IHost_GETTER_ProcessorOnlineCount_TO (base::)
#define COM_FORWARD_IHost_GETTER_ProcessorCoreCount_TO(smth) NS_IMETHOD GetProcessorCoreCount (PRUint32 * aProcessorCoreCount) { return smth GetProcessorCoreCount (aProcessorCoreCount); }
#define COM_FORWARD_IHost_GETTER_ProcessorCoreCount_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_ProcessorCoreCount_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_ProcessorCoreCount_TO_BASE(base) COM_FORWARD_IHost_GETTER_ProcessorCoreCount_TO (base::)
#define COM_FORWARD_IHost_GETTER_MemorySize_TO(smth) NS_IMETHOD GetMemorySize (PRUint32 * aMemorySize) { return smth GetMemorySize (aMemorySize); }
#define COM_FORWARD_IHost_GETTER_MemorySize_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_MemorySize_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_MemorySize_TO_BASE(base) COM_FORWARD_IHost_GETTER_MemorySize_TO (base::)
#define COM_FORWARD_IHost_GETTER_MemoryAvailable_TO(smth) NS_IMETHOD GetMemoryAvailable (PRUint32 * aMemoryAvailable) { return smth GetMemoryAvailable (aMemoryAvailable); }
#define COM_FORWARD_IHost_GETTER_MemoryAvailable_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_MemoryAvailable_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_MemoryAvailable_TO_BASE(base) COM_FORWARD_IHost_GETTER_MemoryAvailable_TO (base::)
#define COM_FORWARD_IHost_GETTER_OperatingSystem_TO(smth) NS_IMETHOD GetOperatingSystem (PRUnichar * * aOperatingSystem) { return smth GetOperatingSystem (aOperatingSystem); }
#define COM_FORWARD_IHost_GETTER_OperatingSystem_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_OperatingSystem_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_OperatingSystem_TO_BASE(base) COM_FORWARD_IHost_GETTER_OperatingSystem_TO (base::)
#define COM_FORWARD_IHost_GETTER_OSVersion_TO(smth) NS_IMETHOD GetOSVersion (PRUnichar * * aOSVersion) { return smth GetOSVersion (aOSVersion); }
#define COM_FORWARD_IHost_GETTER_OSVersion_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_OSVersion_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_OSVersion_TO_BASE(base) COM_FORWARD_IHost_GETTER_OSVersion_TO (base::)
#define COM_FORWARD_IHost_GETTER_UTCTime_TO(smth) NS_IMETHOD GetUTCTime (PRInt64 * aUTCTime) { return smth GetUTCTime (aUTCTime); }
#define COM_FORWARD_IHost_GETTER_UTCTime_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_UTCTime_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_UTCTime_TO_BASE(base) COM_FORWARD_IHost_GETTER_UTCTime_TO (base::)
#define COM_FORWARD_IHost_GETTER_Acceleration3DAvailable_TO(smth) NS_IMETHOD GetAcceleration3DAvailable (PRBool * aAcceleration3DAvailable) { return smth GetAcceleration3DAvailable (aAcceleration3DAvailable); }
#define COM_FORWARD_IHost_GETTER_Acceleration3DAvailable_TO_OBJ(obj) COM_FORWARD_IHost_GETTER_Acceleration3DAvailable_TO ((obj)->)
#define COM_FORWARD_IHost_GETTER_Acceleration3DAvailable_TO_BASE(base) COM_FORWARD_IHost_GETTER_Acceleration3DAvailable_TO (base::)
#define COM_FORWARD_IHost_GetProcessorSpeed_TO(smth) NS_IMETHOD GetProcessorSpeed (PRUint32 aCpuId, PRUint32 * aSpeed) { return smth GetProcessorSpeed (aCpuId, aSpeed); }
#define COM_FORWARD_IHost_GetProcessorSpeed_TO_OBJ(obj) COM_FORWARD_IHost_GetProcessorSpeed_TO ((obj)->)
#define COM_FORWARD_IHost_GetProcessorSpeed_TO_BASE(base) COM_FORWARD_IHost_GetProcessorSpeed_TO (base::)
#define COM_FORWARD_IHost_GetProcessorFeature_TO(smth) NS_IMETHOD GetProcessorFeature (PRUint32 aFeature, PRBool * aSupported) { return smth GetProcessorFeature (aFeature, aSupported); }
#define COM_FORWARD_IHost_GetProcessorFeature_TO_OBJ(obj) COM_FORWARD_IHost_GetProcessorFeature_TO ((obj)->)
#define COM_FORWARD_IHost_GetProcessorFeature_TO_BASE(base) COM_FORWARD_IHost_GetProcessorFeature_TO (base::)
#define COM_FORWARD_IHost_GetProcessorDescription_TO(smth) NS_IMETHOD GetProcessorDescription (PRUint32 aCpuId, PRUnichar * * aDescription) { return smth GetProcessorDescription (aCpuId, aDescription); }
#define COM_FORWARD_IHost_GetProcessorDescription_TO_OBJ(obj) COM_FORWARD_IHost_GetProcessorDescription_TO ((obj)->)
#define COM_FORWARD_IHost_GetProcessorDescription_TO_BASE(base) COM_FORWARD_IHost_GetProcessorDescription_TO (base::)
#define COM_FORWARD_IHost_GetProcessorCPUIDLeaf_TO(smth) NS_IMETHOD GetProcessorCPUIDLeaf (PRUint32 aCpuId, PRUint32 aLeaf, PRUint32 aSubLeaf, PRUint32 * aValEax, PRUint32 * aValEbx, PRUint32 * aValEcx, PRUint32 * aValEdx) { return smth GetProcessorCPUIDLeaf (aCpuId, aLeaf, aSubLeaf, aValEax, aValEbx, aValEcx, aValEdx); }
#define COM_FORWARD_IHost_GetProcessorCPUIDLeaf_TO_OBJ(obj) COM_FORWARD_IHost_GetProcessorCPUIDLeaf_TO ((obj)->)
#define COM_FORWARD_IHost_GetProcessorCPUIDLeaf_TO_BASE(base) COM_FORWARD_IHost_GetProcessorCPUIDLeaf_TO (base::)
#define COM_FORWARD_IHost_CreateHostOnlyNetworkInterface_TO(smth) NS_IMETHOD CreateHostOnlyNetworkInterface (IHostNetworkInterface * * aHostInterface, IProgress * * aProgress) { return smth CreateHostOnlyNetworkInterface (aHostInterface, aProgress); }
#define COM_FORWARD_IHost_CreateHostOnlyNetworkInterface_TO_OBJ(obj) COM_FORWARD_IHost_CreateHostOnlyNetworkInterface_TO ((obj)->)
#define COM_FORWARD_IHost_CreateHostOnlyNetworkInterface_TO_BASE(base) COM_FORWARD_IHost_CreateHostOnlyNetworkInterface_TO (base::)
#define COM_FORWARD_IHost_RemoveHostOnlyNetworkInterface_TO(smth) NS_IMETHOD RemoveHostOnlyNetworkInterface (PRUnichar * aId, IProgress * * aProgress) { return smth RemoveHostOnlyNetworkInterface (aId, aProgress); }
#define COM_FORWARD_IHost_RemoveHostOnlyNetworkInterface_TO_OBJ(obj) COM_FORWARD_IHost_RemoveHostOnlyNetworkInterface_TO ((obj)->)
#define COM_FORWARD_IHost_RemoveHostOnlyNetworkInterface_TO_BASE(base) COM_FORWARD_IHost_RemoveHostOnlyNetworkInterface_TO (base::)
#define COM_FORWARD_IHost_CreateUSBDeviceFilter_TO(smth) NS_IMETHOD CreateUSBDeviceFilter (PRUnichar * aName, IHostUSBDeviceFilter * * aFilter) { return smth CreateUSBDeviceFilter (aName, aFilter); }
#define COM_FORWARD_IHost_CreateUSBDeviceFilter_TO_OBJ(obj) COM_FORWARD_IHost_CreateUSBDeviceFilter_TO ((obj)->)
#define COM_FORWARD_IHost_CreateUSBDeviceFilter_TO_BASE(base) COM_FORWARD_IHost_CreateUSBDeviceFilter_TO (base::)
#define COM_FORWARD_IHost_InsertUSBDeviceFilter_TO(smth) NS_IMETHOD InsertUSBDeviceFilter (PRUint32 aPosition, IHostUSBDeviceFilter * aFilter) { return smth InsertUSBDeviceFilter (aPosition, aFilter); }
#define COM_FORWARD_IHost_InsertUSBDeviceFilter_TO_OBJ(obj) COM_FORWARD_IHost_InsertUSBDeviceFilter_TO ((obj)->)
#define COM_FORWARD_IHost_InsertUSBDeviceFilter_TO_BASE(base) COM_FORWARD_IHost_InsertUSBDeviceFilter_TO (base::)
#define COM_FORWARD_IHost_RemoveUSBDeviceFilter_TO(smth) NS_IMETHOD RemoveUSBDeviceFilter (PRUint32 aPosition) { return smth RemoveUSBDeviceFilter (aPosition); }
#define COM_FORWARD_IHost_RemoveUSBDeviceFilter_TO_OBJ(obj) COM_FORWARD_IHost_RemoveUSBDeviceFilter_TO ((obj)->)
#define COM_FORWARD_IHost_RemoveUSBDeviceFilter_TO_BASE(base) COM_FORWARD_IHost_RemoveUSBDeviceFilter_TO (base::)
#define COM_FORWARD_IHost_FindHostDVDDrive_TO(smth) NS_IMETHOD FindHostDVDDrive (PRUnichar * aName, IMedium * * aDrive) { return smth FindHostDVDDrive (aName, aDrive); }
#define COM_FORWARD_IHost_FindHostDVDDrive_TO_OBJ(obj) COM_FORWARD_IHost_FindHostDVDDrive_TO ((obj)->)
#define COM_FORWARD_IHost_FindHostDVDDrive_TO_BASE(base) COM_FORWARD_IHost_FindHostDVDDrive_TO (base::)
#define COM_FORWARD_IHost_FindHostFloppyDrive_TO(smth) NS_IMETHOD FindHostFloppyDrive (PRUnichar * aName, IMedium * * aDrive) { return smth FindHostFloppyDrive (aName, aDrive); }
#define COM_FORWARD_IHost_FindHostFloppyDrive_TO_OBJ(obj) COM_FORWARD_IHost_FindHostFloppyDrive_TO ((obj)->)
#define COM_FORWARD_IHost_FindHostFloppyDrive_TO_BASE(base) COM_FORWARD_IHost_FindHostFloppyDrive_TO (base::)
#define COM_FORWARD_IHost_FindHostNetworkInterfaceByName_TO(smth) NS_IMETHOD FindHostNetworkInterfaceByName (PRUnichar * aName, IHostNetworkInterface * * aNetworkInterface) { return smth FindHostNetworkInterfaceByName (aName, aNetworkInterface); }
#define COM_FORWARD_IHost_FindHostNetworkInterfaceByName_TO_OBJ(obj) COM_FORWARD_IHost_FindHostNetworkInterfaceByName_TO ((obj)->)
#define COM_FORWARD_IHost_FindHostNetworkInterfaceByName_TO_BASE(base) COM_FORWARD_IHost_FindHostNetworkInterfaceByName_TO (base::)
#define COM_FORWARD_IHost_FindHostNetworkInterfaceById_TO(smth) NS_IMETHOD FindHostNetworkInterfaceById (PRUnichar * aId, IHostNetworkInterface * * aNetworkInterface) { return smth FindHostNetworkInterfaceById (aId, aNetworkInterface); }
#define COM_FORWARD_IHost_FindHostNetworkInterfaceById_TO_OBJ(obj) COM_FORWARD_IHost_FindHostNetworkInterfaceById_TO ((obj)->)
#define COM_FORWARD_IHost_FindHostNetworkInterfaceById_TO_BASE(base) COM_FORWARD_IHost_FindHostNetworkInterfaceById_TO (base::)
#define COM_FORWARD_IHost_FindHostNetworkInterfacesOfType_TO(smth) NS_IMETHOD FindHostNetworkInterfacesOfType (PRUint32 aType, PRUint32 * aNetworkInterfacesSize, IHostNetworkInterface * * * aNetworkInterfaces) { return smth FindHostNetworkInterfacesOfType (aType, aNetworkInterfacesSize, aNetworkInterfaces); }
#define COM_FORWARD_IHost_FindHostNetworkInterfacesOfType_TO_OBJ(obj) COM_FORWARD_IHost_FindHostNetworkInterfacesOfType_TO ((obj)->)
#define COM_FORWARD_IHost_FindHostNetworkInterfacesOfType_TO_BASE(base) COM_FORWARD_IHost_FindHostNetworkInterfacesOfType_TO (base::)
#define COM_FORWARD_IHost_FindUSBDeviceById_TO(smth) NS_IMETHOD FindUSBDeviceById (PRUnichar * aId, IHostUSBDevice * * aDevice) { return smth FindUSBDeviceById (aId, aDevice); }
#define COM_FORWARD_IHost_FindUSBDeviceById_TO_OBJ(obj) COM_FORWARD_IHost_FindUSBDeviceById_TO ((obj)->)
#define COM_FORWARD_IHost_FindUSBDeviceById_TO_BASE(base) COM_FORWARD_IHost_FindUSBDeviceById_TO (base::)
#define COM_FORWARD_IHost_FindUSBDeviceByAddress_TO(smth) NS_IMETHOD FindUSBDeviceByAddress (PRUnichar * aName, IHostUSBDevice * * aDevice) { return smth FindUSBDeviceByAddress (aName, aDevice); }
#define COM_FORWARD_IHost_FindUSBDeviceByAddress_TO_OBJ(obj) COM_FORWARD_IHost_FindUSBDeviceByAddress_TO ((obj)->)
#define COM_FORWARD_IHost_FindUSBDeviceByAddress_TO_BASE(base) COM_FORWARD_IHost_FindUSBDeviceByAddress_TO (base::)
#define COM_FORWARD_IHost_TO(smth) NS_FORWARD_IHOST (smth)
#define COM_FORWARD_IHost_TO_OBJ(obj) COM_FORWARD_IHost_TO ((obj)->)
#define COM_FORWARD_IHost_TO_BASE(base) COM_FORWARD_IHost_TO (base::)

/* starting interface:    ISystemProperties */
#define ISYSTEMPROPERTIES_IID_STR "07c3ffd8-8f59-49cc-b608-53a332e85cc3"

#define ISYSTEMPROPERTIES_IID \
  {0x07c3ffd8, 0x8f59, 0x49cc, \
    { 0xb6, 0x08, 0x53, 0xa3, 0x32, 0xe8, 0x5c, 0xc3 }}

class NS_NO_VTABLE ISystemProperties : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISYSTEMPROPERTIES_IID)

  /* readonly attribute unsigned long minGuestRAM; */
  NS_IMETHOD GetMinGuestRAM(PRUint32 *aMinGuestRAM) = 0;

  /* readonly attribute unsigned long maxGuestRAM; */
  NS_IMETHOD GetMaxGuestRAM(PRUint32 *aMaxGuestRAM) = 0;

  /* readonly attribute unsigned long minGuestVRAM; */
  NS_IMETHOD GetMinGuestVRAM(PRUint32 *aMinGuestVRAM) = 0;

  /* readonly attribute unsigned long maxGuestVRAM; */
  NS_IMETHOD GetMaxGuestVRAM(PRUint32 *aMaxGuestVRAM) = 0;

  /* readonly attribute unsigned long minGuestCPUCount; */
  NS_IMETHOD GetMinGuestCPUCount(PRUint32 *aMinGuestCPUCount) = 0;

  /* readonly attribute unsigned long maxGuestCPUCount; */
  NS_IMETHOD GetMaxGuestCPUCount(PRUint32 *aMaxGuestCPUCount) = 0;

  /* readonly attribute unsigned long maxGuestMonitors; */
  NS_IMETHOD GetMaxGuestMonitors(PRUint32 *aMaxGuestMonitors) = 0;

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

  /* attribute wstring defaultHardDiskFolder; */
  NS_IMETHOD GetDefaultHardDiskFolder(PRUnichar * *aDefaultHardDiskFolder) = 0;
  NS_IMETHOD SetDefaultHardDiskFolder(const PRUnichar * aDefaultHardDiskFolder) = 0;

  /* void getMediumFormats (out unsigned long mediumFormatsSize, [array, size_is (mediumFormatsSize), retval] out IMediumFormat mediumFormats); */
  NS_IMETHOD GetMediumFormats(PRUint32 *mediumFormatsSize, IMediumFormat ***mediumFormats) = 0;

  /* attribute wstring defaultHardDiskFormat; */
  NS_IMETHOD GetDefaultHardDiskFormat(PRUnichar * *aDefaultHardDiskFormat) = 0;
  NS_IMETHOD SetDefaultHardDiskFormat(const PRUnichar * aDefaultHardDiskFormat) = 0;

  /* attribute unsigned long long freeDiskSpaceWarning; */
  NS_IMETHOD GetFreeDiskSpaceWarning(PRUint64 *aFreeDiskSpaceWarning) = 0;
  NS_IMETHOD SetFreeDiskSpaceWarning(PRUint64 aFreeDiskSpaceWarning) = 0;

  /* attribute unsigned long freeDiskSpacePercentWarning; */
  NS_IMETHOD GetFreeDiskSpacePercentWarning(PRUint32 *aFreeDiskSpacePercentWarning) = 0;
  NS_IMETHOD SetFreeDiskSpacePercentWarning(PRUint32 aFreeDiskSpacePercentWarning) = 0;

  /* attribute unsigned long long freeDiskSpaceError; */
  NS_IMETHOD GetFreeDiskSpaceError(PRUint64 *aFreeDiskSpaceError) = 0;
  NS_IMETHOD SetFreeDiskSpaceError(PRUint64 aFreeDiskSpaceError) = 0;

  /* attribute unsigned long freeDiskSpacePercentError; */
  NS_IMETHOD GetFreeDiskSpacePercentError(PRUint32 *aFreeDiskSpacePercentError) = 0;
  NS_IMETHOD SetFreeDiskSpacePercentError(PRUint32 aFreeDiskSpacePercentError) = 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 unsigned long LogHistoryCount; */
  NS_IMETHOD GetLogHistoryCount(PRUint32 *aLogHistoryCount) = 0;
  NS_IMETHOD SetLogHistoryCount(PRUint32 aLogHistoryCount) = 0;

  /* readonly attribute PRUint32 defaultAudioDriver; */
  NS_IMETHOD GetDefaultAudioDriver(PRUint32 *aDefaultAudioDriver) = 0;

  /* void getMaxDevicesPerPortForStorageBus (in PRUint32 bus, [retval] out unsigned long maxDevicesPerPort); */
  NS_IMETHOD GetMaxDevicesPerPortForStorageBus(PRUint32 bus, PRUint32 *maxDevicesPerPort) = 0;

  /* void getMinPortCountForStorageBus (in PRUint32 bus, [retval] out unsigned long minPortCount); */
  NS_IMETHOD GetMinPortCountForStorageBus(PRUint32 bus, PRUint32 *minPortCount) = 0;

  /* void getMaxPortCountForStorageBus (in PRUint32 bus, [retval] out unsigned long maxPortCount); */
  NS_IMETHOD GetMaxPortCountForStorageBus(PRUint32 bus, PRUint32 *maxPortCount) = 0;

  /* void getMaxInstancesOfStorageBus (in PRUint32 bus, [retval] out unsigned long maxInstances); */
  NS_IMETHOD GetMaxInstancesOfStorageBus(PRUint32 bus, PRUint32 *maxInstances) = 0;

  /* void getDeviceTypesForStorageBus (in PRUint32 bus, out unsigned long deviceTypesSize, [array, size_is (deviceTypesSize), retval] out PRUint32 deviceTypes); */
  NS_IMETHOD GetDeviceTypesForStorageBus(PRUint32 bus, PRUint32 *deviceTypesSize, PRUint32 **deviceTypes) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISYSTEMPROPERTIES \
  NS_IMETHOD GetMinGuestRAM(PRUint32 *aMinGuestRAM); \
  NS_IMETHOD GetMaxGuestRAM(PRUint32 *aMaxGuestRAM); \
  NS_IMETHOD GetMinGuestVRAM(PRUint32 *aMinGuestVRAM); \
  NS_IMETHOD GetMaxGuestVRAM(PRUint32 *aMaxGuestVRAM); \
  NS_IMETHOD GetMinGuestCPUCount(PRUint32 *aMinGuestCPUCount); \
  NS_IMETHOD GetMaxGuestCPUCount(PRUint32 *aMaxGuestCPUCount); \
  NS_IMETHOD GetMaxGuestMonitors(PRUint32 *aMaxGuestMonitors); \
  NS_IMETHOD 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 GetDefaultMachineFolder(PRUnichar * *aDefaultMachineFolder); \
  NS_IMETHOD SetDefaultMachineFolder(const PRUnichar * aDefaultMachineFolder); \
  NS_IMETHOD GetDefaultHardDiskFolder(PRUnichar * *aDefaultHardDiskFolder); \
  NS_IMETHOD SetDefaultHardDiskFolder(const PRUnichar * aDefaultHardDiskFolder); \
  NS_IMETHOD GetMediumFormats(PRUint32 *mediumFormatsSize, IMediumFormat ***mediumFormats); \
  NS_IMETHOD GetDefaultHardDiskFormat(PRUnichar * *aDefaultHardDiskFormat); \
  NS_IMETHOD SetDefaultHardDiskFormat(const PRUnichar * aDefaultHardDiskFormat); \
  NS_IMETHOD GetFreeDiskSpaceWarning(PRUint64 *aFreeDiskSpaceWarning); \
  NS_IMETHOD SetFreeDiskSpaceWarning(PRUint64 aFreeDiskSpaceWarning); \
  NS_IMETHOD GetFreeDiskSpacePercentWarning(PRUint32 *aFreeDiskSpacePercentWarning); \
  NS_IMETHOD SetFreeDiskSpacePercentWarning(PRUint32 aFreeDiskSpacePercentWarning); \
  NS_IMETHOD GetFreeDiskSpaceError(PRUint64 *aFreeDiskSpaceError); \
  NS_IMETHOD SetFreeDiskSpaceError(PRUint64 aFreeDiskSpaceError); \
  NS_IMETHOD GetFreeDiskSpacePercentError(PRUint32 *aFreeDiskSpacePercentError); \
  NS_IMETHOD SetFreeDiskSpacePercentError(PRUint32 aFreeDiskSpacePercentError); \
  NS_IMETHOD GetRemoteDisplayAuthLibrary(PRUnichar * *aRemoteDisplayAuthLibrary); \
  NS_IMETHOD SetRemoteDisplayAuthLibrary(const PRUnichar * aRemoteDisplayAuthLibrary); \
  NS_IMETHOD GetWebServiceAuthLibrary(PRUnichar * *aWebServiceAuthLibrary); \
  NS_IMETHOD SetWebServiceAuthLibrary(const PRUnichar * aWebServiceAuthLibrary); \
  NS_IMETHOD GetLogHistoryCount(PRUint32 *aLogHistoryCount); \
  NS_IMETHOD SetLogHistoryCount(PRUint32 aLogHistoryCount); \
  NS_IMETHOD GetDefaultAudioDriver(PRUint32 *aDefaultAudioDriver); \
  NS_IMETHOD GetMaxDevicesPerPortForStorageBus(PRUint32 bus, PRUint32 *maxDevicesPerPort); \
  NS_IMETHOD GetMinPortCountForStorageBus(PRUint32 bus, PRUint32 *minPortCount); \
  NS_IMETHOD GetMaxPortCountForStorageBus(PRUint32 bus, PRUint32 *maxPortCount); \
  NS_IMETHOD GetMaxInstancesOfStorageBus(PRUint32 bus, PRUint32 *maxInstances); \
  NS_IMETHOD GetDeviceTypesForStorageBus(PRUint32 bus, PRUint32 *deviceTypesSize, PRUint32 **deviceTypes); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISYSTEMPROPERTIES(_to) \
  NS_IMETHOD GetMinGuestRAM(PRUint32 *aMinGuestRAM) { return _to GetMinGuestRAM(aMinGuestRAM); } \
  NS_IMETHOD GetMaxGuestRAM(PRUint32 *aMaxGuestRAM) { return _to GetMaxGuestRAM(aMaxGuestRAM); } \
  NS_IMETHOD GetMinGuestVRAM(PRUint32 *aMinGuestVRAM) { return _to GetMinGuestVRAM(aMinGuestVRAM); } \
  NS_IMETHOD GetMaxGuestVRAM(PRUint32 *aMaxGuestVRAM) { return _to GetMaxGuestVRAM(aMaxGuestVRAM); } \
  NS_IMETHOD GetMinGuestCPUCount(PRUint32 *aMinGuestCPUCount) { return _to GetMinGuestCPUCount(aMinGuestCPUCount); } \
  NS_IMETHOD GetMaxGuestCPUCount(PRUint32 *aMaxGuestCPUCount) { return _to GetMaxGuestCPUCount(aMaxGuestCPUCount); } \
  NS_IMETHOD GetMaxGuestMonitors(PRUint32 *aMaxGuestMonitors) { return _to GetMaxGuestMonitors(aMaxGuestMonitors); } \
  NS_IMETHOD 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 GetDefaultMachineFolder(PRUnichar * *aDefaultMachineFolder) { return _to GetDefaultMachineFolder(aDefaultMachineFolder); } \
  NS_IMETHOD SetDefaultMachineFolder(const PRUnichar * aDefaultMachineFolder) { return _to SetDefaultMachineFolder(aDefaultMachineFolder); } \
  NS_IMETHOD GetDefaultHardDiskFolder(PRUnichar * *aDefaultHardDiskFolder) { return _to GetDefaultHardDiskFolder(aDefaultHardDiskFolder); } \
  NS_IMETHOD SetDefaultHardDiskFolder(const PRUnichar * aDefaultHardDiskFolder) { return _to SetDefaultHardDiskFolder(aDefaultHardDiskFolder); } \
  NS_IMETHOD GetMediumFormats(PRUint32 *mediumFormatsSize, IMediumFormat ***mediumFormats) { return _to GetMediumFormats(mediumFormatsSize, mediumFormats); } \
  NS_IMETHOD GetDefaultHardDiskFormat(PRUnichar * *aDefaultHardDiskFormat) { return _to GetDefaultHardDiskFormat(aDefaultHardDiskFormat); } \
  NS_IMETHOD SetDefaultHardDiskFormat(const PRUnichar * aDefaultHardDiskFormat) { return _to SetDefaultHardDiskFormat(aDefaultHardDiskFormat); } \
  NS_IMETHOD GetFreeDiskSpaceWarning(PRUint64 *aFreeDiskSpaceWarning) { return _to GetFreeDiskSpaceWarning(aFreeDiskSpaceWarning); } \
  NS_IMETHOD SetFreeDiskSpaceWarning(PRUint64 aFreeDiskSpaceWarning) { return _to SetFreeDiskSpaceWarning(aFreeDiskSpaceWarning); } \
  NS_IMETHOD GetFreeDiskSpacePercentWarning(PRUint32 *aFreeDiskSpacePercentWarning) { return _to GetFreeDiskSpacePercentWarning(aFreeDiskSpacePercentWarning); } \
  NS_IMETHOD SetFreeDiskSpacePercentWarning(PRUint32 aFreeDiskSpacePercentWarning) { return _to SetFreeDiskSpacePercentWarning(aFreeDiskSpacePercentWarning); } \
  NS_IMETHOD GetFreeDiskSpaceError(PRUint64 *aFreeDiskSpaceError) { return _to GetFreeDiskSpaceError(aFreeDiskSpaceError); } \
  NS_IMETHOD SetFreeDiskSpaceError(PRUint64 aFreeDiskSpaceError) { return _to SetFreeDiskSpaceError(aFreeDiskSpaceError); } \
  NS_IMETHOD GetFreeDiskSpacePercentError(PRUint32 *aFreeDiskSpacePercentError) { return _to GetFreeDiskSpacePercentError(aFreeDiskSpacePercentError); } \
  NS_IMETHOD SetFreeDiskSpacePercentError(PRUint32 aFreeDiskSpacePercentError) { return _to SetFreeDiskSpacePercentError(aFreeDiskSpacePercentError); } \
  NS_IMETHOD 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 GetLogHistoryCount(PRUint32 *aLogHistoryCount) { return _to GetLogHistoryCount(aLogHistoryCount); } \
  NS_IMETHOD SetLogHistoryCount(PRUint32 aLogHistoryCount) { return _to SetLogHistoryCount(aLogHistoryCount); } \
  NS_IMETHOD GetDefaultAudioDriver(PRUint32 *aDefaultAudioDriver) { return _to GetDefaultAudioDriver(aDefaultAudioDriver); } \
  NS_IMETHOD GetMaxDevicesPerPortForStorageBus(PRUint32 bus, PRUint32 *maxDevicesPerPort) { return _to GetMaxDevicesPerPortForStorageBus(bus, maxDevicesPerPort); } \
  NS_IMETHOD GetMinPortCountForStorageBus(PRUint32 bus, PRUint32 *minPortCount) { return _to GetMinPortCountForStorageBus(bus, minPortCount); } \
  NS_IMETHOD GetMaxPortCountForStorageBus(PRUint32 bus, PRUint32 *maxPortCount) { return _to GetMaxPortCountForStorageBus(bus, maxPortCount); } \
  NS_IMETHOD GetMaxInstancesOfStorageBus(PRUint32 bus, PRUint32 *maxInstances) { return _to GetMaxInstancesOfStorageBus(bus, maxInstances); } \
  NS_IMETHOD GetDeviceTypesForStorageBus(PRUint32 bus, PRUint32 *deviceTypesSize, PRUint32 **deviceTypes) { return _to GetDeviceTypesForStorageBus(bus, deviceTypesSize, deviceTypes); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISYSTEMPROPERTIES(_to) \
  NS_IMETHOD GetMinGuestRAM(PRUint32 *aMinGuestRAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMinGuestRAM(aMinGuestRAM); } \
  NS_IMETHOD GetMaxGuestRAM(PRUint32 *aMaxGuestRAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxGuestRAM(aMaxGuestRAM); } \
  NS_IMETHOD GetMinGuestVRAM(PRUint32 *aMinGuestVRAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMinGuestVRAM(aMinGuestVRAM); } \
  NS_IMETHOD GetMaxGuestVRAM(PRUint32 *aMaxGuestVRAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxGuestVRAM(aMaxGuestVRAM); } \
  NS_IMETHOD GetMinGuestCPUCount(PRUint32 *aMinGuestCPUCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMinGuestCPUCount(aMinGuestCPUCount); } \
  NS_IMETHOD GetMaxGuestCPUCount(PRUint32 *aMaxGuestCPUCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxGuestCPUCount(aMaxGuestCPUCount); } \
  NS_IMETHOD GetMaxGuestMonitors(PRUint32 *aMaxGuestMonitors) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxGuestMonitors(aMaxGuestMonitors); } \
  NS_IMETHOD 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 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 GetDefaultHardDiskFolder(PRUnichar * *aDefaultHardDiskFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDefaultHardDiskFolder(aDefaultHardDiskFolder); } \
  NS_IMETHOD SetDefaultHardDiskFolder(const PRUnichar * aDefaultHardDiskFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDefaultHardDiskFolder(aDefaultHardDiskFolder); } \
  NS_IMETHOD GetMediumFormats(PRUint32 *mediumFormatsSize, IMediumFormat ***mediumFormats) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMediumFormats(mediumFormatsSize, mediumFormats); } \
  NS_IMETHOD GetDefaultHardDiskFormat(PRUnichar * *aDefaultHardDiskFormat) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDefaultHardDiskFormat(aDefaultHardDiskFormat); } \
  NS_IMETHOD SetDefaultHardDiskFormat(const PRUnichar * aDefaultHardDiskFormat) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDefaultHardDiskFormat(aDefaultHardDiskFormat); } \
  NS_IMETHOD GetFreeDiskSpaceWarning(PRUint64 *aFreeDiskSpaceWarning) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFreeDiskSpaceWarning(aFreeDiskSpaceWarning); } \
  NS_IMETHOD SetFreeDiskSpaceWarning(PRUint64 aFreeDiskSpaceWarning) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFreeDiskSpaceWarning(aFreeDiskSpaceWarning); } \
  NS_IMETHOD GetFreeDiskSpacePercentWarning(PRUint32 *aFreeDiskSpacePercentWarning) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFreeDiskSpacePercentWarning(aFreeDiskSpacePercentWarning); } \
  NS_IMETHOD SetFreeDiskSpacePercentWarning(PRUint32 aFreeDiskSpacePercentWarning) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFreeDiskSpacePercentWarning(aFreeDiskSpacePercentWarning); } \
  NS_IMETHOD GetFreeDiskSpaceError(PRUint64 *aFreeDiskSpaceError) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFreeDiskSpaceError(aFreeDiskSpaceError); } \
  NS_IMETHOD SetFreeDiskSpaceError(PRUint64 aFreeDiskSpaceError) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFreeDiskSpaceError(aFreeDiskSpaceError); } \
  NS_IMETHOD GetFreeDiskSpacePercentError(PRUint32 *aFreeDiskSpacePercentError) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFreeDiskSpacePercentError(aFreeDiskSpacePercentError); } \
  NS_IMETHOD SetFreeDiskSpacePercentError(PRUint32 aFreeDiskSpacePercentError) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFreeDiskSpacePercentError(aFreeDiskSpacePercentError); } \
  NS_IMETHOD 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 GetLogHistoryCount(PRUint32 *aLogHistoryCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogHistoryCount(aLogHistoryCount); } \
  NS_IMETHOD SetLogHistoryCount(PRUint32 aLogHistoryCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLogHistoryCount(aLogHistoryCount); } \
  NS_IMETHOD GetDefaultAudioDriver(PRUint32 *aDefaultAudioDriver) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDefaultAudioDriver(aDefaultAudioDriver); } \
  NS_IMETHOD GetMaxDevicesPerPortForStorageBus(PRUint32 bus, PRUint32 *maxDevicesPerPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxDevicesPerPortForStorageBus(bus, maxDevicesPerPort); } \
  NS_IMETHOD GetMinPortCountForStorageBus(PRUint32 bus, PRUint32 *minPortCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMinPortCountForStorageBus(bus, minPortCount); } \
  NS_IMETHOD GetMaxPortCountForStorageBus(PRUint32 bus, PRUint32 *maxPortCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxPortCountForStorageBus(bus, maxPortCount); } \
  NS_IMETHOD GetMaxInstancesOfStorageBus(PRUint32 bus, PRUint32 *maxInstances) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxInstancesOfStorageBus(bus, maxInstances); } \
  NS_IMETHOD GetDeviceTypesForStorageBus(PRUint32 bus, PRUint32 *deviceTypesSize, PRUint32 **deviceTypes) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDeviceTypesForStorageBus(bus, deviceTypesSize, deviceTypes); } 

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

/* Header file */
class _MYCLASS_ : public ISystemProperties
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISYSTEMPROPERTIES

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute unsigned long minGuestRAM; */
NS_IMETHODIMP _MYCLASS_::GetMinGuestRAM(PRUint32 *aMinGuestRAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long maxGuestRAM; */
NS_IMETHODIMP _MYCLASS_::GetMaxGuestRAM(PRUint32 *aMaxGuestRAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long minGuestVRAM; */
NS_IMETHODIMP _MYCLASS_::GetMinGuestVRAM(PRUint32 *aMinGuestVRAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long maxGuestVRAM; */
NS_IMETHODIMP _MYCLASS_::GetMaxGuestVRAM(PRUint32 *aMaxGuestVRAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long minGuestCPUCount; */
NS_IMETHODIMP _MYCLASS_::GetMinGuestCPUCount(PRUint32 *aMinGuestCPUCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long maxGuestCPUCount; */
NS_IMETHODIMP _MYCLASS_::GetMaxGuestCPUCount(PRUint32 *aMaxGuestCPUCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long maxGuestMonitors; */
NS_IMETHODIMP _MYCLASS_::GetMaxGuestMonitors(PRUint32 *aMaxGuestMonitors)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute 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 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 defaultHardDiskFolder; */
NS_IMETHODIMP _MYCLASS_::GetDefaultHardDiskFolder(PRUnichar * *aDefaultHardDiskFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDefaultHardDiskFolder(const PRUnichar * aDefaultHardDiskFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMediumFormats (out unsigned long mediumFormatsSize, [array, size_is (mediumFormatsSize), retval] out IMediumFormat mediumFormats); */
NS_IMETHODIMP _MYCLASS_::GetMediumFormats(PRUint32 *mediumFormatsSize, IMediumFormat ***mediumFormats)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring defaultHardDiskFormat; */
NS_IMETHODIMP _MYCLASS_::GetDefaultHardDiskFormat(PRUnichar * *aDefaultHardDiskFormat)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDefaultHardDiskFormat(const PRUnichar * aDefaultHardDiskFormat)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long long freeDiskSpaceWarning; */
NS_IMETHODIMP _MYCLASS_::GetFreeDiskSpaceWarning(PRUint64 *aFreeDiskSpaceWarning)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetFreeDiskSpaceWarning(PRUint64 aFreeDiskSpaceWarning)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long freeDiskSpacePercentWarning; */
NS_IMETHODIMP _MYCLASS_::GetFreeDiskSpacePercentWarning(PRUint32 *aFreeDiskSpacePercentWarning)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetFreeDiskSpacePercentWarning(PRUint32 aFreeDiskSpacePercentWarning)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long long freeDiskSpaceError; */
NS_IMETHODIMP _MYCLASS_::GetFreeDiskSpaceError(PRUint64 *aFreeDiskSpaceError)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetFreeDiskSpaceError(PRUint64 aFreeDiskSpaceError)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long freeDiskSpacePercentError; */
NS_IMETHODIMP _MYCLASS_::GetFreeDiskSpacePercentError(PRUint32 *aFreeDiskSpacePercentError)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetFreeDiskSpacePercentError(PRUint32 aFreeDiskSpacePercentError)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring 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 unsigned long LogHistoryCount; */
NS_IMETHODIMP _MYCLASS_::GetLogHistoryCount(PRUint32 *aLogHistoryCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetLogHistoryCount(PRUint32 aLogHistoryCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 defaultAudioDriver; */
NS_IMETHODIMP _MYCLASS_::GetDefaultAudioDriver(PRUint32 *aDefaultAudioDriver)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMaxDevicesPerPortForStorageBus (in PRUint32 bus, [retval] out unsigned long maxDevicesPerPort); */
NS_IMETHODIMP _MYCLASS_::GetMaxDevicesPerPortForStorageBus(PRUint32 bus, PRUint32 *maxDevicesPerPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMinPortCountForStorageBus (in PRUint32 bus, [retval] out unsigned long minPortCount); */
NS_IMETHODIMP _MYCLASS_::GetMinPortCountForStorageBus(PRUint32 bus, PRUint32 *minPortCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMaxPortCountForStorageBus (in PRUint32 bus, [retval] out unsigned long maxPortCount); */
NS_IMETHODIMP _MYCLASS_::GetMaxPortCountForStorageBus(PRUint32 bus, PRUint32 *maxPortCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMaxInstancesOfStorageBus (in PRUint32 bus, [retval] out unsigned long maxInstances); */
NS_IMETHODIMP _MYCLASS_::GetMaxInstancesOfStorageBus(PRUint32 bus, PRUint32 *maxInstances)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getDeviceTypesForStorageBus (in PRUint32 bus, out unsigned long deviceTypesSize, [array, size_is (deviceTypesSize), retval] out PRUint32 deviceTypes); */
NS_IMETHODIMP _MYCLASS_::GetDeviceTypesForStorageBus(PRUint32 bus, PRUint32 *deviceTypesSize, PRUint32 **deviceTypes)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_ISystemProperties_GETTER_MinGuestRAM_TO(smth) NS_IMETHOD GetMinGuestRAM (PRUint32 * aMinGuestRAM) { return smth GetMinGuestRAM (aMinGuestRAM); }
#define COM_FORWARD_ISystemProperties_GETTER_MinGuestRAM_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_MinGuestRAM_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_MinGuestRAM_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_MinGuestRAM_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestRAM_TO(smth) NS_IMETHOD GetMaxGuestRAM (PRUint32 * aMaxGuestRAM) { return smth GetMaxGuestRAM (aMaxGuestRAM); }
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestRAM_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_MaxGuestRAM_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestRAM_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_MaxGuestRAM_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_MinGuestVRAM_TO(smth) NS_IMETHOD GetMinGuestVRAM (PRUint32 * aMinGuestVRAM) { return smth GetMinGuestVRAM (aMinGuestVRAM); }
#define COM_FORWARD_ISystemProperties_GETTER_MinGuestVRAM_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_MinGuestVRAM_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_MinGuestVRAM_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_MinGuestVRAM_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestVRAM_TO(smth) NS_IMETHOD GetMaxGuestVRAM (PRUint32 * aMaxGuestVRAM) { return smth GetMaxGuestVRAM (aMaxGuestVRAM); }
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestVRAM_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_MaxGuestVRAM_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestVRAM_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_MaxGuestVRAM_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_MinGuestCPUCount_TO(smth) NS_IMETHOD GetMinGuestCPUCount (PRUint32 * aMinGuestCPUCount) { return smth GetMinGuestCPUCount (aMinGuestCPUCount); }
#define COM_FORWARD_ISystemProperties_GETTER_MinGuestCPUCount_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_MinGuestCPUCount_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_MinGuestCPUCount_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_MinGuestCPUCount_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestCPUCount_TO(smth) NS_IMETHOD GetMaxGuestCPUCount (PRUint32 * aMaxGuestCPUCount) { return smth GetMaxGuestCPUCount (aMaxGuestCPUCount); }
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestCPUCount_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_MaxGuestCPUCount_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestCPUCount_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_MaxGuestCPUCount_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestMonitors_TO(smth) NS_IMETHOD GetMaxGuestMonitors (PRUint32 * aMaxGuestMonitors) { return smth GetMaxGuestMonitors (aMaxGuestMonitors); }
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestMonitors_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_MaxGuestMonitors_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_MaxGuestMonitors_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_MaxGuestMonitors_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_MaxVDISize_TO(smth) NS_IMETHOD GetMaxVDISize (PRUint64 * aMaxVDISize) { return smth GetMaxVDISize (aMaxVDISize); }
#define COM_FORWARD_ISystemProperties_GETTER_MaxVDISize_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_MaxVDISize_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_MaxVDISize_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_MaxVDISize_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_NetworkAdapterCount_TO(smth) NS_IMETHOD GetNetworkAdapterCount (PRUint32 * aNetworkAdapterCount) { return smth GetNetworkAdapterCount (aNetworkAdapterCount); }
#define COM_FORWARD_ISystemProperties_GETTER_NetworkAdapterCount_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_NetworkAdapterCount_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_NetworkAdapterCount_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_NetworkAdapterCount_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_SerialPortCount_TO(smth) NS_IMETHOD GetSerialPortCount (PRUint32 * aSerialPortCount) { return smth GetSerialPortCount (aSerialPortCount); }
#define COM_FORWARD_ISystemProperties_GETTER_SerialPortCount_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_SerialPortCount_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_SerialPortCount_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_SerialPortCount_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_ParallelPortCount_TO(smth) NS_IMETHOD GetParallelPortCount (PRUint32 * aParallelPortCount) { return smth GetParallelPortCount (aParallelPortCount); }
#define COM_FORWARD_ISystemProperties_GETTER_ParallelPortCount_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_ParallelPortCount_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_ParallelPortCount_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_ParallelPortCount_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_MaxBootPosition_TO(smth) NS_IMETHOD GetMaxBootPosition (PRUint32 * aMaxBootPosition) { return smth GetMaxBootPosition (aMaxBootPosition); }
#define COM_FORWARD_ISystemProperties_GETTER_MaxBootPosition_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_MaxBootPosition_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_MaxBootPosition_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_MaxBootPosition_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_DefaultMachineFolder_TO(smth) NS_IMETHOD GetDefaultMachineFolder (PRUnichar * * aDefaultMachineFolder) { return smth GetDefaultMachineFolder (aDefaultMachineFolder); }
#define COM_FORWARD_ISystemProperties_GETTER_DefaultMachineFolder_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_DefaultMachineFolder_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_DefaultMachineFolder_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_DefaultMachineFolder_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_DefaultMachineFolder_TO(smth) NS_IMETHOD SetDefaultMachineFolder (const PRUnichar * aDefaultMachineFolder) { return smth SetDefaultMachineFolder (aDefaultMachineFolder); }
#define COM_FORWARD_ISystemProperties_SETTER_DefaultMachineFolder_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_DefaultMachineFolder_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_DefaultMachineFolder_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_DefaultMachineFolder_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_DefaultHardDiskFolder_TO(smth) NS_IMETHOD GetDefaultHardDiskFolder (PRUnichar * * aDefaultHardDiskFolder) { return smth GetDefaultHardDiskFolder (aDefaultHardDiskFolder); }
#define COM_FORWARD_ISystemProperties_GETTER_DefaultHardDiskFolder_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_DefaultHardDiskFolder_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_DefaultHardDiskFolder_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_DefaultHardDiskFolder_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_DefaultHardDiskFolder_TO(smth) NS_IMETHOD SetDefaultHardDiskFolder (const PRUnichar * aDefaultHardDiskFolder) { return smth SetDefaultHardDiskFolder (aDefaultHardDiskFolder); }
#define COM_FORWARD_ISystemProperties_SETTER_DefaultHardDiskFolder_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_DefaultHardDiskFolder_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_DefaultHardDiskFolder_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_DefaultHardDiskFolder_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_MediumFormats_TO(smth) NS_IMETHOD GetMediumFormats (PRUint32 * aMediumFormatsSize, IMediumFormat * * * aMediumFormats) { return smth GetMediumFormats (aMediumFormatsSize, aMediumFormats); }
#define COM_FORWARD_ISystemProperties_GETTER_MediumFormats_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_MediumFormats_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_MediumFormats_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_MediumFormats_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_DefaultHardDiskFormat_TO(smth) NS_IMETHOD GetDefaultHardDiskFormat (PRUnichar * * aDefaultHardDiskFormat) { return smth GetDefaultHardDiskFormat (aDefaultHardDiskFormat); }
#define COM_FORWARD_ISystemProperties_GETTER_DefaultHardDiskFormat_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_DefaultHardDiskFormat_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_DefaultHardDiskFormat_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_DefaultHardDiskFormat_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_DefaultHardDiskFormat_TO(smth) NS_IMETHOD SetDefaultHardDiskFormat (const PRUnichar * aDefaultHardDiskFormat) { return smth SetDefaultHardDiskFormat (aDefaultHardDiskFormat); }
#define COM_FORWARD_ISystemProperties_SETTER_DefaultHardDiskFormat_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_DefaultHardDiskFormat_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_DefaultHardDiskFormat_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_DefaultHardDiskFormat_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpaceWarning_TO(smth) NS_IMETHOD GetFreeDiskSpaceWarning (PRUint64 * aFreeDiskSpaceWarning) { return smth GetFreeDiskSpaceWarning (aFreeDiskSpaceWarning); }
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpaceWarning_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpaceWarning_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpaceWarning_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpaceWarning_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpaceWarning_TO(smth) NS_IMETHOD SetFreeDiskSpaceWarning (PRUint64 aFreeDiskSpaceWarning) { return smth SetFreeDiskSpaceWarning (aFreeDiskSpaceWarning); }
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpaceWarning_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpaceWarning_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpaceWarning_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpaceWarning_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpacePercentWarning_TO(smth) NS_IMETHOD GetFreeDiskSpacePercentWarning (PRUint32 * aFreeDiskSpacePercentWarning) { return smth GetFreeDiskSpacePercentWarning (aFreeDiskSpacePercentWarning); }
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpacePercentWarning_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpacePercentWarning_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpacePercentWarning_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpacePercentWarning_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpacePercentWarning_TO(smth) NS_IMETHOD SetFreeDiskSpacePercentWarning (PRUint32 aFreeDiskSpacePercentWarning) { return smth SetFreeDiskSpacePercentWarning (aFreeDiskSpacePercentWarning); }
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpacePercentWarning_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpacePercentWarning_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpacePercentWarning_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpacePercentWarning_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpaceError_TO(smth) NS_IMETHOD GetFreeDiskSpaceError (PRUint64 * aFreeDiskSpaceError) { return smth GetFreeDiskSpaceError (aFreeDiskSpaceError); }
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpaceError_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpaceError_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpaceError_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpaceError_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpaceError_TO(smth) NS_IMETHOD SetFreeDiskSpaceError (PRUint64 aFreeDiskSpaceError) { return smth SetFreeDiskSpaceError (aFreeDiskSpaceError); }
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpaceError_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpaceError_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpaceError_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpaceError_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpacePercentError_TO(smth) NS_IMETHOD GetFreeDiskSpacePercentError (PRUint32 * aFreeDiskSpacePercentError) { return smth GetFreeDiskSpacePercentError (aFreeDiskSpacePercentError); }
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpacePercentError_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpacePercentError_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpacePercentError_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_FreeDiskSpacePercentError_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpacePercentError_TO(smth) NS_IMETHOD SetFreeDiskSpacePercentError (PRUint32 aFreeDiskSpacePercentError) { return smth SetFreeDiskSpacePercentError (aFreeDiskSpacePercentError); }
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpacePercentError_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpacePercentError_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpacePercentError_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_FreeDiskSpacePercentError_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_RemoteDisplayAuthLibrary_TO(smth) NS_IMETHOD GetRemoteDisplayAuthLibrary (PRUnichar * * aRemoteDisplayAuthLibrary) { return smth GetRemoteDisplayAuthLibrary (aRemoteDisplayAuthLibrary); }
#define COM_FORWARD_ISystemProperties_GETTER_RemoteDisplayAuthLibrary_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_RemoteDisplayAuthLibrary_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_RemoteDisplayAuthLibrary_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_RemoteDisplayAuthLibrary_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_RemoteDisplayAuthLibrary_TO(smth) NS_IMETHOD SetRemoteDisplayAuthLibrary (const PRUnichar * aRemoteDisplayAuthLibrary) { return smth SetRemoteDisplayAuthLibrary (aRemoteDisplayAuthLibrary); }
#define COM_FORWARD_ISystemProperties_SETTER_RemoteDisplayAuthLibrary_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_RemoteDisplayAuthLibrary_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_RemoteDisplayAuthLibrary_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_RemoteDisplayAuthLibrary_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_WebServiceAuthLibrary_TO(smth) NS_IMETHOD GetWebServiceAuthLibrary (PRUnichar * * aWebServiceAuthLibrary) { return smth GetWebServiceAuthLibrary (aWebServiceAuthLibrary); }
#define COM_FORWARD_ISystemProperties_GETTER_WebServiceAuthLibrary_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_WebServiceAuthLibrary_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_WebServiceAuthLibrary_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_WebServiceAuthLibrary_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_WebServiceAuthLibrary_TO(smth) NS_IMETHOD SetWebServiceAuthLibrary (const PRUnichar * aWebServiceAuthLibrary) { return smth SetWebServiceAuthLibrary (aWebServiceAuthLibrary); }
#define COM_FORWARD_ISystemProperties_SETTER_WebServiceAuthLibrary_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_WebServiceAuthLibrary_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_WebServiceAuthLibrary_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_WebServiceAuthLibrary_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_LogHistoryCount_TO(smth) NS_IMETHOD GetLogHistoryCount (PRUint32 * aLogHistoryCount) { return smth GetLogHistoryCount (aLogHistoryCount); }
#define COM_FORWARD_ISystemProperties_GETTER_LogHistoryCount_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_LogHistoryCount_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_LogHistoryCount_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_LogHistoryCount_TO (base::)
#define COM_FORWARD_ISystemProperties_SETTER_LogHistoryCount_TO(smth) NS_IMETHOD SetLogHistoryCount (PRUint32 aLogHistoryCount) { return smth SetLogHistoryCount (aLogHistoryCount); }
#define COM_FORWARD_ISystemProperties_SETTER_LogHistoryCount_TO_OBJ(obj) COM_FORWARD_ISystemProperties_SETTER_LogHistoryCount_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_SETTER_LogHistoryCount_TO_BASE(base) COM_FORWARD_ISystemProperties_SETTER_LogHistoryCount_TO (base::)
#define COM_FORWARD_ISystemProperties_GETTER_DefaultAudioDriver_TO(smth) NS_IMETHOD GetDefaultAudioDriver (PRUint32 * aDefaultAudioDriver) { return smth GetDefaultAudioDriver (aDefaultAudioDriver); }
#define COM_FORWARD_ISystemProperties_GETTER_DefaultAudioDriver_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GETTER_DefaultAudioDriver_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GETTER_DefaultAudioDriver_TO_BASE(base) COM_FORWARD_ISystemProperties_GETTER_DefaultAudioDriver_TO (base::)
#define COM_FORWARD_ISystemProperties_GetMaxDevicesPerPortForStorageBus_TO(smth) NS_IMETHOD GetMaxDevicesPerPortForStorageBus (PRUint32 aBus, PRUint32 * aMaxDevicesPerPort) { return smth GetMaxDevicesPerPortForStorageBus (aBus, aMaxDevicesPerPort); }
#define COM_FORWARD_ISystemProperties_GetMaxDevicesPerPortForStorageBus_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GetMaxDevicesPerPortForStorageBus_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GetMaxDevicesPerPortForStorageBus_TO_BASE(base) COM_FORWARD_ISystemProperties_GetMaxDevicesPerPortForStorageBus_TO (base::)
#define COM_FORWARD_ISystemProperties_GetMinPortCountForStorageBus_TO(smth) NS_IMETHOD GetMinPortCountForStorageBus (PRUint32 aBus, PRUint32 * aMinPortCount) { return smth GetMinPortCountForStorageBus (aBus, aMinPortCount); }
#define COM_FORWARD_ISystemProperties_GetMinPortCountForStorageBus_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GetMinPortCountForStorageBus_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GetMinPortCountForStorageBus_TO_BASE(base) COM_FORWARD_ISystemProperties_GetMinPortCountForStorageBus_TO (base::)
#define COM_FORWARD_ISystemProperties_GetMaxPortCountForStorageBus_TO(smth) NS_IMETHOD GetMaxPortCountForStorageBus (PRUint32 aBus, PRUint32 * aMaxPortCount) { return smth GetMaxPortCountForStorageBus (aBus, aMaxPortCount); }
#define COM_FORWARD_ISystemProperties_GetMaxPortCountForStorageBus_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GetMaxPortCountForStorageBus_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GetMaxPortCountForStorageBus_TO_BASE(base) COM_FORWARD_ISystemProperties_GetMaxPortCountForStorageBus_TO (base::)
#define COM_FORWARD_ISystemProperties_GetMaxInstancesOfStorageBus_TO(smth) NS_IMETHOD GetMaxInstancesOfStorageBus (PRUint32 aBus, PRUint32 * aMaxInstances) { return smth GetMaxInstancesOfStorageBus (aBus, aMaxInstances); }
#define COM_FORWARD_ISystemProperties_GetMaxInstancesOfStorageBus_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GetMaxInstancesOfStorageBus_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GetMaxInstancesOfStorageBus_TO_BASE(base) COM_FORWARD_ISystemProperties_GetMaxInstancesOfStorageBus_TO (base::)
#define COM_FORWARD_ISystemProperties_GetDeviceTypesForStorageBus_TO(smth) NS_IMETHOD GetDeviceTypesForStorageBus (PRUint32 aBus, PRUint32 * aDeviceTypesSize, PRUint32 * * aDeviceTypes) { return smth GetDeviceTypesForStorageBus (aBus, aDeviceTypesSize, aDeviceTypes); }
#define COM_FORWARD_ISystemProperties_GetDeviceTypesForStorageBus_TO_OBJ(obj) COM_FORWARD_ISystemProperties_GetDeviceTypesForStorageBus_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_GetDeviceTypesForStorageBus_TO_BASE(base) COM_FORWARD_ISystemProperties_GetDeviceTypesForStorageBus_TO (base::)
#define COM_FORWARD_ISystemProperties_TO(smth) NS_FORWARD_ISYSTEMPROPERTIES (smth)
#define COM_FORWARD_ISystemProperties_TO_OBJ(obj) COM_FORWARD_ISystemProperties_TO ((obj)->)
#define COM_FORWARD_ISystemProperties_TO_BASE(base) COM_FORWARD_ISystemProperties_TO (base::)

/* starting interface:    IGuestOSType */
#define IGUESTOSTYPE_IID_STR "e3f6727e-a09b-41ea-a824-864a176472f3"

#define IGUESTOSTYPE_IID \
  {0xe3f6727e, 0xa09b, 0x41ea, \
    { 0xa8, 0x24, 0x86, 0x4a, 0x17, 0x64, 0x72, 0xf3 }}

class NS_NO_VTABLE IGuestOSType : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IGUESTOSTYPE_IID)

  /* readonly attribute wstring familyId; */
  NS_IMETHOD GetFamilyId(PRUnichar * *aFamilyId) = 0;

  /* readonly attribute wstring familyDescription; */
  NS_IMETHOD GetFamilyDescription(PRUnichar * *aFamilyDescription) = 0;

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

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

  /* readonly attribute boolean is64Bit; */
  NS_IMETHOD GetIs64Bit(PRBool *aIs64Bit) = 0;

  /* readonly attribute boolean recommendedIOAPIC; */
  NS_IMETHOD GetRecommendedIOAPIC(PRBool *aRecommendedIOAPIC) = 0;

  /* readonly attribute boolean recommendedVirtEx; */
  NS_IMETHOD GetRecommendedVirtEx(PRBool *aRecommendedVirtEx) = 0;

  /* readonly attribute unsigned long recommendedRAM; */
  NS_IMETHOD GetRecommendedRAM(PRUint32 *aRecommendedRAM) = 0;

  /* readonly attribute unsigned long recommendedVRAM; */
  NS_IMETHOD GetRecommendedVRAM(PRUint32 *aRecommendedVRAM) = 0;

  /* readonly attribute unsigned long recommendedHDD; */
  NS_IMETHOD GetRecommendedHDD(PRUint32 *aRecommendedHDD) = 0;

  /* readonly attribute PRUint32 adapterType; */
  NS_IMETHOD GetAdapterType(PRUint32 *aAdapterType) = 0;

  /* readonly attribute boolean recommendedPae; */
  NS_IMETHOD GetRecommendedPae(PRBool *aRecommendedPae) = 0;

  /* readonly attribute PRUint32 recommendedDvdStorageController; */
  NS_IMETHOD GetRecommendedDvdStorageController(PRUint32 *aRecommendedDvdStorageController) = 0;

  /* readonly attribute PRUint32 recommendedDvdStorageBus; */
  NS_IMETHOD GetRecommendedDvdStorageBus(PRUint32 *aRecommendedDvdStorageBus) = 0;

  /* readonly attribute PRUint32 recommendedHdStorageController; */
  NS_IMETHOD GetRecommendedHdStorageController(PRUint32 *aRecommendedHdStorageController) = 0;

  /* readonly attribute PRUint32 recommendedHdStorageBus; */
  NS_IMETHOD GetRecommendedHdStorageBus(PRUint32 *aRecommendedHdStorageBus) = 0;

  /* readonly attribute PRUint32 recommendedFirmware; */
  NS_IMETHOD GetRecommendedFirmware(PRUint32 *aRecommendedFirmware) = 0;

  /* readonly attribute boolean recommendedUsbHid; */
  NS_IMETHOD GetRecommendedUsbHid(PRBool *aRecommendedUsbHid) = 0;

  /* readonly attribute boolean recommendedHpet; */
  NS_IMETHOD GetRecommendedHpet(PRBool *aRecommendedHpet) = 0;

  /* readonly attribute boolean recommendedUsbTablet; */
  NS_IMETHOD GetRecommendedUsbTablet(PRBool *aRecommendedUsbTablet) = 0;

  /* readonly attribute boolean recommendedRtcUseUtc; */
  NS_IMETHOD GetRecommendedRtcUseUtc(PRBool *aRecommendedRtcUseUtc) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IGUESTOSTYPE \
  NS_IMETHOD GetFamilyId(PRUnichar * *aFamilyId); \
  NS_IMETHOD GetFamilyDescription(PRUnichar * *aFamilyDescription); \
  NS_IMETHOD GetId(PRUnichar * *aId); \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription); \
  NS_IMETHOD GetIs64Bit(PRBool *aIs64Bit); \
  NS_IMETHOD GetRecommendedIOAPIC(PRBool *aRecommendedIOAPIC); \
  NS_IMETHOD GetRecommendedVirtEx(PRBool *aRecommendedVirtEx); \
  NS_IMETHOD GetRecommendedRAM(PRUint32 *aRecommendedRAM); \
  NS_IMETHOD GetRecommendedVRAM(PRUint32 *aRecommendedVRAM); \
  NS_IMETHOD GetRecommendedHDD(PRUint32 *aRecommendedHDD); \
  NS_IMETHOD GetAdapterType(PRUint32 *aAdapterType); \
  NS_IMETHOD GetRecommendedPae(PRBool *aRecommendedPae); \
  NS_IMETHOD GetRecommendedDvdStorageController(PRUint32 *aRecommendedDvdStorageController); \
  NS_IMETHOD GetRecommendedDvdStorageBus(PRUint32 *aRecommendedDvdStorageBus); \
  NS_IMETHOD GetRecommendedHdStorageController(PRUint32 *aRecommendedHdStorageController); \
  NS_IMETHOD GetRecommendedHdStorageBus(PRUint32 *aRecommendedHdStorageBus); \
  NS_IMETHOD GetRecommendedFirmware(PRUint32 *aRecommendedFirmware); \
  NS_IMETHOD GetRecommendedUsbHid(PRBool *aRecommendedUsbHid); \
  NS_IMETHOD GetRecommendedHpet(PRBool *aRecommendedHpet); \
  NS_IMETHOD GetRecommendedUsbTablet(PRBool *aRecommendedUsbTablet); \
  NS_IMETHOD GetRecommendedRtcUseUtc(PRBool *aRecommendedRtcUseUtc); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IGUESTOSTYPE(_to) \
  NS_IMETHOD GetFamilyId(PRUnichar * *aFamilyId) { return _to GetFamilyId(aFamilyId); } \
  NS_IMETHOD GetFamilyDescription(PRUnichar * *aFamilyDescription) { return _to GetFamilyDescription(aFamilyDescription); } \
  NS_IMETHOD GetId(PRUnichar * *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return _to GetDescription(aDescription); } \
  NS_IMETHOD GetIs64Bit(PRBool *aIs64Bit) { return _to GetIs64Bit(aIs64Bit); } \
  NS_IMETHOD GetRecommendedIOAPIC(PRBool *aRecommendedIOAPIC) { return _to GetRecommendedIOAPIC(aRecommendedIOAPIC); } \
  NS_IMETHOD GetRecommendedVirtEx(PRBool *aRecommendedVirtEx) { return _to GetRecommendedVirtEx(aRecommendedVirtEx); } \
  NS_IMETHOD GetRecommendedRAM(PRUint32 *aRecommendedRAM) { return _to GetRecommendedRAM(aRecommendedRAM); } \
  NS_IMETHOD GetRecommendedVRAM(PRUint32 *aRecommendedVRAM) { return _to GetRecommendedVRAM(aRecommendedVRAM); } \
  NS_IMETHOD GetRecommendedHDD(PRUint32 *aRecommendedHDD) { return _to GetRecommendedHDD(aRecommendedHDD); } \
  NS_IMETHOD GetAdapterType(PRUint32 *aAdapterType) { return _to GetAdapterType(aAdapterType); } \
  NS_IMETHOD GetRecommendedPae(PRBool *aRecommendedPae) { return _to GetRecommendedPae(aRecommendedPae); } \
  NS_IMETHOD GetRecommendedDvdStorageController(PRUint32 *aRecommendedDvdStorageController) { return _to GetRecommendedDvdStorageController(aRecommendedDvdStorageController); } \
  NS_IMETHOD GetRecommendedDvdStorageBus(PRUint32 *aRecommendedDvdStorageBus) { return _to GetRecommendedDvdStorageBus(aRecommendedDvdStorageBus); } \
  NS_IMETHOD GetRecommendedHdStorageController(PRUint32 *aRecommendedHdStorageController) { return _to GetRecommendedHdStorageController(aRecommendedHdStorageController); } \
  NS_IMETHOD GetRecommendedHdStorageBus(PRUint32 *aRecommendedHdStorageBus) { return _to GetRecommendedHdStorageBus(aRecommendedHdStorageBus); } \
  NS_IMETHOD GetRecommendedFirmware(PRUint32 *aRecommendedFirmware) { return _to GetRecommendedFirmware(aRecommendedFirmware); } \
  NS_IMETHOD GetRecommendedUsbHid(PRBool *aRecommendedUsbHid) { return _to GetRecommendedUsbHid(aRecommendedUsbHid); } \
  NS_IMETHOD GetRecommendedHpet(PRBool *aRecommendedHpet) { return _to GetRecommendedHpet(aRecommendedHpet); } \
  NS_IMETHOD GetRecommendedUsbTablet(PRBool *aRecommendedUsbTablet) { return _to GetRecommendedUsbTablet(aRecommendedUsbTablet); } \
  NS_IMETHOD GetRecommendedRtcUseUtc(PRBool *aRecommendedRtcUseUtc) { return _to GetRecommendedRtcUseUtc(aRecommendedRtcUseUtc); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IGUESTOSTYPE(_to) \
  NS_IMETHOD GetFamilyId(PRUnichar * *aFamilyId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFamilyId(aFamilyId); } \
  NS_IMETHOD GetFamilyDescription(PRUnichar * *aFamilyDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFamilyDescription(aFamilyDescription); } \
  NS_IMETHOD GetId(PRUnichar * *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } \
  NS_IMETHOD GetIs64Bit(PRBool *aIs64Bit) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIs64Bit(aIs64Bit); } \
  NS_IMETHOD GetRecommendedIOAPIC(PRBool *aRecommendedIOAPIC) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedIOAPIC(aRecommendedIOAPIC); } \
  NS_IMETHOD GetRecommendedVirtEx(PRBool *aRecommendedVirtEx) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedVirtEx(aRecommendedVirtEx); } \
  NS_IMETHOD GetRecommendedRAM(PRUint32 *aRecommendedRAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedRAM(aRecommendedRAM); } \
  NS_IMETHOD GetRecommendedVRAM(PRUint32 *aRecommendedVRAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedVRAM(aRecommendedVRAM); } \
  NS_IMETHOD GetRecommendedHDD(PRUint32 *aRecommendedHDD) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedHDD(aRecommendedHDD); } \
  NS_IMETHOD GetAdapterType(PRUint32 *aAdapterType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAdapterType(aAdapterType); } \
  NS_IMETHOD GetRecommendedPae(PRBool *aRecommendedPae) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedPae(aRecommendedPae); } \
  NS_IMETHOD GetRecommendedDvdStorageController(PRUint32 *aRecommendedDvdStorageController) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedDvdStorageController(aRecommendedDvdStorageController); } \
  NS_IMETHOD GetRecommendedDvdStorageBus(PRUint32 *aRecommendedDvdStorageBus) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedDvdStorageBus(aRecommendedDvdStorageBus); } \
  NS_IMETHOD GetRecommendedHdStorageController(PRUint32 *aRecommendedHdStorageController) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedHdStorageController(aRecommendedHdStorageController); } \
  NS_IMETHOD GetRecommendedHdStorageBus(PRUint32 *aRecommendedHdStorageBus) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedHdStorageBus(aRecommendedHdStorageBus); } \
  NS_IMETHOD GetRecommendedFirmware(PRUint32 *aRecommendedFirmware) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedFirmware(aRecommendedFirmware); } \
  NS_IMETHOD GetRecommendedUsbHid(PRBool *aRecommendedUsbHid) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedUsbHid(aRecommendedUsbHid); } \
  NS_IMETHOD GetRecommendedHpet(PRBool *aRecommendedHpet) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedHpet(aRecommendedHpet); } \
  NS_IMETHOD GetRecommendedUsbTablet(PRBool *aRecommendedUsbTablet) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedUsbTablet(aRecommendedUsbTablet); } \
  NS_IMETHOD GetRecommendedRtcUseUtc(PRBool *aRecommendedRtcUseUtc) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecommendedRtcUseUtc(aRecommendedRtcUseUtc); } 

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

/* Header file */
class _MYCLASS_ : public IGuestOSType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IGUESTOSTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute wstring familyId; */
NS_IMETHODIMP _MYCLASS_::GetFamilyId(PRUnichar * *aFamilyId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring familyDescription; */
NS_IMETHODIMP _MYCLASS_::GetFamilyDescription(PRUnichar * *aFamilyDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring id; */
NS_IMETHODIMP _MYCLASS_::GetId(PRUnichar * *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring description; */
NS_IMETHODIMP _MYCLASS_::GetDescription(PRUnichar * *aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean is64Bit; */
NS_IMETHODIMP _MYCLASS_::GetIs64Bit(PRBool *aIs64Bit)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean recommendedIOAPIC; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedIOAPIC(PRBool *aRecommendedIOAPIC)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean recommendedVirtEx; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedVirtEx(PRBool *aRecommendedVirtEx)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long recommendedRAM; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedRAM(PRUint32 *aRecommendedRAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long recommendedVRAM; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedVRAM(PRUint32 *aRecommendedVRAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long recommendedHDD; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedHDD(PRUint32 *aRecommendedHDD)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 adapterType; */
NS_IMETHODIMP _MYCLASS_::GetAdapterType(PRUint32 *aAdapterType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean recommendedPae; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedPae(PRBool *aRecommendedPae)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 recommendedDvdStorageController; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedDvdStorageController(PRUint32 *aRecommendedDvdStorageController)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 recommendedDvdStorageBus; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedDvdStorageBus(PRUint32 *aRecommendedDvdStorageBus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 recommendedHdStorageController; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedHdStorageController(PRUint32 *aRecommendedHdStorageController)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 recommendedHdStorageBus; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedHdStorageBus(PRUint32 *aRecommendedHdStorageBus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 recommendedFirmware; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedFirmware(PRUint32 *aRecommendedFirmware)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean recommendedUsbHid; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedUsbHid(PRBool *aRecommendedUsbHid)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean recommendedHpet; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedHpet(PRBool *aRecommendedHpet)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean recommendedUsbTablet; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedUsbTablet(PRBool *aRecommendedUsbTablet)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean recommendedRtcUseUtc; */
NS_IMETHODIMP _MYCLASS_::GetRecommendedRtcUseUtc(PRBool *aRecommendedRtcUseUtc)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IGuestOSType_GETTER_FamilyId_TO(smth) NS_IMETHOD GetFamilyId (PRUnichar * * aFamilyId) { return smth GetFamilyId (aFamilyId); }
#define COM_FORWARD_IGuestOSType_GETTER_FamilyId_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_FamilyId_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_FamilyId_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_FamilyId_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_FamilyDescription_TO(smth) NS_IMETHOD GetFamilyDescription (PRUnichar * * aFamilyDescription) { return smth GetFamilyDescription (aFamilyDescription); }
#define COM_FORWARD_IGuestOSType_GETTER_FamilyDescription_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_FamilyDescription_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_FamilyDescription_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_FamilyDescription_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_Id_TO(smth) NS_IMETHOD GetId (PRUnichar * * aId) { return smth GetId (aId); }
#define COM_FORWARD_IGuestOSType_GETTER_Id_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_Id_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_Id_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_Id_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_Description_TO(smth) NS_IMETHOD GetDescription (PRUnichar * * aDescription) { return smth GetDescription (aDescription); }
#define COM_FORWARD_IGuestOSType_GETTER_Description_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_Description_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_Description_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_Description_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_Is64Bit_TO(smth) NS_IMETHOD GetIs64Bit (PRBool * aIs64Bit) { return smth GetIs64Bit (aIs64Bit); }
#define COM_FORWARD_IGuestOSType_GETTER_Is64Bit_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_Is64Bit_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_Is64Bit_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_Is64Bit_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedIOAPIC_TO(smth) NS_IMETHOD GetRecommendedIOAPIC (PRBool * aRecommendedIOAPIC) { return smth GetRecommendedIOAPIC (aRecommendedIOAPIC); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedIOAPIC_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedIOAPIC_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedIOAPIC_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedIOAPIC_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedVirtEx_TO(smth) NS_IMETHOD GetRecommendedVirtEx (PRBool * aRecommendedVirtEx) { return smth GetRecommendedVirtEx (aRecommendedVirtEx); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedVirtEx_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedVirtEx_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedVirtEx_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedVirtEx_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedRAM_TO(smth) NS_IMETHOD GetRecommendedRAM (PRUint32 * aRecommendedRAM) { return smth GetRecommendedRAM (aRecommendedRAM); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedRAM_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedRAM_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedRAM_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedRAM_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedVRAM_TO(smth) NS_IMETHOD GetRecommendedVRAM (PRUint32 * aRecommendedVRAM) { return smth GetRecommendedVRAM (aRecommendedVRAM); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedVRAM_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedVRAM_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedVRAM_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedVRAM_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHDD_TO(smth) NS_IMETHOD GetRecommendedHDD (PRUint32 * aRecommendedHDD) { return smth GetRecommendedHDD (aRecommendedHDD); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHDD_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedHDD_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHDD_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedHDD_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_AdapterType_TO(smth) NS_IMETHOD GetAdapterType (PRUint32 * aAdapterType) { return smth GetAdapterType (aAdapterType); }
#define COM_FORWARD_IGuestOSType_GETTER_AdapterType_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_AdapterType_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_AdapterType_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_AdapterType_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedPae_TO(smth) NS_IMETHOD GetRecommendedPae (PRBool * aRecommendedPae) { return smth GetRecommendedPae (aRecommendedPae); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedPae_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedPae_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedPae_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedPae_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedDvdStorageController_TO(smth) NS_IMETHOD GetRecommendedDvdStorageController (PRUint32 * aRecommendedDvdStorageController) { return smth GetRecommendedDvdStorageController (aRecommendedDvdStorageController); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedDvdStorageController_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedDvdStorageController_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedDvdStorageController_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedDvdStorageController_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedDvdStorageBus_TO(smth) NS_IMETHOD GetRecommendedDvdStorageBus (PRUint32 * aRecommendedDvdStorageBus) { return smth GetRecommendedDvdStorageBus (aRecommendedDvdStorageBus); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedDvdStorageBus_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedDvdStorageBus_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedDvdStorageBus_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedDvdStorageBus_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHdStorageController_TO(smth) NS_IMETHOD GetRecommendedHdStorageController (PRUint32 * aRecommendedHdStorageController) { return smth GetRecommendedHdStorageController (aRecommendedHdStorageController); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHdStorageController_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedHdStorageController_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHdStorageController_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedHdStorageController_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHdStorageBus_TO(smth) NS_IMETHOD GetRecommendedHdStorageBus (PRUint32 * aRecommendedHdStorageBus) { return smth GetRecommendedHdStorageBus (aRecommendedHdStorageBus); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHdStorageBus_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedHdStorageBus_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHdStorageBus_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedHdStorageBus_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedFirmware_TO(smth) NS_IMETHOD GetRecommendedFirmware (PRUint32 * aRecommendedFirmware) { return smth GetRecommendedFirmware (aRecommendedFirmware); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedFirmware_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedFirmware_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedFirmware_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedFirmware_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedUsbHid_TO(smth) NS_IMETHOD GetRecommendedUsbHid (PRBool * aRecommendedUsbHid) { return smth GetRecommendedUsbHid (aRecommendedUsbHid); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedUsbHid_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedUsbHid_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedUsbHid_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedUsbHid_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHpet_TO(smth) NS_IMETHOD GetRecommendedHpet (PRBool * aRecommendedHpet) { return smth GetRecommendedHpet (aRecommendedHpet); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHpet_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedHpet_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedHpet_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedHpet_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedUsbTablet_TO(smth) NS_IMETHOD GetRecommendedUsbTablet (PRBool * aRecommendedUsbTablet) { return smth GetRecommendedUsbTablet (aRecommendedUsbTablet); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedUsbTablet_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedUsbTablet_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedUsbTablet_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedUsbTablet_TO (base::)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedRtcUseUtc_TO(smth) NS_IMETHOD GetRecommendedRtcUseUtc (PRBool * aRecommendedRtcUseUtc) { return smth GetRecommendedRtcUseUtc (aRecommendedRtcUseUtc); }
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedRtcUseUtc_TO_OBJ(obj) COM_FORWARD_IGuestOSType_GETTER_RecommendedRtcUseUtc_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_GETTER_RecommendedRtcUseUtc_TO_BASE(base) COM_FORWARD_IGuestOSType_GETTER_RecommendedRtcUseUtc_TO (base::)
#define COM_FORWARD_IGuestOSType_TO(smth) NS_FORWARD_IGUESTOSTYPE (smth)
#define COM_FORWARD_IGuestOSType_TO_OBJ(obj) COM_FORWARD_IGuestOSType_TO ((obj)->)
#define COM_FORWARD_IGuestOSType_TO_BASE(base) COM_FORWARD_IGuestOSType_TO (base::)

/* starting interface:    IGuest */
#define IGUEST_IID_STR "d915dff1-ed38-495a-91f1-ab6c53932468"

#define IGUEST_IID \
  {0xd915dff1, 0xed38, 0x495a, \
    { 0x91, 0xf1, 0xab, 0x6c, 0x53, 0x93, 0x24, 0x68 }}

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 boolean pageFusionEnabled; */
  NS_IMETHOD GetPageFusionEnabled(PRBool *aPageFusionEnabled) = 0;
  NS_IMETHOD SetPageFusionEnabled(PRBool aPageFusionEnabled) = 0;

  /* attribute unsigned long statisticsUpdateInterval; */
  NS_IMETHOD GetStatisticsUpdateInterval(PRUint32 *aStatisticsUpdateInterval) = 0;
  NS_IMETHOD SetStatisticsUpdateInterval(PRUint32 aStatisticsUpdateInterval) = 0;

  /* void internalGetStatistics (out unsigned long cpuUser, out unsigned long cpuKernel, out unsigned long cpuIdle, out unsigned long memTotal, out unsigned long memFree, out unsigned long memBalloon, out unsigned long memShared, out unsigned long memCache, out unsigned long pagedTotal, out unsigned long memAllocTotal, out unsigned long memFreeTotal, out unsigned long memBalloonTotal, out unsigned long memSharedTotal); */
  NS_IMETHOD InternalGetStatistics(PRUint32 *cpuUser, PRUint32 *cpuKernel, PRUint32 *cpuIdle, PRUint32 *memTotal, PRUint32 *memFree, PRUint32 *memBalloon, PRUint32 *memShared, PRUint32 *memCache, PRUint32 *pagedTotal, PRUint32 *memAllocTotal, PRUint32 *memFreeTotal, PRUint32 *memBalloonTotal, PRUint32 *memSharedTotal) = 0;

  /* void setCredentials (in wstring userName, in wstring password, in wstring domain, in boolean allowInteractiveLogon); */
  NS_IMETHOD SetCredentials(const PRUnichar *userName, const PRUnichar *password, const PRUnichar *domain, PRBool allowInteractiveLogon) = 0;

  /* void executeProcess (in wstring execName, in unsigned long flags, in unsigned long argumentsSize, [array, size_is (argumentsSize)] in wstring arguments, in unsigned long environmentSize, [array, size_is (environmentSize)] in wstring environment, in wstring userName, in wstring password, in unsigned long timeoutMS, out unsigned long pid, [retval] out IProgress progress); */
  NS_IMETHOD ExecuteProcess(const PRUnichar *execName, PRUint32 flags, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 environmentSize, const PRUnichar **environment, const PRUnichar *userName, const PRUnichar *password, PRUint32 timeoutMS, PRUint32 *pid, IProgress **progress) = 0;

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

  /* void getProcessStatus (in unsigned long pid, out unsigned long exitcode, out unsigned long flags, [retval] out unsigned long reason); */
  NS_IMETHOD GetProcessStatus(PRUint32 pid, PRUint32 *exitcode, PRUint32 *flags, PRUint32 *reason) = 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 GetPageFusionEnabled(PRBool *aPageFusionEnabled); \
  NS_IMETHOD SetPageFusionEnabled(PRBool aPageFusionEnabled); \
  NS_IMETHOD GetStatisticsUpdateInterval(PRUint32 *aStatisticsUpdateInterval); \
  NS_IMETHOD SetStatisticsUpdateInterval(PRUint32 aStatisticsUpdateInterval); \
  NS_IMETHOD InternalGetStatistics(PRUint32 *cpuUser, PRUint32 *cpuKernel, PRUint32 *cpuIdle, PRUint32 *memTotal, PRUint32 *memFree, PRUint32 *memBalloon, PRUint32 *memShared, PRUint32 *memCache, PRUint32 *pagedTotal, PRUint32 *memAllocTotal, PRUint32 *memFreeTotal, PRUint32 *memBalloonTotal, PRUint32 *memSharedTotal); \
  NS_IMETHOD SetCredentials(const PRUnichar *userName, const PRUnichar *password, const PRUnichar *domain, PRBool allowInteractiveLogon); \
  NS_IMETHOD ExecuteProcess(const PRUnichar *execName, PRUint32 flags, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 environmentSize, const PRUnichar **environment, const PRUnichar *userName, const PRUnichar *password, PRUint32 timeoutMS, PRUint32 *pid, IProgress **progress); \
  NS_IMETHOD GetProcessOutput(PRUint32 pid, PRUint32 flags, PRUint32 timeoutMS, PRUint64 size, PRUint32 *dataSize, PRUint8 **data); \
  NS_IMETHOD GetProcessStatus(PRUint32 pid, PRUint32 *exitcode, PRUint32 *flags, PRUint32 *reason); 

/* 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 GetPageFusionEnabled(PRBool *aPageFusionEnabled) { return _to GetPageFusionEnabled(aPageFusionEnabled); } \
  NS_IMETHOD SetPageFusionEnabled(PRBool aPageFusionEnabled) { return _to SetPageFusionEnabled(aPageFusionEnabled); } \
  NS_IMETHOD GetStatisticsUpdateInterval(PRUint32 *aStatisticsUpdateInterval) { return _to GetStatisticsUpdateInterval(aStatisticsUpdateInterval); } \
  NS_IMETHOD SetStatisticsUpdateInterval(PRUint32 aStatisticsUpdateInterval) { return _to SetStatisticsUpdateInterval(aStatisticsUpdateInterval); } \
  NS_IMETHOD InternalGetStatistics(PRUint32 *cpuUser, PRUint32 *cpuKernel, PRUint32 *cpuIdle, PRUint32 *memTotal, PRUint32 *memFree, PRUint32 *memBalloon, PRUint32 *memShared, PRUint32 *memCache, PRUint32 *pagedTotal, PRUint32 *memAllocTotal, PRUint32 *memFreeTotal, PRUint32 *memBalloonTotal, PRUint32 *memSharedTotal) { return _to InternalGetStatistics(cpuUser, cpuKernel, cpuIdle, memTotal, memFree, memBalloon, memShared, memCache, pagedTotal, memAllocTotal, memFreeTotal, memBalloonTotal, memSharedTotal); } \
  NS_IMETHOD SetCredentials(const PRUnichar *userName, const PRUnichar *password, const PRUnichar *domain, PRBool allowInteractiveLogon) { return _to SetCredentials(userName, password, domain, allowInteractiveLogon); } \
  NS_IMETHOD ExecuteProcess(const PRUnichar *execName, PRUint32 flags, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 environmentSize, const PRUnichar **environment, const PRUnichar *userName, const PRUnichar *password, PRUint32 timeoutMS, PRUint32 *pid, IProgress **progress) { return _to ExecuteProcess(execName, flags, argumentsSize, arguments, environmentSize, environment, userName, password, timeoutMS, pid, progress); } \
  NS_IMETHOD GetProcessOutput(PRUint32 pid, PRUint32 flags, PRUint32 timeoutMS, PRUint64 size, PRUint32 *dataSize, PRUint8 **data) { return _to GetProcessOutput(pid, flags, timeoutMS, size, dataSize, data); } \
  NS_IMETHOD GetProcessStatus(PRUint32 pid, PRUint32 *exitcode, PRUint32 *flags, PRUint32 *reason) { return _to GetProcessStatus(pid, exitcode, flags, reason); } 

/* 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 GetPageFusionEnabled(PRBool *aPageFusionEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPageFusionEnabled(aPageFusionEnabled); } \
  NS_IMETHOD SetPageFusionEnabled(PRBool aPageFusionEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPageFusionEnabled(aPageFusionEnabled); } \
  NS_IMETHOD GetStatisticsUpdateInterval(PRUint32 *aStatisticsUpdateInterval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStatisticsUpdateInterval(aStatisticsUpdateInterval); } \
  NS_IMETHOD SetStatisticsUpdateInterval(PRUint32 aStatisticsUpdateInterval) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetStatisticsUpdateInterval(aStatisticsUpdateInterval); } \
  NS_IMETHOD InternalGetStatistics(PRUint32 *cpuUser, PRUint32 *cpuKernel, PRUint32 *cpuIdle, PRUint32 *memTotal, PRUint32 *memFree, PRUint32 *memBalloon, PRUint32 *memShared, PRUint32 *memCache, PRUint32 *pagedTotal, PRUint32 *memAllocTotal, PRUint32 *memFreeTotal, PRUint32 *memBalloonTotal, PRUint32 *memSharedTotal) { return !_to ? NS_ERROR_NULL_POINTER : _to->InternalGetStatistics(cpuUser, cpuKernel, cpuIdle, memTotal, memFree, memBalloon, memShared, memCache, pagedTotal, memAllocTotal, memFreeTotal, memBalloonTotal, memSharedTotal); } \
  NS_IMETHOD SetCredentials(const PRUnichar *userName, const PRUnichar *password, const PRUnichar *domain, PRBool allowInteractiveLogon) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCredentials(userName, password, domain, allowInteractiveLogon); } \
  NS_IMETHOD ExecuteProcess(const PRUnichar *execName, PRUint32 flags, PRUint32 argumentsSize, const PRUnichar **arguments, PRUint32 environmentSize, const PRUnichar **environment, const PRUnichar *userName, const PRUnichar *password, PRUint32 timeoutMS, PRUint32 *pid, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->ExecuteProcess(execName, flags, argumentsSize, arguments, environmentSize, environment, userName, password, timeoutMS, pid, progress); } \
  NS_IMETHOD GetProcessOutput(PRUint32 pid, PRUint32 flags, PRUint32 timeoutMS, PRUint64 size, PRUint32 *dataSize, PRUint8 **data) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessOutput(pid, flags, timeoutMS, size, dataSize, data); } \
  NS_IMETHOD GetProcessStatus(PRUint32 pid, PRUint32 *exitcode, PRUint32 *flags, PRUint32 *reason) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessStatus(pid, exitcode, flags, reason); } 

#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 boolean pageFusionEnabled; */
NS_IMETHODIMP _MYCLASS_::GetPageFusionEnabled(PRBool *aPageFusionEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPageFusionEnabled(PRBool aPageFusionEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long statisticsUpdateInterval; */
NS_IMETHODIMP _MYCLASS_::GetStatisticsUpdateInterval(PRUint32 *aStatisticsUpdateInterval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetStatisticsUpdateInterval(PRUint32 aStatisticsUpdateInterval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void internalGetStatistics (out unsigned long cpuUser, out unsigned long cpuKernel, out unsigned long cpuIdle, out unsigned long memTotal, out unsigned long memFree, out unsigned long memBalloon, out unsigned long memShared, out unsigned long memCache, out unsigned long pagedTotal, out unsigned long memAllocTotal, out unsigned long memFreeTotal, out unsigned long memBalloonTotal, out unsigned long memSharedTotal); */
NS_IMETHODIMP _MYCLASS_::InternalGetStatistics(PRUint32 *cpuUser, PRUint32 *cpuKernel, PRUint32 *cpuIdle, PRUint32 *memTotal, PRUint32 *memFree, PRUint32 *memBalloon, PRUint32 *memShared, PRUint32 *memCache, PRUint32 *pagedTotal, PRUint32 *memAllocTotal, PRUint32 *memFreeTotal, PRUint32 *memBalloonTotal, PRUint32 *memSharedTotal)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setCredentials (in wstring userName, in wstring password, in wstring domain, in boolean allowInteractiveLogon); */
NS_IMETHODIMP _MYCLASS_::SetCredentials(const PRUnichar *userName, const PRUnichar *password, const PRUnichar *domain, PRBool allowInteractiveLogon)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

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

#define COM_FORWARD_IGuest_GETTER_OSTypeId_TO(smth) NS_IMETHOD GetOSTypeId (PRUnichar * * aOSTypeId) { return smth GetOSTypeId (aOSTypeId); }
#define COM_FORWARD_IGuest_GETTER_OSTypeId_TO_OBJ(obj) COM_FORWARD_IGuest_GETTER_OSTypeId_TO ((obj)->)
#define COM_FORWARD_IGuest_GETTER_OSTypeId_TO_BASE(base) COM_FORWARD_IGuest_GETTER_OSTypeId_TO (base::)
#define COM_FORWARD_IGuest_GETTER_AdditionsActive_TO(smth) NS_IMETHOD GetAdditionsActive (PRBool * aAdditionsActive) { return smth GetAdditionsActive (aAdditionsActive); }
#define COM_FORWARD_IGuest_GETTER_AdditionsActive_TO_OBJ(obj) COM_FORWARD_IGuest_GETTER_AdditionsActive_TO ((obj)->)
#define COM_FORWARD_IGuest_GETTER_AdditionsActive_TO_BASE(base) COM_FORWARD_IGuest_GETTER_AdditionsActive_TO (base::)
#define COM_FORWARD_IGuest_GETTER_AdditionsVersion_TO(smth) NS_IMETHOD GetAdditionsVersion (PRUnichar * * aAdditionsVersion) { return smth GetAdditionsVersion (aAdditionsVersion); }
#define COM_FORWARD_IGuest_GETTER_AdditionsVersion_TO_OBJ(obj) COM_FORWARD_IGuest_GETTER_AdditionsVersion_TO ((obj)->)
#define COM_FORWARD_IGuest_GETTER_AdditionsVersion_TO_BASE(base) COM_FORWARD_IGuest_GETTER_AdditionsVersion_TO (base::)
#define COM_FORWARD_IGuest_GETTER_SupportsSeamless_TO(smth) NS_IMETHOD GetSupportsSeamless (PRBool * aSupportsSeamless) { return smth GetSupportsSeamless (aSupportsSeamless); }
#define COM_FORWARD_IGuest_GETTER_SupportsSeamless_TO_OBJ(obj) COM_FORWARD_IGuest_GETTER_SupportsSeamless_TO ((obj)->)
#define COM_FORWARD_IGuest_GETTER_SupportsSeamless_TO_BASE(base) COM_FORWARD_IGuest_GETTER_SupportsSeamless_TO (base::)
#define COM_FORWARD_IGuest_GETTER_SupportsGraphics_TO(smth) NS_IMETHOD GetSupportsGraphics (PRBool * aSupportsGraphics) { return smth GetSupportsGraphics (aSupportsGraphics); }
#define COM_FORWARD_IGuest_GETTER_SupportsGraphics_TO_OBJ(obj) COM_FORWARD_IGuest_GETTER_SupportsGraphics_TO ((obj)->)
#define COM_FORWARD_IGuest_GETTER_SupportsGraphics_TO_BASE(base) COM_FORWARD_IGuest_GETTER_SupportsGraphics_TO (base::)
#define COM_FORWARD_IGuest_GETTER_MemoryBalloonSize_TO(smth) NS_IMETHOD GetMemoryBalloonSize (PRUint32 * aMemoryBalloonSize) { return smth GetMemoryBalloonSize (aMemoryBalloonSize); }
#define COM_FORWARD_IGuest_GETTER_MemoryBalloonSize_TO_OBJ(obj) COM_FORWARD_IGuest_GETTER_MemoryBalloonSize_TO ((obj)->)
#define COM_FORWARD_IGuest_GETTER_MemoryBalloonSize_TO_BASE(base) COM_FORWARD_IGuest_GETTER_MemoryBalloonSize_TO (base::)
#define COM_FORWARD_IGuest_SETTER_MemoryBalloonSize_TO(smth) NS_IMETHOD SetMemoryBalloonSize (PRUint32 aMemoryBalloonSize) { return smth SetMemoryBalloonSize (aMemoryBalloonSize); }
#define COM_FORWARD_IGuest_SETTER_MemoryBalloonSize_TO_OBJ(obj) COM_FORWARD_IGuest_SETTER_MemoryBalloonSize_TO ((obj)->)
#define COM_FORWARD_IGuest_SETTER_MemoryBalloonSize_TO_BASE(base) COM_FORWARD_IGuest_SETTER_MemoryBalloonSize_TO (base::)
#define COM_FORWARD_IGuest_GETTER_PageFusionEnabled_TO(smth) NS_IMETHOD GetPageFusionEnabled (PRBool * aPageFusionEnabled) { return smth GetPageFusionEnabled (aPageFusionEnabled); }
#define COM_FORWARD_IGuest_GETTER_PageFusionEnabled_TO_OBJ(obj) COM_FORWARD_IGuest_GETTER_PageFusionEnabled_TO ((obj)->)
#define COM_FORWARD_IGuest_GETTER_PageFusionEnabled_TO_BASE(base) COM_FORWARD_IGuest_GETTER_PageFusionEnabled_TO (base::)
#define COM_FORWARD_IGuest_SETTER_PageFusionEnabled_TO(smth) NS_IMETHOD SetPageFusionEnabled (PRBool aPageFusionEnabled) { return smth SetPageFusionEnabled (aPageFusionEnabled); }
#define COM_FORWARD_IGuest_SETTER_PageFusionEnabled_TO_OBJ(obj) COM_FORWARD_IGuest_SETTER_PageFusionEnabled_TO ((obj)->)
#define COM_FORWARD_IGuest_SETTER_PageFusionEnabled_TO_BASE(base) COM_FORWARD_IGuest_SETTER_PageFusionEnabled_TO (base::)
#define COM_FORWARD_IGuest_GETTER_StatisticsUpdateInterval_TO(smth) NS_IMETHOD GetStatisticsUpdateInterval (PRUint32 * aStatisticsUpdateInterval) { return smth GetStatisticsUpdateInterval (aStatisticsUpdateInterval); }
#define COM_FORWARD_IGuest_GETTER_StatisticsUpdateInterval_TO_OBJ(obj) COM_FORWARD_IGuest_GETTER_StatisticsUpdateInterval_TO ((obj)->)
#define COM_FORWARD_IGuest_GETTER_StatisticsUpdateInterval_TO_BASE(base) COM_FORWARD_IGuest_GETTER_StatisticsUpdateInterval_TO (base::)
#define COM_FORWARD_IGuest_SETTER_StatisticsUpdateInterval_TO(smth) NS_IMETHOD SetStatisticsUpdateInterval (PRUint32 aStatisticsUpdateInterval) { return smth SetStatisticsUpdateInterval (aStatisticsUpdateInterval); }
#define COM_FORWARD_IGuest_SETTER_StatisticsUpdateInterval_TO_OBJ(obj) COM_FORWARD_IGuest_SETTER_StatisticsUpdateInterval_TO ((obj)->)
#define COM_FORWARD_IGuest_SETTER_StatisticsUpdateInterval_TO_BASE(base) COM_FORWARD_IGuest_SETTER_StatisticsUpdateInterval_TO (base::)
#define COM_FORWARD_IGuest_InternalGetStatistics_TO(smth) NS_IMETHOD InternalGetStatistics (PRUint32 * aCpuUser, PRUint32 * aCpuKernel, PRUint32 * aCpuIdle, PRUint32 * aMemTotal, PRUint32 * aMemFree, PRUint32 * aMemBalloon, PRUint32 * aMemShared, PRUint32 * aMemCache, PRUint32 * aPagedTotal, PRUint32 * aMemAllocTotal, PRUint32 * aMemFreeTotal, PRUint32 * aMemBalloonTotal, PRUint32 * aMemSharedTotal) { return smth InternalGetStatistics (aCpuUser, aCpuKernel, aCpuIdle, aMemTotal, aMemFree, aMemBalloon, aMemShared, aMemCache, aPagedTotal, aMemAllocTotal, aMemFreeTotal, aMemBalloonTotal, aMemSharedTotal); }
#define COM_FORWARD_IGuest_InternalGetStatistics_TO_OBJ(obj) COM_FORWARD_IGuest_InternalGetStatistics_TO ((obj)->)
#define COM_FORWARD_IGuest_InternalGetStatistics_TO_BASE(base) COM_FORWARD_IGuest_InternalGetStatistics_TO (base::)
#define COM_FORWARD_IGuest_SetCredentials_TO(smth) NS_IMETHOD SetCredentials (PRUnichar * aUserName, PRUnichar * aPassword, PRUnichar * aDomain, PRBool aAllowInteractiveLogon) { return smth SetCredentials (aUserName, aPassword, aDomain, aAllowInteractiveLogon); }
#define COM_FORWARD_IGuest_SetCredentials_TO_OBJ(obj) COM_FORWARD_IGuest_SetCredentials_TO ((obj)->)
#define COM_FORWARD_IGuest_SetCredentials_TO_BASE(base) COM_FORWARD_IGuest_SetCredentials_TO (base::)
#define COM_FORWARD_IGuest_ExecuteProcess_TO(smth) NS_IMETHOD ExecuteProcess (PRUnichar * aExecName, PRUint32 aFlags, PRUint32 aArgumentsSize, PRUnichar * * aArguments, PRUint32 aEnvironmentSize, PRUnichar * * aEnvironment, PRUnichar * aUserName, PRUnichar * aPassword, PRUint32 aTimeoutMS, PRUint32 * aPid, IProgress * * aProgress) { return smth ExecuteProcess (aExecName, aFlags, aArgumentsSize+++, aArguments, aEnvironmentSize+++, aEnvironment, aUserName, aPassword, aTimeoutMS, aPid, aProgress); }
#define COM_FORWARD_IGuest_ExecuteProcess_TO_OBJ(obj) COM_FORWARD_IGuest_ExecuteProcess_TO ((obj)->)
#define COM_FORWARD_IGuest_ExecuteProcess_TO_BASE(base) COM_FORWARD_IGuest_ExecuteProcess_TO (base::)
#define COM_FORWARD_IGuest_GetProcessOutput_TO(smth) NS_IMETHOD GetProcessOutput (PRUint32 aPid, PRUint32 aFlags, PRUint32 aTimeoutMS, PRUint64 aSize, PRUint32 * aDataSize, PRUint8 * * aData) { return smth GetProcessOutput (aPid, aFlags, aTimeoutMS, aSize, aDataSize, aData); }
#define COM_FORWARD_IGuest_GetProcessOutput_TO_OBJ(obj) COM_FORWARD_IGuest_GetProcessOutput_TO ((obj)->)
#define COM_FORWARD_IGuest_GetProcessOutput_TO_BASE(base) COM_FORWARD_IGuest_GetProcessOutput_TO (base::)
#define COM_FORWARD_IGuest_GetProcessStatus_TO(smth) NS_IMETHOD GetProcessStatus (PRUint32 aPid, PRUint32 * aExitcode, PRUint32 * aFlags, PRUint32 * aReason) { return smth GetProcessStatus (aPid, aExitcode, aFlags, aReason); }
#define COM_FORWARD_IGuest_GetProcessStatus_TO_OBJ(obj) COM_FORWARD_IGuest_GetProcessStatus_TO ((obj)->)
#define COM_FORWARD_IGuest_GetProcessStatus_TO_BASE(base) COM_FORWARD_IGuest_GetProcessStatus_TO (base::)
#define COM_FORWARD_IGuest_TO(smth) NS_FORWARD_IGUEST (smth)
#define COM_FORWARD_IGuest_TO_OBJ(obj) COM_FORWARD_IGuest_TO ((obj)->)
#define COM_FORWARD_IGuest_TO_BASE(base) COM_FORWARD_IGuest_TO (base::)

/* starting interface:    IProgress */
#define IPROGRESS_IID_STR "856aa038-853f-42e2-acf7-6e7b02dbe294"

#define IPROGRESS_IID \
  {0x856aa038, 0x853f, 0x42e2, \
    { 0xac, 0xf7, 0x6e, 0x7b, 0x02, 0xdb, 0xe2, 0x94 }}

class NS_NO_VTABLE IProgress : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IPROGRESS_IID)

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

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

  /* readonly attribute nsISupports initiator; */
  NS_IMETHOD GetInitiator(nsISupports * *aInitiator) = 0;

  /* readonly attribute boolean cancelable; */
  NS_IMETHOD GetCancelable(PRBool *aCancelable) = 0;

  /* readonly attribute unsigned long percent; */
  NS_IMETHOD GetPercent(PRUint32 *aPercent) = 0;

  /* readonly attribute long timeRemaining; */
  NS_IMETHOD GetTimeRemaining(PRInt32 *aTimeRemaining) = 0;

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

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

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

  /* readonly attribute IVirtualBoxErrorInfo errorInfo; */
  NS_IMETHOD GetErrorInfo(IVirtualBoxErrorInfo * *aErrorInfo) = 0;

  /* readonly attribute unsigned long operationCount; */
  NS_IMETHOD GetOperationCount(PRUint32 *aOperationCount) = 0;

  /* readonly attribute unsigned long operation; */
  NS_IMETHOD GetOperation(PRUint32 *aOperation) = 0;

  /* readonly attribute wstring operationDescription; */
  NS_IMETHOD GetOperationDescription(PRUnichar * *aOperationDescription) = 0;

  /* readonly attribute unsigned long operationPercent; */
  NS_IMETHOD GetOperationPercent(PRUint32 *aOperationPercent) = 0;

  /* attribute unsigned long timeout; */
  NS_IMETHOD GetTimeout(PRUint32 *aTimeout) = 0;
  NS_IMETHOD SetTimeout(PRUint32 aTimeout) = 0;

  /* void setCurrentOperationProgress (in unsigned long percent); */
  NS_IMETHOD SetCurrentOperationProgress(PRUint32 percent) = 0;

  /* void setNextOperation (in wstring nextOperationDescription, in unsigned long nextOperationsWeight); */
  NS_IMETHOD SetNextOperation(const PRUnichar *nextOperationDescription, PRUint32 nextOperationsWeight) = 0;

  /* void waitForCompletion (in long timeout); */
  NS_IMETHOD WaitForCompletion(PRInt32 timeout) = 0;

  /* void waitForOperationCompletion (in unsigned long operation, in long timeout); */
  NS_IMETHOD WaitForOperationCompletion(PRUint32 operation, PRInt32 timeout) = 0;

  /* void cancel (); */
  NS_IMETHOD Cancel(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IPROGRESS \
  NS_IMETHOD GetId(PRUnichar * *aId); \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription); \
  NS_IMETHOD GetInitiator(nsISupports * *aInitiator); \
  NS_IMETHOD GetCancelable(PRBool *aCancelable); \
  NS_IMETHOD GetPercent(PRUint32 *aPercent); \
  NS_IMETHOD GetTimeRemaining(PRInt32 *aTimeRemaining); \
  NS_IMETHOD GetCompleted(PRBool *aCompleted); \
  NS_IMETHOD GetCanceled(PRBool *aCanceled); \
  NS_IMETHOD GetResultCode(PRInt32 *aResultCode); \
  NS_IMETHOD GetErrorInfo(IVirtualBoxErrorInfo * *aErrorInfo); \
  NS_IMETHOD GetOperationCount(PRUint32 *aOperationCount); \
  NS_IMETHOD GetOperation(PRUint32 *aOperation); \
  NS_IMETHOD GetOperationDescription(PRUnichar * *aOperationDescription); \
  NS_IMETHOD GetOperationPercent(PRUint32 *aOperationPercent); \
  NS_IMETHOD GetTimeout(PRUint32 *aTimeout); \
  NS_IMETHOD SetTimeout(PRUint32 aTimeout); \
  NS_IMETHOD SetCurrentOperationProgress(PRUint32 percent); \
  NS_IMETHOD SetNextOperation(const PRUnichar *nextOperationDescription, PRUint32 nextOperationsWeight); \
  NS_IMETHOD WaitForCompletion(PRInt32 timeout); \
  NS_IMETHOD WaitForOperationCompletion(PRUint32 operation, PRInt32 timeout); \
  NS_IMETHOD Cancel(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IPROGRESS(_to) \
  NS_IMETHOD GetId(PRUnichar * *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return _to GetDescription(aDescription); } \
  NS_IMETHOD GetInitiator(nsISupports * *aInitiator) { return _to GetInitiator(aInitiator); } \
  NS_IMETHOD GetCancelable(PRBool *aCancelable) { return _to GetCancelable(aCancelable); } \
  NS_IMETHOD GetPercent(PRUint32 *aPercent) { return _to GetPercent(aPercent); } \
  NS_IMETHOD GetTimeRemaining(PRInt32 *aTimeRemaining) { return _to GetTimeRemaining(aTimeRemaining); } \
  NS_IMETHOD GetCompleted(PRBool *aCompleted) { return _to GetCompleted(aCompleted); } \
  NS_IMETHOD GetCanceled(PRBool *aCanceled) { return _to GetCanceled(aCanceled); } \
  NS_IMETHOD GetResultCode(PRInt32 *aResultCode) { return _to GetResultCode(aResultCode); } \
  NS_IMETHOD GetErrorInfo(IVirtualBoxErrorInfo * *aErrorInfo) { return _to GetErrorInfo(aErrorInfo); } \
  NS_IMETHOD GetOperationCount(PRUint32 *aOperationCount) { return _to GetOperationCount(aOperationCount); } \
  NS_IMETHOD GetOperation(PRUint32 *aOperation) { return _to GetOperation(aOperation); } \
  NS_IMETHOD GetOperationDescription(PRUnichar * *aOperationDescription) { return _to GetOperationDescription(aOperationDescription); } \
  NS_IMETHOD GetOperationPercent(PRUint32 *aOperationPercent) { return _to GetOperationPercent(aOperationPercent); } \
  NS_IMETHOD GetTimeout(PRUint32 *aTimeout) { return _to GetTimeout(aTimeout); } \
  NS_IMETHOD SetTimeout(PRUint32 aTimeout) { return _to SetTimeout(aTimeout); } \
  NS_IMETHOD SetCurrentOperationProgress(PRUint32 percent) { return _to SetCurrentOperationProgress(percent); } \
  NS_IMETHOD SetNextOperation(const PRUnichar *nextOperationDescription, PRUint32 nextOperationsWeight) { return _to SetNextOperation(nextOperationDescription, nextOperationsWeight); } \
  NS_IMETHOD WaitForCompletion(PRInt32 timeout) { return _to WaitForCompletion(timeout); } \
  NS_IMETHOD WaitForOperationCompletion(PRUint32 operation, PRInt32 timeout) { return _to WaitForOperationCompletion(operation, timeout); } \
  NS_IMETHOD Cancel(void) { return _to Cancel(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IPROGRESS(_to) \
  NS_IMETHOD GetId(PRUnichar * *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } \
  NS_IMETHOD GetInitiator(nsISupports * *aInitiator) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInitiator(aInitiator); } \
  NS_IMETHOD GetCancelable(PRBool *aCancelable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCancelable(aCancelable); } \
  NS_IMETHOD GetPercent(PRUint32 *aPercent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPercent(aPercent); } \
  NS_IMETHOD GetTimeRemaining(PRInt32 *aTimeRemaining) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTimeRemaining(aTimeRemaining); } \
  NS_IMETHOD GetCompleted(PRBool *aCompleted) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCompleted(aCompleted); } \
  NS_IMETHOD GetCanceled(PRBool *aCanceled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCanceled(aCanceled); } \
  NS_IMETHOD GetResultCode(PRInt32 *aResultCode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetResultCode(aResultCode); } \
  NS_IMETHOD GetErrorInfo(IVirtualBoxErrorInfo * *aErrorInfo) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetErrorInfo(aErrorInfo); } \
  NS_IMETHOD GetOperationCount(PRUint32 *aOperationCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOperationCount(aOperationCount); } \
  NS_IMETHOD GetOperation(PRUint32 *aOperation) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOperation(aOperation); } \
  NS_IMETHOD GetOperationDescription(PRUnichar * *aOperationDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOperationDescription(aOperationDescription); } \
  NS_IMETHOD GetOperationPercent(PRUint32 *aOperationPercent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOperationPercent(aOperationPercent); } \
  NS_IMETHOD GetTimeout(PRUint32 *aTimeout) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTimeout(aTimeout); } \
  NS_IMETHOD SetTimeout(PRUint32 aTimeout) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTimeout(aTimeout); } \
  NS_IMETHOD SetCurrentOperationProgress(PRUint32 percent) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCurrentOperationProgress(percent); } \
  NS_IMETHOD SetNextOperation(const PRUnichar *nextOperationDescription, PRUint32 nextOperationsWeight) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNextOperation(nextOperationDescription, nextOperationsWeight); } \
  NS_IMETHOD WaitForCompletion(PRInt32 timeout) { return !_to ? NS_ERROR_NULL_POINTER : _to->WaitForCompletion(timeout); } \
  NS_IMETHOD WaitForOperationCompletion(PRUint32 operation, PRInt32 timeout) { return !_to ? NS_ERROR_NULL_POINTER : _to->WaitForOperationCompletion(operation, timeout); } \
  NS_IMETHOD Cancel(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Cancel(); } 

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

/* Header file */
class _MYCLASS_ : public IProgress
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IPROGRESS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute wstring id; */
NS_IMETHODIMP _MYCLASS_::GetId(PRUnichar * *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring description; */
NS_IMETHODIMP _MYCLASS_::GetDescription(PRUnichar * *aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsISupports initiator; */
NS_IMETHODIMP _MYCLASS_::GetInitiator(nsISupports * *aInitiator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean cancelable; */
NS_IMETHODIMP _MYCLASS_::GetCancelable(PRBool *aCancelable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long percent; */
NS_IMETHODIMP _MYCLASS_::GetPercent(PRUint32 *aPercent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long timeRemaining; */
NS_IMETHODIMP _MYCLASS_::GetTimeRemaining(PRInt32 *aTimeRemaining)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean completed; */
NS_IMETHODIMP _MYCLASS_::GetCompleted(PRBool *aCompleted)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean canceled; */
NS_IMETHODIMP _MYCLASS_::GetCanceled(PRBool *aCanceled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long resultCode; */
NS_IMETHODIMP _MYCLASS_::GetResultCode(PRInt32 *aResultCode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IVirtualBoxErrorInfo errorInfo; */
NS_IMETHODIMP _MYCLASS_::GetErrorInfo(IVirtualBoxErrorInfo * *aErrorInfo)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long operationCount; */
NS_IMETHODIMP _MYCLASS_::GetOperationCount(PRUint32 *aOperationCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long operation; */
NS_IMETHODIMP _MYCLASS_::GetOperation(PRUint32 *aOperation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring operationDescription; */
NS_IMETHODIMP _MYCLASS_::GetOperationDescription(PRUnichar * *aOperationDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long operationPercent; */
NS_IMETHODIMP _MYCLASS_::GetOperationPercent(PRUint32 *aOperationPercent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long timeout; */
NS_IMETHODIMP _MYCLASS_::GetTimeout(PRUint32 *aTimeout)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTimeout(PRUint32 aTimeout)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setCurrentOperationProgress (in unsigned long percent); */
NS_IMETHODIMP _MYCLASS_::SetCurrentOperationProgress(PRUint32 percent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setNextOperation (in wstring nextOperationDescription, in unsigned long nextOperationsWeight); */
NS_IMETHODIMP _MYCLASS_::SetNextOperation(const PRUnichar *nextOperationDescription, PRUint32 nextOperationsWeight)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void waitForCompletion (in long timeout); */
NS_IMETHODIMP _MYCLASS_::WaitForCompletion(PRInt32 timeout)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void waitForOperationCompletion (in unsigned long operation, in long timeout); */
NS_IMETHODIMP _MYCLASS_::WaitForOperationCompletion(PRUint32 operation, PRInt32 timeout)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void cancel (); */
NS_IMETHODIMP _MYCLASS_::Cancel()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IProgress_GETTER_Id_TO(smth) NS_IMETHOD GetId (PRUnichar * * aId) { return smth GetId (aId); }
#define COM_FORWARD_IProgress_GETTER_Id_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_Id_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_Id_TO_BASE(base) COM_FORWARD_IProgress_GETTER_Id_TO (base::)
#define COM_FORWARD_IProgress_GETTER_Description_TO(smth) NS_IMETHOD GetDescription (PRUnichar * * aDescription) { return smth GetDescription (aDescription); }
#define COM_FORWARD_IProgress_GETTER_Description_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_Description_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_Description_TO_BASE(base) COM_FORWARD_IProgress_GETTER_Description_TO (base::)
#define COM_FORWARD_IProgress_GETTER_Initiator_TO(smth) NS_IMETHOD GetInitiator (nsISupports * * aInitiator) { return smth GetInitiator (aInitiator); }
#define COM_FORWARD_IProgress_GETTER_Initiator_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_Initiator_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_Initiator_TO_BASE(base) COM_FORWARD_IProgress_GETTER_Initiator_TO (base::)
#define COM_FORWARD_IProgress_GETTER_Cancelable_TO(smth) NS_IMETHOD GetCancelable (PRBool * aCancelable) { return smth GetCancelable (aCancelable); }
#define COM_FORWARD_IProgress_GETTER_Cancelable_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_Cancelable_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_Cancelable_TO_BASE(base) COM_FORWARD_IProgress_GETTER_Cancelable_TO (base::)
#define COM_FORWARD_IProgress_GETTER_Percent_TO(smth) NS_IMETHOD GetPercent (PRUint32 * aPercent) { return smth GetPercent (aPercent); }
#define COM_FORWARD_IProgress_GETTER_Percent_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_Percent_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_Percent_TO_BASE(base) COM_FORWARD_IProgress_GETTER_Percent_TO (base::)
#define COM_FORWARD_IProgress_GETTER_TimeRemaining_TO(smth) NS_IMETHOD GetTimeRemaining (PRInt32 * aTimeRemaining) { return smth GetTimeRemaining (aTimeRemaining); }
#define COM_FORWARD_IProgress_GETTER_TimeRemaining_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_TimeRemaining_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_TimeRemaining_TO_BASE(base) COM_FORWARD_IProgress_GETTER_TimeRemaining_TO (base::)
#define COM_FORWARD_IProgress_GETTER_Completed_TO(smth) NS_IMETHOD GetCompleted (PRBool * aCompleted) { return smth GetCompleted (aCompleted); }
#define COM_FORWARD_IProgress_GETTER_Completed_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_Completed_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_Completed_TO_BASE(base) COM_FORWARD_IProgress_GETTER_Completed_TO (base::)
#define COM_FORWARD_IProgress_GETTER_Canceled_TO(smth) NS_IMETHOD GetCanceled (PRBool * aCanceled) { return smth GetCanceled (aCanceled); }
#define COM_FORWARD_IProgress_GETTER_Canceled_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_Canceled_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_Canceled_TO_BASE(base) COM_FORWARD_IProgress_GETTER_Canceled_TO (base::)
#define COM_FORWARD_IProgress_GETTER_ResultCode_TO(smth) NS_IMETHOD GetResultCode (PRInt32 * aResultCode) { return smth GetResultCode (aResultCode); }
#define COM_FORWARD_IProgress_GETTER_ResultCode_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_ResultCode_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_ResultCode_TO_BASE(base) COM_FORWARD_IProgress_GETTER_ResultCode_TO (base::)
#define COM_FORWARD_IProgress_GETTER_ErrorInfo_TO(smth) NS_IMETHOD GetErrorInfo (IVirtualBoxErrorInfo * * aErrorInfo) { return smth GetErrorInfo (aErrorInfo); }
#define COM_FORWARD_IProgress_GETTER_ErrorInfo_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_ErrorInfo_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_ErrorInfo_TO_BASE(base) COM_FORWARD_IProgress_GETTER_ErrorInfo_TO (base::)
#define COM_FORWARD_IProgress_GETTER_OperationCount_TO(smth) NS_IMETHOD GetOperationCount (PRUint32 * aOperationCount) { return smth GetOperationCount (aOperationCount); }
#define COM_FORWARD_IProgress_GETTER_OperationCount_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_OperationCount_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_OperationCount_TO_BASE(base) COM_FORWARD_IProgress_GETTER_OperationCount_TO (base::)
#define COM_FORWARD_IProgress_GETTER_Operation_TO(smth) NS_IMETHOD GetOperation (PRUint32 * aOperation) { return smth GetOperation (aOperation); }
#define COM_FORWARD_IProgress_GETTER_Operation_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_Operation_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_Operation_TO_BASE(base) COM_FORWARD_IProgress_GETTER_Operation_TO (base::)
#define COM_FORWARD_IProgress_GETTER_OperationDescription_TO(smth) NS_IMETHOD GetOperationDescription (PRUnichar * * aOperationDescription) { return smth GetOperationDescription (aOperationDescription); }
#define COM_FORWARD_IProgress_GETTER_OperationDescription_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_OperationDescription_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_OperationDescription_TO_BASE(base) COM_FORWARD_IProgress_GETTER_OperationDescription_TO (base::)
#define COM_FORWARD_IProgress_GETTER_OperationPercent_TO(smth) NS_IMETHOD GetOperationPercent (PRUint32 * aOperationPercent) { return smth GetOperationPercent (aOperationPercent); }
#define COM_FORWARD_IProgress_GETTER_OperationPercent_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_OperationPercent_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_OperationPercent_TO_BASE(base) COM_FORWARD_IProgress_GETTER_OperationPercent_TO (base::)
#define COM_FORWARD_IProgress_GETTER_Timeout_TO(smth) NS_IMETHOD GetTimeout (PRUint32 * aTimeout) { return smth GetTimeout (aTimeout); }
#define COM_FORWARD_IProgress_GETTER_Timeout_TO_OBJ(obj) COM_FORWARD_IProgress_GETTER_Timeout_TO ((obj)->)
#define COM_FORWARD_IProgress_GETTER_Timeout_TO_BASE(base) COM_FORWARD_IProgress_GETTER_Timeout_TO (base::)
#define COM_FORWARD_IProgress_SETTER_Timeout_TO(smth) NS_IMETHOD SetTimeout (PRUint32 aTimeout) { return smth SetTimeout (aTimeout); }
#define COM_FORWARD_IProgress_SETTER_Timeout_TO_OBJ(obj) COM_FORWARD_IProgress_SETTER_Timeout_TO ((obj)->)
#define COM_FORWARD_IProgress_SETTER_Timeout_TO_BASE(base) COM_FORWARD_IProgress_SETTER_Timeout_TO (base::)
#define COM_FORWARD_IProgress_SetCurrentOperationProgress_TO(smth) NS_IMETHOD SetCurrentOperationProgress (PRUint32 aPercent) { return smth SetCurrentOperationProgress (aPercent); }
#define COM_FORWARD_IProgress_SetCurrentOperationProgress_TO_OBJ(obj) COM_FORWARD_IProgress_SetCurrentOperationProgress_TO ((obj)->)
#define COM_FORWARD_IProgress_SetCurrentOperationProgress_TO_BASE(base) COM_FORWARD_IProgress_SetCurrentOperationProgress_TO (base::)
#define COM_FORWARD_IProgress_SetNextOperation_TO(smth) NS_IMETHOD SetNextOperation (PRUnichar * aNextOperationDescription, PRUint32 aNextOperationsWeight) { return smth SetNextOperation (aNextOperationDescription, aNextOperationsWeight); }
#define COM_FORWARD_IProgress_SetNextOperation_TO_OBJ(obj) COM_FORWARD_IProgress_SetNextOperation_TO ((obj)->)
#define COM_FORWARD_IProgress_SetNextOperation_TO_BASE(base) COM_FORWARD_IProgress_SetNextOperation_TO (base::)
#define COM_FORWARD_IProgress_WaitForCompletion_TO(smth) NS_IMETHOD WaitForCompletion (PRInt32 aTimeout) { return smth WaitForCompletion (aTimeout); }
#define COM_FORWARD_IProgress_WaitForCompletion_TO_OBJ(obj) COM_FORWARD_IProgress_WaitForCompletion_TO ((obj)->)
#define COM_FORWARD_IProgress_WaitForCompletion_TO_BASE(base) COM_FORWARD_IProgress_WaitForCompletion_TO (base::)
#define COM_FORWARD_IProgress_WaitForOperationCompletion_TO(smth) NS_IMETHOD WaitForOperationCompletion (PRUint32 aOperation, PRInt32 aTimeout) { return smth WaitForOperationCompletion (aOperation, aTimeout); }
#define COM_FORWARD_IProgress_WaitForOperationCompletion_TO_OBJ(obj) COM_FORWARD_IProgress_WaitForOperationCompletion_TO ((obj)->)
#define COM_FORWARD_IProgress_WaitForOperationCompletion_TO_BASE(base) COM_FORWARD_IProgress_WaitForOperationCompletion_TO (base::)
#define COM_FORWARD_IProgress_Cancel_TO(smth) NS_IMETHOD Cancel() { return smth Cancel(); }
#define COM_FORWARD_IProgress_Cancel_TO_OBJ(obj) COM_FORWARD_IProgress_Cancel_TO ((obj)->)
#define COM_FORWARD_IProgress_Cancel_TO_BASE(base) COM_FORWARD_IProgress_Cancel_TO (base::)
#define COM_FORWARD_IProgress_TO(smth) NS_FORWARD_IPROGRESS (smth)
#define COM_FORWARD_IProgress_TO_OBJ(obj) COM_FORWARD_IProgress_TO ((obj)->)
#define COM_FORWARD_IProgress_TO_BASE(base) COM_FORWARD_IProgress_TO (base::)

/* starting interface:    ISnapshot */
#define ISNAPSHOT_IID_STR "1a2d0551-58a4-4107-857e-ef414fc42ffc"

#define ISNAPSHOT_IID \
  {0x1a2d0551, 0x58a4, 0x4107, \
    { 0x85, 0x7e, 0xef, 0x41, 0x4f, 0xc4, 0x2f, 0xfc }}

class NS_NO_VTABLE ISnapshot : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISNAPSHOT_IID)

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

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

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

  /* readonly attribute long long timeStamp; */
  NS_IMETHOD GetTimeStamp(PRInt64 *aTimeStamp) = 0;

  /* readonly attribute boolean online; */
  NS_IMETHOD GetOnline(PRBool *aOnline) = 0;

  /* readonly attribute IMachine machine; */
  NS_IMETHOD GetMachine(IMachine * *aMachine) = 0;

  /* readonly attribute ISnapshot parent; */
  NS_IMETHOD GetParent(ISnapshot * *aParent) = 0;

  /* void getChildren (out unsigned long childrenSize, [array, size_is (childrenSize), retval] out ISnapshot children); */
  NS_IMETHOD GetChildren(PRUint32 *childrenSize, ISnapshot ***children) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISNAPSHOT \
  NS_IMETHOD GetId(PRUnichar * *aId); \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD SetName(const PRUnichar * aName); \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription); \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription); \
  NS_IMETHOD GetTimeStamp(PRInt64 *aTimeStamp); \
  NS_IMETHOD GetOnline(PRBool *aOnline); \
  NS_IMETHOD GetMachine(IMachine * *aMachine); \
  NS_IMETHOD GetParent(ISnapshot * *aParent); \
  NS_IMETHOD GetChildren(PRUint32 *childrenSize, ISnapshot ***children); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISNAPSHOT(_to) \
  NS_IMETHOD GetId(PRUnichar * *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD SetName(const PRUnichar * aName) { return _to SetName(aName); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return _to GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription) { return _to SetDescription(aDescription); } \
  NS_IMETHOD GetTimeStamp(PRInt64 *aTimeStamp) { return _to GetTimeStamp(aTimeStamp); } \
  NS_IMETHOD GetOnline(PRBool *aOnline) { return _to GetOnline(aOnline); } \
  NS_IMETHOD GetMachine(IMachine * *aMachine) { return _to GetMachine(aMachine); } \
  NS_IMETHOD GetParent(ISnapshot * *aParent) { return _to GetParent(aParent); } \
  NS_IMETHOD GetChildren(PRUint32 *childrenSize, ISnapshot ***children) { return _to GetChildren(childrenSize, children); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISNAPSHOT(_to) \
  NS_IMETHOD GetId(PRUnichar * *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(const PRUnichar * aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetName(aName); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDescription(aDescription); } \
  NS_IMETHOD GetTimeStamp(PRInt64 *aTimeStamp) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTimeStamp(aTimeStamp); } \
  NS_IMETHOD GetOnline(PRBool *aOnline) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOnline(aOnline); } \
  NS_IMETHOD GetMachine(IMachine * *aMachine) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMachine(aMachine); } \
  NS_IMETHOD GetParent(ISnapshot * *aParent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParent(aParent); } \
  NS_IMETHOD GetChildren(PRUint32 *childrenSize, ISnapshot ***children) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChildren(childrenSize, children); } 

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

/* Header file */
class _MYCLASS_ : public ISnapshot
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISNAPSHOT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute wstring id; */
NS_IMETHODIMP _MYCLASS_::GetId(PRUnichar * *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetName(const PRUnichar * aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring description; */
NS_IMETHODIMP _MYCLASS_::GetDescription(PRUnichar * *aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDescription(const PRUnichar * aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long long timeStamp; */
NS_IMETHODIMP _MYCLASS_::GetTimeStamp(PRInt64 *aTimeStamp)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean online; */
NS_IMETHODIMP _MYCLASS_::GetOnline(PRBool *aOnline)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IMachine machine; */
NS_IMETHODIMP _MYCLASS_::GetMachine(IMachine * *aMachine)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute ISnapshot parent; */
NS_IMETHODIMP _MYCLASS_::GetParent(ISnapshot * *aParent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getChildren (out unsigned long childrenSize, [array, size_is (childrenSize), retval] out ISnapshot children); */
NS_IMETHODIMP _MYCLASS_::GetChildren(PRUint32 *childrenSize, ISnapshot ***children)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_ISnapshot_GETTER_Id_TO(smth) NS_IMETHOD GetId (PRUnichar * * aId) { return smth GetId (aId); }
#define COM_FORWARD_ISnapshot_GETTER_Id_TO_OBJ(obj) COM_FORWARD_ISnapshot_GETTER_Id_TO ((obj)->)
#define COM_FORWARD_ISnapshot_GETTER_Id_TO_BASE(base) COM_FORWARD_ISnapshot_GETTER_Id_TO (base::)
#define COM_FORWARD_ISnapshot_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_ISnapshot_GETTER_Name_TO_OBJ(obj) COM_FORWARD_ISnapshot_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_ISnapshot_GETTER_Name_TO_BASE(base) COM_FORWARD_ISnapshot_GETTER_Name_TO (base::)
#define COM_FORWARD_ISnapshot_SETTER_Name_TO(smth) NS_IMETHOD SetName (const PRUnichar * aName) { return smth SetName (aName); }
#define COM_FORWARD_ISnapshot_SETTER_Name_TO_OBJ(obj) COM_FORWARD_ISnapshot_SETTER_Name_TO ((obj)->)
#define COM_FORWARD_ISnapshot_SETTER_Name_TO_BASE(base) COM_FORWARD_ISnapshot_SETTER_Name_TO (base::)
#define COM_FORWARD_ISnapshot_GETTER_Description_TO(smth) NS_IMETHOD GetDescription (PRUnichar * * aDescription) { return smth GetDescription (aDescription); }
#define COM_FORWARD_ISnapshot_GETTER_Description_TO_OBJ(obj) COM_FORWARD_ISnapshot_GETTER_Description_TO ((obj)->)
#define COM_FORWARD_ISnapshot_GETTER_Description_TO_BASE(base) COM_FORWARD_ISnapshot_GETTER_Description_TO (base::)
#define COM_FORWARD_ISnapshot_SETTER_Description_TO(smth) NS_IMETHOD SetDescription (const PRUnichar * aDescription) { return smth SetDescription (aDescription); }
#define COM_FORWARD_ISnapshot_SETTER_Description_TO_OBJ(obj) COM_FORWARD_ISnapshot_SETTER_Description_TO ((obj)->)
#define COM_FORWARD_ISnapshot_SETTER_Description_TO_BASE(base) COM_FORWARD_ISnapshot_SETTER_Description_TO (base::)
#define COM_FORWARD_ISnapshot_GETTER_TimeStamp_TO(smth) NS_IMETHOD GetTimeStamp (PRInt64 * aTimeStamp) { return smth GetTimeStamp (aTimeStamp); }
#define COM_FORWARD_ISnapshot_GETTER_TimeStamp_TO_OBJ(obj) COM_FORWARD_ISnapshot_GETTER_TimeStamp_TO ((obj)->)
#define COM_FORWARD_ISnapshot_GETTER_TimeStamp_TO_BASE(base) COM_FORWARD_ISnapshot_GETTER_TimeStamp_TO (base::)
#define COM_FORWARD_ISnapshot_GETTER_Online_TO(smth) NS_IMETHOD GetOnline (PRBool * aOnline) { return smth GetOnline (aOnline); }
#define COM_FORWARD_ISnapshot_GETTER_Online_TO_OBJ(obj) COM_FORWARD_ISnapshot_GETTER_Online_TO ((obj)->)
#define COM_FORWARD_ISnapshot_GETTER_Online_TO_BASE(base) COM_FORWARD_ISnapshot_GETTER_Online_TO (base::)
#define COM_FORWARD_ISnapshot_GETTER_Machine_TO(smth) NS_IMETHOD GetMachine (IMachine * * aMachine) { return smth GetMachine (aMachine); }
#define COM_FORWARD_ISnapshot_GETTER_Machine_TO_OBJ(obj) COM_FORWARD_ISnapshot_GETTER_Machine_TO ((obj)->)
#define COM_FORWARD_ISnapshot_GETTER_Machine_TO_BASE(base) COM_FORWARD_ISnapshot_GETTER_Machine_TO (base::)
#define COM_FORWARD_ISnapshot_GETTER_Parent_TO(smth) NS_IMETHOD GetParent (ISnapshot * * aParent) { return smth GetParent (aParent); }
#define COM_FORWARD_ISnapshot_GETTER_Parent_TO_OBJ(obj) COM_FORWARD_ISnapshot_GETTER_Parent_TO ((obj)->)
#define COM_FORWARD_ISnapshot_GETTER_Parent_TO_BASE(base) COM_FORWARD_ISnapshot_GETTER_Parent_TO (base::)
#define COM_FORWARD_ISnapshot_GETTER_Children_TO(smth) NS_IMETHOD GetChildren (PRUint32 * aChildrenSize, ISnapshot * * * aChildren) { return smth GetChildren (aChildrenSize, aChildren); }
#define COM_FORWARD_ISnapshot_GETTER_Children_TO_OBJ(obj) COM_FORWARD_ISnapshot_GETTER_Children_TO ((obj)->)
#define COM_FORWARD_ISnapshot_GETTER_Children_TO_BASE(base) COM_FORWARD_ISnapshot_GETTER_Children_TO (base::)
#define COM_FORWARD_ISnapshot_TO(smth) NS_FORWARD_ISNAPSHOT (smth)
#define COM_FORWARD_ISnapshot_TO_OBJ(obj) COM_FORWARD_ISnapshot_TO ((obj)->)
#define COM_FORWARD_ISnapshot_TO_BASE(base) COM_FORWARD_ISnapshot_TO (base::)

/* starting interface:    IMediumAttachment */
#define IMEDIUMATTACHMENT_IID_STR "e58eb3eb-8627-428b-bdf8-34487c848de5"

#define IMEDIUMATTACHMENT_IID \
  {0xe58eb3eb, 0x8627, 0x428b, \
    { 0xbd, 0xf8, 0x34, 0x48, 0x7c, 0x84, 0x8d, 0xe5 }}

class NS_NO_VTABLE IMediumAttachment : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMEDIUMATTACHMENT_IID)

  /* readonly attribute IMedium medium; */
  NS_IMETHOD GetMedium(IMedium * *aMedium) = 0;

  /* readonly attribute wstring controller; */
  NS_IMETHOD GetController(PRUnichar * *aController) = 0;

  /* readonly attribute long port; */
  NS_IMETHOD GetPort(PRInt32 *aPort) = 0;

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

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

  /* readonly attribute boolean passthrough; */
  NS_IMETHOD GetPassthrough(PRBool *aPassthrough) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMEDIUMATTACHMENT \
  NS_IMETHOD GetMedium(IMedium * *aMedium); \
  NS_IMETHOD GetController(PRUnichar * *aController); \
  NS_IMETHOD GetPort(PRInt32 *aPort); \
  NS_IMETHOD GetDevice(PRInt32 *aDevice); \
  NS_IMETHOD GetType(PRUint32 *aType); \
  NS_IMETHOD GetPassthrough(PRBool *aPassthrough); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMEDIUMATTACHMENT(_to) \
  NS_IMETHOD GetMedium(IMedium * *aMedium) { return _to GetMedium(aMedium); } \
  NS_IMETHOD GetController(PRUnichar * *aController) { return _to GetController(aController); } \
  NS_IMETHOD GetPort(PRInt32 *aPort) { return _to GetPort(aPort); } \
  NS_IMETHOD GetDevice(PRInt32 *aDevice) { return _to GetDevice(aDevice); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return _to GetType(aType); } \
  NS_IMETHOD GetPassthrough(PRBool *aPassthrough) { return _to GetPassthrough(aPassthrough); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMEDIUMATTACHMENT(_to) \
  NS_IMETHOD GetMedium(IMedium * *aMedium) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMedium(aMedium); } \
  NS_IMETHOD GetController(PRUnichar * *aController) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetController(aController); } \
  NS_IMETHOD GetPort(PRInt32 *aPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPort(aPort); } \
  NS_IMETHOD GetDevice(PRInt32 *aDevice) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDevice(aDevice); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetType(aType); } \
  NS_IMETHOD GetPassthrough(PRBool *aPassthrough) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPassthrough(aPassthrough); } 

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

/* Header file */
class _MYCLASS_ : public IMediumAttachment
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMEDIUMATTACHMENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute IMedium medium; */
NS_IMETHODIMP _MYCLASS_::GetMedium(IMedium * *aMedium)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring controller; */
NS_IMETHODIMP _MYCLASS_::GetController(PRUnichar * *aController)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long port; */
NS_IMETHODIMP _MYCLASS_::GetPort(PRInt32 *aPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* readonly attribute PRUint32 type; */
NS_IMETHODIMP _MYCLASS_::GetType(PRUint32 *aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean passthrough; */
NS_IMETHODIMP _MYCLASS_::GetPassthrough(PRBool *aPassthrough)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IMediumAttachment_GETTER_Medium_TO(smth) NS_IMETHOD GetMedium (IMedium * * aMedium) { return smth GetMedium (aMedium); }
#define COM_FORWARD_IMediumAttachment_GETTER_Medium_TO_OBJ(obj) COM_FORWARD_IMediumAttachment_GETTER_Medium_TO ((obj)->)
#define COM_FORWARD_IMediumAttachment_GETTER_Medium_TO_BASE(base) COM_FORWARD_IMediumAttachment_GETTER_Medium_TO (base::)
#define COM_FORWARD_IMediumAttachment_GETTER_Controller_TO(smth) NS_IMETHOD GetController (PRUnichar * * aController) { return smth GetController (aController); }
#define COM_FORWARD_IMediumAttachment_GETTER_Controller_TO_OBJ(obj) COM_FORWARD_IMediumAttachment_GETTER_Controller_TO ((obj)->)
#define COM_FORWARD_IMediumAttachment_GETTER_Controller_TO_BASE(base) COM_FORWARD_IMediumAttachment_GETTER_Controller_TO (base::)
#define COM_FORWARD_IMediumAttachment_GETTER_Port_TO(smth) NS_IMETHOD GetPort (PRInt32 * aPort) { return smth GetPort (aPort); }
#define COM_FORWARD_IMediumAttachment_GETTER_Port_TO_OBJ(obj) COM_FORWARD_IMediumAttachment_GETTER_Port_TO ((obj)->)
#define COM_FORWARD_IMediumAttachment_GETTER_Port_TO_BASE(base) COM_FORWARD_IMediumAttachment_GETTER_Port_TO (base::)
#define COM_FORWARD_IMediumAttachment_GETTER_Device_TO(smth) NS_IMETHOD GetDevice (PRInt32 * aDevice) { return smth GetDevice (aDevice); }
#define COM_FORWARD_IMediumAttachment_GETTER_Device_TO_OBJ(obj) COM_FORWARD_IMediumAttachment_GETTER_Device_TO ((obj)->)
#define COM_FORWARD_IMediumAttachment_GETTER_Device_TO_BASE(base) COM_FORWARD_IMediumAttachment_GETTER_Device_TO (base::)
#define COM_FORWARD_IMediumAttachment_GETTER_Type_TO(smth) NS_IMETHOD GetType (PRUint32 * aType) { return smth GetType (aType); }
#define COM_FORWARD_IMediumAttachment_GETTER_Type_TO_OBJ(obj) COM_FORWARD_IMediumAttachment_GETTER_Type_TO ((obj)->)
#define COM_FORWARD_IMediumAttachment_GETTER_Type_TO_BASE(base) COM_FORWARD_IMediumAttachment_GETTER_Type_TO (base::)
#define COM_FORWARD_IMediumAttachment_GETTER_Passthrough_TO(smth) NS_IMETHOD GetPassthrough (PRBool * aPassthrough) { return smth GetPassthrough (aPassthrough); }
#define COM_FORWARD_IMediumAttachment_GETTER_Passthrough_TO_OBJ(obj) COM_FORWARD_IMediumAttachment_GETTER_Passthrough_TO ((obj)->)
#define COM_FORWARD_IMediumAttachment_GETTER_Passthrough_TO_BASE(base) COM_FORWARD_IMediumAttachment_GETTER_Passthrough_TO (base::)
#define COM_FORWARD_IMediumAttachment_TO(smth) NS_FORWARD_IMEDIUMATTACHMENT (smth)
#define COM_FORWARD_IMediumAttachment_TO_OBJ(obj) COM_FORWARD_IMediumAttachment_TO ((obj)->)
#define COM_FORWARD_IMediumAttachment_TO_BASE(base) COM_FORWARD_IMediumAttachment_TO (base::)

/* starting interface:    IMedium */
#define IMEDIUM_IID_STR "1d578f43-5ef1-4415-b556-7592d3ccdc8f"

#define IMEDIUM_IID \
  {0x1d578f43, 0x5ef1, 0x4415, \
    { 0xb5, 0x56, 0x75, 0x92, 0xd3, 0xcc, 0xdc, 0x8f }}

class NS_NO_VTABLE IMedium : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMEDIUM_IID)

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

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

  /* readonly attribute PRUint32 state; */
  NS_IMETHOD GetState(PRUint32 *aState) = 0;

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

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

  /* readonly attribute PRUint32 deviceType; */
  NS_IMETHOD GetDeviceType(PRUint32 *aDeviceType) = 0;

  /* readonly attribute boolean hostDrive; */
  NS_IMETHOD GetHostDrive(PRBool *aHostDrive) = 0;

  /* readonly attribute unsigned long long size; */
  NS_IMETHOD GetSize(PRUint64 *aSize) = 0;

  /* readonly attribute wstring format; */
  NS_IMETHOD GetFormat(PRUnichar * *aFormat) = 0;

  /* readonly attribute IMediumFormat mediumFormat; */
  NS_IMETHOD GetMediumFormat(IMediumFormat * *aMediumFormat) = 0;

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

  /* readonly attribute IMedium parent; */
  NS_IMETHOD GetParent(IMedium * *aParent) = 0;

  /* void getChildren (out unsigned long childrenSize, [array, size_is (childrenSize), retval] out IMedium children); */
  NS_IMETHOD GetChildren(PRUint32 *childrenSize, IMedium ***children) = 0;

  /* readonly attribute IMedium base; */
  NS_IMETHOD GetBase(IMedium * *aBase) = 0;

  /* readonly attribute boolean readOnly; */
  NS_IMETHOD GetReadOnly(PRBool *aReadOnly) = 0;

  /* readonly attribute unsigned long long logicalSize; */
  NS_IMETHOD GetLogicalSize(PRUint64 *aLogicalSize) = 0;

  /* attribute boolean autoReset; */
  NS_IMETHOD GetAutoReset(PRBool *aAutoReset) = 0;
  NS_IMETHOD SetAutoReset(PRBool aAutoReset) = 0;

  /* readonly attribute wstring lastAccessError; */
  NS_IMETHOD GetLastAccessError(PRUnichar * *aLastAccessError) = 0;

  /* void getMachineIds (out unsigned long machineIdsSize, [array, size_is (machineIdsSize), retval] out wstring machineIds); */
  NS_IMETHOD GetMachineIds(PRUint32 *machineIdsSize, PRUnichar ***machineIds) = 0;

  /* void refreshState ([retval] out PRUint32 state); */
  NS_IMETHOD RefreshState(PRUint32 *state) = 0;

  /* void getSnapshotIds (in wstring machineId, out unsigned long snapshotIdsSize, [array, size_is (snapshotIdsSize), retval] out wstring snapshotIds); */
  NS_IMETHOD GetSnapshotIds(const PRUnichar *machineId, PRUint32 *snapshotIdsSize, PRUnichar ***snapshotIds) = 0;

  /* void lockRead ([retval] out PRUint32 state); */
  NS_IMETHOD LockRead(PRUint32 *state) = 0;

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

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

  /* void unlockWrite ([retval] out PRUint32 state); */
  NS_IMETHOD UnlockWrite(PRUint32 *state) = 0;

  /* void close (); */
  NS_IMETHOD Close(void) = 0;

  /* void getProperty (in wstring name, [retval] out wstring value); */
  NS_IMETHOD GetProperty(const PRUnichar *name, PRUnichar **value) = 0;

  /* void setProperty (in wstring name, in wstring value); */
  NS_IMETHOD SetProperty(const PRUnichar *name, const PRUnichar *value) = 0;

  /* void getProperties (in wstring names, out unsigned long returnNamesSize, [array, size_is (returnNamesSize)] out wstring returnNames, out unsigned long returnValuesSize, [array, size_is (returnValuesSize), retval] out wstring returnValues); */
  NS_IMETHOD GetProperties(const PRUnichar *names, PRUint32 *returnNamesSize, PRUnichar ***returnNames, PRUint32 *returnValuesSize, PRUnichar ***returnValues) = 0;

  /* void setProperties (in unsigned long namesSize, [array, size_is (namesSize)] in wstring names, in unsigned long valuesSize, [array, size_is (valuesSize)] in wstring values); */
  NS_IMETHOD SetProperties(PRUint32 namesSize, const PRUnichar **names, PRUint32 valuesSize, const PRUnichar **values) = 0;

  /* void createBaseStorage (in unsigned long long logicalSize, in PRUint32 variant, [retval] out IProgress progress); */
  NS_IMETHOD CreateBaseStorage(PRUint64 logicalSize, PRUint32 variant, IProgress **progress) = 0;

  /* void deleteStorage ([retval] out IProgress progress); */
  NS_IMETHOD DeleteStorage(IProgress **progress) = 0;

  /* void createDiffStorage (in IMedium target, in PRUint32 variant, [retval] out IProgress progress); */
  NS_IMETHOD CreateDiffStorage(IMedium *target, PRUint32 variant, IProgress **progress) = 0;

  /* void mergeTo (in IMedium target, [retval] out IProgress progress); */
  NS_IMETHOD MergeTo(IMedium *target, IProgress **progress) = 0;

  /* void cloneTo (in IMedium target, in PRUint32 variant, in IMedium parent, [retval] out IProgress progress); */
  NS_IMETHOD CloneTo(IMedium *target, PRUint32 variant, IMedium *parent, IProgress **progress) = 0;

  /* void compact ([retval] out IProgress progress); */
  NS_IMETHOD Compact(IProgress **progress) = 0;

  /* void resize (in unsigned long long logicalSize, [retval] out IProgress progress); */
  NS_IMETHOD Resize(PRUint64 logicalSize, IProgress **progress) = 0;

  /* void reset ([retval] out IProgress progress); */
  NS_IMETHOD Reset(IProgress **progress) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMEDIUM \
  NS_IMETHOD GetId(PRUnichar * *aId); \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription); \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription); \
  NS_IMETHOD GetState(PRUint32 *aState); \
  NS_IMETHOD GetLocation(PRUnichar * *aLocation); \
  NS_IMETHOD SetLocation(const PRUnichar * aLocation); \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetDeviceType(PRUint32 *aDeviceType); \
  NS_IMETHOD GetHostDrive(PRBool *aHostDrive); \
  NS_IMETHOD GetSize(PRUint64 *aSize); \
  NS_IMETHOD GetFormat(PRUnichar * *aFormat); \
  NS_IMETHOD GetMediumFormat(IMediumFormat * *aMediumFormat); \
  NS_IMETHOD GetType(PRUint32 *aType); \
  NS_IMETHOD SetType(PRUint32 aType); \
  NS_IMETHOD GetParent(IMedium * *aParent); \
  NS_IMETHOD GetChildren(PRUint32 *childrenSize, IMedium ***children); \
  NS_IMETHOD GetBase(IMedium * *aBase); \
  NS_IMETHOD GetReadOnly(PRBool *aReadOnly); \
  NS_IMETHOD GetLogicalSize(PRUint64 *aLogicalSize); \
  NS_IMETHOD GetAutoReset(PRBool *aAutoReset); \
  NS_IMETHOD SetAutoReset(PRBool aAutoReset); \
  NS_IMETHOD GetLastAccessError(PRUnichar * *aLastAccessError); \
  NS_IMETHOD GetMachineIds(PRUint32 *machineIdsSize, PRUnichar ***machineIds); \
  NS_IMETHOD RefreshState(PRUint32 *state); \
  NS_IMETHOD GetSnapshotIds(const PRUnichar *machineId, PRUint32 *snapshotIdsSize, PRUnichar ***snapshotIds); \
  NS_IMETHOD LockRead(PRUint32 *state); \
  NS_IMETHOD UnlockRead(PRUint32 *state); \
  NS_IMETHOD LockWrite(PRUint32 *state); \
  NS_IMETHOD UnlockWrite(PRUint32 *state); \
  NS_IMETHOD Close(void); \
  NS_IMETHOD GetProperty(const PRUnichar *name, PRUnichar **value); \
  NS_IMETHOD SetProperty(const PRUnichar *name, const PRUnichar *value); \
  NS_IMETHOD GetProperties(const PRUnichar *names, PRUint32 *returnNamesSize, PRUnichar ***returnNames, PRUint32 *returnValuesSize, PRUnichar ***returnValues); \
  NS_IMETHOD SetProperties(PRUint32 namesSize, const PRUnichar **names, PRUint32 valuesSize, const PRUnichar **values); \
  NS_IMETHOD CreateBaseStorage(PRUint64 logicalSize, PRUint32 variant, IProgress **progress); \
  NS_IMETHOD DeleteStorage(IProgress **progress); \
  NS_IMETHOD CreateDiffStorage(IMedium *target, PRUint32 variant, IProgress **progress); \
  NS_IMETHOD MergeTo(IMedium *target, IProgress **progress); \
  NS_IMETHOD CloneTo(IMedium *target, PRUint32 variant, IMedium *parent, IProgress **progress); \
  NS_IMETHOD Compact(IProgress **progress); \
  NS_IMETHOD Resize(PRUint64 logicalSize, IProgress **progress); \
  NS_IMETHOD Reset(IProgress **progress); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMEDIUM(_to) \
  NS_IMETHOD GetId(PRUnichar * *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return _to GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription) { return _to SetDescription(aDescription); } \
  NS_IMETHOD GetState(PRUint32 *aState) { return _to GetState(aState); } \
  NS_IMETHOD GetLocation(PRUnichar * *aLocation) { return _to GetLocation(aLocation); } \
  NS_IMETHOD SetLocation(const PRUnichar * aLocation) { return _to SetLocation(aLocation); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetDeviceType(PRUint32 *aDeviceType) { return _to GetDeviceType(aDeviceType); } \
  NS_IMETHOD GetHostDrive(PRBool *aHostDrive) { return _to GetHostDrive(aHostDrive); } \
  NS_IMETHOD GetSize(PRUint64 *aSize) { return _to GetSize(aSize); } \
  NS_IMETHOD GetFormat(PRUnichar * *aFormat) { return _to GetFormat(aFormat); } \
  NS_IMETHOD GetMediumFormat(IMediumFormat * *aMediumFormat) { return _to GetMediumFormat(aMediumFormat); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return _to GetType(aType); } \
  NS_IMETHOD SetType(PRUint32 aType) { return _to SetType(aType); } \
  NS_IMETHOD GetParent(IMedium * *aParent) { return _to GetParent(aParent); } \
  NS_IMETHOD GetChildren(PRUint32 *childrenSize, IMedium ***children) { return _to GetChildren(childrenSize, children); } \
  NS_IMETHOD GetBase(IMedium * *aBase) { return _to GetBase(aBase); } \
  NS_IMETHOD GetReadOnly(PRBool *aReadOnly) { return _to GetReadOnly(aReadOnly); } \
  NS_IMETHOD GetLogicalSize(PRUint64 *aLogicalSize) { return _to GetLogicalSize(aLogicalSize); } \
  NS_IMETHOD GetAutoReset(PRBool *aAutoReset) { return _to GetAutoReset(aAutoReset); } \
  NS_IMETHOD SetAutoReset(PRBool aAutoReset) { return _to SetAutoReset(aAutoReset); } \
  NS_IMETHOD GetLastAccessError(PRUnichar * *aLastAccessError) { return _to GetLastAccessError(aLastAccessError); } \
  NS_IMETHOD GetMachineIds(PRUint32 *machineIdsSize, PRUnichar ***machineIds) { return _to GetMachineIds(machineIdsSize, machineIds); } \
  NS_IMETHOD RefreshState(PRUint32 *state) { return _to RefreshState(state); } \
  NS_IMETHOD GetSnapshotIds(const PRUnichar *machineId, PRUint32 *snapshotIdsSize, PRUnichar ***snapshotIds) { return _to GetSnapshotIds(machineId, snapshotIdsSize, snapshotIds); } \
  NS_IMETHOD LockRead(PRUint32 *state) { return _to LockRead(state); } \
  NS_IMETHOD UnlockRead(PRUint32 *state) { return _to UnlockRead(state); } \
  NS_IMETHOD LockWrite(PRUint32 *state) { return _to LockWrite(state); } \
  NS_IMETHOD UnlockWrite(PRUint32 *state) { return _to UnlockWrite(state); } \
  NS_IMETHOD Close(void) { return _to Close(); } \
  NS_IMETHOD GetProperty(const PRUnichar *name, PRUnichar **value) { return _to GetProperty(name, value); } \
  NS_IMETHOD SetProperty(const PRUnichar *name, const PRUnichar *value) { return _to SetProperty(name, value); } \
  NS_IMETHOD GetProperties(const PRUnichar *names, PRUint32 *returnNamesSize, PRUnichar ***returnNames, PRUint32 *returnValuesSize, PRUnichar ***returnValues) { return _to GetProperties(names, returnNamesSize, returnNames, returnValuesSize, returnValues); } \
  NS_IMETHOD SetProperties(PRUint32 namesSize, const PRUnichar **names, PRUint32 valuesSize, const PRUnichar **values) { return _to SetProperties(namesSize, names, valuesSize, values); } \
  NS_IMETHOD CreateBaseStorage(PRUint64 logicalSize, PRUint32 variant, IProgress **progress) { return _to CreateBaseStorage(logicalSize, variant, progress); } \
  NS_IMETHOD DeleteStorage(IProgress **progress) { return _to DeleteStorage(progress); } \
  NS_IMETHOD CreateDiffStorage(IMedium *target, PRUint32 variant, IProgress **progress) { return _to CreateDiffStorage(target, variant, progress); } \
  NS_IMETHOD MergeTo(IMedium *target, IProgress **progress) { return _to MergeTo(target, progress); } \
  NS_IMETHOD CloneTo(IMedium *target, PRUint32 variant, IMedium *parent, IProgress **progress) { return _to CloneTo(target, variant, parent, progress); } \
  NS_IMETHOD Compact(IProgress **progress) { return _to Compact(progress); } \
  NS_IMETHOD Resize(PRUint64 logicalSize, IProgress **progress) { return _to Resize(logicalSize, progress); } \
  NS_IMETHOD Reset(IProgress **progress) { return _to Reset(progress); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMEDIUM(_to) \
  NS_IMETHOD GetId(PRUnichar * *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDescription(aDescription); } \
  NS_IMETHOD GetState(PRUint32 *aState) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetState(aState); } \
  NS_IMETHOD GetLocation(PRUnichar * *aLocation) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLocation(aLocation); } \
  NS_IMETHOD SetLocation(const PRUnichar * aLocation) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLocation(aLocation); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetDeviceType(PRUint32 *aDeviceType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDeviceType(aDeviceType); } \
  NS_IMETHOD GetHostDrive(PRBool *aHostDrive) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHostDrive(aHostDrive); } \
  NS_IMETHOD GetSize(PRUint64 *aSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSize(aSize); } \
  NS_IMETHOD GetFormat(PRUnichar * *aFormat) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFormat(aFormat); } \
  NS_IMETHOD GetMediumFormat(IMediumFormat * *aMediumFormat) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMediumFormat(aMediumFormat); } \
  NS_IMETHOD GetType(PRUint32 *aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetType(aType); } \
  NS_IMETHOD SetType(PRUint32 aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetType(aType); } \
  NS_IMETHOD GetParent(IMedium * *aParent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParent(aParent); } \
  NS_IMETHOD GetChildren(PRUint32 *childrenSize, IMedium ***children) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChildren(childrenSize, children); } \
  NS_IMETHOD GetBase(IMedium * *aBase) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBase(aBase); } \
  NS_IMETHOD GetReadOnly(PRBool *aReadOnly) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetReadOnly(aReadOnly); } \
  NS_IMETHOD GetLogicalSize(PRUint64 *aLogicalSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogicalSize(aLogicalSize); } \
  NS_IMETHOD GetAutoReset(PRBool *aAutoReset) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAutoReset(aAutoReset); } \
  NS_IMETHOD SetAutoReset(PRBool aAutoReset) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAutoReset(aAutoReset); } \
  NS_IMETHOD GetLastAccessError(PRUnichar * *aLastAccessError) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastAccessError(aLastAccessError); } \
  NS_IMETHOD GetMachineIds(PRUint32 *machineIdsSize, PRUnichar ***machineIds) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMachineIds(machineIdsSize, machineIds); } \
  NS_IMETHOD RefreshState(PRUint32 *state) { return !_to ? NS_ERROR_NULL_POINTER : _to->RefreshState(state); } \
  NS_IMETHOD GetSnapshotIds(const PRUnichar *machineId, PRUint32 *snapshotIdsSize, PRUnichar ***snapshotIds) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSnapshotIds(machineId, snapshotIdsSize, snapshotIds); } \
  NS_IMETHOD LockRead(PRUint32 *state) { return !_to ? NS_ERROR_NULL_POINTER : _to->LockRead(state); } \
  NS_IMETHOD UnlockRead(PRUint32 *state) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnlockRead(state); } \
  NS_IMETHOD LockWrite(PRUint32 *state) { return !_to ? NS_ERROR_NULL_POINTER : _to->LockWrite(state); } \
  NS_IMETHOD UnlockWrite(PRUint32 *state) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnlockWrite(state); } \
  NS_IMETHOD Close(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Close(); } \
  NS_IMETHOD GetProperty(const PRUnichar *name, PRUnichar **value) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProperty(name, value); } \
  NS_IMETHOD SetProperty(const PRUnichar *name, const PRUnichar *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetProperty(name, value); } \
  NS_IMETHOD GetProperties(const PRUnichar *names, PRUint32 *returnNamesSize, PRUnichar ***returnNames, PRUint32 *returnValuesSize, PRUnichar ***returnValues) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProperties(names, returnNamesSize, returnNames, returnValuesSize, returnValues); } \
  NS_IMETHOD SetProperties(PRUint32 namesSize, const PRUnichar **names, PRUint32 valuesSize, const PRUnichar **values) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetProperties(namesSize, names, valuesSize, values); } \
  NS_IMETHOD CreateBaseStorage(PRUint64 logicalSize, PRUint32 variant, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateBaseStorage(logicalSize, variant, progress); } \
  NS_IMETHOD DeleteStorage(IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteStorage(progress); } \
  NS_IMETHOD CreateDiffStorage(IMedium *target, PRUint32 variant, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateDiffStorage(target, variant, progress); } \
  NS_IMETHOD MergeTo(IMedium *target, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->MergeTo(target, progress); } \
  NS_IMETHOD CloneTo(IMedium *target, PRUint32 variant, IMedium *parent, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->CloneTo(target, variant, parent, progress); } \
  NS_IMETHOD Compact(IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Compact(progress); } \
  NS_IMETHOD Resize(PRUint64 logicalSize, IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Resize(logicalSize, progress); } \
  NS_IMETHOD Reset(IProgress **progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->Reset(progress); } 

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

/* Header file */
class _MYCLASS_ : public IMedium
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMEDIUM

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute wstring id; */
NS_IMETHODIMP _MYCLASS_::GetId(PRUnichar * *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring description; */
NS_IMETHODIMP _MYCLASS_::GetDescription(PRUnichar * *aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDescription(const PRUnichar * aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 state; */
NS_IMETHODIMP _MYCLASS_::GetState(PRUint32 *aState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring location; */
NS_IMETHODIMP _MYCLASS_::GetLocation(PRUnichar * *aLocation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetLocation(const PRUnichar * aLocation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 deviceType; */
NS_IMETHODIMP _MYCLASS_::GetDeviceType(PRUint32 *aDeviceType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean hostDrive; */
NS_IMETHODIMP _MYCLASS_::GetHostDrive(PRBool *aHostDrive)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long long size; */
NS_IMETHODIMP _MYCLASS_::GetSize(PRUint64 *aSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring format; */
NS_IMETHODIMP _MYCLASS_::GetFormat(PRUnichar * *aFormat)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IMediumFormat mediumFormat; */
NS_IMETHODIMP _MYCLASS_::GetMediumFormat(IMediumFormat * *aMediumFormat)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 type; */
NS_IMETHODIMP _MYCLASS_::GetType(PRUint32 *aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetType(PRUint32 aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IMedium parent; */
NS_IMETHODIMP _MYCLASS_::GetParent(IMedium * *aParent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getChildren (out unsigned long childrenSize, [array, size_is (childrenSize), retval] out IMedium children); */
NS_IMETHODIMP _MYCLASS_::GetChildren(PRUint32 *childrenSize, IMedium ***children)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IMedium base; */
NS_IMETHODIMP _MYCLASS_::GetBase(IMedium * *aBase)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean readOnly; */
NS_IMETHODIMP _MYCLASS_::GetReadOnly(PRBool *aReadOnly)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long long logicalSize; */
NS_IMETHODIMP _MYCLASS_::GetLogicalSize(PRUint64 *aLogicalSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean autoReset; */
NS_IMETHODIMP _MYCLASS_::GetAutoReset(PRBool *aAutoReset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAutoReset(PRBool aAutoReset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring lastAccessError; */
NS_IMETHODIMP _MYCLASS_::GetLastAccessError(PRUnichar * *aLastAccessError)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMachineIds (out unsigned long machineIdsSize, [array, size_is (machineIdsSize), retval] out wstring machineIds); */
NS_IMETHODIMP _MYCLASS_::GetMachineIds(PRUint32 *machineIdsSize, PRUnichar ***machineIds)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void getSnapshotIds (in wstring machineId, out unsigned long snapshotIdsSize, [array, size_is (snapshotIdsSize), retval] out wstring snapshotIds); */
NS_IMETHODIMP _MYCLASS_::GetSnapshotIds(const PRUnichar *machineId, PRUint32 *snapshotIdsSize, PRUnichar ***snapshotIds)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

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

/* void close (); */
NS_IMETHODIMP _MYCLASS_::Close()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getProperty (in wstring name, [retval] out wstring value); */
NS_IMETHODIMP _MYCLASS_::GetProperty(const PRUnichar *name, PRUnichar **value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setProperty (in wstring name, in wstring value); */
NS_IMETHODIMP _MYCLASS_::SetProperty(const PRUnichar *name, const PRUnichar *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getProperties (in wstring names, out unsigned long returnNamesSize, [array, size_is (returnNamesSize)] out wstring returnNames, out unsigned long returnValuesSize, [array, size_is (returnValuesSize), retval] out wstring returnValues); */
NS_IMETHODIMP _MYCLASS_::GetProperties(const PRUnichar *names, PRUint32 *returnNamesSize, PRUnichar ***returnNames, PRUint32 *returnValuesSize, PRUnichar ***returnValues)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setProperties (in unsigned long namesSize, [array, size_is (namesSize)] in wstring names, in unsigned long valuesSize, [array, size_is (valuesSize)] in wstring values); */
NS_IMETHODIMP _MYCLASS_::SetProperties(PRUint32 namesSize, const PRUnichar **names, PRUint32 valuesSize, const PRUnichar **values)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createBaseStorage (in unsigned long long logicalSize, in PRUint32 variant, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CreateBaseStorage(PRUint64 logicalSize, PRUint32 variant, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void createDiffStorage (in IMedium target, in PRUint32 variant, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CreateDiffStorage(IMedium *target, PRUint32 variant, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void mergeTo (in IMedium target, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::MergeTo(IMedium *target, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void cloneTo (in IMedium target, in PRUint32 variant, in IMedium parent, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::CloneTo(IMedium *target, PRUint32 variant, IMedium *parent, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void resize (in unsigned long long logicalSize, [retval] out IProgress progress); */
NS_IMETHODIMP _MYCLASS_::Resize(PRUint64 logicalSize, IProgress **progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

#define COM_FORWARD_IMedium_GETTER_Id_TO(smth) NS_IMETHOD GetId (PRUnichar * * aId) { return smth GetId (aId); }
#define COM_FORWARD_IMedium_GETTER_Id_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_Id_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_Id_TO_BASE(base) COM_FORWARD_IMedium_GETTER_Id_TO (base::)
#define COM_FORWARD_IMedium_GETTER_Description_TO(smth) NS_IMETHOD GetDescription (PRUnichar * * aDescription) { return smth GetDescription (aDescription); }
#define COM_FORWARD_IMedium_GETTER_Description_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_Description_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_Description_TO_BASE(base) COM_FORWARD_IMedium_GETTER_Description_TO (base::)
#define COM_FORWARD_IMedium_SETTER_Description_TO(smth) NS_IMETHOD SetDescription (const PRUnichar * aDescription) { return smth SetDescription (aDescription); }
#define COM_FORWARD_IMedium_SETTER_Description_TO_OBJ(obj) COM_FORWARD_IMedium_SETTER_Description_TO ((obj)->)
#define COM_FORWARD_IMedium_SETTER_Description_TO_BASE(base) COM_FORWARD_IMedium_SETTER_Description_TO (base::)
#define COM_FORWARD_IMedium_GETTER_State_TO(smth) NS_IMETHOD GetState (PRUint32 * aState) { return smth GetState (aState); }
#define COM_FORWARD_IMedium_GETTER_State_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_State_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_State_TO_BASE(base) COM_FORWARD_IMedium_GETTER_State_TO (base::)
#define COM_FORWARD_IMedium_GETTER_Location_TO(smth) NS_IMETHOD GetLocation (PRUnichar * * aLocation) { return smth GetLocation (aLocation); }
#define COM_FORWARD_IMedium_GETTER_Location_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_Location_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_Location_TO_BASE(base) COM_FORWARD_IMedium_GETTER_Location_TO (base::)
#define COM_FORWARD_IMedium_SETTER_Location_TO(smth) NS_IMETHOD SetLocation (const PRUnichar * aLocation) { return smth SetLocation (aLocation); }
#define COM_FORWARD_IMedium_SETTER_Location_TO_OBJ(obj) COM_FORWARD_IMedium_SETTER_Location_TO ((obj)->)
#define COM_FORWARD_IMedium_SETTER_Location_TO_BASE(base) COM_FORWARD_IMedium_SETTER_Location_TO (base::)
#define COM_FORWARD_IMedium_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IMedium_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_Name_TO_BASE(base) COM_FORWARD_IMedium_GETTER_Name_TO (base::)
#define COM_FORWARD_IMedium_GETTER_DeviceType_TO(smth) NS_IMETHOD GetDeviceType (PRUint32 * aDeviceType) { return smth GetDeviceType (aDeviceType); }
#define COM_FORWARD_IMedium_GETTER_DeviceType_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_DeviceType_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_DeviceType_TO_BASE(base) COM_FORWARD_IMedium_GETTER_DeviceType_TO (base::)
#define COM_FORWARD_IMedium_GETTER_HostDrive_TO(smth) NS_IMETHOD GetHostDrive (PRBool * aHostDrive) { return smth GetHostDrive (aHostDrive); }
#define COM_FORWARD_IMedium_GETTER_HostDrive_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_HostDrive_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_HostDrive_TO_BASE(base) COM_FORWARD_IMedium_GETTER_HostDrive_TO (base::)
#define COM_FORWARD_IMedium_GETTER_Size_TO(smth) NS_IMETHOD GetSize (PRUint64 * aSize) { return smth GetSize (aSize); }
#define COM_FORWARD_IMedium_GETTER_Size_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_Size_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_Size_TO_BASE(base) COM_FORWARD_IMedium_GETTER_Size_TO (base::)
#define COM_FORWARD_IMedium_GETTER_Format_TO(smth) NS_IMETHOD GetFormat (PRUnichar * * aFormat) { return smth GetFormat (aFormat); }
#define COM_FORWARD_IMedium_GETTER_Format_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_Format_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_Format_TO_BASE(base) COM_FORWARD_IMedium_GETTER_Format_TO (base::)
#define COM_FORWARD_IMedium_GETTER_MediumFormat_TO(smth) NS_IMETHOD GetMediumFormat (IMediumFormat * * aMediumFormat) { return smth GetMediumFormat (aMediumFormat); }
#define COM_FORWARD_IMedium_GETTER_MediumFormat_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_MediumFormat_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_MediumFormat_TO_BASE(base) COM_FORWARD_IMedium_GETTER_MediumFormat_TO (base::)
#define COM_FORWARD_IMedium_GETTER_Type_TO(smth) NS_IMETHOD GetType (PRUint32 * aType) { return smth GetType (aType); }
#define COM_FORWARD_IMedium_GETTER_Type_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_Type_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_Type_TO_BASE(base) COM_FORWARD_IMedium_GETTER_Type_TO (base::)
#define COM_FORWARD_IMedium_SETTER_Type_TO(smth) NS_IMETHOD SetType (PRUint32 aType) { return smth SetType (aType); }
#define COM_FORWARD_IMedium_SETTER_Type_TO_OBJ(obj) COM_FORWARD_IMedium_SETTER_Type_TO ((obj)->)
#define COM_FORWARD_IMedium_SETTER_Type_TO_BASE(base) COM_FORWARD_IMedium_SETTER_Type_TO (base::)
#define COM_FORWARD_IMedium_GETTER_Parent_TO(smth) NS_IMETHOD GetParent (IMedium * * aParent) { return smth GetParent (aParent); }
#define COM_FORWARD_IMedium_GETTER_Parent_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_Parent_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_Parent_TO_BASE(base) COM_FORWARD_IMedium_GETTER_Parent_TO (base::)
#define COM_FORWARD_IMedium_GETTER_Children_TO(smth) NS_IMETHOD GetChildren (PRUint32 * aChildrenSize, IMedium * * * aChildren) { return smth GetChildren (aChildrenSize, aChildren); }
#define COM_FORWARD_IMedium_GETTER_Children_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_Children_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_Children_TO_BASE(base) COM_FORWARD_IMedium_GETTER_Children_TO (base::)
#define COM_FORWARD_IMedium_GETTER_Base_TO(smth) NS_IMETHOD GetBase (IMedium * * aBase) { return smth GetBase (aBase); }
#define COM_FORWARD_IMedium_GETTER_Base_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_Base_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_Base_TO_BASE(base) COM_FORWARD_IMedium_GETTER_Base_TO (base::)
#define COM_FORWARD_IMedium_GETTER_ReadOnly_TO(smth) NS_IMETHOD GetReadOnly (PRBool * aReadOnly) { return smth GetReadOnly (aReadOnly); }
#define COM_FORWARD_IMedium_GETTER_ReadOnly_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_ReadOnly_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_ReadOnly_TO_BASE(base) COM_FORWARD_IMedium_GETTER_ReadOnly_TO (base::)
#define COM_FORWARD_IMedium_GETTER_LogicalSize_TO(smth) NS_IMETHOD GetLogicalSize (PRUint64 * aLogicalSize) { return smth GetLogicalSize (aLogicalSize); }
#define COM_FORWARD_IMedium_GETTER_LogicalSize_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_LogicalSize_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_LogicalSize_TO_BASE(base) COM_FORWARD_IMedium_GETTER_LogicalSize_TO (base::)
#define COM_FORWARD_IMedium_GETTER_AutoReset_TO(smth) NS_IMETHOD GetAutoReset (PRBool * aAutoReset) { return smth GetAutoReset (aAutoReset); }
#define COM_FORWARD_IMedium_GETTER_AutoReset_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_AutoReset_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_AutoReset_TO_BASE(base) COM_FORWARD_IMedium_GETTER_AutoReset_TO (base::)
#define COM_FORWARD_IMedium_SETTER_AutoReset_TO(smth) NS_IMETHOD SetAutoReset (PRBool aAutoReset) { return smth SetAutoReset (aAutoReset); }
#define COM_FORWARD_IMedium_SETTER_AutoReset_TO_OBJ(obj) COM_FORWARD_IMedium_SETTER_AutoReset_TO ((obj)->)
#define COM_FORWARD_IMedium_SETTER_AutoReset_TO_BASE(base) COM_FORWARD_IMedium_SETTER_AutoReset_TO (base::)
#define COM_FORWARD_IMedium_GETTER_LastAccessError_TO(smth) NS_IMETHOD GetLastAccessError (PRUnichar * * aLastAccessError) { return smth GetLastAccessError (aLastAccessError); }
#define COM_FORWARD_IMedium_GETTER_LastAccessError_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_LastAccessError_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_LastAccessError_TO_BASE(base) COM_FORWARD_IMedium_GETTER_LastAccessError_TO (base::)
#define COM_FORWARD_IMedium_GETTER_MachineIds_TO(smth) NS_IMETHOD GetMachineIds (PRUint32 * aMachineIdsSize, PRUnichar * * * aMachineIds) { return smth GetMachineIds (aMachineIdsSize, aMachineIds); }
#define COM_FORWARD_IMedium_GETTER_MachineIds_TO_OBJ(obj) COM_FORWARD_IMedium_GETTER_MachineIds_TO ((obj)->)
#define COM_FORWARD_IMedium_GETTER_MachineIds_TO_BASE(base) COM_FORWARD_IMedium_GETTER_MachineIds_TO (base::)
#define COM_FORWARD_IMedium_RefreshState_TO(smth) NS_IMETHOD RefreshState (PRUint32 * aState) { return smth RefreshState (aState); }
#define COM_FORWARD_IMedium_RefreshState_TO_OBJ(obj) COM_FORWARD_IMedium_RefreshState_TO ((obj)->)
#define COM_FORWARD_IMedium_RefreshState_TO_BASE(base) COM_FORWARD_IMedium_RefreshState_TO (base::)
#define COM_FORWARD_IMedium_GetSnapshotIds_TO(smth) NS_IMETHOD GetSnapshotIds (PRUnichar * aMachineId, PRUint32 * aSnapshotIdsSize, PRUnichar * * * aSnapshotIds) { return smth GetSnapshotIds (aMachineId, aSnapshotIdsSize, aSnapshotIds); }
#define COM_FORWARD_IMedium_GetSnapshotIds_TO_OBJ(obj) COM_FORWARD_IMedium_GetSnapshotIds_TO ((obj)->)
#define COM_FORWARD_IMedium_GetSnapshotIds_TO_BASE(base) COM_FORWARD_IMedium_GetSnapshotIds_TO (base::)
#define COM_FORWARD_IMedium_LockRead_TO(smth) NS_IMETHOD LockRead (PRUint32 * aState) { return smth LockRead (aState); }
#define COM_FORWARD_IMedium_LockRead_TO_OBJ(obj) COM_FORWARD_IMedium_LockRead_TO ((obj)->)
#define COM_FORWARD_IMedium_LockRead_TO_BASE(base) COM_FORWARD_IMedium_LockRead_TO (base::)
#define COM_FORWARD_IMedium_UnlockRead_TO(smth) NS_IMETHOD UnlockRead (PRUint32 * aState) { return smth UnlockRead (aState); }
#define COM_FORWARD_IMedium_UnlockRead_TO_OBJ(obj) COM_FORWARD_IMedium_UnlockRead_TO ((obj)->)
#define COM_FORWARD_IMedium_UnlockRead_TO_BASE(base) COM_FORWARD_IMedium_UnlockRead_TO (base::)
#define COM_FORWARD_IMedium_LockWrite_TO(smth) NS_IMETHOD LockWrite (PRUint32 * aState) { return smth LockWrite (aState); }
#define COM_FORWARD_IMedium_LockWrite_TO_OBJ(obj) COM_FORWARD_IMedium_LockWrite_TO ((obj)->)
#define COM_FORWARD_IMedium_LockWrite_TO_BASE(base) COM_FORWARD_IMedium_LockWrite_TO (base::)
#define COM_FORWARD_IMedium_UnlockWrite_TO(smth) NS_IMETHOD UnlockWrite (PRUint32 * aState) { return smth UnlockWrite (aState); }
#define COM_FORWARD_IMedium_UnlockWrite_TO_OBJ(obj) COM_FORWARD_IMedium_UnlockWrite_TO ((obj)->)
#define COM_FORWARD_IMedium_UnlockWrite_TO_BASE(base) COM_FORWARD_IMedium_UnlockWrite_TO (base::)
#define COM_FORWARD_IMedium_Close_TO(smth) NS_IMETHOD Close() { return smth Close(); }
#define COM_FORWARD_IMedium_Close_TO_OBJ(obj) COM_FORWARD_IMedium_Close_TO ((obj)->)
#define COM_FORWARD_IMedium_Close_TO_BASE(base) COM_FORWARD_IMedium_Close_TO (base::)
#define COM_FORWARD_IMedium_GetProperty_TO(smth) NS_IMETHOD GetProperty (PRUnichar * aName, PRUnichar * * aValue) { return smth GetProperty (aName, aValue); }
#define COM_FORWARD_IMedium_GetProperty_TO_OBJ(obj) COM_FORWARD_IMedium_GetProperty_TO ((obj)->)
#define COM_FORWARD_IMedium_GetProperty_TO_BASE(base) COM_FORWARD_IMedium_GetProperty_TO (base::)
#define COM_FORWARD_IMedium_SetProperty_TO(smth) NS_IMETHOD SetProperty (PRUnichar * aName, PRUnichar * aValue) { return smth SetProperty (aName, aValue); }
#define COM_FORWARD_IMedium_SetProperty_TO_OBJ(obj) COM_FORWARD_IMedium_SetProperty_TO ((obj)->)
#define COM_FORWARD_IMedium_SetProperty_TO_BASE(base) COM_FORWARD_IMedium_SetProperty_TO (base::)
#define COM_FORWARD_IMedium_GetProperties_TO(smth) NS_IMETHOD GetProperties (PRUnichar * aNames, PRUint32 * aReturnNamesSize, PRUnichar * * * aReturnNames, PRUint32 * aReturnValuesSize, PRUnichar * * * aReturnValues) { return smth GetProperties (aNames, aReturnNamesSize+++, aReturnNames, aReturnValuesSize, aReturnValues); }
#define COM_FORWARD_IMedium_GetProperties_TO_OBJ(obj) COM_FORWARD_IMedium_GetProperties_TO ((obj)->)
#define COM_FORWARD_IMedium_GetProperties_TO_BASE(base) COM_FORWARD_IMedium_GetProperties_TO (base::)
#define COM_FORWARD_IMedium_SetProperties_TO(smth) NS_IMETHOD SetProperties (PRUint32 aNamesSize, PRUnichar * * aNames, PRUint32 aValuesSize, PRUnichar * * aValues) { return smth SetProperties (aNamesSize+++, aNames, aValuesSize, aValues); }
#define COM_FORWARD_IMedium_SetProperties_TO_OBJ(obj) COM_FORWARD_IMedium_SetProperties_TO ((obj)->)
#define COM_FORWARD_IMedium_SetProperties_TO_BASE(base) COM_FORWARD_IMedium_SetProperties_TO (base::)
#define COM_FORWARD_IMedium_CreateBaseStorage_TO(smth) NS_IMETHOD CreateBaseStorage (PRUint64 aLogicalSize, PRUint32 aVariant, IProgress * * aProgress) { return smth CreateBaseStorage (aLogicalSize, aVariant, aProgress); }
#define COM_FORWARD_IMedium_CreateBaseStorage_TO_OBJ(obj) COM_FORWARD_IMedium_CreateBaseStorage_TO ((obj)->)
#define COM_FORWARD_IMedium_CreateBaseStorage_TO_BASE(base) COM_FORWARD_IMedium_CreateBaseStorage_TO (base::)
#define COM_FORWARD_IMedium_DeleteStorage_TO(smth) NS_IMETHOD DeleteStorage (IProgress * * aProgress) { return smth DeleteStorage (aProgress); }
#define COM_FORWARD_IMedium_DeleteStorage_TO_OBJ(obj) COM_FORWARD_IMedium_DeleteStorage_TO ((obj)->)
#define COM_FORWARD_IMedium_DeleteStorage_TO_BASE(base) COM_FORWARD_IMedium_DeleteStorage_TO (base::)
#define COM_FORWARD_IMedium_CreateDiffStorage_TO(smth) NS_IMETHOD CreateDiffStorage (IMedium * aTarget, PRUint32 aVariant, IProgress * * aProgress) { return smth CreateDiffStorage (aTarget, aVariant, aProgress); }
#define COM_FORWARD_IMedium_CreateDiffStorage_TO_OBJ(obj) COM_FORWARD_IMedium_CreateDiffStorage_TO ((obj)->)
#define COM_FORWARD_IMedium_CreateDiffStorage_TO_BASE(base) COM_FORWARD_IMedium_CreateDiffStorage_TO (base::)
#define COM_FORWARD_IMedium_MergeTo_TO(smth) NS_IMETHOD MergeTo (IMedium * aTarget, IProgress * * aProgress) { return smth MergeTo (aTarget, aProgress); }
#define COM_FORWARD_IMedium_MergeTo_TO_OBJ(obj) COM_FORWARD_IMedium_MergeTo_TO ((obj)->)
#define COM_FORWARD_IMedium_MergeTo_TO_BASE(base) COM_FORWARD_IMedium_MergeTo_TO (base::)
#define COM_FORWARD_IMedium_CloneTo_TO(smth) NS_IMETHOD CloneTo (IMedium * aTarget, PRUint32 aVariant, IMedium * aParent, IProgress * * aProgress) { return smth CloneTo (aTarget, aVariant, aParent, aProgress); }
#define COM_FORWARD_IMedium_CloneTo_TO_OBJ(obj) COM_FORWARD_IMedium_CloneTo_TO ((obj)->)
#define COM_FORWARD_IMedium_CloneTo_TO_BASE(base) COM_FORWARD_IMedium_CloneTo_TO (base::)
#define COM_FORWARD_IMedium_Compact_TO(smth) NS_IMETHOD Compact (IProgress * * aProgress) { return smth Compact (aProgress); }
#define COM_FORWARD_IMedium_Compact_TO_OBJ(obj) COM_FORWARD_IMedium_Compact_TO ((obj)->)
#define COM_FORWARD_IMedium_Compact_TO_BASE(base) COM_FORWARD_IMedium_Compact_TO (base::)
#define COM_FORWARD_IMedium_Resize_TO(smth) NS_IMETHOD Resize (PRUint64 aLogicalSize, IProgress * * aProgress) { return smth Resize (aLogicalSize, aProgress); }
#define COM_FORWARD_IMedium_Resize_TO_OBJ(obj) COM_FORWARD_IMedium_Resize_TO ((obj)->)
#define COM_FORWARD_IMedium_Resize_TO_BASE(base) COM_FORWARD_IMedium_Resize_TO (base::)
#define COM_FORWARD_IMedium_Reset_TO(smth) NS_IMETHOD Reset (IProgress * * aProgress) { return smth Reset (aProgress); }
#define COM_FORWARD_IMedium_Reset_TO_OBJ(obj) COM_FORWARD_IMedium_Reset_TO ((obj)->)
#define COM_FORWARD_IMedium_Reset_TO_BASE(base) COM_FORWARD_IMedium_Reset_TO (base::)
#define COM_FORWARD_IMedium_TO(smth) NS_FORWARD_IMEDIUM (smth)
#define COM_FORWARD_IMedium_TO_OBJ(obj) COM_FORWARD_IMedium_TO ((obj)->)
#define COM_FORWARD_IMedium_TO_BASE(base) COM_FORWARD_IMedium_TO (base::)

/* starting interface:    IMediumFormat */
#define IMEDIUMFORMAT_IID_STR "89f52554-d469-4799-9fad-1705e86a08b1"

#define IMEDIUMFORMAT_IID \
  {0x89f52554, 0xd469, 0x4799, \
    { 0x9f, 0xad, 0x17, 0x05, 0xe8, 0x6a, 0x08, 0xb1 }}

class NS_NO_VTABLE IMediumFormat : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMEDIUMFORMAT_IID)

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

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

  /* void getFileExtensions (out unsigned long fileExtensionsSize, [array, size_is (fileExtensionsSize), retval] out wstring fileExtensions); */
  NS_IMETHOD GetFileExtensions(PRUint32 *fileExtensionsSize, PRUnichar ***fileExtensions) = 0;

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

  /* void describeProperties (out unsigned long namesSize, [array, size_is (namesSize)] out wstring names, out unsigned long descriptionSize, [array, size_is (descriptionSize)] out wstring description, out unsigned long typesSize, [array, size_is (typesSize)] out PRUint32 types, out unsigned long flagsSize, [array, size_is (flagsSize)] out unsigned long flags, out unsigned long defaultsSize, [array, size_is (defaultsSize)] out wstring defaults); */
  NS_IMETHOD DescribeProperties(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *descriptionSize, PRUnichar ***description, PRUint32 *typesSize, PRUint32 **types, PRUint32 *flagsSize, PRUint32 **flags, PRUint32 *defaultsSize, PRUnichar ***defaults) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMEDIUMFORMAT \
  NS_IMETHOD GetId(PRUnichar * *aId); \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetFileExtensions(PRUint32 *fileExtensionsSize, PRUnichar ***fileExtensions); \
  NS_IMETHOD GetCapabilities(PRUint32 *aCapabilities); \
  NS_IMETHOD DescribeProperties(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *descriptionSize, PRUnichar ***description, PRUint32 *typesSize, PRUint32 **types, PRUint32 *flagsSize, PRUint32 **flags, PRUint32 *defaultsSize, PRUnichar ***defaults); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMEDIUMFORMAT(_to) \
  NS_IMETHOD GetId(PRUnichar * *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetFileExtensions(PRUint32 *fileExtensionsSize, PRUnichar ***fileExtensions) { return _to GetFileExtensions(fileExtensionsSize, fileExtensions); } \
  NS_IMETHOD GetCapabilities(PRUint32 *aCapabilities) { return _to GetCapabilities(aCapabilities); } \
  NS_IMETHOD DescribeProperties(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *descriptionSize, PRUnichar ***description, PRUint32 *typesSize, PRUint32 **types, PRUint32 *flagsSize, PRUint32 **flags, PRUint32 *defaultsSize, PRUnichar ***defaults) { return _to DescribeProperties(namesSize, names, descriptionSize, description, typesSize, types, flagsSize, flags, defaultsSize, defaults); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMEDIUMFORMAT(_to) \
  NS_IMETHOD GetId(PRUnichar * *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetFileExtensions(PRUint32 *fileExtensionsSize, PRUnichar ***fileExtensions) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFileExtensions(fileExtensionsSize, fileExtensions); } \
  NS_IMETHOD GetCapabilities(PRUint32 *aCapabilities) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCapabilities(aCapabilities); } \
  NS_IMETHOD DescribeProperties(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *descriptionSize, PRUnichar ***description, PRUint32 *typesSize, PRUint32 **types, PRUint32 *flagsSize, PRUint32 **flags, PRUint32 *defaultsSize, PRUnichar ***defaults) { return !_to ? NS_ERROR_NULL_POINTER : _to->DescribeProperties(namesSize, names, descriptionSize, description, typesSize, types, flagsSize, flags, defaultsSize, defaults); } 

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

/* Header file */
class _MYCLASS_ : public IMediumFormat
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMEDIUMFORMAT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute wstring id; */
NS_IMETHODIMP _MYCLASS_::GetId(PRUnichar * *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getFileExtensions (out unsigned long fileExtensionsSize, [array, size_is (fileExtensionsSize), retval] out wstring fileExtensions); */
NS_IMETHODIMP _MYCLASS_::GetFileExtensions(PRUint32 *fileExtensionsSize, PRUnichar ***fileExtensions)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void describeProperties (out unsigned long namesSize, [array, size_is (namesSize)] out wstring names, out unsigned long descriptionSize, [array, size_is (descriptionSize)] out wstring description, out unsigned long typesSize, [array, size_is (typesSize)] out PRUint32 types, out unsigned long flagsSize, [array, size_is (flagsSize)] out unsigned long flags, out unsigned long defaultsSize, [array, size_is (defaultsSize)] out wstring defaults); */
NS_IMETHODIMP _MYCLASS_::DescribeProperties(PRUint32 *namesSize, PRUnichar ***names, PRUint32 *descriptionSize, PRUnichar ***description, PRUint32 *typesSize, PRUint32 **types, PRUint32 *flagsSize, PRUint32 **flags, PRUint32 *defaultsSize, PRUnichar ***defaults)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IMediumFormat_GETTER_Id_TO(smth) NS_IMETHOD GetId (PRUnichar * * aId) { return smth GetId (aId); }
#define COM_FORWARD_IMediumFormat_GETTER_Id_TO_OBJ(obj) COM_FORWARD_IMediumFormat_GETTER_Id_TO ((obj)->)
#define COM_FORWARD_IMediumFormat_GETTER_Id_TO_BASE(base) COM_FORWARD_IMediumFormat_GETTER_Id_TO (base::)
#define COM_FORWARD_IMediumFormat_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IMediumFormat_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IMediumFormat_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IMediumFormat_GETTER_Name_TO_BASE(base) COM_FORWARD_IMediumFormat_GETTER_Name_TO (base::)
#define COM_FORWARD_IMediumFormat_GETTER_FileExtensions_TO(smth) NS_IMETHOD GetFileExtensions (PRUint32 * aFileExtensionsSize, PRUnichar * * * aFileExtensions) { return smth GetFileExtensions (aFileExtensionsSize, aFileExtensions); }
#define COM_FORWARD_IMediumFormat_GETTER_FileExtensions_TO_OBJ(obj) COM_FORWARD_IMediumFormat_GETTER_FileExtensions_TO ((obj)->)
#define COM_FORWARD_IMediumFormat_GETTER_FileExtensions_TO_BASE(base) COM_FORWARD_IMediumFormat_GETTER_FileExtensions_TO (base::)
#define COM_FORWARD_IMediumFormat_GETTER_Capabilities_TO(smth) NS_IMETHOD GetCapabilities (PRUint32 * aCapabilities) { return smth GetCapabilities (aCapabilities); }
#define COM_FORWARD_IMediumFormat_GETTER_Capabilities_TO_OBJ(obj) COM_FORWARD_IMediumFormat_GETTER_Capabilities_TO ((obj)->)
#define COM_FORWARD_IMediumFormat_GETTER_Capabilities_TO_BASE(base) COM_FORWARD_IMediumFormat_GETTER_Capabilities_TO (base::)
#define COM_FORWARD_IMediumFormat_DescribeProperties_TO(smth) NS_IMETHOD DescribeProperties (PRUint32 * aNamesSize, PRUnichar * * * aNames, PRUint32 * aDescriptionSize, PRUnichar * * * aDescription, PRUint32 * aTypesSize, PRUint32 * * aTypes, PRUint32 * aFlagsSize, PRUint32 * * aFlags, PRUint32 * aDefaultsSize, PRUnichar * * * aDefaults) { return smth DescribeProperties (aNamesSize+++, aNames, aDescriptionSize+++, aDescription, aTypesSize+++, aTypes, aFlagsSize+++, aFlags, aDefaultsSize, aDefaults); }
#define COM_FORWARD_IMediumFormat_DescribeProperties_TO_OBJ(obj) COM_FORWARD_IMediumFormat_DescribeProperties_TO ((obj)->)
#define COM_FORWARD_IMediumFormat_DescribeProperties_TO_BASE(base) COM_FORWARD_IMediumFormat_DescribeProperties_TO (base::)
#define COM_FORWARD_IMediumFormat_TO(smth) NS_FORWARD_IMEDIUMFORMAT (smth)
#define COM_FORWARD_IMediumFormat_TO_OBJ(obj) COM_FORWARD_IMediumFormat_TO ((obj)->)
#define COM_FORWARD_IMediumFormat_TO_BASE(base) COM_FORWARD_IMediumFormat_TO (base::)

/* starting interface:    IKeyboard */
#define IKEYBOARD_IID_STR "2d1a531b-4c6e-49cc-8af6-5c857b78b5d7"

#define IKEYBOARD_IID \
  {0x2d1a531b, 0x4c6e, 0x49cc, \
    { 0x8a, 0xf6, 0x5c, 0x85, 0x7b, 0x78, 0xb5, 0xd7 }}

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 (in unsigned long scancodesSize, [array, size_is (scancodesSize)] in long scancodes, [retval] out unsigned long codesStored); */
  NS_IMETHOD PutScancodes(PRUint32 scancodesSize, PRInt32 *scancodes, PRUint32 *codesStored) = 0;

  /* void putCAD (); */
  NS_IMETHOD PutCAD(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IKEYBOARD \
  NS_IMETHOD PutScancode(PRInt32 scancode); \
  NS_IMETHOD PutScancodes(PRUint32 scancodesSize, PRInt32 *scancodes, PRUint32 *codesStored); \
  NS_IMETHOD PutCAD(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IKEYBOARD(_to) \
  NS_IMETHOD PutScancode(PRInt32 scancode) { return _to PutScancode(scancode); } \
  NS_IMETHOD PutScancodes(PRUint32 scancodesSize, PRInt32 *scancodes, PRUint32 *codesStored) { return _to PutScancodes(scancodesSize, scancodes, codesStored); } \
  NS_IMETHOD PutCAD(void) { return _to PutCAD(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IKEYBOARD(_to) \
  NS_IMETHOD PutScancode(PRInt32 scancode) { return !_to ? NS_ERROR_NULL_POINTER : _to->PutScancode(scancode); } \
  NS_IMETHOD PutScancodes(PRUint32 scancodesSize, PRInt32 *scancodes, PRUint32 *codesStored) { return !_to ? NS_ERROR_NULL_POINTER : _to->PutScancodes(scancodesSize, scancodes, codesStored); } \
  NS_IMETHOD PutCAD(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->PutCAD(); } 

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

/* Header file */
class _MYCLASS_ : public IKeyboard
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IKEYBOARD

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void putScancode (in long scancode); */
NS_IMETHODIMP _MYCLASS_::PutScancode(PRInt32 scancode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void putScancodes (in unsigned long scancodesSize, [array, size_is (scancodesSize)] in long scancodes, [retval] out unsigned long codesStored); */
NS_IMETHODIMP _MYCLASS_::PutScancodes(PRUint32 scancodesSize, PRInt32 *scancodes, PRUint32 *codesStored)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void putCAD (); */
NS_IMETHODIMP _MYCLASS_::PutCAD()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IKeyboard_PutScancode_TO(smth) NS_IMETHOD PutScancode (PRInt32 aScancode) { return smth PutScancode (aScancode); }
#define COM_FORWARD_IKeyboard_PutScancode_TO_OBJ(obj) COM_FORWARD_IKeyboard_PutScancode_TO ((obj)->)
#define COM_FORWARD_IKeyboard_PutScancode_TO_BASE(base) COM_FORWARD_IKeyboard_PutScancode_TO (base::)
#define COM_FORWARD_IKeyboard_PutScancodes_TO(smth) NS_IMETHOD PutScancodes (PRUint32 aScancodesSize, PRInt32 * aScancodes, PRUint32 * aCodesStored) { return smth PutScancodes (aScancodesSize+++, aScancodes, aCodesStored); }
#define COM_FORWARD_IKeyboard_PutScancodes_TO_OBJ(obj) COM_FORWARD_IKeyboard_PutScancodes_TO ((obj)->)
#define COM_FORWARD_IKeyboard_PutScancodes_TO_BASE(base) COM_FORWARD_IKeyboard_PutScancodes_TO (base::)
#define COM_FORWARD_IKeyboard_PutCAD_TO(smth) NS_IMETHOD PutCAD() { return smth PutCAD(); }
#define COM_FORWARD_IKeyboard_PutCAD_TO_OBJ(obj) COM_FORWARD_IKeyboard_PutCAD_TO ((obj)->)
#define COM_FORWARD_IKeyboard_PutCAD_TO_BASE(base) COM_FORWARD_IKeyboard_PutCAD_TO (base::)
#define COM_FORWARD_IKeyboard_TO(smth) NS_FORWARD_IKEYBOARD (smth)
#define COM_FORWARD_IKeyboard_TO_OBJ(obj) COM_FORWARD_IKeyboard_TO ((obj)->)
#define COM_FORWARD_IKeyboard_TO_BASE(base) COM_FORWARD_IKeyboard_TO (base::)

/* starting interface:    IMouse */
#define IMOUSE_IID_STR "7c0f2eae-f92d-498c-b802-e1a3763774dc"

#define IMOUSE_IID \
  {0x7c0f2eae, 0xf92d, 0x498c, \
    { 0xb8, 0x02, 0xe1, 0xa3, 0x76, 0x37, 0x74, 0xdc }}

class NS_NO_VTABLE IMouse : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IMOUSE_IID)

  /* readonly attribute boolean absoluteSupported; */
  NS_IMETHOD GetAbsoluteSupported(PRBool *aAbsoluteSupported) = 0;

  /* readonly attribute boolean relativeSupported; */
  NS_IMETHOD GetRelativeSupported(PRBool *aRelativeSupported) = 0;

  /* readonly attribute boolean needsHostCursor; */
  NS_IMETHOD GetNeedsHostCursor(PRBool *aNeedsHostCursor) = 0;

  /* void putMouseEvent (in long dx, in long dy, in long dz, in long dw, in long buttonState); */
  NS_IMETHOD PutMouseEvent(PRInt32 dx, PRInt32 dy, PRInt32 dz, PRInt32 dw, PRInt32 buttonState) = 0;

  /* void putMouseEventAbsolute (in long x, in long y, in long dz, in long dw, in long buttonState); */
  NS_IMETHOD PutMouseEventAbsolute(PRInt32 x, PRInt32 y, PRInt32 dz, PRInt32 dw, PRInt32 buttonState) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IMOUSE \
  NS_IMETHOD GetAbsoluteSupported(PRBool *aAbsoluteSupported); \
  NS_IMETHOD GetRelativeSupported(PRBool *aRelativeSupported); \
  NS_IMETHOD GetNeedsHostCursor(PRBool *aNeedsHostCursor); \
  NS_IMETHOD PutMouseEvent(PRInt32 dx, PRInt32 dy, PRInt32 dz, PRInt32 dw, PRInt32 buttonState); \
  NS_IMETHOD PutMouseEventAbsolute(PRInt32 x, PRInt32 y, PRInt32 dz, PRInt32 dw, PRInt32 buttonState); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IMOUSE(_to) \
  NS_IMETHOD GetAbsoluteSupported(PRBool *aAbsoluteSupported) { return _to GetAbsoluteSupported(aAbsoluteSupported); } \
  NS_IMETHOD GetRelativeSupported(PRBool *aRelativeSupported) { return _to GetRelativeSupported(aRelativeSupported); } \
  NS_IMETHOD GetNeedsHostCursor(PRBool *aNeedsHostCursor) { return _to GetNeedsHostCursor(aNeedsHostCursor); } \
  NS_IMETHOD PutMouseEvent(PRInt32 dx, PRInt32 dy, PRInt32 dz, PRInt32 dw, PRInt32 buttonState) { return _to PutMouseEvent(dx, dy, dz, dw, buttonState); } \
  NS_IMETHOD PutMouseEventAbsolute(PRInt32 x, PRInt32 y, PRInt32 dz, PRInt32 dw, PRInt32 buttonState) { return _to PutMouseEventAbsolute(x, y, dz, dw, buttonState); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IMOUSE(_to) \
  NS_IMETHOD GetAbsoluteSupported(PRBool *aAbsoluteSupported) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAbsoluteSupported(aAbsoluteSupported); } \
  NS_IMETHOD GetRelativeSupported(PRBool *aRelativeSupported) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRelativeSupported(aRelativeSupported); } \
  NS_IMETHOD GetNeedsHostCursor(PRBool *aNeedsHostCursor) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNeedsHostCursor(aNeedsHostCursor); } \
  NS_IMETHOD PutMouseEvent(PRInt32 dx, PRInt32 dy, PRInt32 dz, PRInt32 dw, PRInt32 buttonState) { return !_to ? NS_ERROR_NULL_POINTER : _to->PutMouseEvent(dx, dy, dz, dw, buttonState); } \
  NS_IMETHOD PutMouseEventAbsolute(PRInt32 x, PRInt32 y, PRInt32 dz, PRInt32 dw, PRInt32 buttonState) { return !_to ? NS_ERROR_NULL_POINTER : _to->PutMouseEventAbsolute(x, y, dz, dw, buttonState); } 

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

/* Header file */
class _MYCLASS_ : public IMouse
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMOUSE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute boolean absoluteSupported; */
NS_IMETHODIMP _MYCLASS_::GetAbsoluteSupported(PRBool *aAbsoluteSupported)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean relativeSupported; */
NS_IMETHODIMP _MYCLASS_::GetRelativeSupported(PRBool *aRelativeSupported)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean needsHostCursor; */
NS_IMETHODIMP _MYCLASS_::GetNeedsHostCursor(PRBool *aNeedsHostCursor)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void putMouseEvent (in long dx, in long dy, in long dz, in long dw, in long buttonState); */
NS_IMETHODIMP _MYCLASS_::PutMouseEvent(PRInt32 dx, PRInt32 dy, PRInt32 dz, PRInt32 dw, PRInt32 buttonState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void putMouseEventAbsolute (in long x, in long y, in long dz, in long dw, in long buttonState); */
NS_IMETHODIMP _MYCLASS_::PutMouseEventAbsolute(PRInt32 x, PRInt32 y, PRInt32 dz, PRInt32 dw, PRInt32 buttonState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IMouse_GETTER_AbsoluteSupported_TO(smth) NS_IMETHOD GetAbsoluteSupported (PRBool * aAbsoluteSupported) { return smth GetAbsoluteSupported (aAbsoluteSupported); }
#define COM_FORWARD_IMouse_GETTER_AbsoluteSupported_TO_OBJ(obj) COM_FORWARD_IMouse_GETTER_AbsoluteSupported_TO ((obj)->)
#define COM_FORWARD_IMouse_GETTER_AbsoluteSupported_TO_BASE(base) COM_FORWARD_IMouse_GETTER_AbsoluteSupported_TO (base::)
#define COM_FORWARD_IMouse_GETTER_RelativeSupported_TO(smth) NS_IMETHOD GetRelativeSupported (PRBool * aRelativeSupported) { return smth GetRelativeSupported (aRelativeSupported); }
#define COM_FORWARD_IMouse_GETTER_RelativeSupported_TO_OBJ(obj) COM_FORWARD_IMouse_GETTER_RelativeSupported_TO ((obj)->)
#define COM_FORWARD_IMouse_GETTER_RelativeSupported_TO_BASE(base) COM_FORWARD_IMouse_GETTER_RelativeSupported_TO (base::)
#define COM_FORWARD_IMouse_GETTER_NeedsHostCursor_TO(smth) NS_IMETHOD GetNeedsHostCursor (PRBool * aNeedsHostCursor) { return smth GetNeedsHostCursor (aNeedsHostCursor); }
#define COM_FORWARD_IMouse_GETTER_NeedsHostCursor_TO_OBJ(obj) COM_FORWARD_IMouse_GETTER_NeedsHostCursor_TO ((obj)->)
#define COM_FORWARD_IMouse_GETTER_NeedsHostCursor_TO_BASE(base) COM_FORWARD_IMouse_GETTER_NeedsHostCursor_TO (base::)
#define COM_FORWARD_IMouse_PutMouseEvent_TO(smth) NS_IMETHOD PutMouseEvent (PRInt32 aDx, PRInt32 aDy, PRInt32 aDz, PRInt32 aDw, PRInt32 aButtonState) { return smth PutMouseEvent (aDx, aDy, aDz, aDw, aButtonState); }
#define COM_FORWARD_IMouse_PutMouseEvent_TO_OBJ(obj) COM_FORWARD_IMouse_PutMouseEvent_TO ((obj)->)
#define COM_FORWARD_IMouse_PutMouseEvent_TO_BASE(base) COM_FORWARD_IMouse_PutMouseEvent_TO (base::)
#define COM_FORWARD_IMouse_PutMouseEventAbsolute_TO(smth) NS_IMETHOD PutMouseEventAbsolute (PRInt32 aX, PRInt32 aY, PRInt32 aDz, PRInt32 aDw, PRInt32 aButtonState) { return smth PutMouseEventAbsolute (aX, aY, aDz, aDw, aButtonState); }
#define COM_FORWARD_IMouse_PutMouseEventAbsolute_TO_OBJ(obj) COM_FORWARD_IMouse_PutMouseEventAbsolute_TO ((obj)->)
#define COM_FORWARD_IMouse_PutMouseEventAbsolute_TO_BASE(base) COM_FORWARD_IMouse_PutMouseEventAbsolute_TO (base::)
#define COM_FORWARD_IMouse_TO(smth) NS_FORWARD_IMOUSE (smth)
#define COM_FORWARD_IMouse_TO_OBJ(obj) COM_FORWARD_IMouse_TO ((obj)->)
#define COM_FORWARD_IMouse_TO_BASE(base) COM_FORWARD_IMouse_TO (base::)

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

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

class NS_NO_VTABLE IFramebuffer : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IFRAMEBUFFER_IID)

  /* [noscript] readonly attribute octetPtr address; */
  NS_IMETHOD GetAddress(PRUint8 * *aAddress) = 0;

  /* readonly attribute unsigned long width; */
  NS_IMETHOD GetWidth(PRUint32 *aWidth) = 0;

  /* readonly attribute unsigned long height; */
  NS_IMETHOD GetHeight(PRUint32 *aHeight) = 0;

  /* readonly attribute unsigned long bitsPerPixel; */
  NS_IMETHOD GetBitsPerPixel(PRUint32 *aBitsPerPixel) = 0;

  /* readonly attribute unsigned long bytesPerLine; */
  NS_IMETHOD GetBytesPerLine(PRUint32 *aBytesPerLine) = 0;

  /* readonly attribute unsigned long pixelFormat; */
  NS_IMETHOD GetPixelFormat(PRUint32 *aPixelFormat) = 0;

  /* readonly attribute boolean usesGuestVRAM; */
  NS_IMETHOD GetUsesGuestVRAM(PRBool *aUsesGuestVRAM) = 0;

  /* readonly attribute unsigned long heightReduction; */
  NS_IMETHOD GetHeightReduction(PRUint32 *aHeightReduction) = 0;

  /* readonly attribute IFramebufferOverlay overlay; */
  NS_IMETHOD GetOverlay(IFramebufferOverlay * *aOverlay) = 0;

  /* readonly attribute unsigned long long winId; */
  NS_IMETHOD GetWinId(PRUint64 *aWinId) = 0;

  /* void lock (); */
  NS_IMETHOD Lock(void) = 0;

  /* void unlock (); */
  NS_IMETHOD Unlock(void) = 0;

  /* void notifyUpdate (in unsigned long x, in unsigned long y, in unsigned long width, in unsigned long height); */
  NS_IMETHOD NotifyUpdate(PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height) = 0;

  /* [noscript] void requestResize (in unsigned long screenId, in unsigned long pixelFormat, in octetPtr VRAM, in unsigned long bitsPerPixel, in unsigned long bytesPerLine, in unsigned long width, in unsigned long height, [retval] out boolean finished); */
  NS_IMETHOD RequestResize(PRUint32 screenId, PRUint32 pixelFormat, PRUint8 * VRAM, PRUint32 bitsPerPixel, PRUint32 bytesPerLine, PRUint32 width, PRUint32 height, PRBool *finished) = 0;

  /* void videoModeSupported (in unsigned long width, in unsigned long height, in unsigned long bpp, [retval] out boolean supported); */
  NS_IMETHOD VideoModeSupported(PRUint32 width, PRUint32 height, PRUint32 bpp, PRBool *supported) = 0;

  /* [noscript] void getVisibleRegion (in octetPtr rectangles, in unsigned long count, [retval] out unsigned long countCopied); */
  NS_IMETHOD GetVisibleRegion(PRUint8 * rectangles, PRUint32 count, PRUint32 *countCopied) = 0;

  /* [noscript] void setVisibleRegion (in octetPtr rectangles, in unsigned long count); */
  NS_IMETHOD SetVisibleRegion(PRUint8 * rectangles, PRUint32 count) = 0;

  /* [noscript] void processVHWACommand (in octetPtr command); */
  NS_IMETHOD ProcessVHWACommand(PRUint8 * command) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IFRAMEBUFFER \
  NS_IMETHOD GetAddress(PRUint8 * *aAddress); \
  NS_IMETHOD GetWidth(PRUint32 *aWidth); \
  NS_IMETHOD GetHeight(PRUint32 *aHeight); \
  NS_IMETHOD GetBitsPerPixel(PRUint32 *aBitsPerPixel); \
  NS_IMETHOD GetBytesPerLine(PRUint32 *aBytesPerLine); \
  NS_IMETHOD GetPixelFormat(PRUint32 *aPixelFormat); \
  NS_IMETHOD GetUsesGuestVRAM(PRBool *aUsesGuestVRAM); \
  NS_IMETHOD GetHeightReduction(PRUint32 *aHeightReduction); \
  NS_IMETHOD GetOverlay(IFramebufferOverlay * *aOverlay); \
  NS_IMETHOD GetWinId(PRUint64 *aWinId); \
  NS_IMETHOD Lock(void); \
  NS_IMETHOD Unlock(void); \
  NS_IMETHOD NotifyUpdate(PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height); \
  NS_IMETHOD RequestResize(PRUint32 screenId, PRUint32 pixelFormat, PRUint8 * VRAM, PRUint32 bitsPerPixel, PRUint32 bytesPerLine, PRUint32 width, PRUint32 height, PRBool *finished); \
  NS_IMETHOD VideoModeSupported(PRUint32 width, PRUint32 height, PRUint32 bpp, PRBool *supported); \
  NS_IMETHOD GetVisibleRegion(PRUint8 * rectangles, PRUint32 count, PRUint32 *countCopied); \
  NS_IMETHOD SetVisibleRegion(PRUint8 * rectangles, PRUint32 count); \
  NS_IMETHOD ProcessVHWACommand(PRUint8 * command); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IFRAMEBUFFER(_to) \
  NS_IMETHOD GetAddress(PRUint8 * *aAddress) { return _to GetAddress(aAddress); } \
  NS_IMETHOD GetWidth(PRUint32 *aWidth) { return _to GetWidth(aWidth); } \
  NS_IMETHOD GetHeight(PRUint32 *aHeight) { return _to GetHeight(aHeight); } \
  NS_IMETHOD GetBitsPerPixel(PRUint32 *aBitsPerPixel) { return _to GetBitsPerPixel(aBitsPerPixel); } \
  NS_IMETHOD GetBytesPerLine(PRUint32 *aBytesPerLine) { return _to GetBytesPerLine(aBytesPerLine); } \
  NS_IMETHOD GetPixelFormat(PRUint32 *aPixelFormat) { return _to GetPixelFormat(aPixelFormat); } \
  NS_IMETHOD GetUsesGuestVRAM(PRBool *aUsesGuestVRAM) { return _to GetUsesGuestVRAM(aUsesGuestVRAM); } \
  NS_IMETHOD GetHeightReduction(PRUint32 *aHeightReduction) { return _to GetHeightReduction(aHeightReduction); } \
  NS_IMETHOD GetOverlay(IFramebufferOverlay * *aOverlay) { return _to GetOverlay(aOverlay); } \
  NS_IMETHOD GetWinId(PRUint64 *aWinId) { return _to GetWinId(aWinId); } \
  NS_IMETHOD Lock(void) { return _to Lock(); } \
  NS_IMETHOD Unlock(void) { return _to Unlock(); } \
  NS_IMETHOD NotifyUpdate(PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height) { return _to NotifyUpdate(x, y, width, height); } \
  NS_IMETHOD RequestResize(PRUint32 screenId, PRUint32 pixelFormat, PRUint8 * VRAM, PRUint32 bitsPerPixel, PRUint32 bytesPerLine, PRUint32 width, PRUint32 height, PRBool *finished) { return _to RequestResize(screenId, pixelFormat, VRAM, bitsPerPixel, bytesPerLine, width, height, finished); } \
  NS_IMETHOD VideoModeSupported(PRUint32 width, PRUint32 height, PRUint32 bpp, PRBool *supported) { return _to VideoModeSupported(width, height, bpp, supported); } \
  NS_IMETHOD GetVisibleRegion(PRUint8 * rectangles, PRUint32 count, PRUint32 *countCopied) { return _to GetVisibleRegion(rectangles, count, countCopied); } \
  NS_IMETHOD SetVisibleRegion(PRUint8 * rectangles, PRUint32 count) { return _to SetVisibleRegion(rectangles, count); } \
  NS_IMETHOD ProcessVHWACommand(PRUint8 * command) { return _to ProcessVHWACommand(command); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IFRAMEBUFFER(_to) \
  NS_IMETHOD GetAddress(PRUint8 * *aAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAddress(aAddress); } \
  NS_IMETHOD GetWidth(PRUint32 *aWidth) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWidth(aWidth); } \
  NS_IMETHOD GetHeight(PRUint32 *aHeight) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHeight(aHeight); } \
  NS_IMETHOD GetBitsPerPixel(PRUint32 *aBitsPerPixel) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBitsPerPixel(aBitsPerPixel); } \
  NS_IMETHOD GetBytesPerLine(PRUint32 *aBytesPerLine) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBytesPerLine(aBytesPerLine); } \
  NS_IMETHOD GetPixelFormat(PRUint32 *aPixelFormat) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPixelFormat(aPixelFormat); } \
  NS_IMETHOD GetUsesGuestVRAM(PRBool *aUsesGuestVRAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUsesGuestVRAM(aUsesGuestVRAM); } \
  NS_IMETHOD GetHeightReduction(PRUint32 *aHeightReduction) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHeightReduction(aHeightReduction); } \
  NS_IMETHOD GetOverlay(IFramebufferOverlay * *aOverlay) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOverlay(aOverlay); } \
  NS_IMETHOD GetWinId(PRUint64 *aWinId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWinId(aWinId); } \
  NS_IMETHOD Lock(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Lock(); } \
  NS_IMETHOD Unlock(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Unlock(); } \
  NS_IMETHOD NotifyUpdate(PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyUpdate(x, y, width, height); } \
  NS_IMETHOD RequestResize(PRUint32 screenId, PRUint32 pixelFormat, PRUint8 * VRAM, PRUint32 bitsPerPixel, PRUint32 bytesPerLine, PRUint32 width, PRUint32 height, PRBool *finished) { return !_to ? NS_ERROR_NULL_POINTER : _to->RequestResize(screenId, pixelFormat, VRAM, bitsPerPixel, bytesPerLine, width, height, finished); } \
  NS_IMETHOD VideoModeSupported(PRUint32 width, PRUint32 height, PRUint32 bpp, PRBool *supported) { return !_to ? NS_ERROR_NULL_POINTER : _to->VideoModeSupported(width, height, bpp, supported); } \
  NS_IMETHOD GetVisibleRegion(PRUint8 * rectangles, PRUint32 count, PRUint32 *countCopied) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVisibleRegion(rectangles, count, countCopied); } \
  NS_IMETHOD SetVisibleRegion(PRUint8 * rectangles, PRUint32 count) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVisibleRegion(rectangles, count); } \
  NS_IMETHOD ProcessVHWACommand(PRUint8 * command) { return !_to ? NS_ERROR_NULL_POINTER : _to->ProcessVHWACommand(command); } 

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

/* Header file */
class _MYCLASS_ : public IFramebuffer
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IFRAMEBUFFER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* [noscript] readonly attribute octetPtr address; */
NS_IMETHODIMP _MYCLASS_::GetAddress(PRUint8 * *aAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long width; */
NS_IMETHODIMP _MYCLASS_::GetWidth(PRUint32 *aWidth)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long height; */
NS_IMETHODIMP _MYCLASS_::GetHeight(PRUint32 *aHeight)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long bitsPerPixel; */
NS_IMETHODIMP _MYCLASS_::GetBitsPerPixel(PRUint32 *aBitsPerPixel)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long bytesPerLine; */
NS_IMETHODIMP _MYCLASS_::GetBytesPerLine(PRUint32 *aBytesPerLine)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long pixelFormat; */
NS_IMETHODIMP _MYCLASS_::GetPixelFormat(PRUint32 *aPixelFormat)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean usesGuestVRAM; */
NS_IMETHODIMP _MYCLASS_::GetUsesGuestVRAM(PRBool *aUsesGuestVRAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long heightReduction; */
NS_IMETHODIMP _MYCLASS_::GetHeightReduction(PRUint32 *aHeightReduction)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute IFramebufferOverlay overlay; */
NS_IMETHODIMP _MYCLASS_::GetOverlay(IFramebufferOverlay * *aOverlay)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long long winId; */
NS_IMETHODIMP _MYCLASS_::GetWinId(PRUint64 *aWinId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void lock (); */
NS_IMETHODIMP _MYCLASS_::Lock()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unlock (); */
NS_IMETHODIMP _MYCLASS_::Unlock()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyUpdate (in unsigned long x, in unsigned long y, in unsigned long width, in unsigned long height); */
NS_IMETHODIMP _MYCLASS_::NotifyUpdate(PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void requestResize (in unsigned long screenId, in unsigned long pixelFormat, in octetPtr VRAM, in unsigned long bitsPerPixel, in unsigned long bytesPerLine, in unsigned long width, in unsigned long height, [retval] out boolean finished); */
NS_IMETHODIMP _MYCLASS_::RequestResize(PRUint32 screenId, PRUint32 pixelFormat, PRUint8 * VRAM, PRUint32 bitsPerPixel, PRUint32 bytesPerLine, PRUint32 width, PRUint32 height, PRBool *finished)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void videoModeSupported (in unsigned long width, in unsigned long height, in unsigned long bpp, [retval] out boolean supported); */
NS_IMETHODIMP _MYCLASS_::VideoModeSupported(PRUint32 width, PRUint32 height, PRUint32 bpp, PRBool *supported)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void getVisibleRegion (in octetPtr rectangles, in unsigned long count, [retval] out unsigned long countCopied); */
NS_IMETHODIMP _MYCLASS_::GetVisibleRegion(PRUint8 * rectangles, PRUint32 count, PRUint32 *countCopied)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void setVisibleRegion (in octetPtr rectangles, in unsigned long count); */
NS_IMETHODIMP _MYCLASS_::SetVisibleRegion(PRUint8 * rectangles, PRUint32 count)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void processVHWACommand (in octetPtr command); */
NS_IMETHODIMP _MYCLASS_::ProcessVHWACommand(PRUint8 * command)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IFramebuffer_GETTER_Address_TO(smth) NS_IMETHOD GetAddress (PRUint8 * * aAddress) { return smth GetAddress (aAddress); }
#define COM_FORWARD_IFramebuffer_GETTER_Address_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GETTER_Address_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GETTER_Address_TO_BASE(base) COM_FORWARD_IFramebuffer_GETTER_Address_TO (base::)
#define COM_FORWARD_IFramebuffer_GETTER_Width_TO(smth) NS_IMETHOD GetWidth (PRUint32 * aWidth) { return smth GetWidth (aWidth); }
#define COM_FORWARD_IFramebuffer_GETTER_Width_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GETTER_Width_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GETTER_Width_TO_BASE(base) COM_FORWARD_IFramebuffer_GETTER_Width_TO (base::)
#define COM_FORWARD_IFramebuffer_GETTER_Height_TO(smth) NS_IMETHOD GetHeight (PRUint32 * aHeight) { return smth GetHeight (aHeight); }
#define COM_FORWARD_IFramebuffer_GETTER_Height_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GETTER_Height_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GETTER_Height_TO_BASE(base) COM_FORWARD_IFramebuffer_GETTER_Height_TO (base::)
#define COM_FORWARD_IFramebuffer_GETTER_BitsPerPixel_TO(smth) NS_IMETHOD GetBitsPerPixel (PRUint32 * aBitsPerPixel) { return smth GetBitsPerPixel (aBitsPerPixel); }
#define COM_FORWARD_IFramebuffer_GETTER_BitsPerPixel_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GETTER_BitsPerPixel_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GETTER_BitsPerPixel_TO_BASE(base) COM_FORWARD_IFramebuffer_GETTER_BitsPerPixel_TO (base::)
#define COM_FORWARD_IFramebuffer_GETTER_BytesPerLine_TO(smth) NS_IMETHOD GetBytesPerLine (PRUint32 * aBytesPerLine) { return smth GetBytesPerLine (aBytesPerLine); }
#define COM_FORWARD_IFramebuffer_GETTER_BytesPerLine_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GETTER_BytesPerLine_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GETTER_BytesPerLine_TO_BASE(base) COM_FORWARD_IFramebuffer_GETTER_BytesPerLine_TO (base::)
#define COM_FORWARD_IFramebuffer_GETTER_PixelFormat_TO(smth) NS_IMETHOD GetPixelFormat (PRUint32 * aPixelFormat) { return smth GetPixelFormat (aPixelFormat); }
#define COM_FORWARD_IFramebuffer_GETTER_PixelFormat_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GETTER_PixelFormat_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GETTER_PixelFormat_TO_BASE(base) COM_FORWARD_IFramebuffer_GETTER_PixelFormat_TO (base::)
#define COM_FORWARD_IFramebuffer_GETTER_UsesGuestVRAM_TO(smth) NS_IMETHOD GetUsesGuestVRAM (PRBool * aUsesGuestVRAM) { return smth GetUsesGuestVRAM (aUsesGuestVRAM); }
#define COM_FORWARD_IFramebuffer_GETTER_UsesGuestVRAM_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GETTER_UsesGuestVRAM_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GETTER_UsesGuestVRAM_TO_BASE(base) COM_FORWARD_IFramebuffer_GETTER_UsesGuestVRAM_TO (base::)
#define COM_FORWARD_IFramebuffer_GETTER_HeightReduction_TO(smth) NS_IMETHOD GetHeightReduction (PRUint32 * aHeightReduction) { return smth GetHeightReduction (aHeightReduction); }
#define COM_FORWARD_IFramebuffer_GETTER_HeightReduction_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GETTER_HeightReduction_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GETTER_HeightReduction_TO_BASE(base) COM_FORWARD_IFramebuffer_GETTER_HeightReduction_TO (base::)
#define COM_FORWARD_IFramebuffer_GETTER_Overlay_TO(smth) NS_IMETHOD GetOverlay (IFramebufferOverlay * * aOverlay) { return smth GetOverlay (aOverlay); }
#define COM_FORWARD_IFramebuffer_GETTER_Overlay_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GETTER_Overlay_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GETTER_Overlay_TO_BASE(base) COM_FORWARD_IFramebuffer_GETTER_Overlay_TO (base::)
#define COM_FORWARD_IFramebuffer_GETTER_WinId_TO(smth) NS_IMETHOD GetWinId (PRUint64 * aWinId) { return smth GetWinId (aWinId); }
#define COM_FORWARD_IFramebuffer_GETTER_WinId_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GETTER_WinId_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GETTER_WinId_TO_BASE(base) COM_FORWARD_IFramebuffer_GETTER_WinId_TO (base::)
#define COM_FORWARD_IFramebuffer_Lock_TO(smth) NS_IMETHOD Lock() { return smth Lock(); }
#define COM_FORWARD_IFramebuffer_Lock_TO_OBJ(obj) COM_FORWARD_IFramebuffer_Lock_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_Lock_TO_BASE(base) COM_FORWARD_IFramebuffer_Lock_TO (base::)
#define COM_FORWARD_IFramebuffer_Unlock_TO(smth) NS_IMETHOD Unlock() { return smth Unlock(); }
#define COM_FORWARD_IFramebuffer_Unlock_TO_OBJ(obj) COM_FORWARD_IFramebuffer_Unlock_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_Unlock_TO_BASE(base) COM_FORWARD_IFramebuffer_Unlock_TO (base::)
#define COM_FORWARD_IFramebuffer_NotifyUpdate_TO(smth) NS_IMETHOD NotifyUpdate (PRUint32 aX, PRUint32 aY, PRUint32 aWidth, PRUint32 aHeight) { return smth NotifyUpdate (aX, aY, aWidth, aHeight); }
#define COM_FORWARD_IFramebuffer_NotifyUpdate_TO_OBJ(obj) COM_FORWARD_IFramebuffer_NotifyUpdate_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_NotifyUpdate_TO_BASE(base) COM_FORWARD_IFramebuffer_NotifyUpdate_TO (base::)
#define COM_FORWARD_IFramebuffer_RequestResize_TO(smth) NS_IMETHOD RequestResize (PRUint32 aScreenId, PRUint32 aPixelFormat, PRUint8 * aVRAM, PRUint32 aBitsPerPixel, PRUint32 aBytesPerLine, PRUint32 aWidth, PRUint32 aHeight, PRBool * aFinished) { return smth RequestResize (aScreenId, aPixelFormat, aVRAM, aBitsPerPixel, aBytesPerLine, aWidth, aHeight, aFinished); }
#define COM_FORWARD_IFramebuffer_RequestResize_TO_OBJ(obj) COM_FORWARD_IFramebuffer_RequestResize_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_RequestResize_TO_BASE(base) COM_FORWARD_IFramebuffer_RequestResize_TO (base::)
#define COM_FORWARD_IFramebuffer_VideoModeSupported_TO(smth) NS_IMETHOD VideoModeSupported (PRUint32 aWidth, PRUint32 aHeight, PRUint32 aBpp, PRBool * aSupported) { return smth VideoModeSupported (aWidth, aHeight, aBpp, aSupported); }
#define COM_FORWARD_IFramebuffer_VideoModeSupported_TO_OBJ(obj) COM_FORWARD_IFramebuffer_VideoModeSupported_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_VideoModeSupported_TO_BASE(base) COM_FORWARD_IFramebuffer_VideoModeSupported_TO (base::)
#define COM_FORWARD_IFramebuffer_GetVisibleRegion_TO(smth) NS_IMETHOD GetVisibleRegion (PRUint8 * aRectangles, PRUint32 aCount, PRUint32 * aCountCopied) { return smth GetVisibleRegion (aRectangles, aCount, aCountCopied); }
#define COM_FORWARD_IFramebuffer_GetVisibleRegion_TO_OBJ(obj) COM_FORWARD_IFramebuffer_GetVisibleRegion_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_GetVisibleRegion_TO_BASE(base) COM_FORWARD_IFramebuffer_GetVisibleRegion_TO (base::)
#define COM_FORWARD_IFramebuffer_SetVisibleRegion_TO(smth) NS_IMETHOD SetVisibleRegion (PRUint8 * aRectangles, PRUint32 aCount) { return smth SetVisibleRegion (aRectangles, aCount); }
#define COM_FORWARD_IFramebuffer_SetVisibleRegion_TO_OBJ(obj) COM_FORWARD_IFramebuffer_SetVisibleRegion_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_SetVisibleRegion_TO_BASE(base) COM_FORWARD_IFramebuffer_SetVisibleRegion_TO (base::)
#define COM_FORWARD_IFramebuffer_ProcessVHWACommand_TO(smth) NS_IMETHOD ProcessVHWACommand (PRUint8 * aCommand) { return smth ProcessVHWACommand (aCommand); }
#define COM_FORWARD_IFramebuffer_ProcessVHWACommand_TO_OBJ(obj) COM_FORWARD_IFramebuffer_ProcessVHWACommand_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_ProcessVHWACommand_TO_BASE(base) COM_FORWARD_IFramebuffer_ProcessVHWACommand_TO (base::)
#define COM_FORWARD_IFramebuffer_TO(smth) NS_FORWARD_IFRAMEBUFFER (smth)
#define COM_FORWARD_IFramebuffer_TO_OBJ(obj) COM_FORWARD_IFramebuffer_TO ((obj)->)
#define COM_FORWARD_IFramebuffer_TO_BASE(base) COM_FORWARD_IFramebuffer_TO (base::)

/* starting interface:    IFramebufferOverlay */
#define IFRAMEBUFFEROVERLAY_IID_STR "0bcc1c7e-e415-47d2-bfdb-e4c705fb0f47"

#define IFRAMEBUFFEROVERLAY_IID \
  {0x0bcc1c7e, 0xe415, 0x47d2, \
    { 0xbf, 0xdb, 0xe4, 0xc7, 0x05, 0xfb, 0x0f, 0x47 }}

class NS_NO_VTABLE IFramebufferOverlay : public IFramebuffer {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IFRAMEBUFFEROVERLAY_IID)

  /* readonly attribute unsigned long x; */
  NS_IMETHOD GetX(PRUint32 *aX) = 0;

  /* readonly attribute unsigned long y; */
  NS_IMETHOD GetY(PRUint32 *aY) = 0;

  /* attribute boolean visible; */
  NS_IMETHOD GetVisible(PRBool *aVisible) = 0;
  NS_IMETHOD SetVisible(PRBool aVisible) = 0;

  /* attribute unsigned long alpha; */
  NS_IMETHOD GetAlpha(PRUint32 *aAlpha) = 0;
  NS_IMETHOD SetAlpha(PRUint32 aAlpha) = 0;

  /* void move (in unsigned long x, in unsigned long y); */
  NS_IMETHOD Move(PRUint32 x, PRUint32 y) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IFRAMEBUFFEROVERLAY \
  NS_IMETHOD GetX(PRUint32 *aX); \
  NS_IMETHOD GetY(PRUint32 *aY); \
  NS_IMETHOD GetVisible(PRBool *aVisible); \
  NS_IMETHOD SetVisible(PRBool aVisible); \
  NS_IMETHOD GetAlpha(PRUint32 *aAlpha); \
  NS_IMETHOD SetAlpha(PRUint32 aAlpha); \
  NS_IMETHOD Move(PRUint32 x, PRUint32 y); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IFRAMEBUFFEROVERLAY(_to) \
  NS_IMETHOD GetX(PRUint32 *aX) { return _to GetX(aX); } \
  NS_IMETHOD GetY(PRUint32 *aY) { return _to GetY(aY); } \
  NS_IMETHOD GetVisible(PRBool *aVisible) { return _to GetVisible(aVisible); } \
  NS_IMETHOD SetVisible(PRBool aVisible) { return _to SetVisible(aVisible); } \
  NS_IMETHOD GetAlpha(PRUint32 *aAlpha) { return _to GetAlpha(aAlpha); } \
  NS_IMETHOD SetAlpha(PRUint32 aAlpha) { return _to SetAlpha(aAlpha); } \
  NS_IMETHOD Move(PRUint32 x, PRUint32 y) { return _to Move(x, y); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IFRAMEBUFFEROVERLAY(_to) \
  NS_IMETHOD GetX(PRUint32 *aX) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetX(aX); } \
  NS_IMETHOD GetY(PRUint32 *aY) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetY(aY); } \
  NS_IMETHOD GetVisible(PRBool *aVisible) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVisible(aVisible); } \
  NS_IMETHOD SetVisible(PRBool aVisible) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVisible(aVisible); } \
  NS_IMETHOD GetAlpha(PRUint32 *aAlpha) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAlpha(aAlpha); } \
  NS_IMETHOD SetAlpha(PRUint32 aAlpha) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAlpha(aAlpha); } \
  NS_IMETHOD Move(PRUint32 x, PRUint32 y) { return !_to ? NS_ERROR_NULL_POINTER : _to->Move(x, y); } 

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

/* Header file */
class _MYCLASS_ : public IFramebufferOverlay
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IFRAMEBUFFEROVERLAY

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute unsigned long x; */
NS_IMETHODIMP _MYCLASS_::GetX(PRUint32 *aX)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long y; */
NS_IMETHODIMP _MYCLASS_::GetY(PRUint32 *aY)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean visible; */
NS_IMETHODIMP _MYCLASS_::GetVisible(PRBool *aVisible)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetVisible(PRBool aVisible)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long alpha; */
NS_IMETHODIMP _MYCLASS_::GetAlpha(PRUint32 *aAlpha)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAlpha(PRUint32 aAlpha)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void move (in unsigned long x, in unsigned long y); */
NS_IMETHODIMP _MYCLASS_::Move(PRUint32 x, PRUint32 y)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IFramebufferOverlay_GETTER_X_TO(smth) NS_IMETHOD GetX (PRUint32 * aX) { return smth GetX (aX); }
#define COM_FORWARD_IFramebufferOverlay_GETTER_X_TO_OBJ(obj) COM_FORWARD_IFramebufferOverlay_GETTER_X_TO ((obj)->)
#define COM_FORWARD_IFramebufferOverlay_GETTER_X_TO_BASE(base) COM_FORWARD_IFramebufferOverlay_GETTER_X_TO (base::)
#define COM_FORWARD_IFramebufferOverlay_GETTER_Y_TO(smth) NS_IMETHOD GetY (PRUint32 * aY) { return smth GetY (aY); }
#define COM_FORWARD_IFramebufferOverlay_GETTER_Y_TO_OBJ(obj) COM_FORWARD_IFramebufferOverlay_GETTER_Y_TO ((obj)->)
#define COM_FORWARD_IFramebufferOverlay_GETTER_Y_TO_BASE(base) COM_FORWARD_IFramebufferOverlay_GETTER_Y_TO (base::)
#define COM_FORWARD_IFramebufferOverlay_GETTER_Visible_TO(smth) NS_IMETHOD GetVisible (PRBool * aVisible) { return smth GetVisible (aVisible); }
#define COM_FORWARD_IFramebufferOverlay_GETTER_Visible_TO_OBJ(obj) COM_FORWARD_IFramebufferOverlay_GETTER_Visible_TO ((obj)->)
#define COM_FORWARD_IFramebufferOverlay_GETTER_Visible_TO_BASE(base) COM_FORWARD_IFramebufferOverlay_GETTER_Visible_TO (base::)
#define COM_FORWARD_IFramebufferOverlay_SETTER_Visible_TO(smth) NS_IMETHOD SetVisible (PRBool aVisible) { return smth SetVisible (aVisible); }
#define COM_FORWARD_IFramebufferOverlay_SETTER_Visible_TO_OBJ(obj) COM_FORWARD_IFramebufferOverlay_SETTER_Visible_TO ((obj)->)
#define COM_FORWARD_IFramebufferOverlay_SETTER_Visible_TO_BASE(base) COM_FORWARD_IFramebufferOverlay_SETTER_Visible_TO (base::)
#define COM_FORWARD_IFramebufferOverlay_GETTER_Alpha_TO(smth) NS_IMETHOD GetAlpha (PRUint32 * aAlpha) { return smth GetAlpha (aAlpha); }
#define COM_FORWARD_IFramebufferOverlay_GETTER_Alpha_TO_OBJ(obj) COM_FORWARD_IFramebufferOverlay_GETTER_Alpha_TO ((obj)->)
#define COM_FORWARD_IFramebufferOverlay_GETTER_Alpha_TO_BASE(base) COM_FORWARD_IFramebufferOverlay_GETTER_Alpha_TO (base::)
#define COM_FORWARD_IFramebufferOverlay_SETTER_Alpha_TO(smth) NS_IMETHOD SetAlpha (PRUint32 aAlpha) { return smth SetAlpha (aAlpha); }
#define COM_FORWARD_IFramebufferOverlay_SETTER_Alpha_TO_OBJ(obj) COM_FORWARD_IFramebufferOverlay_SETTER_Alpha_TO ((obj)->)
#define COM_FORWARD_IFramebufferOverlay_SETTER_Alpha_TO_BASE(base) COM_FORWARD_IFramebufferOverlay_SETTER_Alpha_TO (base::)
#define COM_FORWARD_IFramebufferOverlay_Move_TO(smth) NS_IMETHOD Move (PRUint32 aX, PRUint32 aY) { return smth Move (aX, aY); }
#define COM_FORWARD_IFramebufferOverlay_Move_TO_OBJ(obj) COM_FORWARD_IFramebufferOverlay_Move_TO ((obj)->)
#define COM_FORWARD_IFramebufferOverlay_Move_TO_BASE(base) COM_FORWARD_IFramebufferOverlay_Move_TO (base::)
#define COM_FORWARD_IFramebufferOverlay_TO(smth) NS_FORWARD_IFRAMEBUFFEROVERLAY (smth)
#define COM_FORWARD_IFramebufferOverlay_TO_OBJ(obj) COM_FORWARD_IFramebufferOverlay_TO ((obj)->)
#define COM_FORWARD_IFramebufferOverlay_TO_BASE(base) COM_FORWARD_IFramebufferOverlay_TO (base::)

/* starting interface:    IDisplay */
#define IDISPLAY_IID_STR "1fa79e39-0cc9-4ab3-9df3-ed3e96b42496"

#define IDISPLAY_IID \
  {0x1fa79e39, 0x0cc9, 0x4ab3, \
    { 0x9d, 0xf3, 0xed, 0x3e, 0x96, 0xb4, 0x24, 0x96 }}

class NS_NO_VTABLE IDisplay : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IDISPLAY_IID)

  /* void getScreenResolution (in unsigned long screenId, out unsigned long width, out unsigned long height, out unsigned long bitsPerPixel); */
  NS_IMETHOD GetScreenResolution(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *bitsPerPixel) = 0;

  /* void setFramebuffer (in unsigned long screenId, in IFramebuffer framebuffer); */
  NS_IMETHOD SetFramebuffer(PRUint32 screenId, IFramebuffer *framebuffer) = 0;

  /* void getFramebuffer (in unsigned long screenId, out IFramebuffer framebuffer, out long xOrigin, out long yOrigin); */
  NS_IMETHOD GetFramebuffer(PRUint32 screenId, IFramebuffer **framebuffer, PRInt32 *xOrigin, PRInt32 *yOrigin) = 0;

  /* void setVideoModeHint (in unsigned long width, in unsigned long height, in unsigned long bitsPerPixel, in unsigned long display); */
  NS_IMETHOD SetVideoModeHint(PRUint32 width, PRUint32 height, PRUint32 bitsPerPixel, PRUint32 display) = 0;

  /* void setSeamlessMode (in boolean enabled); */
  NS_IMETHOD SetSeamlessMode(PRBool enabled) = 0;

  /* [noscript] void takeScreenShot (in unsigned long screenId, in octetPtr address, in unsigned long width, in unsigned long height); */
  NS_IMETHOD TakeScreenShot(PRUint32 screenId, PRUint8 * address, PRUint32 width, PRUint32 height) = 0;

  /* void takeScreenShotToArray (in unsigned long screenId, in unsigned long width, in unsigned long height, out unsigned long screenDataSize, [array, size_is (screenDataSize), retval] out octet screenData); */
  NS_IMETHOD TakeScreenShotToArray(PRUint32 screenId, PRUint32 width, PRUint32 height, PRUint32 *screenDataSize, PRUint8 **screenData) = 0;

  /* [noscript] void drawToScreen (in unsigned long screenId, in octetPtr address, in unsigned long x, in unsigned long y, in unsigned long width, in unsigned long height); */
  NS_IMETHOD DrawToScreen(PRUint32 screenId, PRUint8 * address, PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height) = 0;

  /* void invalidateAndUpdate (); */
  NS_IMETHOD InvalidateAndUpdate(void) = 0;

  /* void resizeCompleted (in unsigned long screenId); */
  NS_IMETHOD ResizeCompleted(PRUint32 screenId) = 0;

  /* [noscript] void completeVHWACommand (in octetPtr command); */
  NS_IMETHOD CompleteVHWACommand(PRUint8 * command) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IDISPLAY \
  NS_IMETHOD GetScreenResolution(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *bitsPerPixel); \
  NS_IMETHOD SetFramebuffer(PRUint32 screenId, IFramebuffer *framebuffer); \
  NS_IMETHOD GetFramebuffer(PRUint32 screenId, IFramebuffer **framebuffer, PRInt32 *xOrigin, PRInt32 *yOrigin); \
  NS_IMETHOD SetVideoModeHint(PRUint32 width, PRUint32 height, PRUint32 bitsPerPixel, PRUint32 display); \
  NS_IMETHOD SetSeamlessMode(PRBool enabled); \
  NS_IMETHOD TakeScreenShot(PRUint32 screenId, PRUint8 * address, PRUint32 width, PRUint32 height); \
  NS_IMETHOD TakeScreenShotToArray(PRUint32 screenId, PRUint32 width, PRUint32 height, PRUint32 *screenDataSize, PRUint8 **screenData); \
  NS_IMETHOD DrawToScreen(PRUint32 screenId, PRUint8 * address, PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height); \
  NS_IMETHOD InvalidateAndUpdate(void); \
  NS_IMETHOD ResizeCompleted(PRUint32 screenId); \
  NS_IMETHOD CompleteVHWACommand(PRUint8 * command); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IDISPLAY(_to) \
  NS_IMETHOD GetScreenResolution(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *bitsPerPixel) { return _to GetScreenResolution(screenId, width, height, bitsPerPixel); } \
  NS_IMETHOD SetFramebuffer(PRUint32 screenId, IFramebuffer *framebuffer) { return _to SetFramebuffer(screenId, framebuffer); } \
  NS_IMETHOD GetFramebuffer(PRUint32 screenId, IFramebuffer **framebuffer, PRInt32 *xOrigin, PRInt32 *yOrigin) { return _to GetFramebuffer(screenId, framebuffer, xOrigin, yOrigin); } \
  NS_IMETHOD SetVideoModeHint(PRUint32 width, PRUint32 height, PRUint32 bitsPerPixel, PRUint32 display) { return _to SetVideoModeHint(width, height, bitsPerPixel, display); } \
  NS_IMETHOD SetSeamlessMode(PRBool enabled) { return _to SetSeamlessMode(enabled); } \
  NS_IMETHOD TakeScreenShot(PRUint32 screenId, PRUint8 * address, PRUint32 width, PRUint32 height) { return _to TakeScreenShot(screenId, address, width, height); } \
  NS_IMETHOD TakeScreenShotToArray(PRUint32 screenId, PRUint32 width, PRUint32 height, PRUint32 *screenDataSize, PRUint8 **screenData) { return _to TakeScreenShotToArray(screenId, width, height, screenDataSize, screenData); } \
  NS_IMETHOD DrawToScreen(PRUint32 screenId, PRUint8 * address, PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height) { return _to DrawToScreen(screenId, address, x, y, width, height); } \
  NS_IMETHOD InvalidateAndUpdate(void) { return _to InvalidateAndUpdate(); } \
  NS_IMETHOD ResizeCompleted(PRUint32 screenId) { return _to ResizeCompleted(screenId); } \
  NS_IMETHOD CompleteVHWACommand(PRUint8 * command) { return _to CompleteVHWACommand(command); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IDISPLAY(_to) \
  NS_IMETHOD GetScreenResolution(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *bitsPerPixel) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetScreenResolution(screenId, width, height, bitsPerPixel); } \
  NS_IMETHOD SetFramebuffer(PRUint32 screenId, IFramebuffer *framebuffer) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFramebuffer(screenId, framebuffer); } \
  NS_IMETHOD GetFramebuffer(PRUint32 screenId, IFramebuffer **framebuffer, PRInt32 *xOrigin, PRInt32 *yOrigin) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFramebuffer(screenId, framebuffer, xOrigin, yOrigin); } \
  NS_IMETHOD SetVideoModeHint(PRUint32 width, PRUint32 height, PRUint32 bitsPerPixel, PRUint32 display) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVideoModeHint(width, height, bitsPerPixel, display); } \
  NS_IMETHOD SetSeamlessMode(PRBool enabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSeamlessMode(enabled); } \
  NS_IMETHOD TakeScreenShot(PRUint32 screenId, PRUint8 * address, PRUint32 width, PRUint32 height) { return !_to ? NS_ERROR_NULL_POINTER : _to->TakeScreenShot(screenId, address, width, height); } \
  NS_IMETHOD TakeScreenShotToArray(PRUint32 screenId, PRUint32 width, PRUint32 height, PRUint32 *screenDataSize, PRUint8 **screenData) { return !_to ? NS_ERROR_NULL_POINTER : _to->TakeScreenShotToArray(screenId, width, height, screenDataSize, screenData); } \
  NS_IMETHOD DrawToScreen(PRUint32 screenId, PRUint8 * address, PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height) { return !_to ? NS_ERROR_NULL_POINTER : _to->DrawToScreen(screenId, address, x, y, width, height); } \
  NS_IMETHOD InvalidateAndUpdate(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->InvalidateAndUpdate(); } \
  NS_IMETHOD ResizeCompleted(PRUint32 screenId) { return !_to ? NS_ERROR_NULL_POINTER : _to->ResizeCompleted(screenId); } \
  NS_IMETHOD CompleteVHWACommand(PRUint8 * command) { return !_to ? NS_ERROR_NULL_POINTER : _to->CompleteVHWACommand(command); } 

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

/* Header file */
class _MYCLASS_ : public IDisplay
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IDISPLAY

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void getScreenResolution (in unsigned long screenId, out unsigned long width, out unsigned long height, out unsigned long bitsPerPixel); */
NS_IMETHODIMP _MYCLASS_::GetScreenResolution(PRUint32 screenId, PRUint32 *width, PRUint32 *height, PRUint32 *bitsPerPixel)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setFramebuffer (in unsigned long screenId, in IFramebuffer framebuffer); */
NS_IMETHODIMP _MYCLASS_::SetFramebuffer(PRUint32 screenId, IFramebuffer *framebuffer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getFramebuffer (in unsigned long screenId, out IFramebuffer framebuffer, out long xOrigin, out long yOrigin); */
NS_IMETHODIMP _MYCLASS_::GetFramebuffer(PRUint32 screenId, IFramebuffer **framebuffer, PRInt32 *xOrigin, PRInt32 *yOrigin)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setVideoModeHint (in unsigned long width, in unsigned long height, in unsigned long bitsPerPixel, in unsigned long display); */
NS_IMETHODIMP _MYCLASS_::SetVideoModeHint(PRUint32 width, PRUint32 height, PRUint32 bitsPerPixel, PRUint32 display)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setSeamlessMode (in boolean enabled); */
NS_IMETHODIMP _MYCLASS_::SetSeamlessMode(PRBool enabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void takeScreenShot (in unsigned long screenId, in octetPtr address, in unsigned long width, in unsigned long height); */
NS_IMETHODIMP _MYCLASS_::TakeScreenShot(PRUint32 screenId, PRUint8 * address, PRUint32 width, PRUint32 height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void takeScreenShotToArray (in unsigned long screenId, in unsigned long width, in unsigned long height, out unsigned long screenDataSize, [array, size_is (screenDataSize), retval] out octet screenData); */
NS_IMETHODIMP _MYCLASS_::TakeScreenShotToArray(PRUint32 screenId, PRUint32 width, PRUint32 height, PRUint32 *screenDataSize, PRUint8 **screenData)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void drawToScreen (in unsigned long screenId, in octetPtr address, in unsigned long x, in unsigned long y, in unsigned long width, in unsigned long height); */
NS_IMETHODIMP _MYCLASS_::DrawToScreen(PRUint32 screenId, PRUint8 * address, PRUint32 x, PRUint32 y, PRUint32 width, PRUint32 height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void invalidateAndUpdate (); */
NS_IMETHODIMP _MYCLASS_::InvalidateAndUpdate()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void resizeCompleted (in unsigned long screenId); */
NS_IMETHODIMP _MYCLASS_::ResizeCompleted(PRUint32 screenId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void completeVHWACommand (in octetPtr command); */
NS_IMETHODIMP _MYCLASS_::CompleteVHWACommand(PRUint8 * command)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IDisplay_GetScreenResolution_TO(smth) NS_IMETHOD GetScreenResolution (PRUint32 aScreenId, PRUint32 * aWidth, PRUint32 * aHeight, PRUint32 * aBitsPerPixel) { return smth GetScreenResolution (aScreenId, aWidth, aHeight, aBitsPerPixel); }
#define COM_FORWARD_IDisplay_GetScreenResolution_TO_OBJ(obj) COM_FORWARD_IDisplay_GetScreenResolution_TO ((obj)->)
#define COM_FORWARD_IDisplay_GetScreenResolution_TO_BASE(base) COM_FORWARD_IDisplay_GetScreenResolution_TO (base::)
#define COM_FORWARD_IDisplay_SetFramebuffer_TO(smth) NS_IMETHOD SetFramebuffer (PRUint32 aScreenId, IFramebuffer * aFramebuffer) { return smth SetFramebuffer (aScreenId, aFramebuffer); }
#define COM_FORWARD_IDisplay_SetFramebuffer_TO_OBJ(obj) COM_FORWARD_IDisplay_SetFramebuffer_TO ((obj)->)
#define COM_FORWARD_IDisplay_SetFramebuffer_TO_BASE(base) COM_FORWARD_IDisplay_SetFramebuffer_TO (base::)
#define COM_FORWARD_IDisplay_GetFramebuffer_TO(smth) NS_IMETHOD GetFramebuffer (PRUint32 aScreenId, IFramebuffer * * aFramebuffer, PRInt32 * aXOrigin, PRInt32 * aYOrigin) { return smth GetFramebuffer (aScreenId, aFramebuffer, aXOrigin, aYOrigin); }
#define COM_FORWARD_IDisplay_GetFramebuffer_TO_OBJ(obj) COM_FORWARD_IDisplay_GetFramebuffer_TO ((obj)->)
#define COM_FORWARD_IDisplay_GetFramebuffer_TO_BASE(base) COM_FORWARD_IDisplay_GetFramebuffer_TO (base::)
#define COM_FORWARD_IDisplay_SetVideoModeHint_TO(smth) NS_IMETHOD SetVideoModeHint (PRUint32 aWidth, PRUint32 aHeight, PRUint32 aBitsPerPixel, PRUint32 aDisplay) { return smth SetVideoModeHint (aWidth, aHeight, aBitsPerPixel, aDisplay); }
#define COM_FORWARD_IDisplay_SetVideoModeHint_TO_OBJ(obj) COM_FORWARD_IDisplay_SetVideoModeHint_TO ((obj)->)
#define COM_FORWARD_IDisplay_SetVideoModeHint_TO_BASE(base) COM_FORWARD_IDisplay_SetVideoModeHint_TO (base::)
#define COM_FORWARD_IDisplay_SetSeamlessMode_TO(smth) NS_IMETHOD SetSeamlessMode (PRBool aEnabled) { return smth SetSeamlessMode (aEnabled); }
#define COM_FORWARD_IDisplay_SetSeamlessMode_TO_OBJ(obj) COM_FORWARD_IDisplay_SetSeamlessMode_TO ((obj)->)
#define COM_FORWARD_IDisplay_SetSeamlessMode_TO_BASE(base) COM_FORWARD_IDisplay_SetSeamlessMode_TO (base::)
#define COM_FORWARD_IDisplay_TakeScreenShot_TO(smth) NS_IMETHOD TakeScreenShot (PRUint32 aScreenId, PRUint8 * aAddress, PRUint32 aWidth, PRUint32 aHeight) { return smth TakeScreenShot (aScreenId, aAddress, aWidth, aHeight); }
#define COM_FORWARD_IDisplay_TakeScreenShot_TO_OBJ(obj) COM_FORWARD_IDisplay_TakeScreenShot_TO ((obj)->)
#define COM_FORWARD_IDisplay_TakeScreenShot_TO_BASE(base) COM_FORWARD_IDisplay_TakeScreenShot_TO (base::)
#define COM_FORWARD_IDisplay_TakeScreenShotToArray_TO(smth) NS_IMETHOD TakeScreenShotToArray (PRUint32 aScreenId, PRUint32 aWidth, PRUint32 aHeight, PRUint32 * aScreenDataSize, PRUint8 * * aScreenData) { return smth TakeScreenShotToArray (aScreenId, aWidth, aHeight, aScreenDataSize, aScreenData); }
#define COM_FORWARD_IDisplay_TakeScreenShotToArray_TO_OBJ(obj) COM_FORWARD_IDisplay_TakeScreenShotToArray_TO ((obj)->)
#define COM_FORWARD_IDisplay_TakeScreenShotToArray_TO_BASE(base) COM_FORWARD_IDisplay_TakeScreenShotToArray_TO (base::)
#define COM_FORWARD_IDisplay_DrawToScreen_TO(smth) NS_IMETHOD DrawToScreen (PRUint32 aScreenId, PRUint8 * aAddress, PRUint32 aX, PRUint32 aY, PRUint32 aWidth, PRUint32 aHeight) { return smth DrawToScreen (aScreenId, aAddress, aX, aY, aWidth, aHeight); }
#define COM_FORWARD_IDisplay_DrawToScreen_TO_OBJ(obj) COM_FORWARD_IDisplay_DrawToScreen_TO ((obj)->)
#define COM_FORWARD_IDisplay_DrawToScreen_TO_BASE(base) COM_FORWARD_IDisplay_DrawToScreen_TO (base::)
#define COM_FORWARD_IDisplay_InvalidateAndUpdate_TO(smth) NS_IMETHOD InvalidateAndUpdate() { return smth InvalidateAndUpdate(); }
#define COM_FORWARD_IDisplay_InvalidateAndUpdate_TO_OBJ(obj) COM_FORWARD_IDisplay_InvalidateAndUpdate_TO ((obj)->)
#define COM_FORWARD_IDisplay_InvalidateAndUpdate_TO_BASE(base) COM_FORWARD_IDisplay_InvalidateAndUpdate_TO (base::)
#define COM_FORWARD_IDisplay_ResizeCompleted_TO(smth) NS_IMETHOD ResizeCompleted (PRUint32 aScreenId) { return smth ResizeCompleted (aScreenId); }
#define COM_FORWARD_IDisplay_ResizeCompleted_TO_OBJ(obj) COM_FORWARD_IDisplay_ResizeCompleted_TO ((obj)->)
#define COM_FORWARD_IDisplay_ResizeCompleted_TO_BASE(base) COM_FORWARD_IDisplay_ResizeCompleted_TO (base::)
#define COM_FORWARD_IDisplay_CompleteVHWACommand_TO(smth) NS_IMETHOD CompleteVHWACommand (PRUint8 * aCommand) { return smth CompleteVHWACommand (aCommand); }
#define COM_FORWARD_IDisplay_CompleteVHWACommand_TO_OBJ(obj) COM_FORWARD_IDisplay_CompleteVHWACommand_TO ((obj)->)
#define COM_FORWARD_IDisplay_CompleteVHWACommand_TO_BASE(base) COM_FORWARD_IDisplay_CompleteVHWACommand_TO (base::)
#define COM_FORWARD_IDisplay_TO(smth) NS_FORWARD_IDISPLAY (smth)
#define COM_FORWARD_IDisplay_TO_OBJ(obj) COM_FORWARD_IDisplay_TO ((obj)->)
#define COM_FORWARD_IDisplay_TO_BASE(base) COM_FORWARD_IDisplay_TO (base::)

/* starting interface:    INetworkAdapter */
#define INETWORKADAPTER_IID_STR "5bdb9df8-a5e1-4322-a139-b7a4a734c790"

#define INETWORKADAPTER_IID \
  {0x5bdb9df8, 0xa5e1, 0x4322, \
    { 0xa1, 0x39, 0xb7, 0xa4, 0xa7, 0x34, 0xc7, 0x90 }}

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 wstring VDENetwork; */
  NS_IMETHOD GetVDENetwork(PRUnichar * *aVDENetwork) = 0;
  NS_IMETHOD SetVDENetwork(const PRUnichar * aVDENetwork) = 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;

  /* readonly attribute INATEngine natDriver; */
  NS_IMETHOD GetNatDriver(INATEngine * *aNatDriver) = 0;

  /* attribute unsigned long bootPriority; */
  NS_IMETHOD GetBootPriority(PRUint32 *aBootPriority) = 0;
  NS_IMETHOD SetBootPriority(PRUint32 aBootPriority) = 0;

  /* void attachToNAT (); */
  NS_IMETHOD AttachToNAT(void) = 0;

  /* void attachToBridgedInterface (); */
  NS_IMETHOD AttachToBridgedInterface(void) = 0;

  /* void attachToInternalNetwork (); */
  NS_IMETHOD AttachToInternalNetwork(void) = 0;

  /* void attachToHostOnlyInterface (); */
  NS_IMETHOD AttachToHostOnlyInterface(void) = 0;

  /* void attachToVDE (); */
  NS_IMETHOD AttachToVDE(void) = 0;

  /* void detach (); */
  NS_IMETHOD Detach(void) = 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 GetVDENetwork(PRUnichar * *aVDENetwork); \
  NS_IMETHOD SetVDENetwork(const PRUnichar * aVDENetwork); \
  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 GetNatDriver(INATEngine * *aNatDriver); \
  NS_IMETHOD GetBootPriority(PRUint32 *aBootPriority); \
  NS_IMETHOD SetBootPriority(PRUint32 aBootPriority); \
  NS_IMETHOD AttachToNAT(void); \
  NS_IMETHOD AttachToBridgedInterface(void); \
  NS_IMETHOD AttachToInternalNetwork(void); \
  NS_IMETHOD AttachToHostOnlyInterface(void); \
  NS_IMETHOD AttachToVDE(void); \
  NS_IMETHOD Detach(void); 

/* 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 GetVDENetwork(PRUnichar * *aVDENetwork) { return _to GetVDENetwork(aVDENetwork); } \
  NS_IMETHOD SetVDENetwork(const PRUnichar * aVDENetwork) { return _to SetVDENetwork(aVDENetwork); } \
  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 GetNatDriver(INATEngine * *aNatDriver) { return _to GetNatDriver(aNatDriver); } \
  NS_IMETHOD GetBootPriority(PRUint32 *aBootPriority) { return _to GetBootPriority(aBootPriority); } \
  NS_IMETHOD SetBootPriority(PRUint32 aBootPriority) { return _to SetBootPriority(aBootPriority); } \
  NS_IMETHOD AttachToNAT(void) { return _to AttachToNAT(); } \
  NS_IMETHOD AttachToBridgedInterface(void) { return _to AttachToBridgedInterface(); } \
  NS_IMETHOD AttachToInternalNetwork(void) { return _to AttachToInternalNetwork(); } \
  NS_IMETHOD AttachToHostOnlyInterface(void) { return _to AttachToHostOnlyInterface(); } \
  NS_IMETHOD AttachToVDE(void) { return _to AttachToVDE(); } \
  NS_IMETHOD Detach(void) { return _to Detach(); } 

/* 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 GetVDENetwork(PRUnichar * *aVDENetwork) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVDENetwork(aVDENetwork); } \
  NS_IMETHOD SetVDENetwork(const PRUnichar * aVDENetwork) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVDENetwork(aVDENetwork); } \
  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 GetNatDriver(INATEngine * *aNatDriver) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNatDriver(aNatDriver); } \
  NS_IMETHOD GetBootPriority(PRUint32 *aBootPriority) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBootPriority(aBootPriority); } \
  NS_IMETHOD SetBootPriority(PRUint32 aBootPriority) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBootPriority(aBootPriority); } \
  NS_IMETHOD AttachToNAT(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->AttachToNAT(); } \
  NS_IMETHOD AttachToBridgedInterface(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->AttachToBridgedInterface(); } \
  NS_IMETHOD AttachToInternalNetwork(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->AttachToInternalNetwork(); } \
  NS_IMETHOD AttachToHostOnlyInterface(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->AttachToHostOnlyInterface(); } \
  NS_IMETHOD AttachToVDE(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->AttachToVDE(); } \
  NS_IMETHOD Detach(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Detach(); } 

#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 wstring VDENetwork; */
NS_IMETHODIMP _MYCLASS_::GetVDENetwork(PRUnichar * *aVDENetwork)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetVDENetwork(const PRUnichar * aVDENetwork)
{
    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;
}

/* readonly attribute INATEngine natDriver; */
NS_IMETHODIMP _MYCLASS_::GetNatDriver(INATEngine * *aNatDriver)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long bootPriority; */
NS_IMETHODIMP _MYCLASS_::GetBootPriority(PRUint32 *aBootPriority)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetBootPriority(PRUint32 aBootPriority)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void attachToNAT (); */
NS_IMETHODIMP _MYCLASS_::AttachToNAT()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void attachToBridgedInterface (); */
NS_IMETHODIMP _MYCLASS_::AttachToBridgedInterface()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void attachToInternalNetwork (); */
NS_IMETHODIMP _MYCLASS_::AttachToInternalNetwork()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void attachToHostOnlyInterface (); */
NS_IMETHODIMP _MYCLASS_::AttachToHostOnlyInterface()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void attachToVDE (); */
NS_IMETHODIMP _MYCLASS_::AttachToVDE()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void detach (); */
NS_IMETHODIMP _MYCLASS_::Detach()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_INetworkAdapter_GETTER_AdapterType_TO(smth) NS_IMETHOD GetAdapterType (PRUint32 * aAdapterType) { return smth GetAdapterType (aAdapterType); }
#define COM_FORWARD_INetworkAdapter_GETTER_AdapterType_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_AdapterType_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_AdapterType_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_AdapterType_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_AdapterType_TO(smth) NS_IMETHOD SetAdapterType (PRUint32 aAdapterType) { return smth SetAdapterType (aAdapterType); }
#define COM_FORWARD_INetworkAdapter_SETTER_AdapterType_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_AdapterType_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_AdapterType_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_AdapterType_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_Slot_TO(smth) NS_IMETHOD GetSlot (PRUint32 * aSlot) { return smth GetSlot (aSlot); }
#define COM_FORWARD_INetworkAdapter_GETTER_Slot_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_Slot_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_Slot_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_Slot_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_Enabled_TO(smth) NS_IMETHOD GetEnabled (PRBool * aEnabled) { return smth GetEnabled (aEnabled); }
#define COM_FORWARD_INetworkAdapter_GETTER_Enabled_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_Enabled_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_Enabled_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_Enabled_TO(smth) NS_IMETHOD SetEnabled (PRBool aEnabled) { return smth SetEnabled (aEnabled); }
#define COM_FORWARD_INetworkAdapter_SETTER_Enabled_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_Enabled_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_Enabled_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_MACAddress_TO(smth) NS_IMETHOD GetMACAddress (PRUnichar * * aMACAddress) { return smth GetMACAddress (aMACAddress); }
#define COM_FORWARD_INetworkAdapter_GETTER_MACAddress_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_MACAddress_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_MACAddress_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_MACAddress_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_MACAddress_TO(smth) NS_IMETHOD SetMACAddress (const PRUnichar * aMACAddress) { return smth SetMACAddress (aMACAddress); }
#define COM_FORWARD_INetworkAdapter_SETTER_MACAddress_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_MACAddress_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_MACAddress_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_MACAddress_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_AttachmentType_TO(smth) NS_IMETHOD GetAttachmentType (PRUint32 * aAttachmentType) { return smth GetAttachmentType (aAttachmentType); }
#define COM_FORWARD_INetworkAdapter_GETTER_AttachmentType_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_AttachmentType_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_AttachmentType_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_AttachmentType_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_HostInterface_TO(smth) NS_IMETHOD GetHostInterface (PRUnichar * * aHostInterface) { return smth GetHostInterface (aHostInterface); }
#define COM_FORWARD_INetworkAdapter_GETTER_HostInterface_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_HostInterface_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_HostInterface_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_HostInterface_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_HostInterface_TO(smth) NS_IMETHOD SetHostInterface (const PRUnichar * aHostInterface) { return smth SetHostInterface (aHostInterface); }
#define COM_FORWARD_INetworkAdapter_SETTER_HostInterface_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_HostInterface_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_HostInterface_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_HostInterface_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_InternalNetwork_TO(smth) NS_IMETHOD GetInternalNetwork (PRUnichar * * aInternalNetwork) { return smth GetInternalNetwork (aInternalNetwork); }
#define COM_FORWARD_INetworkAdapter_GETTER_InternalNetwork_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_InternalNetwork_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_InternalNetwork_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_InternalNetwork_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_InternalNetwork_TO(smth) NS_IMETHOD SetInternalNetwork (const PRUnichar * aInternalNetwork) { return smth SetInternalNetwork (aInternalNetwork); }
#define COM_FORWARD_INetworkAdapter_SETTER_InternalNetwork_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_InternalNetwork_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_InternalNetwork_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_InternalNetwork_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_NATNetwork_TO(smth) NS_IMETHOD GetNATNetwork (PRUnichar * * aNATNetwork) { return smth GetNATNetwork (aNATNetwork); }
#define COM_FORWARD_INetworkAdapter_GETTER_NATNetwork_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_NATNetwork_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_NATNetwork_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_NATNetwork_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_NATNetwork_TO(smth) NS_IMETHOD SetNATNetwork (const PRUnichar * aNATNetwork) { return smth SetNATNetwork (aNATNetwork); }
#define COM_FORWARD_INetworkAdapter_SETTER_NATNetwork_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_NATNetwork_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_NATNetwork_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_NATNetwork_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_VDENetwork_TO(smth) NS_IMETHOD GetVDENetwork (PRUnichar * * aVDENetwork) { return smth GetVDENetwork (aVDENetwork); }
#define COM_FORWARD_INetworkAdapter_GETTER_VDENetwork_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_VDENetwork_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_VDENetwork_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_VDENetwork_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_VDENetwork_TO(smth) NS_IMETHOD SetVDENetwork (const PRUnichar * aVDENetwork) { return smth SetVDENetwork (aVDENetwork); }
#define COM_FORWARD_INetworkAdapter_SETTER_VDENetwork_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_VDENetwork_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_VDENetwork_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_VDENetwork_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_CableConnected_TO(smth) NS_IMETHOD GetCableConnected (PRBool * aCableConnected) { return smth GetCableConnected (aCableConnected); }
#define COM_FORWARD_INetworkAdapter_GETTER_CableConnected_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_CableConnected_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_CableConnected_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_CableConnected_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_CableConnected_TO(smth) NS_IMETHOD SetCableConnected (PRBool aCableConnected) { return smth SetCableConnected (aCableConnected); }
#define COM_FORWARD_INetworkAdapter_SETTER_CableConnected_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_CableConnected_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_CableConnected_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_CableConnected_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_LineSpeed_TO(smth) NS_IMETHOD GetLineSpeed (PRUint32 * aLineSpeed) { return smth GetLineSpeed (aLineSpeed); }
#define COM_FORWARD_INetworkAdapter_GETTER_LineSpeed_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_LineSpeed_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_LineSpeed_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_LineSpeed_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_LineSpeed_TO(smth) NS_IMETHOD SetLineSpeed (PRUint32 aLineSpeed) { return smth SetLineSpeed (aLineSpeed); }
#define COM_FORWARD_INetworkAdapter_SETTER_LineSpeed_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_LineSpeed_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_LineSpeed_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_LineSpeed_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_TraceEnabled_TO(smth) NS_IMETHOD GetTraceEnabled (PRBool * aTraceEnabled) { return smth GetTraceEnabled (aTraceEnabled); }
#define COM_FORWARD_INetworkAdapter_GETTER_TraceEnabled_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_TraceEnabled_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_TraceEnabled_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_TraceEnabled_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_TraceEnabled_TO(smth) NS_IMETHOD SetTraceEnabled (PRBool aTraceEnabled) { return smth SetTraceEnabled (aTraceEnabled); }
#define COM_FORWARD_INetworkAdapter_SETTER_TraceEnabled_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_TraceEnabled_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_TraceEnabled_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_TraceEnabled_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_TraceFile_TO(smth) NS_IMETHOD GetTraceFile (PRUnichar * * aTraceFile) { return smth GetTraceFile (aTraceFile); }
#define COM_FORWARD_INetworkAdapter_GETTER_TraceFile_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_TraceFile_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_TraceFile_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_TraceFile_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_TraceFile_TO(smth) NS_IMETHOD SetTraceFile (const PRUnichar * aTraceFile) { return smth SetTraceFile (aTraceFile); }
#define COM_FORWARD_INetworkAdapter_SETTER_TraceFile_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_TraceFile_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_TraceFile_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_TraceFile_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_NatDriver_TO(smth) NS_IMETHOD GetNatDriver (INATEngine * * aNatDriver) { return smth GetNatDriver (aNatDriver); }
#define COM_FORWARD_INetworkAdapter_GETTER_NatDriver_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_NatDriver_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_NatDriver_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_NatDriver_TO (base::)
#define COM_FORWARD_INetworkAdapter_GETTER_BootPriority_TO(smth) NS_IMETHOD GetBootPriority (PRUint32 * aBootPriority) { return smth GetBootPriority (aBootPriority); }
#define COM_FORWARD_INetworkAdapter_GETTER_BootPriority_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_GETTER_BootPriority_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_GETTER_BootPriority_TO_BASE(base) COM_FORWARD_INetworkAdapter_GETTER_BootPriority_TO (base::)
#define COM_FORWARD_INetworkAdapter_SETTER_BootPriority_TO(smth) NS_IMETHOD SetBootPriority (PRUint32 aBootPriority) { return smth SetBootPriority (aBootPriority); }
#define COM_FORWARD_INetworkAdapter_SETTER_BootPriority_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_SETTER_BootPriority_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_SETTER_BootPriority_TO_BASE(base) COM_FORWARD_INetworkAdapter_SETTER_BootPriority_TO (base::)
#define COM_FORWARD_INetworkAdapter_AttachToNAT_TO(smth) NS_IMETHOD AttachToNAT() { return smth AttachToNAT(); }
#define COM_FORWARD_INetworkAdapter_AttachToNAT_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_AttachToNAT_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_AttachToNAT_TO_BASE(base) COM_FORWARD_INetworkAdapter_AttachToNAT_TO (base::)
#define COM_FORWARD_INetworkAdapter_AttachToBridgedInterface_TO(smth) NS_IMETHOD AttachToBridgedInterface() { return smth AttachToBridgedInterface(); }
#define COM_FORWARD_INetworkAdapter_AttachToBridgedInterface_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_AttachToBridgedInterface_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_AttachToBridgedInterface_TO_BASE(base) COM_FORWARD_INetworkAdapter_AttachToBridgedInterface_TO (base::)
#define COM_FORWARD_INetworkAdapter_AttachToInternalNetwork_TO(smth) NS_IMETHOD AttachToInternalNetwork() { return smth AttachToInternalNetwork(); }
#define COM_FORWARD_INetworkAdapter_AttachToInternalNetwork_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_AttachToInternalNetwork_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_AttachToInternalNetwork_TO_BASE(base) COM_FORWARD_INetworkAdapter_AttachToInternalNetwork_TO (base::)
#define COM_FORWARD_INetworkAdapter_AttachToHostOnlyInterface_TO(smth) NS_IMETHOD AttachToHostOnlyInterface() { return smth AttachToHostOnlyInterface(); }
#define COM_FORWARD_INetworkAdapter_AttachToHostOnlyInterface_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_AttachToHostOnlyInterface_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_AttachToHostOnlyInterface_TO_BASE(base) COM_FORWARD_INetworkAdapter_AttachToHostOnlyInterface_TO (base::)
#define COM_FORWARD_INetworkAdapter_AttachToVDE_TO(smth) NS_IMETHOD AttachToVDE() { return smth AttachToVDE(); }
#define COM_FORWARD_INetworkAdapter_AttachToVDE_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_AttachToVDE_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_AttachToVDE_TO_BASE(base) COM_FORWARD_INetworkAdapter_AttachToVDE_TO (base::)
#define COM_FORWARD_INetworkAdapter_Detach_TO(smth) NS_IMETHOD Detach() { return smth Detach(); }
#define COM_FORWARD_INetworkAdapter_Detach_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_Detach_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_Detach_TO_BASE(base) COM_FORWARD_INetworkAdapter_Detach_TO (base::)
#define COM_FORWARD_INetworkAdapter_TO(smth) NS_FORWARD_INETWORKADAPTER (smth)
#define COM_FORWARD_INetworkAdapter_TO_OBJ(obj) COM_FORWARD_INetworkAdapter_TO ((obj)->)
#define COM_FORWARD_INetworkAdapter_TO_BASE(base) COM_FORWARD_INetworkAdapter_TO (base::)

/* starting interface:    ISerialPort */
#define ISERIALPORT_IID_STR "937f6970-5103-4745-b78e-d28dcf1479a8"

#define ISERIALPORT_IID \
  {0x937f6970, 0x5103, 0x4745, \
    { 0xb7, 0x8e, 0xd2, 0x8d, 0xcf, 0x14, 0x79, 0xa8 }}

class NS_NO_VTABLE ISerialPort : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISERIALPORT_IID)

  /* readonly attribute unsigned long slot; */
  NS_IMETHOD GetSlot(PRUint32 *aSlot) = 0;

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

  /* attribute unsigned long IOBase; */
  NS_IMETHOD GetIOBase(PRUint32 *aIOBase) = 0;
  NS_IMETHOD SetIOBase(PRUint32 aIOBase) = 0;

  /* attribute unsigned long IRQ; */
  NS_IMETHOD GetIRQ(PRUint32 *aIRQ) = 0;
  NS_IMETHOD SetIRQ(PRUint32 aIRQ) = 0;

  /* attribute PRUint32 hostMode; */
  NS_IMETHOD GetHostMode(PRUint32 *aHostMode) = 0;
  NS_IMETHOD SetHostMode(PRUint32 aHostMode) = 0;

  /* attribute boolean server; */
  NS_IMETHOD GetServer(PRBool *aServer) = 0;
  NS_IMETHOD SetServer(PRBool aServer) = 0;

  /* attribute wstring path; */
  NS_IMETHOD GetPath(PRUnichar * *aPath) = 0;
  NS_IMETHOD SetPath(const PRUnichar * aPath) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISERIALPORT \
  NS_IMETHOD GetSlot(PRUint32 *aSlot); \
  NS_IMETHOD GetEnabled(PRBool *aEnabled); \
  NS_IMETHOD SetEnabled(PRBool aEnabled); \
  NS_IMETHOD GetIOBase(PRUint32 *aIOBase); \
  NS_IMETHOD SetIOBase(PRUint32 aIOBase); \
  NS_IMETHOD GetIRQ(PRUint32 *aIRQ); \
  NS_IMETHOD SetIRQ(PRUint32 aIRQ); \
  NS_IMETHOD GetHostMode(PRUint32 *aHostMode); \
  NS_IMETHOD SetHostMode(PRUint32 aHostMode); \
  NS_IMETHOD GetServer(PRBool *aServer); \
  NS_IMETHOD SetServer(PRBool aServer); \
  NS_IMETHOD GetPath(PRUnichar * *aPath); \
  NS_IMETHOD SetPath(const PRUnichar * aPath); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISERIALPORT(_to) \
  NS_IMETHOD GetSlot(PRUint32 *aSlot) { return _to GetSlot(aSlot); } \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return _to GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return _to SetEnabled(aEnabled); } \
  NS_IMETHOD GetIOBase(PRUint32 *aIOBase) { return _to GetIOBase(aIOBase); } \
  NS_IMETHOD SetIOBase(PRUint32 aIOBase) { return _to SetIOBase(aIOBase); } \
  NS_IMETHOD GetIRQ(PRUint32 *aIRQ) { return _to GetIRQ(aIRQ); } \
  NS_IMETHOD SetIRQ(PRUint32 aIRQ) { return _to SetIRQ(aIRQ); } \
  NS_IMETHOD GetHostMode(PRUint32 *aHostMode) { return _to GetHostMode(aHostMode); } \
  NS_IMETHOD SetHostMode(PRUint32 aHostMode) { return _to SetHostMode(aHostMode); } \
  NS_IMETHOD GetServer(PRBool *aServer) { return _to GetServer(aServer); } \
  NS_IMETHOD SetServer(PRBool aServer) { return _to SetServer(aServer); } \
  NS_IMETHOD GetPath(PRUnichar * *aPath) { return _to GetPath(aPath); } \
  NS_IMETHOD SetPath(const PRUnichar * aPath) { return _to SetPath(aPath); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISERIALPORT(_to) \
  NS_IMETHOD GetSlot(PRUint32 *aSlot) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSlot(aSlot); } \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEnabled(aEnabled); } \
  NS_IMETHOD GetIOBase(PRUint32 *aIOBase) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIOBase(aIOBase); } \
  NS_IMETHOD SetIOBase(PRUint32 aIOBase) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIOBase(aIOBase); } \
  NS_IMETHOD GetIRQ(PRUint32 *aIRQ) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIRQ(aIRQ); } \
  NS_IMETHOD SetIRQ(PRUint32 aIRQ) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIRQ(aIRQ); } \
  NS_IMETHOD GetHostMode(PRUint32 *aHostMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHostMode(aHostMode); } \
  NS_IMETHOD SetHostMode(PRUint32 aHostMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHostMode(aHostMode); } \
  NS_IMETHOD GetServer(PRBool *aServer) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetServer(aServer); } \
  NS_IMETHOD SetServer(PRBool aServer) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetServer(aServer); } \
  NS_IMETHOD GetPath(PRUnichar * *aPath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPath(aPath); } \
  NS_IMETHOD SetPath(const PRUnichar * aPath) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPath(aPath); } 

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

/* Header file */
class _MYCLASS_ : public ISerialPort
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISERIALPORT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute unsigned long slot; */
NS_IMETHODIMP _MYCLASS_::GetSlot(PRUint32 *aSlot)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean enabled; */
NS_IMETHODIMP _MYCLASS_::GetEnabled(PRBool *aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetEnabled(PRBool aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long IOBase; */
NS_IMETHODIMP _MYCLASS_::GetIOBase(PRUint32 *aIOBase)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIOBase(PRUint32 aIOBase)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long IRQ; */
NS_IMETHODIMP _MYCLASS_::GetIRQ(PRUint32 *aIRQ)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIRQ(PRUint32 aIRQ)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 hostMode; */
NS_IMETHODIMP _MYCLASS_::GetHostMode(PRUint32 *aHostMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetHostMode(PRUint32 aHostMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean server; */
NS_IMETHODIMP _MYCLASS_::GetServer(PRBool *aServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetServer(PRBool aServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring path; */
NS_IMETHODIMP _MYCLASS_::GetPath(PRUnichar * *aPath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPath(const PRUnichar * aPath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_ISerialPort_GETTER_Slot_TO(smth) NS_IMETHOD GetSlot (PRUint32 * aSlot) { return smth GetSlot (aSlot); }
#define COM_FORWARD_ISerialPort_GETTER_Slot_TO_OBJ(obj) COM_FORWARD_ISerialPort_GETTER_Slot_TO ((obj)->)
#define COM_FORWARD_ISerialPort_GETTER_Slot_TO_BASE(base) COM_FORWARD_ISerialPort_GETTER_Slot_TO (base::)
#define COM_FORWARD_ISerialPort_GETTER_Enabled_TO(smth) NS_IMETHOD GetEnabled (PRBool * aEnabled) { return smth GetEnabled (aEnabled); }
#define COM_FORWARD_ISerialPort_GETTER_Enabled_TO_OBJ(obj) COM_FORWARD_ISerialPort_GETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_ISerialPort_GETTER_Enabled_TO_BASE(base) COM_FORWARD_ISerialPort_GETTER_Enabled_TO (base::)
#define COM_FORWARD_ISerialPort_SETTER_Enabled_TO(smth) NS_IMETHOD SetEnabled (PRBool aEnabled) { return smth SetEnabled (aEnabled); }
#define COM_FORWARD_ISerialPort_SETTER_Enabled_TO_OBJ(obj) COM_FORWARD_ISerialPort_SETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_ISerialPort_SETTER_Enabled_TO_BASE(base) COM_FORWARD_ISerialPort_SETTER_Enabled_TO (base::)
#define COM_FORWARD_ISerialPort_GETTER_IOBase_TO(smth) NS_IMETHOD GetIOBase (PRUint32 * aIOBase) { return smth GetIOBase (aIOBase); }
#define COM_FORWARD_ISerialPort_GETTER_IOBase_TO_OBJ(obj) COM_FORWARD_ISerialPort_GETTER_IOBase_TO ((obj)->)
#define COM_FORWARD_ISerialPort_GETTER_IOBase_TO_BASE(base) COM_FORWARD_ISerialPort_GETTER_IOBase_TO (base::)
#define COM_FORWARD_ISerialPort_SETTER_IOBase_TO(smth) NS_IMETHOD SetIOBase (PRUint32 aIOBase) { return smth SetIOBase (aIOBase); }
#define COM_FORWARD_ISerialPort_SETTER_IOBase_TO_OBJ(obj) COM_FORWARD_ISerialPort_SETTER_IOBase_TO ((obj)->)
#define COM_FORWARD_ISerialPort_SETTER_IOBase_TO_BASE(base) COM_FORWARD_ISerialPort_SETTER_IOBase_TO (base::)
#define COM_FORWARD_ISerialPort_GETTER_IRQ_TO(smth) NS_IMETHOD GetIRQ (PRUint32 * aIRQ) { return smth GetIRQ (aIRQ); }
#define COM_FORWARD_ISerialPort_GETTER_IRQ_TO_OBJ(obj) COM_FORWARD_ISerialPort_GETTER_IRQ_TO ((obj)->)
#define COM_FORWARD_ISerialPort_GETTER_IRQ_TO_BASE(base) COM_FORWARD_ISerialPort_GETTER_IRQ_TO (base::)
#define COM_FORWARD_ISerialPort_SETTER_IRQ_TO(smth) NS_IMETHOD SetIRQ (PRUint32 aIRQ) { return smth SetIRQ (aIRQ); }
#define COM_FORWARD_ISerialPort_SETTER_IRQ_TO_OBJ(obj) COM_FORWARD_ISerialPort_SETTER_IRQ_TO ((obj)->)
#define COM_FORWARD_ISerialPort_SETTER_IRQ_TO_BASE(base) COM_FORWARD_ISerialPort_SETTER_IRQ_TO (base::)
#define COM_FORWARD_ISerialPort_GETTER_HostMode_TO(smth) NS_IMETHOD GetHostMode (PRUint32 * aHostMode) { return smth GetHostMode (aHostMode); }
#define COM_FORWARD_ISerialPort_GETTER_HostMode_TO_OBJ(obj) COM_FORWARD_ISerialPort_GETTER_HostMode_TO ((obj)->)
#define COM_FORWARD_ISerialPort_GETTER_HostMode_TO_BASE(base) COM_FORWARD_ISerialPort_GETTER_HostMode_TO (base::)
#define COM_FORWARD_ISerialPort_SETTER_HostMode_TO(smth) NS_IMETHOD SetHostMode (PRUint32 aHostMode) { return smth SetHostMode (aHostMode); }
#define COM_FORWARD_ISerialPort_SETTER_HostMode_TO_OBJ(obj) COM_FORWARD_ISerialPort_SETTER_HostMode_TO ((obj)->)
#define COM_FORWARD_ISerialPort_SETTER_HostMode_TO_BASE(base) COM_FORWARD_ISerialPort_SETTER_HostMode_TO (base::)
#define COM_FORWARD_ISerialPort_GETTER_Server_TO(smth) NS_IMETHOD GetServer (PRBool * aServer) { return smth GetServer (aServer); }
#define COM_FORWARD_ISerialPort_GETTER_Server_TO_OBJ(obj) COM_FORWARD_ISerialPort_GETTER_Server_TO ((obj)->)
#define COM_FORWARD_ISerialPort_GETTER_Server_TO_BASE(base) COM_FORWARD_ISerialPort_GETTER_Server_TO (base::)
#define COM_FORWARD_ISerialPort_SETTER_Server_TO(smth) NS_IMETHOD SetServer (PRBool aServer) { return smth SetServer (aServer); }
#define COM_FORWARD_ISerialPort_SETTER_Server_TO_OBJ(obj) COM_FORWARD_ISerialPort_SETTER_Server_TO ((obj)->)
#define COM_FORWARD_ISerialPort_SETTER_Server_TO_BASE(base) COM_FORWARD_ISerialPort_SETTER_Server_TO (base::)
#define COM_FORWARD_ISerialPort_GETTER_Path_TO(smth) NS_IMETHOD GetPath (PRUnichar * * aPath) { return smth GetPath (aPath); }
#define COM_FORWARD_ISerialPort_GETTER_Path_TO_OBJ(obj) COM_FORWARD_ISerialPort_GETTER_Path_TO ((obj)->)
#define COM_FORWARD_ISerialPort_GETTER_Path_TO_BASE(base) COM_FORWARD_ISerialPort_GETTER_Path_TO (base::)
#define COM_FORWARD_ISerialPort_SETTER_Path_TO(smth) NS_IMETHOD SetPath (const PRUnichar * aPath) { return smth SetPath (aPath); }
#define COM_FORWARD_ISerialPort_SETTER_Path_TO_OBJ(obj) COM_FORWARD_ISerialPort_SETTER_Path_TO ((obj)->)
#define COM_FORWARD_ISerialPort_SETTER_Path_TO_BASE(base) COM_FORWARD_ISerialPort_SETTER_Path_TO (base::)
#define COM_FORWARD_ISerialPort_TO(smth) NS_FORWARD_ISERIALPORT (smth)
#define COM_FORWARD_ISerialPort_TO_OBJ(obj) COM_FORWARD_ISerialPort_TO ((obj)->)
#define COM_FORWARD_ISerialPort_TO_BASE(base) COM_FORWARD_ISerialPort_TO (base::)

/* starting interface:    IParallelPort */
#define IPARALLELPORT_IID_STR "0c925f06-dd10-4b77-8de8-294d738c3214"

#define IPARALLELPORT_IID \
  {0x0c925f06, 0xdd10, 0x4b77, \
    { 0x8d, 0xe8, 0x29, 0x4d, 0x73, 0x8c, 0x32, 0x14 }}

class NS_NO_VTABLE IParallelPort : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IPARALLELPORT_IID)

  /* readonly attribute unsigned long slot; */
  NS_IMETHOD GetSlot(PRUint32 *aSlot) = 0;

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

  /* attribute unsigned long IOBase; */
  NS_IMETHOD GetIOBase(PRUint32 *aIOBase) = 0;
  NS_IMETHOD SetIOBase(PRUint32 aIOBase) = 0;

  /* attribute unsigned long IRQ; */
  NS_IMETHOD GetIRQ(PRUint32 *aIRQ) = 0;
  NS_IMETHOD SetIRQ(PRUint32 aIRQ) = 0;

  /* attribute wstring path; */
  NS_IMETHOD GetPath(PRUnichar * *aPath) = 0;
  NS_IMETHOD SetPath(const PRUnichar * aPath) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IPARALLELPORT \
  NS_IMETHOD GetSlot(PRUint32 *aSlot); \
  NS_IMETHOD GetEnabled(PRBool *aEnabled); \
  NS_IMETHOD SetEnabled(PRBool aEnabled); \
  NS_IMETHOD GetIOBase(PRUint32 *aIOBase); \
  NS_IMETHOD SetIOBase(PRUint32 aIOBase); \
  NS_IMETHOD GetIRQ(PRUint32 *aIRQ); \
  NS_IMETHOD SetIRQ(PRUint32 aIRQ); \
  NS_IMETHOD GetPath(PRUnichar * *aPath); \
  NS_IMETHOD SetPath(const PRUnichar * aPath); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IPARALLELPORT(_to) \
  NS_IMETHOD GetSlot(PRUint32 *aSlot) { return _to GetSlot(aSlot); } \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return _to GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return _to SetEnabled(aEnabled); } \
  NS_IMETHOD GetIOBase(PRUint32 *aIOBase) { return _to GetIOBase(aIOBase); } \
  NS_IMETHOD SetIOBase(PRUint32 aIOBase) { return _to SetIOBase(aIOBase); } \
  NS_IMETHOD GetIRQ(PRUint32 *aIRQ) { return _to GetIRQ(aIRQ); } \
  NS_IMETHOD SetIRQ(PRUint32 aIRQ) { return _to SetIRQ(aIRQ); } \
  NS_IMETHOD GetPath(PRUnichar * *aPath) { return _to GetPath(aPath); } \
  NS_IMETHOD SetPath(const PRUnichar * aPath) { return _to SetPath(aPath); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IPARALLELPORT(_to) \
  NS_IMETHOD GetSlot(PRUint32 *aSlot) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSlot(aSlot); } \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEnabled(aEnabled); } \
  NS_IMETHOD GetIOBase(PRUint32 *aIOBase) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIOBase(aIOBase); } \
  NS_IMETHOD SetIOBase(PRUint32 aIOBase) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIOBase(aIOBase); } \
  NS_IMETHOD GetIRQ(PRUint32 *aIRQ) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIRQ(aIRQ); } \
  NS_IMETHOD SetIRQ(PRUint32 aIRQ) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIRQ(aIRQ); } \
  NS_IMETHOD GetPath(PRUnichar * *aPath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPath(aPath); } \
  NS_IMETHOD SetPath(const PRUnichar * aPath) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPath(aPath); } 

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

/* Header file */
class _MYCLASS_ : public IParallelPort
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IPARALLELPORT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute unsigned long slot; */
NS_IMETHODIMP _MYCLASS_::GetSlot(PRUint32 *aSlot)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean enabled; */
NS_IMETHODIMP _MYCLASS_::GetEnabled(PRBool *aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetEnabled(PRBool aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long IOBase; */
NS_IMETHODIMP _MYCLASS_::GetIOBase(PRUint32 *aIOBase)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIOBase(PRUint32 aIOBase)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long IRQ; */
NS_IMETHODIMP _MYCLASS_::GetIRQ(PRUint32 *aIRQ)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIRQ(PRUint32 aIRQ)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring path; */
NS_IMETHODIMP _MYCLASS_::GetPath(PRUnichar * *aPath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPath(const PRUnichar * aPath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IParallelPort_GETTER_Slot_TO(smth) NS_IMETHOD GetSlot (PRUint32 * aSlot) { return smth GetSlot (aSlot); }
#define COM_FORWARD_IParallelPort_GETTER_Slot_TO_OBJ(obj) COM_FORWARD_IParallelPort_GETTER_Slot_TO ((obj)->)
#define COM_FORWARD_IParallelPort_GETTER_Slot_TO_BASE(base) COM_FORWARD_IParallelPort_GETTER_Slot_TO (base::)
#define COM_FORWARD_IParallelPort_GETTER_Enabled_TO(smth) NS_IMETHOD GetEnabled (PRBool * aEnabled) { return smth GetEnabled (aEnabled); }
#define COM_FORWARD_IParallelPort_GETTER_Enabled_TO_OBJ(obj) COM_FORWARD_IParallelPort_GETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_IParallelPort_GETTER_Enabled_TO_BASE(base) COM_FORWARD_IParallelPort_GETTER_Enabled_TO (base::)
#define COM_FORWARD_IParallelPort_SETTER_Enabled_TO(smth) NS_IMETHOD SetEnabled (PRBool aEnabled) { return smth SetEnabled (aEnabled); }
#define COM_FORWARD_IParallelPort_SETTER_Enabled_TO_OBJ(obj) COM_FORWARD_IParallelPort_SETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_IParallelPort_SETTER_Enabled_TO_BASE(base) COM_FORWARD_IParallelPort_SETTER_Enabled_TO (base::)
#define COM_FORWARD_IParallelPort_GETTER_IOBase_TO(smth) NS_IMETHOD GetIOBase (PRUint32 * aIOBase) { return smth GetIOBase (aIOBase); }
#define COM_FORWARD_IParallelPort_GETTER_IOBase_TO_OBJ(obj) COM_FORWARD_IParallelPort_GETTER_IOBase_TO ((obj)->)
#define COM_FORWARD_IParallelPort_GETTER_IOBase_TO_BASE(base) COM_FORWARD_IParallelPort_GETTER_IOBase_TO (base::)
#define COM_FORWARD_IParallelPort_SETTER_IOBase_TO(smth) NS_IMETHOD SetIOBase (PRUint32 aIOBase) { return smth SetIOBase (aIOBase); }
#define COM_FORWARD_IParallelPort_SETTER_IOBase_TO_OBJ(obj) COM_FORWARD_IParallelPort_SETTER_IOBase_TO ((obj)->)
#define COM_FORWARD_IParallelPort_SETTER_IOBase_TO_BASE(base) COM_FORWARD_IParallelPort_SETTER_IOBase_TO (base::)
#define COM_FORWARD_IParallelPort_GETTER_IRQ_TO(smth) NS_IMETHOD GetIRQ (PRUint32 * aIRQ) { return smth GetIRQ (aIRQ); }
#define COM_FORWARD_IParallelPort_GETTER_IRQ_TO_OBJ(obj) COM_FORWARD_IParallelPort_GETTER_IRQ_TO ((obj)->)
#define COM_FORWARD_IParallelPort_GETTER_IRQ_TO_BASE(base) COM_FORWARD_IParallelPort_GETTER_IRQ_TO (base::)
#define COM_FORWARD_IParallelPort_SETTER_IRQ_TO(smth) NS_IMETHOD SetIRQ (PRUint32 aIRQ) { return smth SetIRQ (aIRQ); }
#define COM_FORWARD_IParallelPort_SETTER_IRQ_TO_OBJ(obj) COM_FORWARD_IParallelPort_SETTER_IRQ_TO ((obj)->)
#define COM_FORWARD_IParallelPort_SETTER_IRQ_TO_BASE(base) COM_FORWARD_IParallelPort_SETTER_IRQ_TO (base::)
#define COM_FORWARD_IParallelPort_GETTER_Path_TO(smth) NS_IMETHOD GetPath (PRUnichar * * aPath) { return smth GetPath (aPath); }
#define COM_FORWARD_IParallelPort_GETTER_Path_TO_OBJ(obj) COM_FORWARD_IParallelPort_GETTER_Path_TO ((obj)->)
#define COM_FORWARD_IParallelPort_GETTER_Path_TO_BASE(base) COM_FORWARD_IParallelPort_GETTER_Path_TO (base::)
#define COM_FORWARD_IParallelPort_SETTER_Path_TO(smth) NS_IMETHOD SetPath (const PRUnichar * aPath) { return smth SetPath (aPath); }
#define COM_FORWARD_IParallelPort_SETTER_Path_TO_OBJ(obj) COM_FORWARD_IParallelPort_SETTER_Path_TO ((obj)->)
#define COM_FORWARD_IParallelPort_SETTER_Path_TO_BASE(base) COM_FORWARD_IParallelPort_SETTER_Path_TO (base::)
#define COM_FORWARD_IParallelPort_TO(smth) NS_FORWARD_IPARALLELPORT (smth)
#define COM_FORWARD_IParallelPort_TO_OBJ(obj) COM_FORWARD_IParallelPort_TO ((obj)->)
#define COM_FORWARD_IParallelPort_TO_BASE(base) COM_FORWARD_IParallelPort_TO (base::)

/* starting interface:    IMachineDebugger */
#define IMACHINEDEBUGGER_IID_STR "b0b2a2dd-0627-4502-91c2-ddc5e77609e0"

#define IMACHINEDEBUGGER_IID \
  {0xb0b2a2dd, 0x0627, 0x4502, \
    { 0x91, 0xc2, 0xdd, 0xc5, 0xe7, 0x76, 0x09, 0xe0 }}

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 HWVirtExNestedPagingEnabled; */
  NS_IMETHOD GetHWVirtExNestedPagingEnabled(PRBool *aHWVirtExNestedPagingEnabled) = 0;

  /* readonly attribute boolean HWVirtExVPIDEnabled; */
  NS_IMETHOD GetHWVirtExVPIDEnabled(PRBool *aHWVirtExVPIDEnabled) = 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;

  /* void injectNMI (); */
  NS_IMETHOD InjectNMI(void) = 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 GetHWVirtExNestedPagingEnabled(PRBool *aHWVirtExNestedPagingEnabled); \
  NS_IMETHOD GetHWVirtExVPIDEnabled(PRBool *aHWVirtExVPIDEnabled); \
  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); \
  NS_IMETHOD InjectNMI(void); 

/* 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 GetHWVirtExNestedPagingEnabled(PRBool *aHWVirtExNestedPagingEnabled) { return _to GetHWVirtExNestedPagingEnabled(aHWVirtExNestedPagingEnabled); } \
  NS_IMETHOD GetHWVirtExVPIDEnabled(PRBool *aHWVirtExVPIDEnabled) { return _to GetHWVirtExVPIDEnabled(aHWVirtExVPIDEnabled); } \
  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); } \
  NS_IMETHOD InjectNMI(void) { return _to InjectNMI(); } 

/* 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 GetHWVirtExNestedPagingEnabled(PRBool *aHWVirtExNestedPagingEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHWVirtExNestedPagingEnabled(aHWVirtExNestedPagingEnabled); } \
  NS_IMETHOD GetHWVirtExVPIDEnabled(PRBool *aHWVirtExVPIDEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHWVirtExVPIDEnabled(aHWVirtExVPIDEnabled); } \
  NS_IMETHOD 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); } \
  NS_IMETHOD InjectNMI(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->InjectNMI(); } 

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

/* readonly attribute boolean HWVirtExVPIDEnabled; */
NS_IMETHODIMP _MYCLASS_::GetHWVirtExVPIDEnabled(PRBool *aHWVirtExVPIDEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void injectNMI (); */
NS_IMETHODIMP _MYCLASS_::InjectNMI()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IMachineDebugger_GETTER_Singlestep_TO(smth) NS_IMETHOD GetSinglestep (PRBool * aSinglestep) { return smth GetSinglestep (aSinglestep); }
#define COM_FORWARD_IMachineDebugger_GETTER_Singlestep_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_Singlestep_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_Singlestep_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_Singlestep_TO (base::)
#define COM_FORWARD_IMachineDebugger_SETTER_Singlestep_TO(smth) NS_IMETHOD SetSinglestep (PRBool aSinglestep) { return smth SetSinglestep (aSinglestep); }
#define COM_FORWARD_IMachineDebugger_SETTER_Singlestep_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_SETTER_Singlestep_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_SETTER_Singlestep_TO_BASE(base) COM_FORWARD_IMachineDebugger_SETTER_Singlestep_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_RecompileUser_TO(smth) NS_IMETHOD GetRecompileUser (PRBool * aRecompileUser) { return smth GetRecompileUser (aRecompileUser); }
#define COM_FORWARD_IMachineDebugger_GETTER_RecompileUser_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_RecompileUser_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_RecompileUser_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_RecompileUser_TO (base::)
#define COM_FORWARD_IMachineDebugger_SETTER_RecompileUser_TO(smth) NS_IMETHOD SetRecompileUser (PRBool aRecompileUser) { return smth SetRecompileUser (aRecompileUser); }
#define COM_FORWARD_IMachineDebugger_SETTER_RecompileUser_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_SETTER_RecompileUser_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_SETTER_RecompileUser_TO_BASE(base) COM_FORWARD_IMachineDebugger_SETTER_RecompileUser_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_RecompileSupervisor_TO(smth) NS_IMETHOD GetRecompileSupervisor (PRBool * aRecompileSupervisor) { return smth GetRecompileSupervisor (aRecompileSupervisor); }
#define COM_FORWARD_IMachineDebugger_GETTER_RecompileSupervisor_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_RecompileSupervisor_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_RecompileSupervisor_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_RecompileSupervisor_TO (base::)
#define COM_FORWARD_IMachineDebugger_SETTER_RecompileSupervisor_TO(smth) NS_IMETHOD SetRecompileSupervisor (PRBool aRecompileSupervisor) { return smth SetRecompileSupervisor (aRecompileSupervisor); }
#define COM_FORWARD_IMachineDebugger_SETTER_RecompileSupervisor_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_SETTER_RecompileSupervisor_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_SETTER_RecompileSupervisor_TO_BASE(base) COM_FORWARD_IMachineDebugger_SETTER_RecompileSupervisor_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_PATMEnabled_TO(smth) NS_IMETHOD GetPATMEnabled (PRBool * aPATMEnabled) { return smth GetPATMEnabled (aPATMEnabled); }
#define COM_FORWARD_IMachineDebugger_GETTER_PATMEnabled_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_PATMEnabled_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_PATMEnabled_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_PATMEnabled_TO (base::)
#define COM_FORWARD_IMachineDebugger_SETTER_PATMEnabled_TO(smth) NS_IMETHOD SetPATMEnabled (PRBool aPATMEnabled) { return smth SetPATMEnabled (aPATMEnabled); }
#define COM_FORWARD_IMachineDebugger_SETTER_PATMEnabled_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_SETTER_PATMEnabled_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_SETTER_PATMEnabled_TO_BASE(base) COM_FORWARD_IMachineDebugger_SETTER_PATMEnabled_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_CSAMEnabled_TO(smth) NS_IMETHOD GetCSAMEnabled (PRBool * aCSAMEnabled) { return smth GetCSAMEnabled (aCSAMEnabled); }
#define COM_FORWARD_IMachineDebugger_GETTER_CSAMEnabled_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_CSAMEnabled_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_CSAMEnabled_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_CSAMEnabled_TO (base::)
#define COM_FORWARD_IMachineDebugger_SETTER_CSAMEnabled_TO(smth) NS_IMETHOD SetCSAMEnabled (PRBool aCSAMEnabled) { return smth SetCSAMEnabled (aCSAMEnabled); }
#define COM_FORWARD_IMachineDebugger_SETTER_CSAMEnabled_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_SETTER_CSAMEnabled_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_SETTER_CSAMEnabled_TO_BASE(base) COM_FORWARD_IMachineDebugger_SETTER_CSAMEnabled_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_LogEnabled_TO(smth) NS_IMETHOD GetLogEnabled (PRBool * aLogEnabled) { return smth GetLogEnabled (aLogEnabled); }
#define COM_FORWARD_IMachineDebugger_GETTER_LogEnabled_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_LogEnabled_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_LogEnabled_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_LogEnabled_TO (base::)
#define COM_FORWARD_IMachineDebugger_SETTER_LogEnabled_TO(smth) NS_IMETHOD SetLogEnabled (PRBool aLogEnabled) { return smth SetLogEnabled (aLogEnabled); }
#define COM_FORWARD_IMachineDebugger_SETTER_LogEnabled_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_SETTER_LogEnabled_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_SETTER_LogEnabled_TO_BASE(base) COM_FORWARD_IMachineDebugger_SETTER_LogEnabled_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_HWVirtExEnabled_TO(smth) NS_IMETHOD GetHWVirtExEnabled (PRBool * aHWVirtExEnabled) { return smth GetHWVirtExEnabled (aHWVirtExEnabled); }
#define COM_FORWARD_IMachineDebugger_GETTER_HWVirtExEnabled_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_HWVirtExEnabled_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_HWVirtExEnabled_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_HWVirtExEnabled_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_HWVirtExNestedPagingEnabled_TO(smth) NS_IMETHOD GetHWVirtExNestedPagingEnabled (PRBool * aHWVirtExNestedPagingEnabled) { return smth GetHWVirtExNestedPagingEnabled (aHWVirtExNestedPagingEnabled); }
#define COM_FORWARD_IMachineDebugger_GETTER_HWVirtExNestedPagingEnabled_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_HWVirtExNestedPagingEnabled_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_HWVirtExNestedPagingEnabled_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_HWVirtExNestedPagingEnabled_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_HWVirtExVPIDEnabled_TO(smth) NS_IMETHOD GetHWVirtExVPIDEnabled (PRBool * aHWVirtExVPIDEnabled) { return smth GetHWVirtExVPIDEnabled (aHWVirtExVPIDEnabled); }
#define COM_FORWARD_IMachineDebugger_GETTER_HWVirtExVPIDEnabled_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_HWVirtExVPIDEnabled_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_HWVirtExVPIDEnabled_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_HWVirtExVPIDEnabled_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_PAEEnabled_TO(smth) NS_IMETHOD GetPAEEnabled (PRBool * aPAEEnabled) { return smth GetPAEEnabled (aPAEEnabled); }
#define COM_FORWARD_IMachineDebugger_GETTER_PAEEnabled_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_PAEEnabled_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_PAEEnabled_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_PAEEnabled_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_VirtualTimeRate_TO(smth) NS_IMETHOD GetVirtualTimeRate (PRUint32 * aVirtualTimeRate) { return smth GetVirtualTimeRate (aVirtualTimeRate); }
#define COM_FORWARD_IMachineDebugger_GETTER_VirtualTimeRate_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_VirtualTimeRate_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_VirtualTimeRate_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_VirtualTimeRate_TO (base::)
#define COM_FORWARD_IMachineDebugger_SETTER_VirtualTimeRate_TO(smth) NS_IMETHOD SetVirtualTimeRate (PRUint32 aVirtualTimeRate) { return smth SetVirtualTimeRate (aVirtualTimeRate); }
#define COM_FORWARD_IMachineDebugger_SETTER_VirtualTimeRate_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_SETTER_VirtualTimeRate_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_SETTER_VirtualTimeRate_TO_BASE(base) COM_FORWARD_IMachineDebugger_SETTER_VirtualTimeRate_TO (base::)
#define COM_FORWARD_IMachineDebugger_GETTER_VM_TO(smth) NS_IMETHOD GetVM (PRUint64 * aVM) { return smth GetVM (aVM); }
#define COM_FORWARD_IMachineDebugger_GETTER_VM_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GETTER_VM_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GETTER_VM_TO_BASE(base) COM_FORWARD_IMachineDebugger_GETTER_VM_TO (base::)
#define COM_FORWARD_IMachineDebugger_ResetStats_TO(smth) NS_IMETHOD ResetStats (PRUnichar * aPattern) { return smth ResetStats (aPattern); }
#define COM_FORWARD_IMachineDebugger_ResetStats_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_ResetStats_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_ResetStats_TO_BASE(base) COM_FORWARD_IMachineDebugger_ResetStats_TO (base::)
#define COM_FORWARD_IMachineDebugger_DumpStats_TO(smth) NS_IMETHOD DumpStats (PRUnichar * aPattern) { return smth DumpStats (aPattern); }
#define COM_FORWARD_IMachineDebugger_DumpStats_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_DumpStats_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_DumpStats_TO_BASE(base) COM_FORWARD_IMachineDebugger_DumpStats_TO (base::)
#define COM_FORWARD_IMachineDebugger_GetStats_TO(smth) NS_IMETHOD GetStats (PRUnichar * aPattern, PRBool aWithDescriptions, PRUnichar * * aStats) { return smth GetStats (aPattern, aWithDescriptions, aStats); }
#define COM_FORWARD_IMachineDebugger_GetStats_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_GetStats_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_GetStats_TO_BASE(base) COM_FORWARD_IMachineDebugger_GetStats_TO (base::)
#define COM_FORWARD_IMachineDebugger_InjectNMI_TO(smth) NS_IMETHOD InjectNMI() { return smth InjectNMI(); }
#define COM_FORWARD_IMachineDebugger_InjectNMI_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_InjectNMI_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_InjectNMI_TO_BASE(base) COM_FORWARD_IMachineDebugger_InjectNMI_TO (base::)
#define COM_FORWARD_IMachineDebugger_TO(smth) NS_FORWARD_IMACHINEDEBUGGER (smth)
#define COM_FORWARD_IMachineDebugger_TO_OBJ(obj) COM_FORWARD_IMachineDebugger_TO ((obj)->)
#define COM_FORWARD_IMachineDebugger_TO_BASE(base) COM_FORWARD_IMachineDebugger_TO (base::)

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

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

class NS_NO_VTABLE IUSBController : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IUSBCONTROLLER_IID)

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

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

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

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

  /* void getDeviceFilters (out unsigned long deviceFiltersSize, [array, size_is (deviceFiltersSize), retval] out IUSBDeviceFilter deviceFilters); */
  NS_IMETHOD GetDeviceFilters(PRUint32 *deviceFiltersSize, IUSBDeviceFilter ***deviceFilters) = 0;

  /* void createDeviceFilter (in wstring name, [retval] out IUSBDeviceFilter filter); */
  NS_IMETHOD CreateDeviceFilter(const PRUnichar *name, IUSBDeviceFilter **filter) = 0;

  /* void insertDeviceFilter (in unsigned long position, in IUSBDeviceFilter filter); */
  NS_IMETHOD InsertDeviceFilter(PRUint32 position, IUSBDeviceFilter *filter) = 0;

  /* void removeDeviceFilter (in unsigned long position, [retval] out IUSBDeviceFilter filter); */
  NS_IMETHOD RemoveDeviceFilter(PRUint32 position, IUSBDeviceFilter **filter) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IUSBCONTROLLER \
  NS_IMETHOD GetEnabled(PRBool *aEnabled); \
  NS_IMETHOD SetEnabled(PRBool aEnabled); \
  NS_IMETHOD GetEnabledEhci(PRBool *aEnabledEhci); \
  NS_IMETHOD SetEnabledEhci(PRBool aEnabledEhci); \
  NS_IMETHOD GetProxyAvailable(PRBool *aProxyAvailable); \
  NS_IMETHOD GetUSBStandard(PRUint16 *aUSBStandard); \
  NS_IMETHOD GetDeviceFilters(PRUint32 *deviceFiltersSize, IUSBDeviceFilter ***deviceFilters); \
  NS_IMETHOD CreateDeviceFilter(const PRUnichar *name, IUSBDeviceFilter **filter); \
  NS_IMETHOD InsertDeviceFilter(PRUint32 position, IUSBDeviceFilter *filter); \
  NS_IMETHOD RemoveDeviceFilter(PRUint32 position, IUSBDeviceFilter **filter); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IUSBCONTROLLER(_to) \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return _to GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return _to SetEnabled(aEnabled); } \
  NS_IMETHOD GetEnabledEhci(PRBool *aEnabledEhci) { return _to GetEnabledEhci(aEnabledEhci); } \
  NS_IMETHOD SetEnabledEhci(PRBool aEnabledEhci) { return _to SetEnabledEhci(aEnabledEhci); } \
  NS_IMETHOD GetProxyAvailable(PRBool *aProxyAvailable) { return _to GetProxyAvailable(aProxyAvailable); } \
  NS_IMETHOD GetUSBStandard(PRUint16 *aUSBStandard) { return _to GetUSBStandard(aUSBStandard); } \
  NS_IMETHOD GetDeviceFilters(PRUint32 *deviceFiltersSize, IUSBDeviceFilter ***deviceFilters) { return _to GetDeviceFilters(deviceFiltersSize, deviceFilters); } \
  NS_IMETHOD CreateDeviceFilter(const PRUnichar *name, IUSBDeviceFilter **filter) { return _to CreateDeviceFilter(name, filter); } \
  NS_IMETHOD InsertDeviceFilter(PRUint32 position, IUSBDeviceFilter *filter) { return _to InsertDeviceFilter(position, filter); } \
  NS_IMETHOD RemoveDeviceFilter(PRUint32 position, IUSBDeviceFilter **filter) { return _to RemoveDeviceFilter(position, filter); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IUSBCONTROLLER(_to) \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEnabled(aEnabled); } \
  NS_IMETHOD GetEnabledEhci(PRBool *aEnabledEhci) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnabledEhci(aEnabledEhci); } \
  NS_IMETHOD SetEnabledEhci(PRBool aEnabledEhci) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEnabledEhci(aEnabledEhci); } \
  NS_IMETHOD GetProxyAvailable(PRBool *aProxyAvailable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProxyAvailable(aProxyAvailable); } \
  NS_IMETHOD GetUSBStandard(PRUint16 *aUSBStandard) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUSBStandard(aUSBStandard); } \
  NS_IMETHOD GetDeviceFilters(PRUint32 *deviceFiltersSize, IUSBDeviceFilter ***deviceFilters) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDeviceFilters(deviceFiltersSize, deviceFilters); } \
  NS_IMETHOD CreateDeviceFilter(const PRUnichar *name, IUSBDeviceFilter **filter) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateDeviceFilter(name, filter); } \
  NS_IMETHOD InsertDeviceFilter(PRUint32 position, IUSBDeviceFilter *filter) { return !_to ? NS_ERROR_NULL_POINTER : _to->InsertDeviceFilter(position, filter); } \
  NS_IMETHOD RemoveDeviceFilter(PRUint32 position, IUSBDeviceFilter **filter) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveDeviceFilter(position, filter); } 

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

/* Header file */
class _MYCLASS_ : public IUSBController
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IUSBCONTROLLER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* attribute boolean enabled; */
NS_IMETHODIMP _MYCLASS_::GetEnabled(PRBool *aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetEnabled(PRBool aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean enabledEhci; */
NS_IMETHODIMP _MYCLASS_::GetEnabledEhci(PRBool *aEnabledEhci)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetEnabledEhci(PRBool aEnabledEhci)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

/* void getDeviceFilters (out unsigned long deviceFiltersSize, [array, size_is (deviceFiltersSize), retval] out IUSBDeviceFilter deviceFilters); */
NS_IMETHODIMP _MYCLASS_::GetDeviceFilters(PRUint32 *deviceFiltersSize, IUSBDeviceFilter ***deviceFilters)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createDeviceFilter (in wstring name, [retval] out IUSBDeviceFilter filter); */
NS_IMETHODIMP _MYCLASS_::CreateDeviceFilter(const PRUnichar *name, IUSBDeviceFilter **filter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void insertDeviceFilter (in unsigned long position, in IUSBDeviceFilter filter); */
NS_IMETHODIMP _MYCLASS_::InsertDeviceFilter(PRUint32 position, IUSBDeviceFilter *filter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeDeviceFilter (in unsigned long position, [retval] out IUSBDeviceFilter filter); */
NS_IMETHODIMP _MYCLASS_::RemoveDeviceFilter(PRUint32 position, IUSBDeviceFilter **filter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IUSBController_GETTER_Enabled_TO(smth) NS_IMETHOD GetEnabled (PRBool * aEnabled) { return smth GetEnabled (aEnabled); }
#define COM_FORWARD_IUSBController_GETTER_Enabled_TO_OBJ(obj) COM_FORWARD_IUSBController_GETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_IUSBController_GETTER_Enabled_TO_BASE(base) COM_FORWARD_IUSBController_GETTER_Enabled_TO (base::)
#define COM_FORWARD_IUSBController_SETTER_Enabled_TO(smth) NS_IMETHOD SetEnabled (PRBool aEnabled) { return smth SetEnabled (aEnabled); }
#define COM_FORWARD_IUSBController_SETTER_Enabled_TO_OBJ(obj) COM_FORWARD_IUSBController_SETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_IUSBController_SETTER_Enabled_TO_BASE(base) COM_FORWARD_IUSBController_SETTER_Enabled_TO (base::)
#define COM_FORWARD_IUSBController_GETTER_EnabledEhci_TO(smth) NS_IMETHOD GetEnabledEhci (PRBool * aEnabledEhci) { return smth GetEnabledEhci (aEnabledEhci); }
#define COM_FORWARD_IUSBController_GETTER_EnabledEhci_TO_OBJ(obj) COM_FORWARD_IUSBController_GETTER_EnabledEhci_TO ((obj)->)
#define COM_FORWARD_IUSBController_GETTER_EnabledEhci_TO_BASE(base) COM_FORWARD_IUSBController_GETTER_EnabledEhci_TO (base::)
#define COM_FORWARD_IUSBController_SETTER_EnabledEhci_TO(smth) NS_IMETHOD SetEnabledEhci (PRBool aEnabledEhci) { return smth SetEnabledEhci (aEnabledEhci); }
#define COM_FORWARD_IUSBController_SETTER_EnabledEhci_TO_OBJ(obj) COM_FORWARD_IUSBController_SETTER_EnabledEhci_TO ((obj)->)
#define COM_FORWARD_IUSBController_SETTER_EnabledEhci_TO_BASE(base) COM_FORWARD_IUSBController_SETTER_EnabledEhci_TO (base::)
#define COM_FORWARD_IUSBController_GETTER_ProxyAvailable_TO(smth) NS_IMETHOD GetProxyAvailable (PRBool * aProxyAvailable) { return smth GetProxyAvailable (aProxyAvailable); }
#define COM_FORWARD_IUSBController_GETTER_ProxyAvailable_TO_OBJ(obj) COM_FORWARD_IUSBController_GETTER_ProxyAvailable_TO ((obj)->)
#define COM_FORWARD_IUSBController_GETTER_ProxyAvailable_TO_BASE(base) COM_FORWARD_IUSBController_GETTER_ProxyAvailable_TO (base::)
#define COM_FORWARD_IUSBController_GETTER_USBStandard_TO(smth) NS_IMETHOD GetUSBStandard (PRUint16 * aUSBStandard) { return smth GetUSBStandard (aUSBStandard); }
#define COM_FORWARD_IUSBController_GETTER_USBStandard_TO_OBJ(obj) COM_FORWARD_IUSBController_GETTER_USBStandard_TO ((obj)->)
#define COM_FORWARD_IUSBController_GETTER_USBStandard_TO_BASE(base) COM_FORWARD_IUSBController_GETTER_USBStandard_TO (base::)
#define COM_FORWARD_IUSBController_GETTER_DeviceFilters_TO(smth) NS_IMETHOD GetDeviceFilters (PRUint32 * aDeviceFiltersSize, IUSBDeviceFilter * * * aDeviceFilters) { return smth GetDeviceFilters (aDeviceFiltersSize, aDeviceFilters); }
#define COM_FORWARD_IUSBController_GETTER_DeviceFilters_TO_OBJ(obj) COM_FORWARD_IUSBController_GETTER_DeviceFilters_TO ((obj)->)
#define COM_FORWARD_IUSBController_GETTER_DeviceFilters_TO_BASE(base) COM_FORWARD_IUSBController_GETTER_DeviceFilters_TO (base::)
#define COM_FORWARD_IUSBController_CreateDeviceFilter_TO(smth) NS_IMETHOD CreateDeviceFilter (PRUnichar * aName, IUSBDeviceFilter * * aFilter) { return smth CreateDeviceFilter (aName, aFilter); }
#define COM_FORWARD_IUSBController_CreateDeviceFilter_TO_OBJ(obj) COM_FORWARD_IUSBController_CreateDeviceFilter_TO ((obj)->)
#define COM_FORWARD_IUSBController_CreateDeviceFilter_TO_BASE(base) COM_FORWARD_IUSBController_CreateDeviceFilter_TO (base::)
#define COM_FORWARD_IUSBController_InsertDeviceFilter_TO(smth) NS_IMETHOD InsertDeviceFilter (PRUint32 aPosition, IUSBDeviceFilter * aFilter) { return smth InsertDeviceFilter (aPosition, aFilter); }
#define COM_FORWARD_IUSBController_InsertDeviceFilter_TO_OBJ(obj) COM_FORWARD_IUSBController_InsertDeviceFilter_TO ((obj)->)
#define COM_FORWARD_IUSBController_InsertDeviceFilter_TO_BASE(base) COM_FORWARD_IUSBController_InsertDeviceFilter_TO (base::)
#define COM_FORWARD_IUSBController_RemoveDeviceFilter_TO(smth) NS_IMETHOD RemoveDeviceFilter (PRUint32 aPosition, IUSBDeviceFilter * * aFilter) { return smth RemoveDeviceFilter (aPosition, aFilter); }
#define COM_FORWARD_IUSBController_RemoveDeviceFilter_TO_OBJ(obj) COM_FORWARD_IUSBController_RemoveDeviceFilter_TO ((obj)->)
#define COM_FORWARD_IUSBController_RemoveDeviceFilter_TO_BASE(base) COM_FORWARD_IUSBController_RemoveDeviceFilter_TO (base::)
#define COM_FORWARD_IUSBController_TO(smth) NS_FORWARD_IUSBCONTROLLER (smth)
#define COM_FORWARD_IUSBController_TO_OBJ(obj) COM_FORWARD_IUSBController_TO ((obj)->)
#define COM_FORWARD_IUSBController_TO_BASE(base) COM_FORWARD_IUSBController_TO (base::)

/* starting interface:    IUSBDevice */
#define IUSBDEVICE_IID_STR "f8967b0b-4483-400f-92b5-8b675d98a85b"

#define IUSBDEVICE_IID \
  {0xf8967b0b, 0x4483, 0x400f, \
    { 0x92, 0xb5, 0x8b, 0x67, 0x5d, 0x98, 0xa8, 0x5b }}

class NS_NO_VTABLE IUSBDevice : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IUSBDEVICE_IID)

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

  /* readonly attribute unsigned short vendorId; */
  NS_IMETHOD GetVendorId(PRUint16 *aVendorId) = 0;

  /* readonly attribute unsigned short productId; */
  NS_IMETHOD GetProductId(PRUint16 *aProductId) = 0;

  /* readonly attribute unsigned short revision; */
  NS_IMETHOD GetRevision(PRUint16 *aRevision) = 0;

  /* readonly attribute wstring manufacturer; */
  NS_IMETHOD GetManufacturer(PRUnichar * *aManufacturer) = 0;

  /* readonly attribute wstring product; */
  NS_IMETHOD GetProduct(PRUnichar * *aProduct) = 0;

  /* readonly attribute wstring serialNumber; */
  NS_IMETHOD GetSerialNumber(PRUnichar * *aSerialNumber) = 0;

  /* readonly attribute wstring address; */
  NS_IMETHOD GetAddress(PRUnichar * *aAddress) = 0;

  /* readonly attribute unsigned short port; */
  NS_IMETHOD GetPort(PRUint16 *aPort) = 0;

  /* readonly attribute unsigned short version; */
  NS_IMETHOD GetVersion(PRUint16 *aVersion) = 0;

  /* readonly attribute unsigned short portVersion; */
  NS_IMETHOD GetPortVersion(PRUint16 *aPortVersion) = 0;

  /* readonly attribute boolean remote; */
  NS_IMETHOD GetRemote(PRBool *aRemote) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IUSBDEVICE \
  NS_IMETHOD GetId(PRUnichar * *aId); \
  NS_IMETHOD GetVendorId(PRUint16 *aVendorId); \
  NS_IMETHOD GetProductId(PRUint16 *aProductId); \
  NS_IMETHOD GetRevision(PRUint16 *aRevision); \
  NS_IMETHOD GetManufacturer(PRUnichar * *aManufacturer); \
  NS_IMETHOD GetProduct(PRUnichar * *aProduct); \
  NS_IMETHOD GetSerialNumber(PRUnichar * *aSerialNumber); \
  NS_IMETHOD GetAddress(PRUnichar * *aAddress); \
  NS_IMETHOD GetPort(PRUint16 *aPort); \
  NS_IMETHOD GetVersion(PRUint16 *aVersion); \
  NS_IMETHOD GetPortVersion(PRUint16 *aPortVersion); \
  NS_IMETHOD GetRemote(PRBool *aRemote); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IUSBDEVICE(_to) \
  NS_IMETHOD GetId(PRUnichar * *aId) { return _to GetId(aId); } \
  NS_IMETHOD GetVendorId(PRUint16 *aVendorId) { return _to GetVendorId(aVendorId); } \
  NS_IMETHOD GetProductId(PRUint16 *aProductId) { return _to GetProductId(aProductId); } \
  NS_IMETHOD GetRevision(PRUint16 *aRevision) { return _to GetRevision(aRevision); } \
  NS_IMETHOD GetManufacturer(PRUnichar * *aManufacturer) { return _to GetManufacturer(aManufacturer); } \
  NS_IMETHOD GetProduct(PRUnichar * *aProduct) { return _to GetProduct(aProduct); } \
  NS_IMETHOD GetSerialNumber(PRUnichar * *aSerialNumber) { return _to GetSerialNumber(aSerialNumber); } \
  NS_IMETHOD GetAddress(PRUnichar * *aAddress) { return _to GetAddress(aAddress); } \
  NS_IMETHOD GetPort(PRUint16 *aPort) { return _to GetPort(aPort); } \
  NS_IMETHOD GetVersion(PRUint16 *aVersion) { return _to GetVersion(aVersion); } \
  NS_IMETHOD GetPortVersion(PRUint16 *aPortVersion) { return _to GetPortVersion(aPortVersion); } \
  NS_IMETHOD GetRemote(PRBool *aRemote) { return _to GetRemote(aRemote); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IUSBDEVICE(_to) \
  NS_IMETHOD GetId(PRUnichar * *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD GetVendorId(PRUint16 *aVendorId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVendorId(aVendorId); } \
  NS_IMETHOD GetProductId(PRUint16 *aProductId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProductId(aProductId); } \
  NS_IMETHOD GetRevision(PRUint16 *aRevision) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRevision(aRevision); } \
  NS_IMETHOD GetManufacturer(PRUnichar * *aManufacturer) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetManufacturer(aManufacturer); } \
  NS_IMETHOD GetProduct(PRUnichar * *aProduct) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProduct(aProduct); } \
  NS_IMETHOD GetSerialNumber(PRUnichar * *aSerialNumber) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSerialNumber(aSerialNumber); } \
  NS_IMETHOD GetAddress(PRUnichar * *aAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAddress(aAddress); } \
  NS_IMETHOD GetPort(PRUint16 *aPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPort(aPort); } \
  NS_IMETHOD GetVersion(PRUint16 *aVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVersion(aVersion); } \
  NS_IMETHOD GetPortVersion(PRUint16 *aPortVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPortVersion(aPortVersion); } \
  NS_IMETHOD GetRemote(PRBool *aRemote) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRemote(aRemote); } 

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

/* Header file */
class _MYCLASS_ : public IUSBDevice
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IUSBDEVICE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute wstring id; */
NS_IMETHODIMP _MYCLASS_::GetId(PRUnichar * *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned short vendorId; */
NS_IMETHODIMP _MYCLASS_::GetVendorId(PRUint16 *aVendorId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned short productId; */
NS_IMETHODIMP _MYCLASS_::GetProductId(PRUint16 *aProductId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned short revision; */
NS_IMETHODIMP _MYCLASS_::GetRevision(PRUint16 *aRevision)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring manufacturer; */
NS_IMETHODIMP _MYCLASS_::GetManufacturer(PRUnichar * *aManufacturer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring product; */
NS_IMETHODIMP _MYCLASS_::GetProduct(PRUnichar * *aProduct)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring serialNumber; */
NS_IMETHODIMP _MYCLASS_::GetSerialNumber(PRUnichar * *aSerialNumber)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring address; */
NS_IMETHODIMP _MYCLASS_::GetAddress(PRUnichar * *aAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned short port; */
NS_IMETHODIMP _MYCLASS_::GetPort(PRUint16 *aPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned short version; */
NS_IMETHODIMP _MYCLASS_::GetVersion(PRUint16 *aVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned short portVersion; */
NS_IMETHODIMP _MYCLASS_::GetPortVersion(PRUint16 *aPortVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean remote; */
NS_IMETHODIMP _MYCLASS_::GetRemote(PRBool *aRemote)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IUSBDevice_GETTER_Id_TO(smth) NS_IMETHOD GetId (PRUnichar * * aId) { return smth GetId (aId); }
#define COM_FORWARD_IUSBDevice_GETTER_Id_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_Id_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_Id_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_Id_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_VendorId_TO(smth) NS_IMETHOD GetVendorId (PRUint16 * aVendorId) { return smth GetVendorId (aVendorId); }
#define COM_FORWARD_IUSBDevice_GETTER_VendorId_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_VendorId_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_VendorId_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_VendorId_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_ProductId_TO(smth) NS_IMETHOD GetProductId (PRUint16 * aProductId) { return smth GetProductId (aProductId); }
#define COM_FORWARD_IUSBDevice_GETTER_ProductId_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_ProductId_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_ProductId_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_ProductId_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_Revision_TO(smth) NS_IMETHOD GetRevision (PRUint16 * aRevision) { return smth GetRevision (aRevision); }
#define COM_FORWARD_IUSBDevice_GETTER_Revision_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_Revision_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_Revision_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_Revision_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_Manufacturer_TO(smth) NS_IMETHOD GetManufacturer (PRUnichar * * aManufacturer) { return smth GetManufacturer (aManufacturer); }
#define COM_FORWARD_IUSBDevice_GETTER_Manufacturer_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_Manufacturer_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_Manufacturer_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_Manufacturer_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_Product_TO(smth) NS_IMETHOD GetProduct (PRUnichar * * aProduct) { return smth GetProduct (aProduct); }
#define COM_FORWARD_IUSBDevice_GETTER_Product_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_Product_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_Product_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_Product_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_SerialNumber_TO(smth) NS_IMETHOD GetSerialNumber (PRUnichar * * aSerialNumber) { return smth GetSerialNumber (aSerialNumber); }
#define COM_FORWARD_IUSBDevice_GETTER_SerialNumber_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_SerialNumber_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_SerialNumber_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_SerialNumber_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_Address_TO(smth) NS_IMETHOD GetAddress (PRUnichar * * aAddress) { return smth GetAddress (aAddress); }
#define COM_FORWARD_IUSBDevice_GETTER_Address_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_Address_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_Address_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_Address_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_Port_TO(smth) NS_IMETHOD GetPort (PRUint16 * aPort) { return smth GetPort (aPort); }
#define COM_FORWARD_IUSBDevice_GETTER_Port_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_Port_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_Port_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_Port_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_Version_TO(smth) NS_IMETHOD GetVersion (PRUint16 * aVersion) { return smth GetVersion (aVersion); }
#define COM_FORWARD_IUSBDevice_GETTER_Version_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_Version_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_Version_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_Version_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_PortVersion_TO(smth) NS_IMETHOD GetPortVersion (PRUint16 * aPortVersion) { return smth GetPortVersion (aPortVersion); }
#define COM_FORWARD_IUSBDevice_GETTER_PortVersion_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_PortVersion_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_PortVersion_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_PortVersion_TO (base::)
#define COM_FORWARD_IUSBDevice_GETTER_Remote_TO(smth) NS_IMETHOD GetRemote (PRBool * aRemote) { return smth GetRemote (aRemote); }
#define COM_FORWARD_IUSBDevice_GETTER_Remote_TO_OBJ(obj) COM_FORWARD_IUSBDevice_GETTER_Remote_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_GETTER_Remote_TO_BASE(base) COM_FORWARD_IUSBDevice_GETTER_Remote_TO (base::)
#define COM_FORWARD_IUSBDevice_TO(smth) NS_FORWARD_IUSBDEVICE (smth)
#define COM_FORWARD_IUSBDevice_TO_OBJ(obj) COM_FORWARD_IUSBDevice_TO ((obj)->)
#define COM_FORWARD_IUSBDevice_TO_BASE(base) COM_FORWARD_IUSBDevice_TO (base::)

/* starting interface:    IUSBDeviceFilter */
#define IUSBDEVICEFILTER_IID_STR "d6831fb4-1a94-4c2c-96ef-8d0d6192066d"

#define IUSBDEVICEFILTER_IID \
  {0xd6831fb4, 0x1a94, 0x4c2c, \
    { 0x96, 0xef, 0x8d, 0x0d, 0x61, 0x92, 0x06, 0x6d }}

class NS_NO_VTABLE IUSBDeviceFilter : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IUSBDEVICEFILTER_IID)

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

  /* attribute boolean active; */
  NS_IMETHOD GetActive(PRBool *aActive) = 0;
  NS_IMETHOD SetActive(PRBool aActive) = 0;

  /* attribute wstring vendorId; */
  NS_IMETHOD GetVendorId(PRUnichar * *aVendorId) = 0;
  NS_IMETHOD SetVendorId(const PRUnichar * aVendorId) = 0;

  /* attribute wstring productId; */
  NS_IMETHOD GetProductId(PRUnichar * *aProductId) = 0;
  NS_IMETHOD SetProductId(const PRUnichar * aProductId) = 0;

  /* attribute wstring revision; */
  NS_IMETHOD GetRevision(PRUnichar * *aRevision) = 0;
  NS_IMETHOD SetRevision(const PRUnichar * aRevision) = 0;

  /* attribute wstring manufacturer; */
  NS_IMETHOD GetManufacturer(PRUnichar * *aManufacturer) = 0;
  NS_IMETHOD SetManufacturer(const PRUnichar * aManufacturer) = 0;

  /* attribute wstring product; */
  NS_IMETHOD GetProduct(PRUnichar * *aProduct) = 0;
  NS_IMETHOD SetProduct(const PRUnichar * aProduct) = 0;

  /* attribute wstring serialNumber; */
  NS_IMETHOD GetSerialNumber(PRUnichar * *aSerialNumber) = 0;
  NS_IMETHOD SetSerialNumber(const PRUnichar * aSerialNumber) = 0;

  /* attribute wstring port; */
  NS_IMETHOD GetPort(PRUnichar * *aPort) = 0;
  NS_IMETHOD SetPort(const PRUnichar * aPort) = 0;

  /* attribute wstring remote; */
  NS_IMETHOD GetRemote(PRUnichar * *aRemote) = 0;
  NS_IMETHOD SetRemote(const PRUnichar * aRemote) = 0;

  /* attribute unsigned long maskedInterfaces; */
  NS_IMETHOD GetMaskedInterfaces(PRUint32 *aMaskedInterfaces) = 0;
  NS_IMETHOD SetMaskedInterfaces(PRUint32 aMaskedInterfaces) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IUSBDEVICEFILTER \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD SetName(const PRUnichar * aName); \
  NS_IMETHOD GetActive(PRBool *aActive); \
  NS_IMETHOD SetActive(PRBool aActive); \
  NS_IMETHOD GetVendorId(PRUnichar * *aVendorId); \
  NS_IMETHOD SetVendorId(const PRUnichar * aVendorId); \
  NS_IMETHOD GetProductId(PRUnichar * *aProductId); \
  NS_IMETHOD SetProductId(const PRUnichar * aProductId); \
  NS_IMETHOD GetRevision(PRUnichar * *aRevision); \
  NS_IMETHOD SetRevision(const PRUnichar * aRevision); \
  NS_IMETHOD GetManufacturer(PRUnichar * *aManufacturer); \
  NS_IMETHOD SetManufacturer(const PRUnichar * aManufacturer); \
  NS_IMETHOD GetProduct(PRUnichar * *aProduct); \
  NS_IMETHOD SetProduct(const PRUnichar * aProduct); \
  NS_IMETHOD GetSerialNumber(PRUnichar * *aSerialNumber); \
  NS_IMETHOD SetSerialNumber(const PRUnichar * aSerialNumber); \
  NS_IMETHOD GetPort(PRUnichar * *aPort); \
  NS_IMETHOD SetPort(const PRUnichar * aPort); \
  NS_IMETHOD GetRemote(PRUnichar * *aRemote); \
  NS_IMETHOD SetRemote(const PRUnichar * aRemote); \
  NS_IMETHOD GetMaskedInterfaces(PRUint32 *aMaskedInterfaces); \
  NS_IMETHOD SetMaskedInterfaces(PRUint32 aMaskedInterfaces); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IUSBDEVICEFILTER(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD SetName(const PRUnichar * aName) { return _to SetName(aName); } \
  NS_IMETHOD GetActive(PRBool *aActive) { return _to GetActive(aActive); } \
  NS_IMETHOD SetActive(PRBool aActive) { return _to SetActive(aActive); } \
  NS_IMETHOD GetVendorId(PRUnichar * *aVendorId) { return _to GetVendorId(aVendorId); } \
  NS_IMETHOD SetVendorId(const PRUnichar * aVendorId) { return _to SetVendorId(aVendorId); } \
  NS_IMETHOD GetProductId(PRUnichar * *aProductId) { return _to GetProductId(aProductId); } \
  NS_IMETHOD SetProductId(const PRUnichar * aProductId) { return _to SetProductId(aProductId); } \
  NS_IMETHOD GetRevision(PRUnichar * *aRevision) { return _to GetRevision(aRevision); } \
  NS_IMETHOD SetRevision(const PRUnichar * aRevision) { return _to SetRevision(aRevision); } \
  NS_IMETHOD GetManufacturer(PRUnichar * *aManufacturer) { return _to GetManufacturer(aManufacturer); } \
  NS_IMETHOD SetManufacturer(const PRUnichar * aManufacturer) { return _to SetManufacturer(aManufacturer); } \
  NS_IMETHOD GetProduct(PRUnichar * *aProduct) { return _to GetProduct(aProduct); } \
  NS_IMETHOD SetProduct(const PRUnichar * aProduct) { return _to SetProduct(aProduct); } \
  NS_IMETHOD GetSerialNumber(PRUnichar * *aSerialNumber) { return _to GetSerialNumber(aSerialNumber); } \
  NS_IMETHOD SetSerialNumber(const PRUnichar * aSerialNumber) { return _to SetSerialNumber(aSerialNumber); } \
  NS_IMETHOD GetPort(PRUnichar * *aPort) { return _to GetPort(aPort); } \
  NS_IMETHOD SetPort(const PRUnichar * aPort) { return _to SetPort(aPort); } \
  NS_IMETHOD GetRemote(PRUnichar * *aRemote) { return _to GetRemote(aRemote); } \
  NS_IMETHOD SetRemote(const PRUnichar * aRemote) { return _to SetRemote(aRemote); } \
  NS_IMETHOD GetMaskedInterfaces(PRUint32 *aMaskedInterfaces) { return _to GetMaskedInterfaces(aMaskedInterfaces); } \
  NS_IMETHOD SetMaskedInterfaces(PRUint32 aMaskedInterfaces) { return _to SetMaskedInterfaces(aMaskedInterfaces); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IUSBDEVICEFILTER(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(const PRUnichar * aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetName(aName); } \
  NS_IMETHOD GetActive(PRBool *aActive) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetActive(aActive); } \
  NS_IMETHOD SetActive(PRBool aActive) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetActive(aActive); } \
  NS_IMETHOD GetVendorId(PRUnichar * *aVendorId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVendorId(aVendorId); } \
  NS_IMETHOD SetVendorId(const PRUnichar * aVendorId) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVendorId(aVendorId); } \
  NS_IMETHOD GetProductId(PRUnichar * *aProductId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProductId(aProductId); } \
  NS_IMETHOD SetProductId(const PRUnichar * aProductId) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetProductId(aProductId); } \
  NS_IMETHOD GetRevision(PRUnichar * *aRevision) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRevision(aRevision); } \
  NS_IMETHOD SetRevision(const PRUnichar * aRevision) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRevision(aRevision); } \
  NS_IMETHOD GetManufacturer(PRUnichar * *aManufacturer) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetManufacturer(aManufacturer); } \
  NS_IMETHOD SetManufacturer(const PRUnichar * aManufacturer) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetManufacturer(aManufacturer); } \
  NS_IMETHOD GetProduct(PRUnichar * *aProduct) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProduct(aProduct); } \
  NS_IMETHOD SetProduct(const PRUnichar * aProduct) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetProduct(aProduct); } \
  NS_IMETHOD GetSerialNumber(PRUnichar * *aSerialNumber) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSerialNumber(aSerialNumber); } \
  NS_IMETHOD SetSerialNumber(const PRUnichar * aSerialNumber) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSerialNumber(aSerialNumber); } \
  NS_IMETHOD GetPort(PRUnichar * *aPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPort(aPort); } \
  NS_IMETHOD SetPort(const PRUnichar * aPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPort(aPort); } \
  NS_IMETHOD GetRemote(PRUnichar * *aRemote) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRemote(aRemote); } \
  NS_IMETHOD SetRemote(const PRUnichar * aRemote) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRemote(aRemote); } \
  NS_IMETHOD GetMaskedInterfaces(PRUint32 *aMaskedInterfaces) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaskedInterfaces(aMaskedInterfaces); } \
  NS_IMETHOD SetMaskedInterfaces(PRUint32 aMaskedInterfaces) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMaskedInterfaces(aMaskedInterfaces); } 

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

/* Header file */
class _MYCLASS_ : public IUSBDeviceFilter
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IUSBDEVICEFILTER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetName(const PRUnichar * aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean active; */
NS_IMETHODIMP _MYCLASS_::GetActive(PRBool *aActive)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetActive(PRBool aActive)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring vendorId; */
NS_IMETHODIMP _MYCLASS_::GetVendorId(PRUnichar * *aVendorId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetVendorId(const PRUnichar * aVendorId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring productId; */
NS_IMETHODIMP _MYCLASS_::GetProductId(PRUnichar * *aProductId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetProductId(const PRUnichar * aProductId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring revision; */
NS_IMETHODIMP _MYCLASS_::GetRevision(PRUnichar * *aRevision)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetRevision(const PRUnichar * aRevision)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring manufacturer; */
NS_IMETHODIMP _MYCLASS_::GetManufacturer(PRUnichar * *aManufacturer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetManufacturer(const PRUnichar * aManufacturer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring product; */
NS_IMETHODIMP _MYCLASS_::GetProduct(PRUnichar * *aProduct)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetProduct(const PRUnichar * aProduct)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring serialNumber; */
NS_IMETHODIMP _MYCLASS_::GetSerialNumber(PRUnichar * *aSerialNumber)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetSerialNumber(const PRUnichar * aSerialNumber)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring port; */
NS_IMETHODIMP _MYCLASS_::GetPort(PRUnichar * *aPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPort(const PRUnichar * aPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring remote; */
NS_IMETHODIMP _MYCLASS_::GetRemote(PRUnichar * *aRemote)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetRemote(const PRUnichar * aRemote)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long maskedInterfaces; */
NS_IMETHODIMP _MYCLASS_::GetMaskedInterfaces(PRUint32 *aMaskedInterfaces)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetMaskedInterfaces(PRUint32 aMaskedInterfaces)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IUSBDeviceFilter_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Name_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_Name_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Name_TO(smth) NS_IMETHOD SetName (const PRUnichar * aName) { return smth SetName (aName); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Name_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_Name_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Name_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_Name_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Active_TO(smth) NS_IMETHOD GetActive (PRBool * aActive) { return smth GetActive (aActive); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Active_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_Active_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Active_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_Active_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Active_TO(smth) NS_IMETHOD SetActive (PRBool aActive) { return smth SetActive (aActive); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Active_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_Active_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Active_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_Active_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_VendorId_TO(smth) NS_IMETHOD GetVendorId (PRUnichar * * aVendorId) { return smth GetVendorId (aVendorId); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_VendorId_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_VendorId_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_VendorId_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_VendorId_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_VendorId_TO(smth) NS_IMETHOD SetVendorId (const PRUnichar * aVendorId) { return smth SetVendorId (aVendorId); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_VendorId_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_VendorId_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_VendorId_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_VendorId_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_ProductId_TO(smth) NS_IMETHOD GetProductId (PRUnichar * * aProductId) { return smth GetProductId (aProductId); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_ProductId_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_ProductId_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_ProductId_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_ProductId_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_ProductId_TO(smth) NS_IMETHOD SetProductId (const PRUnichar * aProductId) { return smth SetProductId (aProductId); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_ProductId_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_ProductId_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_ProductId_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_ProductId_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Revision_TO(smth) NS_IMETHOD GetRevision (PRUnichar * * aRevision) { return smth GetRevision (aRevision); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Revision_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_Revision_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Revision_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_Revision_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Revision_TO(smth) NS_IMETHOD SetRevision (const PRUnichar * aRevision) { return smth SetRevision (aRevision); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Revision_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_Revision_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Revision_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_Revision_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Manufacturer_TO(smth) NS_IMETHOD GetManufacturer (PRUnichar * * aManufacturer) { return smth GetManufacturer (aManufacturer); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Manufacturer_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_Manufacturer_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Manufacturer_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_Manufacturer_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Manufacturer_TO(smth) NS_IMETHOD SetManufacturer (const PRUnichar * aManufacturer) { return smth SetManufacturer (aManufacturer); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Manufacturer_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_Manufacturer_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Manufacturer_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_Manufacturer_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Product_TO(smth) NS_IMETHOD GetProduct (PRUnichar * * aProduct) { return smth GetProduct (aProduct); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Product_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_Product_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Product_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_Product_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Product_TO(smth) NS_IMETHOD SetProduct (const PRUnichar * aProduct) { return smth SetProduct (aProduct); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Product_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_Product_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Product_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_Product_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_SerialNumber_TO(smth) NS_IMETHOD GetSerialNumber (PRUnichar * * aSerialNumber) { return smth GetSerialNumber (aSerialNumber); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_SerialNumber_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_SerialNumber_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_SerialNumber_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_SerialNumber_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_SerialNumber_TO(smth) NS_IMETHOD SetSerialNumber (const PRUnichar * aSerialNumber) { return smth SetSerialNumber (aSerialNumber); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_SerialNumber_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_SerialNumber_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_SerialNumber_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_SerialNumber_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Port_TO(smth) NS_IMETHOD GetPort (PRUnichar * * aPort) { return smth GetPort (aPort); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Port_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_Port_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Port_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_Port_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Port_TO(smth) NS_IMETHOD SetPort (const PRUnichar * aPort) { return smth SetPort (aPort); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Port_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_Port_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Port_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_Port_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Remote_TO(smth) NS_IMETHOD GetRemote (PRUnichar * * aRemote) { return smth GetRemote (aRemote); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Remote_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_Remote_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_Remote_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_Remote_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Remote_TO(smth) NS_IMETHOD SetRemote (const PRUnichar * aRemote) { return smth SetRemote (aRemote); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Remote_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_Remote_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_Remote_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_Remote_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_MaskedInterfaces_TO(smth) NS_IMETHOD GetMaskedInterfaces (PRUint32 * aMaskedInterfaces) { return smth GetMaskedInterfaces (aMaskedInterfaces); }
#define COM_FORWARD_IUSBDeviceFilter_GETTER_MaskedInterfaces_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_GETTER_MaskedInterfaces_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_GETTER_MaskedInterfaces_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_GETTER_MaskedInterfaces_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_MaskedInterfaces_TO(smth) NS_IMETHOD SetMaskedInterfaces (PRUint32 aMaskedInterfaces) { return smth SetMaskedInterfaces (aMaskedInterfaces); }
#define COM_FORWARD_IUSBDeviceFilter_SETTER_MaskedInterfaces_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_SETTER_MaskedInterfaces_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_SETTER_MaskedInterfaces_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_SETTER_MaskedInterfaces_TO (base::)
#define COM_FORWARD_IUSBDeviceFilter_TO(smth) NS_FORWARD_IUSBDEVICEFILTER (smth)
#define COM_FORWARD_IUSBDeviceFilter_TO_OBJ(obj) COM_FORWARD_IUSBDeviceFilter_TO ((obj)->)
#define COM_FORWARD_IUSBDeviceFilter_TO_BASE(base) COM_FORWARD_IUSBDeviceFilter_TO (base::)

/* starting interface:    IHostUSBDevice */
#define IHOSTUSBDEVICE_IID_STR "173b4b44-d268-4334-a00d-b6521c9a740a"

#define IHOSTUSBDEVICE_IID \
  {0x173b4b44, 0xd268, 0x4334, \
    { 0xa0, 0x0d, 0xb6, 0x52, 0x1c, 0x9a, 0x74, 0x0a }}

class NS_NO_VTABLE IHostUSBDevice : public IUSBDevice {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOSTUSBDEVICE_IID)

  /* readonly attribute PRUint32 state; */
  NS_IMETHOD GetState(PRUint32 *aState) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOSTUSBDEVICE \
  NS_IMETHOD GetState(PRUint32 *aState); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOSTUSBDEVICE(_to) \
  NS_IMETHOD GetState(PRUint32 *aState) { return _to GetState(aState); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHOSTUSBDEVICE(_to) \
  NS_IMETHOD GetState(PRUint32 *aState) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetState(aState); } 

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

/* Header file */
class _MYCLASS_ : public IHostUSBDevice
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHOSTUSBDEVICE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute PRUint32 state; */
NS_IMETHODIMP _MYCLASS_::GetState(PRUint32 *aState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IHostUSBDevice_GETTER_State_TO(smth) NS_IMETHOD GetState (PRUint32 * aState) { return smth GetState (aState); }
#define COM_FORWARD_IHostUSBDevice_GETTER_State_TO_OBJ(obj) COM_FORWARD_IHostUSBDevice_GETTER_State_TO ((obj)->)
#define COM_FORWARD_IHostUSBDevice_GETTER_State_TO_BASE(base) COM_FORWARD_IHostUSBDevice_GETTER_State_TO (base::)
#define COM_FORWARD_IHostUSBDevice_TO(smth) NS_FORWARD_IHOSTUSBDEVICE (smth)
#define COM_FORWARD_IHostUSBDevice_TO_OBJ(obj) COM_FORWARD_IHostUSBDevice_TO ((obj)->)
#define COM_FORWARD_IHostUSBDevice_TO_BASE(base) COM_FORWARD_IHostUSBDevice_TO (base::)

/* starting interface:    IHostUSBDeviceFilter */
#define IHOSTUSBDEVICEFILTER_IID_STR "4cc70246-d74a-400f-8222-3900489c0374"

#define IHOSTUSBDEVICEFILTER_IID \
  {0x4cc70246, 0xd74a, 0x400f, \
    { 0x82, 0x22, 0x39, 0x00, 0x48, 0x9c, 0x03, 0x74 }}

class NS_NO_VTABLE IHostUSBDeviceFilter : public IUSBDeviceFilter {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IHOSTUSBDEVICEFILTER_IID)

  /* attribute PRUint32 action; */
  NS_IMETHOD GetAction(PRUint32 *aAction) = 0;
  NS_IMETHOD SetAction(PRUint32 aAction) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IHOSTUSBDEVICEFILTER \
  NS_IMETHOD GetAction(PRUint32 *aAction); \
  NS_IMETHOD SetAction(PRUint32 aAction); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IHOSTUSBDEVICEFILTER(_to) \
  NS_IMETHOD GetAction(PRUint32 *aAction) { return _to GetAction(aAction); } \
  NS_IMETHOD SetAction(PRUint32 aAction) { return _to SetAction(aAction); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IHOSTUSBDEVICEFILTER(_to) \
  NS_IMETHOD GetAction(PRUint32 *aAction) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAction(aAction); } \
  NS_IMETHOD SetAction(PRUint32 aAction) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAction(aAction); } 

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

/* Header file */
class _MYCLASS_ : public IHostUSBDeviceFilter
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IHOSTUSBDEVICEFILTER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* attribute PRUint32 action; */
NS_IMETHODIMP _MYCLASS_::GetAction(PRUint32 *aAction)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAction(PRUint32 aAction)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IHostUSBDeviceFilter_GETTER_Action_TO(smth) NS_IMETHOD GetAction (PRUint32 * aAction) { return smth GetAction (aAction); }
#define COM_FORWARD_IHostUSBDeviceFilter_GETTER_Action_TO_OBJ(obj) COM_FORWARD_IHostUSBDeviceFilter_GETTER_Action_TO ((obj)->)
#define COM_FORWARD_IHostUSBDeviceFilter_GETTER_Action_TO_BASE(base) COM_FORWARD_IHostUSBDeviceFilter_GETTER_Action_TO (base::)
#define COM_FORWARD_IHostUSBDeviceFilter_SETTER_Action_TO(smth) NS_IMETHOD SetAction (PRUint32 aAction) { return smth SetAction (aAction); }
#define COM_FORWARD_IHostUSBDeviceFilter_SETTER_Action_TO_OBJ(obj) COM_FORWARD_IHostUSBDeviceFilter_SETTER_Action_TO ((obj)->)
#define COM_FORWARD_IHostUSBDeviceFilter_SETTER_Action_TO_BASE(base) COM_FORWARD_IHostUSBDeviceFilter_SETTER_Action_TO (base::)
#define COM_FORWARD_IHostUSBDeviceFilter_TO(smth) NS_FORWARD_IHOSTUSBDEVICEFILTER (smth)
#define COM_FORWARD_IHostUSBDeviceFilter_TO_OBJ(obj) COM_FORWARD_IHostUSBDeviceFilter_TO ((obj)->)
#define COM_FORWARD_IHostUSBDeviceFilter_TO_BASE(base) COM_FORWARD_IHostUSBDeviceFilter_TO (base::)

/* starting interface:    IAudioAdapter */
#define IAUDIOADAPTER_IID_STR "921873db-5f3f-4b69-91f9-7be9e535a2cb"

#define IAUDIOADAPTER_IID \
  {0x921873db, 0x5f3f, 0x4b69, \
    { 0x91, 0xf9, 0x7b, 0xe9, 0xe5, 0x35, 0xa2, 0xcb }}

class NS_NO_VTABLE IAudioAdapter : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IAUDIOADAPTER_IID)

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

  /* attribute PRUint32 audioController; */
  NS_IMETHOD GetAudioController(PRUint32 *aAudioController) = 0;
  NS_IMETHOD SetAudioController(PRUint32 aAudioController) = 0;

  /* attribute PRUint32 audioDriver; */
  NS_IMETHOD GetAudioDriver(PRUint32 *aAudioDriver) = 0;
  NS_IMETHOD SetAudioDriver(PRUint32 aAudioDriver) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IAUDIOADAPTER \
  NS_IMETHOD GetEnabled(PRBool *aEnabled); \
  NS_IMETHOD SetEnabled(PRBool aEnabled); \
  NS_IMETHOD GetAudioController(PRUint32 *aAudioController); \
  NS_IMETHOD SetAudioController(PRUint32 aAudioController); \
  NS_IMETHOD GetAudioDriver(PRUint32 *aAudioDriver); \
  NS_IMETHOD SetAudioDriver(PRUint32 aAudioDriver); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IAUDIOADAPTER(_to) \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return _to GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return _to SetEnabled(aEnabled); } \
  NS_IMETHOD GetAudioController(PRUint32 *aAudioController) { return _to GetAudioController(aAudioController); } \
  NS_IMETHOD SetAudioController(PRUint32 aAudioController) { return _to SetAudioController(aAudioController); } \
  NS_IMETHOD GetAudioDriver(PRUint32 *aAudioDriver) { return _to GetAudioDriver(aAudioDriver); } \
  NS_IMETHOD SetAudioDriver(PRUint32 aAudioDriver) { return _to SetAudioDriver(aAudioDriver); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IAUDIOADAPTER(_to) \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEnabled(aEnabled); } \
  NS_IMETHOD GetAudioController(PRUint32 *aAudioController) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAudioController(aAudioController); } \
  NS_IMETHOD SetAudioController(PRUint32 aAudioController) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAudioController(aAudioController); } \
  NS_IMETHOD GetAudioDriver(PRUint32 *aAudioDriver) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAudioDriver(aAudioDriver); } \
  NS_IMETHOD SetAudioDriver(PRUint32 aAudioDriver) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAudioDriver(aAudioDriver); } 

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

/* Header file */
class _MYCLASS_ : public IAudioAdapter
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IAUDIOADAPTER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* attribute boolean enabled; */
NS_IMETHODIMP _MYCLASS_::GetEnabled(PRBool *aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetEnabled(PRBool aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 audioController; */
NS_IMETHODIMP _MYCLASS_::GetAudioController(PRUint32 *aAudioController)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAudioController(PRUint32 aAudioController)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 audioDriver; */
NS_IMETHODIMP _MYCLASS_::GetAudioDriver(PRUint32 *aAudioDriver)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAudioDriver(PRUint32 aAudioDriver)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IAudioAdapter_GETTER_Enabled_TO(smth) NS_IMETHOD GetEnabled (PRBool * aEnabled) { return smth GetEnabled (aEnabled); }
#define COM_FORWARD_IAudioAdapter_GETTER_Enabled_TO_OBJ(obj) COM_FORWARD_IAudioAdapter_GETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_IAudioAdapter_GETTER_Enabled_TO_BASE(base) COM_FORWARD_IAudioAdapter_GETTER_Enabled_TO (base::)
#define COM_FORWARD_IAudioAdapter_SETTER_Enabled_TO(smth) NS_IMETHOD SetEnabled (PRBool aEnabled) { return smth SetEnabled (aEnabled); }
#define COM_FORWARD_IAudioAdapter_SETTER_Enabled_TO_OBJ(obj) COM_FORWARD_IAudioAdapter_SETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_IAudioAdapter_SETTER_Enabled_TO_BASE(base) COM_FORWARD_IAudioAdapter_SETTER_Enabled_TO (base::)
#define COM_FORWARD_IAudioAdapter_GETTER_AudioController_TO(smth) NS_IMETHOD GetAudioController (PRUint32 * aAudioController) { return smth GetAudioController (aAudioController); }
#define COM_FORWARD_IAudioAdapter_GETTER_AudioController_TO_OBJ(obj) COM_FORWARD_IAudioAdapter_GETTER_AudioController_TO ((obj)->)
#define COM_FORWARD_IAudioAdapter_GETTER_AudioController_TO_BASE(base) COM_FORWARD_IAudioAdapter_GETTER_AudioController_TO (base::)
#define COM_FORWARD_IAudioAdapter_SETTER_AudioController_TO(smth) NS_IMETHOD SetAudioController (PRUint32 aAudioController) { return smth SetAudioController (aAudioController); }
#define COM_FORWARD_IAudioAdapter_SETTER_AudioController_TO_OBJ(obj) COM_FORWARD_IAudioAdapter_SETTER_AudioController_TO ((obj)->)
#define COM_FORWARD_IAudioAdapter_SETTER_AudioController_TO_BASE(base) COM_FORWARD_IAudioAdapter_SETTER_AudioController_TO (base::)
#define COM_FORWARD_IAudioAdapter_GETTER_AudioDriver_TO(smth) NS_IMETHOD GetAudioDriver (PRUint32 * aAudioDriver) { return smth GetAudioDriver (aAudioDriver); }
#define COM_FORWARD_IAudioAdapter_GETTER_AudioDriver_TO_OBJ(obj) COM_FORWARD_IAudioAdapter_GETTER_AudioDriver_TO ((obj)->)
#define COM_FORWARD_IAudioAdapter_GETTER_AudioDriver_TO_BASE(base) COM_FORWARD_IAudioAdapter_GETTER_AudioDriver_TO (base::)
#define COM_FORWARD_IAudioAdapter_SETTER_AudioDriver_TO(smth) NS_IMETHOD SetAudioDriver (PRUint32 aAudioDriver) { return smth SetAudioDriver (aAudioDriver); }
#define COM_FORWARD_IAudioAdapter_SETTER_AudioDriver_TO_OBJ(obj) COM_FORWARD_IAudioAdapter_SETTER_AudioDriver_TO ((obj)->)
#define COM_FORWARD_IAudioAdapter_SETTER_AudioDriver_TO_BASE(base) COM_FORWARD_IAudioAdapter_SETTER_AudioDriver_TO (base::)
#define COM_FORWARD_IAudioAdapter_TO(smth) NS_FORWARD_IAUDIOADAPTER (smth)
#define COM_FORWARD_IAudioAdapter_TO_OBJ(obj) COM_FORWARD_IAudioAdapter_TO ((obj)->)
#define COM_FORWARD_IAudioAdapter_TO_BASE(base) COM_FORWARD_IAudioAdapter_TO (base::)

/* starting interface:    IVRDPServer */
#define IVRDPSERVER_IID_STR "7aeeb530-0b08-41fe-835d-9be9ec1dbe5c"

#define IVRDPSERVER_IID \
  {0x7aeeb530, 0x0b08, 0x41fe, \
    { 0x83, 0x5d, 0x9b, 0xe9, 0xec, 0x1d, 0xbe, 0x5c }}

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 wstring ports; */
  NS_IMETHOD GetPorts(PRUnichar * *aPorts) = 0;
  NS_IMETHOD SetPorts(const PRUnichar * aPorts) = 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;

  /* attribute boolean reuseSingleConnection; */
  NS_IMETHOD GetReuseSingleConnection(PRBool *aReuseSingleConnection) = 0;
  NS_IMETHOD SetReuseSingleConnection(PRBool aReuseSingleConnection) = 0;

  /* attribute boolean videoChannel; */
  NS_IMETHOD GetVideoChannel(PRBool *aVideoChannel) = 0;
  NS_IMETHOD SetVideoChannel(PRBool aVideoChannel) = 0;

  /* attribute unsigned long videoChannelQuality; */
  NS_IMETHOD GetVideoChannelQuality(PRUint32 *aVideoChannelQuality) = 0;
  NS_IMETHOD SetVideoChannelQuality(PRUint32 aVideoChannelQuality) = 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 GetPorts(PRUnichar * *aPorts); \
  NS_IMETHOD SetPorts(const PRUnichar * aPorts); \
  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); \
  NS_IMETHOD GetReuseSingleConnection(PRBool *aReuseSingleConnection); \
  NS_IMETHOD SetReuseSingleConnection(PRBool aReuseSingleConnection); \
  NS_IMETHOD GetVideoChannel(PRBool *aVideoChannel); \
  NS_IMETHOD SetVideoChannel(PRBool aVideoChannel); \
  NS_IMETHOD GetVideoChannelQuality(PRUint32 *aVideoChannelQuality); \
  NS_IMETHOD SetVideoChannelQuality(PRUint32 aVideoChannelQuality); 

/* 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 GetPorts(PRUnichar * *aPorts) { return _to GetPorts(aPorts); } \
  NS_IMETHOD SetPorts(const PRUnichar * aPorts) { return _to SetPorts(aPorts); } \
  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); } \
  NS_IMETHOD GetReuseSingleConnection(PRBool *aReuseSingleConnection) { return _to GetReuseSingleConnection(aReuseSingleConnection); } \
  NS_IMETHOD SetReuseSingleConnection(PRBool aReuseSingleConnection) { return _to SetReuseSingleConnection(aReuseSingleConnection); } \
  NS_IMETHOD GetVideoChannel(PRBool *aVideoChannel) { return _to GetVideoChannel(aVideoChannel); } \
  NS_IMETHOD SetVideoChannel(PRBool aVideoChannel) { return _to SetVideoChannel(aVideoChannel); } \
  NS_IMETHOD GetVideoChannelQuality(PRUint32 *aVideoChannelQuality) { return _to GetVideoChannelQuality(aVideoChannelQuality); } \
  NS_IMETHOD SetVideoChannelQuality(PRUint32 aVideoChannelQuality) { return _to SetVideoChannelQuality(aVideoChannelQuality); } 

/* 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 GetPorts(PRUnichar * *aPorts) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPorts(aPorts); } \
  NS_IMETHOD SetPorts(const PRUnichar * aPorts) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPorts(aPorts); } \
  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); } \
  NS_IMETHOD GetReuseSingleConnection(PRBool *aReuseSingleConnection) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetReuseSingleConnection(aReuseSingleConnection); } \
  NS_IMETHOD SetReuseSingleConnection(PRBool aReuseSingleConnection) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetReuseSingleConnection(aReuseSingleConnection); } \
  NS_IMETHOD GetVideoChannel(PRBool *aVideoChannel) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVideoChannel(aVideoChannel); } \
  NS_IMETHOD SetVideoChannel(PRBool aVideoChannel) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVideoChannel(aVideoChannel); } \
  NS_IMETHOD GetVideoChannelQuality(PRUint32 *aVideoChannelQuality) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVideoChannelQuality(aVideoChannelQuality); } \
  NS_IMETHOD SetVideoChannelQuality(PRUint32 aVideoChannelQuality) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVideoChannelQuality(aVideoChannelQuality); } 

#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 wstring ports; */
NS_IMETHODIMP _MYCLASS_::GetPorts(PRUnichar * *aPorts)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPorts(const PRUnichar * aPorts)
{
    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;
}

/* attribute boolean reuseSingleConnection; */
NS_IMETHODIMP _MYCLASS_::GetReuseSingleConnection(PRBool *aReuseSingleConnection)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetReuseSingleConnection(PRBool aReuseSingleConnection)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean videoChannel; */
NS_IMETHODIMP _MYCLASS_::GetVideoChannel(PRBool *aVideoChannel)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetVideoChannel(PRBool aVideoChannel)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long videoChannelQuality; */
NS_IMETHODIMP _MYCLASS_::GetVideoChannelQuality(PRUint32 *aVideoChannelQuality)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetVideoChannelQuality(PRUint32 aVideoChannelQuality)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IVRDPServer_GETTER_Enabled_TO(smth) NS_IMETHOD GetEnabled (PRBool * aEnabled) { return smth GetEnabled (aEnabled); }
#define COM_FORWARD_IVRDPServer_GETTER_Enabled_TO_OBJ(obj) COM_FORWARD_IVRDPServer_GETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_IVRDPServer_GETTER_Enabled_TO_BASE(base) COM_FORWARD_IVRDPServer_GETTER_Enabled_TO (base::)
#define COM_FORWARD_IVRDPServer_SETTER_Enabled_TO(smth) NS_IMETHOD SetEnabled (PRBool aEnabled) { return smth SetEnabled (aEnabled); }
#define COM_FORWARD_IVRDPServer_SETTER_Enabled_TO_OBJ(obj) COM_FORWARD_IVRDPServer_SETTER_Enabled_TO ((obj)->)
#define COM_FORWARD_IVRDPServer_SETTER_Enabled_TO_BASE(base) COM_FORWARD_IVRDPServer_SETTER_Enabled_TO (base::)
#define COM_FORWARD_IVRDPServer_GETTER_Ports_TO(smth) NS_IMETHOD GetPorts (PRUnichar * * aPorts) { return smth GetPorts (aPorts); }
#define COM_FORWARD_IVRDPServer_GETTER_Ports_TO_OBJ(obj) COM_FORWARD_IVRDPServer_GETTER_Ports_TO ((obj)->)
#define COM_FORWARD_IVRDPServer_GETTER_Ports_TO_BASE(base) COM_FORWARD_IVRDPServer_GETTER_Ports_TO (base::)
#define COM_FORWARD_IVRDPServer_SETTER_Ports_TO(smth) NS_IMETHOD SetPorts (const PRUnichar * aPorts) { return smth SetPorts (aPorts); }
#define COM_FORWARD_IVRDPServer_SETTER_Ports_TO_OBJ(obj) COM_FORWARD_IVRDPServer_SETTER_Ports_TO ((obj)->)
#define COM_FORWARD_IVRDPServer_SETTER_Ports_TO_BASE(base) COM_FORWARD_IVRDPServer_SETTER_Ports_TO (base::)
#define COM_FORWARD_IVRDPServer_GETTER_NetAddress_TO(smth) NS_IMETHOD GetNetAddress (PRUnichar * * aNetAddress) { return smth GetNetAddress (aNetAddress); }
#define COM_FORWARD_IVRDPServer_GETTER_NetAddress_TO_OBJ(obj) COM_FORWARD_IVRDPServer_GETTER_NetAddress_TO ((obj)->)
#define COM_FORWARD_IVRDPServer_GETTER_NetAddress_TO_BASE(base) COM_FORWARD_IVRDPServer_GETTER_NetAddress_TO (base::)
#define COM_FORWARD_IVRDPServer_SETTER_NetAddress_TO(smth) NS_IMETHOD SetNetAddress (const PRUnichar * aNetAddress) { return smth SetNetAddress (aNetAddress); }
#define COM_FORWARD_IVRDPServer_SETTER_NetAddress_TO_OBJ(obj) COM_FORWARD_IVRDPServer_SETTER_NetAddress_TO ((obj)->)
#define COM_FORWARD_IVRDPServer_SETTER_NetAddress_TO_BASE(base) COM_FORWARD_IVRDPServer_SETTER_NetAddress_TO (base::)
#define COM_FORWARD_IVRDPServer_GETTER_AuthType_TO(smth) NS_IMETHOD GetAuthType (PRUint32 * aAuthType) { return smth GetAuthType (aAuthType); }
#define COM_FORWARD_IVRDPServer_GETTER_AuthType_TO_OBJ(obj) COM_FORWARD_IVRDPServer_GETTER_AuthType_TO ((obj)->)
#define COM_FORWARD_IVRDPServer_GETTER_AuthType_TO_BASE(base) COM_FORWARD_IVRDPServer_GETTER_AuthType_TO (base::)
#define COM_FORWARD_IVRDPServer_SETTER_AuthType_TO(smth) NS_IMETHOD SetAuthType (PRUint32 aAuthType) { return smth SetAuthType (aAuthType); }
#define COM_FORWARD_IVRDPServer_SETTER_AuthType_TO_OBJ(obj) COM_FORWARD_IVRDPServer_SETTER_AuthType_TO ((obj)->)
#define COM_FORWARD_IVRDPServer_SETTER_AuthType_TO_BASE(base) COM_FORWARD_IVRDPServer_SETTER_AuthType_TO (base::)
#define COM_FORWARD_IVRDPServer_GETTER_AuthTimeout_TO(smth) NS_IMETHOD GetAuthTimeout (PRUint32 * aAuthTimeout) { return smth GetAuthTimeout (aAuthTimeout); }
#define COM_FORWARD_IVRDPServer_GETTER_AuthTimeout_TO_OBJ(obj) COM_FORWARD_IVRDPServer_GETTER_AuthTimeout_TO ((obj)->)
#define COM_FORWARD_IVRDPServer_GETTER_AuthTimeout_TO_BASE(base) COM_FORWARD_IVRDPServer_GETTER_AuthTimeout_TO (base::)
#define COM_FORWARD_IVRDPServer_SETTER_AuthTimeout_TO(smth) NS_IMETHOD SetAuthTimeout (PRUint32 aAuthTimeout) { return smth SetAuthTimeout (aAuthTimeout); }
#define COM_FORWARD_IVRDPServer_SETTER_AuthTimeout_TO_OBJ(obj) COM_FORWARD_IVRDPServer_SETTER_AuthTimeout_TO ((obj)->)
#define COM_FORWARD_IVRDPServer_SETTER_AuthTimeout_TO_BASE(base) COM_FORWARD_IVRDPServer_SETTER_AuthTimeout_TO (base::)
#define COM_FORWARD_IVRDPServer_GETTER_AllowMultiConnection_TO(smth) NS_IMETHOD GetAllowMultiConnection (PRBool * aAllowMultiConnection) { return smth GetAllowMultiConnection (aAllowMultiConnection); }
#define COM_FORWARD_IVRDPServer_GETTER_AllowMultiConnection_TO_OBJ(obj) COM_FORWARD_IVRDPServer_GETTER_AllowMultiConnection_TO ((obj)->)
#define COM_FORWARD_IVRDPServer_GETTER_AllowMultiConnection_TO_BASE(base) COM_FORWARD_IVRDPServer_GETTER_AllowMultiConnection_TO (base::)
#define COM_FORWARD_IVRDPServer_SETTER_AllowMultiConnection_TO(smth) NS_IMETHOD SetAllowMultiConnection (PRBool aAllowMultiConnection) { return smth SetAllowMultiConnection (aAllowMultiConnection); }
#define COM_FORWARD_IVRDPServer_SETTER_AllowMultiConnection_TO_OBJ(obj) COM_FORWARD_IVRDPServer_SETTER_AllowMultiConnection_TO ((obj)->)
#define COM_FORWARD_IVRDPServer_SETTER_AllowMultiConnection_TO_BASE(base) COM_FORWARD_IVRDPServer_SETTER_AllowMultiConnection_TO (base::)
#define COM_FORWARD_IVRDPServer_GETTER_ReuseSingleConnection_TO(smth) NS_IMETHOD GetReuseSingleConnection (PRBool * aReuseSingleConnection) { return smth GetReuseSingleConnection (aReuseSingleConnection); }
#define COM_FORWARD_IVRDPServer_GETTER_ReuseSingleConnection_TO_OBJ(obj) COM_FORWARD_IVRDPServer_GETTER_ReuseSingleConnection_TO ((obj)->)
#define COM_FORWARD_IVRDPServer_GETTER_ReuseSingleConnection_TO_BASE(base) COM_FORWARD_IVRDPServer_GETTER_ReuseSingleConnection_TO (base::)
#define COM_FORWARD_IVRDPServer_SETTER_ReuseSingleConnection_TO(smth) NS_IMETHOD SetReuseSingleConnection (PRBool aReuseSingleConnection) { return smth SetReuseSingleConnection (aReuseSingleConnection); }
#define COM_FORWARD_IVRDPServer_SETTER_ReuseSingleConnection_TO_OBJ(obj) COM_FORWARD_IVRDPServer_SETTER_ReuseSingleConnection_TO ((obj)->)
#define COM_FORWARD_IVRDPServer_SETTER_ReuseSingleConnection_TO_BASE(base) COM_FORWARD_IVRDPServer_SETTER_ReuseSingleConnection_TO (base::)
#define COM_FORWARD_IVRDPServer_GETTER_VideoChannel_TO(smth) NS_IMETHOD GetVideoChannel (PRBool * aVideoChannel) { return smth GetVideoChannel (aVideoChannel); }
#define COM_FORWARD_IVRDPServer_GETTER_VideoChannel_TO_OBJ(obj) COM_FORWARD_IVRDPServer_GETTER_VideoChannel_TO ((obj)->)
#define COM_FORWARD_IVRDPServer_GETTER_VideoChannel_TO_BASE(base) COM_FORWARD_IVRDPServer_GETTER_VideoChannel_TO (base::)
#define COM_FORWARD_IVRDPServer_SETTER_VideoChannel_TO(smth) NS_IMETHOD SetVideoChannel (PRBool aVideoChannel) { return smth SetVideoChannel (aVideoChannel); }
#define COM_FORWARD_IVRDPServer_SETTER_VideoChannel_TO_OBJ(obj) COM_FORWARD_IVRDPServer_SETTER_VideoChannel_TO ((obj)->)
#define COM_FORWARD_IVRDPServer_SETTER_VideoChannel_TO_BASE(base) COM_FORWARD_IVRDPServer_SETTER_VideoChannel_TO (base::)
#define COM_FORWARD_IVRDPServer_GETTER_VideoChannelQuality_TO(smth) NS_IMETHOD GetVideoChannelQuality (PRUint32 * aVideoChannelQuality) { return smth GetVideoChannelQuality (aVideoChannelQuality); }
#define COM_FORWARD_IVRDPServer_GETTER_VideoChannelQuality_TO_OBJ(obj) COM_FORWARD_IVRDPServer_GETTER_VideoChannelQuality_TO ((obj)->)
#define COM_FORWARD_IVRDPServer_GETTER_VideoChannelQuality_TO_BASE(base) COM_FORWARD_IVRDPServer_GETTER_VideoChannelQuality_TO (base::)
#define COM_FORWARD_IVRDPServer_SETTER_VideoChannelQuality_TO(smth) NS_IMETHOD SetVideoChannelQuality (PRUint32 aVideoChannelQuality) { return smth SetVideoChannelQuality (aVideoChannelQuality); }
#define COM_FORWARD_IVRDPServer_SETTER_VideoChannelQuality_TO_OBJ(obj) COM_FORWARD_IVRDPServer_SETTER_VideoChannelQuality_TO ((obj)->)
#define COM_FORWARD_IVRDPServer_SETTER_VideoChannelQuality_TO_BASE(base) COM_FORWARD_IVRDPServer_SETTER_VideoChannelQuality_TO (base::)
#define COM_FORWARD_IVRDPServer_TO(smth) NS_FORWARD_IVRDPSERVER (smth)
#define COM_FORWARD_IVRDPServer_TO_OBJ(obj) COM_FORWARD_IVRDPServer_TO ((obj)->)
#define COM_FORWARD_IVRDPServer_TO_BASE(base) COM_FORWARD_IVRDPServer_TO (base::)

/* starting interface:    ISharedFolder */
#define ISHAREDFOLDER_IID_STR "64637bb2-9e17-471c-b8f3-f8968dd9884e"

#define ISHAREDFOLDER_IID \
  {0x64637bb2, 0x9e17, 0x471c, \
    { 0xb8, 0xf3, 0xf8, 0x96, 0x8d, 0xd9, 0x88, 0x4e }}

class NS_NO_VTABLE ISharedFolder : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISHAREDFOLDER_IID)

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

  /* readonly attribute wstring hostPath; */
  NS_IMETHOD GetHostPath(PRUnichar * *aHostPath) = 0;

  /* readonly attribute boolean accessible; */
  NS_IMETHOD GetAccessible(PRBool *aAccessible) = 0;

  /* readonly attribute boolean writable; */
  NS_IMETHOD GetWritable(PRBool *aWritable) = 0;

  /* readonly attribute wstring lastAccessError; */
  NS_IMETHOD GetLastAccessError(PRUnichar * *aLastAccessError) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISHAREDFOLDER \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetHostPath(PRUnichar * *aHostPath); \
  NS_IMETHOD GetAccessible(PRBool *aAccessible); \
  NS_IMETHOD GetWritable(PRBool *aWritable); \
  NS_IMETHOD GetLastAccessError(PRUnichar * *aLastAccessError); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISHAREDFOLDER(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetHostPath(PRUnichar * *aHostPath) { return _to GetHostPath(aHostPath); } \
  NS_IMETHOD GetAccessible(PRBool *aAccessible) { return _to GetAccessible(aAccessible); } \
  NS_IMETHOD GetWritable(PRBool *aWritable) { return _to GetWritable(aWritable); } \
  NS_IMETHOD GetLastAccessError(PRUnichar * *aLastAccessError) { return _to GetLastAccessError(aLastAccessError); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISHAREDFOLDER(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetHostPath(PRUnichar * *aHostPath) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHostPath(aHostPath); } \
  NS_IMETHOD GetAccessible(PRBool *aAccessible) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAccessible(aAccessible); } \
  NS_IMETHOD GetWritable(PRBool *aWritable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWritable(aWritable); } \
  NS_IMETHOD GetLastAccessError(PRUnichar * *aLastAccessError) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastAccessError(aLastAccessError); } 

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

/* Header file */
class _MYCLASS_ : public ISharedFolder
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISHAREDFOLDER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring hostPath; */
NS_IMETHODIMP _MYCLASS_::GetHostPath(PRUnichar * *aHostPath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean accessible; */
NS_IMETHODIMP _MYCLASS_::GetAccessible(PRBool *aAccessible)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean writable; */
NS_IMETHODIMP _MYCLASS_::GetWritable(PRBool *aWritable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring lastAccessError; */
NS_IMETHODIMP _MYCLASS_::GetLastAccessError(PRUnichar * *aLastAccessError)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_ISharedFolder_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_ISharedFolder_GETTER_Name_TO_OBJ(obj) COM_FORWARD_ISharedFolder_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_ISharedFolder_GETTER_Name_TO_BASE(base) COM_FORWARD_ISharedFolder_GETTER_Name_TO (base::)
#define COM_FORWARD_ISharedFolder_GETTER_HostPath_TO(smth) NS_IMETHOD GetHostPath (PRUnichar * * aHostPath) { return smth GetHostPath (aHostPath); }
#define COM_FORWARD_ISharedFolder_GETTER_HostPath_TO_OBJ(obj) COM_FORWARD_ISharedFolder_GETTER_HostPath_TO ((obj)->)
#define COM_FORWARD_ISharedFolder_GETTER_HostPath_TO_BASE(base) COM_FORWARD_ISharedFolder_GETTER_HostPath_TO (base::)
#define COM_FORWARD_ISharedFolder_GETTER_Accessible_TO(smth) NS_IMETHOD GetAccessible (PRBool * aAccessible) { return smth GetAccessible (aAccessible); }
#define COM_FORWARD_ISharedFolder_GETTER_Accessible_TO_OBJ(obj) COM_FORWARD_ISharedFolder_GETTER_Accessible_TO ((obj)->)
#define COM_FORWARD_ISharedFolder_GETTER_Accessible_TO_BASE(base) COM_FORWARD_ISharedFolder_GETTER_Accessible_TO (base::)
#define COM_FORWARD_ISharedFolder_GETTER_Writable_TO(smth) NS_IMETHOD GetWritable (PRBool * aWritable) { return smth GetWritable (aWritable); }
#define COM_FORWARD_ISharedFolder_GETTER_Writable_TO_OBJ(obj) COM_FORWARD_ISharedFolder_GETTER_Writable_TO ((obj)->)
#define COM_FORWARD_ISharedFolder_GETTER_Writable_TO_BASE(base) COM_FORWARD_ISharedFolder_GETTER_Writable_TO (base::)
#define COM_FORWARD_ISharedFolder_GETTER_LastAccessError_TO(smth) NS_IMETHOD GetLastAccessError (PRUnichar * * aLastAccessError) { return smth GetLastAccessError (aLastAccessError); }
#define COM_FORWARD_ISharedFolder_GETTER_LastAccessError_TO_OBJ(obj) COM_FORWARD_ISharedFolder_GETTER_LastAccessError_TO ((obj)->)
#define COM_FORWARD_ISharedFolder_GETTER_LastAccessError_TO_BASE(base) COM_FORWARD_ISharedFolder_GETTER_LastAccessError_TO (base::)
#define COM_FORWARD_ISharedFolder_TO(smth) NS_FORWARD_ISHAREDFOLDER (smth)
#define COM_FORWARD_ISharedFolder_TO_OBJ(obj) COM_FORWARD_ISharedFolder_TO ((obj)->)
#define COM_FORWARD_ISharedFolder_TO_BASE(base) COM_FORWARD_ISharedFolder_TO (base::)

/* starting interface:    IInternalSessionControl */
#define IINTERNALSESSIONCONTROL_IID_STR "ab161f72-e4b3-44e6-a919-2256474bda66"

#define IINTERNALSESSIONCONTROL_IID \
  {0xab161f72, 0xe4b3, 0x44e6, \
    { 0xa9, 0x19, 0x22, 0x56, 0x47, 0x4b, 0xda, 0x66 }}

class NS_NO_VTABLE IInternalSessionControl : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IINTERNALSESSIONCONTROL_IID)

  /* void getPID ([retval] out unsigned long pid); */
  NS_IMETHOD GetPID(PRUint32 *pid) = 0;

  /* void getRemoteConsole ([retval] out IConsole console); */
  NS_IMETHOD GetRemoteConsole(IConsole **console) = 0;

  /* void assignMachine (in IMachine machine); */
  NS_IMETHOD AssignMachine(IMachine *machine) = 0;

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

  /* void updateMachineState (in PRUint32 aMachineState); */
  NS_IMETHOD UpdateMachineState(PRUint32 aMachineState) = 0;

  /* void uninitialize (); */
  NS_IMETHOD Uninitialize(void) = 0;

  /* void onNetworkAdapterChange (in INetworkAdapter networkAdapter, in boolean changeAdapter); */
  NS_IMETHOD OnNetworkAdapterChange(INetworkAdapter *networkAdapter, PRBool changeAdapter) = 0;

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

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

  /* void onStorageControllerChange (); */
  NS_IMETHOD OnStorageControllerChange(void) = 0;

  /* void onMediumChange (in IMediumAttachment mediumAttachment, in boolean force); */
  NS_IMETHOD OnMediumChange(IMediumAttachment *mediumAttachment, PRBool force) = 0;

  /* void onCPUChange (in unsigned long cpu, in boolean add); */
  NS_IMETHOD OnCPUChange(PRUint32 cpu, PRBool add) = 0;

  /* void onVRDPServerChange (in boolean restart); */
  NS_IMETHOD OnVRDPServerChange(PRBool restart) = 0;

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

  /* void onSharedFolderChange (in boolean global); */
  NS_IMETHOD OnSharedFolderChange(PRBool global) = 0;

  /* void onUSBDeviceAttach (in IUSBDevice device, in IVirtualBoxErrorInfo error, in unsigned long maskedInterfaces); */
  NS_IMETHOD OnUSBDeviceAttach(IUSBDevice *device, IVirtualBoxErrorInfo *error, PRUint32 maskedInterfaces) = 0;

  /* void onUSBDeviceDetach (in wstring id, in IVirtualBoxErrorInfo error); */
  NS_IMETHOD OnUSBDeviceDetach(const PRUnichar *id, IVirtualBoxErrorInfo *error) = 0;

  /* void onShowWindow (in boolean check, out boolean canShow, out unsigned long long winId); */
  NS_IMETHOD OnShowWindow(PRBool check, PRBool *canShow, PRUint64 *winId) = 0;

  /* void accessGuestProperty (in wstring name, in wstring value, in wstring flags, in boolean isSetter, out wstring retValue, out unsigned long long retTimestamp, out wstring retFlags); */
  NS_IMETHOD AccessGuestProperty(const PRUnichar *name, const PRUnichar *value, const PRUnichar *flags, PRBool isSetter, PRUnichar **retValue, PRUint64 *retTimestamp, PRUnichar **retFlags) = 0;

  /* void enumerateGuestProperties (in wstring patterns, out unsigned long keySize, [array, size_is (keySize)] out wstring key, out unsigned long valueSize, [array, size_is (valueSize)] out wstring value, out unsigned long timestampSize, [array, size_is (timestampSize)] out unsigned long long timestamp, out unsigned long flagsSize, [array, size_is (flagsSize)] out wstring flags); */
  NS_IMETHOD EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *keySize, PRUnichar ***key, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRUint64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags) = 0;

  /* void onlineMergeMedium (in IMediumAttachment mediumAttachment, in unsigned long sourceIdx, in unsigned long targetIdx, in IMedium source, in IMedium target, in boolean mergeForward, in IMedium parentForTarget, in unsigned long childrenToReparentSize, [array, size_is (childrenToReparentSize)] in IMedium childrenToReparent, in IProgress progress); */
  NS_IMETHOD OnlineMergeMedium(IMediumAttachment *mediumAttachment, PRUint32 sourceIdx, PRUint32 targetIdx, IMedium *source, IMedium *target, PRBool mergeForward, IMedium *parentForTarget, PRUint32 childrenToReparentSize, IMedium **childrenToReparent, IProgress *progress) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IINTERNALSESSIONCONTROL \
  NS_IMETHOD GetPID(PRUint32 *pid); \
  NS_IMETHOD GetRemoteConsole(IConsole **console); \
  NS_IMETHOD AssignMachine(IMachine *machine); \
  NS_IMETHOD AssignRemoteMachine(IMachine *machine, IConsole *console); \
  NS_IMETHOD UpdateMachineState(PRUint32 aMachineState); \
  NS_IMETHOD Uninitialize(void); \
  NS_IMETHOD OnNetworkAdapterChange(INetworkAdapter *networkAdapter, PRBool changeAdapter); \
  NS_IMETHOD OnSerialPortChange(ISerialPort *serialPort); \
  NS_IMETHOD OnParallelPortChange(IParallelPort *parallelPort); \
  NS_IMETHOD OnStorageControllerChange(void); \
  NS_IMETHOD OnMediumChange(IMediumAttachment *mediumAttachment, PRBool force); \
  NS_IMETHOD OnCPUChange(PRUint32 cpu, PRBool add); \
  NS_IMETHOD OnVRDPServerChange(PRBool restart); \
  NS_IMETHOD OnUSBControllerChange(void); \
  NS_IMETHOD OnSharedFolderChange(PRBool global); \
  NS_IMETHOD OnUSBDeviceAttach(IUSBDevice *device, IVirtualBoxErrorInfo *error, PRUint32 maskedInterfaces); \
  NS_IMETHOD OnUSBDeviceDetach(const PRUnichar *id, IVirtualBoxErrorInfo *error); \
  NS_IMETHOD OnShowWindow(PRBool check, PRBool *canShow, PRUint64 *winId); \
  NS_IMETHOD AccessGuestProperty(const PRUnichar *name, const PRUnichar *value, const PRUnichar *flags, PRBool isSetter, PRUnichar **retValue, PRUint64 *retTimestamp, PRUnichar **retFlags); \
  NS_IMETHOD EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *keySize, PRUnichar ***key, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRUint64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags); \
  NS_IMETHOD OnlineMergeMedium(IMediumAttachment *mediumAttachment, PRUint32 sourceIdx, PRUint32 targetIdx, IMedium *source, IMedium *target, PRBool mergeForward, IMedium *parentForTarget, PRUint32 childrenToReparentSize, IMedium **childrenToReparent, IProgress *progress); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IINTERNALSESSIONCONTROL(_to) \
  NS_IMETHOD GetPID(PRUint32 *pid) { return _to GetPID(pid); } \
  NS_IMETHOD GetRemoteConsole(IConsole **console) { return _to GetRemoteConsole(console); } \
  NS_IMETHOD AssignMachine(IMachine *machine) { return _to AssignMachine(machine); } \
  NS_IMETHOD AssignRemoteMachine(IMachine *machine, IConsole *console) { return _to AssignRemoteMachine(machine, console); } \
  NS_IMETHOD UpdateMachineState(PRUint32 aMachineState) { return _to UpdateMachineState(aMachineState); } \
  NS_IMETHOD Uninitialize(void) { return _to Uninitialize(); } \
  NS_IMETHOD OnNetworkAdapterChange(INetworkAdapter *networkAdapter, PRBool changeAdapter) { return _to OnNetworkAdapterChange(networkAdapter, changeAdapter); } \
  NS_IMETHOD OnSerialPortChange(ISerialPort *serialPort) { return _to OnSerialPortChange(serialPort); } \
  NS_IMETHOD OnParallelPortChange(IParallelPort *parallelPort) { return _to OnParallelPortChange(parallelPort); } \
  NS_IMETHOD OnStorageControllerChange(void) { return _to OnStorageControllerChange(); } \
  NS_IMETHOD OnMediumChange(IMediumAttachment *mediumAttachment, PRBool force) { return _to OnMediumChange(mediumAttachment, force); } \
  NS_IMETHOD OnCPUChange(PRUint32 cpu, PRBool add) { return _to OnCPUChange(cpu, add); } \
  NS_IMETHOD OnVRDPServerChange(PRBool restart) { return _to OnVRDPServerChange(restart); } \
  NS_IMETHOD OnUSBControllerChange(void) { return _to OnUSBControllerChange(); } \
  NS_IMETHOD OnSharedFolderChange(PRBool global) { return _to OnSharedFolderChange(global); } \
  NS_IMETHOD OnUSBDeviceAttach(IUSBDevice *device, IVirtualBoxErrorInfo *error, PRUint32 maskedInterfaces) { return _to OnUSBDeviceAttach(device, error, maskedInterfaces); } \
  NS_IMETHOD OnUSBDeviceDetach(const PRUnichar *id, IVirtualBoxErrorInfo *error) { return _to OnUSBDeviceDetach(id, error); } \
  NS_IMETHOD OnShowWindow(PRBool check, PRBool *canShow, PRUint64 *winId) { return _to OnShowWindow(check, canShow, winId); } \
  NS_IMETHOD AccessGuestProperty(const PRUnichar *name, const PRUnichar *value, const PRUnichar *flags, PRBool isSetter, PRUnichar **retValue, PRUint64 *retTimestamp, PRUnichar **retFlags) { return _to AccessGuestProperty(name, value, flags, isSetter, retValue, retTimestamp, retFlags); } \
  NS_IMETHOD EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *keySize, PRUnichar ***key, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRUint64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags) { return _to EnumerateGuestProperties(patterns, keySize, key, valueSize, value, timestampSize, timestamp, flagsSize, flags); } \
  NS_IMETHOD OnlineMergeMedium(IMediumAttachment *mediumAttachment, PRUint32 sourceIdx, PRUint32 targetIdx, IMedium *source, IMedium *target, PRBool mergeForward, IMedium *parentForTarget, PRUint32 childrenToReparentSize, IMedium **childrenToReparent, IProgress *progress) { return _to OnlineMergeMedium(mediumAttachment, sourceIdx, targetIdx, source, target, mergeForward, parentForTarget, childrenToReparentSize, childrenToReparent, progress); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IINTERNALSESSIONCONTROL(_to) \
  NS_IMETHOD GetPID(PRUint32 *pid) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPID(pid); } \
  NS_IMETHOD GetRemoteConsole(IConsole **console) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRemoteConsole(console); } \
  NS_IMETHOD AssignMachine(IMachine *machine) { return !_to ? NS_ERROR_NULL_POINTER : _to->AssignMachine(machine); } \
  NS_IMETHOD AssignRemoteMachine(IMachine *machine, IConsole *console) { return !_to ? NS_ERROR_NULL_POINTER : _to->AssignRemoteMachine(machine, console); } \
  NS_IMETHOD UpdateMachineState(PRUint32 aMachineState) { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateMachineState(aMachineState); } \
  NS_IMETHOD Uninitialize(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Uninitialize(); } \
  NS_IMETHOD OnNetworkAdapterChange(INetworkAdapter *networkAdapter, PRBool changeAdapter) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnNetworkAdapterChange(networkAdapter, changeAdapter); } \
  NS_IMETHOD OnSerialPortChange(ISerialPort *serialPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnSerialPortChange(serialPort); } \
  NS_IMETHOD OnParallelPortChange(IParallelPort *parallelPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnParallelPortChange(parallelPort); } \
  NS_IMETHOD OnStorageControllerChange(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnStorageControllerChange(); } \
  NS_IMETHOD OnMediumChange(IMediumAttachment *mediumAttachment, PRBool force) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnMediumChange(mediumAttachment, force); } \
  NS_IMETHOD OnCPUChange(PRUint32 cpu, PRBool add) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnCPUChange(cpu, add); } \
  NS_IMETHOD OnVRDPServerChange(PRBool restart) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnVRDPServerChange(restart); } \
  NS_IMETHOD OnUSBControllerChange(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnUSBControllerChange(); } \
  NS_IMETHOD OnSharedFolderChange(PRBool global) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnSharedFolderChange(global); } \
  NS_IMETHOD OnUSBDeviceAttach(IUSBDevice *device, IVirtualBoxErrorInfo *error, PRUint32 maskedInterfaces) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnUSBDeviceAttach(device, error, maskedInterfaces); } \
  NS_IMETHOD OnUSBDeviceDetach(const PRUnichar *id, IVirtualBoxErrorInfo *error) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnUSBDeviceDetach(id, error); } \
  NS_IMETHOD OnShowWindow(PRBool check, PRBool *canShow, PRUint64 *winId) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnShowWindow(check, canShow, winId); } \
  NS_IMETHOD AccessGuestProperty(const PRUnichar *name, const PRUnichar *value, const PRUnichar *flags, PRBool isSetter, PRUnichar **retValue, PRUint64 *retTimestamp, PRUnichar **retFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->AccessGuestProperty(name, value, flags, isSetter, retValue, retTimestamp, retFlags); } \
  NS_IMETHOD EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *keySize, PRUnichar ***key, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRUint64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnumerateGuestProperties(patterns, keySize, key, valueSize, value, timestampSize, timestamp, flagsSize, flags); } \
  NS_IMETHOD OnlineMergeMedium(IMediumAttachment *mediumAttachment, PRUint32 sourceIdx, PRUint32 targetIdx, IMedium *source, IMedium *target, PRBool mergeForward, IMedium *parentForTarget, PRUint32 childrenToReparentSize, IMedium **childrenToReparent, IProgress *progress) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnlineMergeMedium(mediumAttachment, sourceIdx, targetIdx, source, target, mergeForward, parentForTarget, childrenToReparentSize, childrenToReparent, progress); } 

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

/* Header file */
class _MYCLASS_ : public IInternalSessionControl
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IINTERNALSESSIONCONTROL

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void getPID ([retval] out unsigned long pid); */
NS_IMETHODIMP _MYCLASS_::GetPID(PRUint32 *pid)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getRemoteConsole ([retval] out IConsole console); */
NS_IMETHODIMP _MYCLASS_::GetRemoteConsole(IConsole **console)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void assignMachine (in IMachine machine); */
NS_IMETHODIMP _MYCLASS_::AssignMachine(IMachine *machine)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void assignRemoteMachine (in IMachine machine, in IConsole console); */
NS_IMETHODIMP _MYCLASS_::AssignRemoteMachine(IMachine *machine, IConsole *console)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void updateMachineState (in PRUint32 aMachineState); */
NS_IMETHODIMP _MYCLASS_::UpdateMachineState(PRUint32 aMachineState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void uninitialize (); */
NS_IMETHODIMP _MYCLASS_::Uninitialize()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onNetworkAdapterChange (in INetworkAdapter networkAdapter, in boolean changeAdapter); */
NS_IMETHODIMP _MYCLASS_::OnNetworkAdapterChange(INetworkAdapter *networkAdapter, PRBool changeAdapter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onSerialPortChange (in ISerialPort serialPort); */
NS_IMETHODIMP _MYCLASS_::OnSerialPortChange(ISerialPort *serialPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onParallelPortChange (in IParallelPort parallelPort); */
NS_IMETHODIMP _MYCLASS_::OnParallelPortChange(IParallelPort *parallelPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onStorageControllerChange (); */
NS_IMETHODIMP _MYCLASS_::OnStorageControllerChange()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onMediumChange (in IMediumAttachment mediumAttachment, in boolean force); */
NS_IMETHODIMP _MYCLASS_::OnMediumChange(IMediumAttachment *mediumAttachment, PRBool force)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onCPUChange (in unsigned long cpu, in boolean add); */
NS_IMETHODIMP _MYCLASS_::OnCPUChange(PRUint32 cpu, PRBool add)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onVRDPServerChange (in boolean restart); */
NS_IMETHODIMP _MYCLASS_::OnVRDPServerChange(PRBool restart)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void onSharedFolderChange (in boolean global); */
NS_IMETHODIMP _MYCLASS_::OnSharedFolderChange(PRBool global)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onUSBDeviceAttach (in IUSBDevice device, in IVirtualBoxErrorInfo error, in unsigned long maskedInterfaces); */
NS_IMETHODIMP _MYCLASS_::OnUSBDeviceAttach(IUSBDevice *device, IVirtualBoxErrorInfo *error, PRUint32 maskedInterfaces)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onUSBDeviceDetach (in wstring id, in IVirtualBoxErrorInfo error); */
NS_IMETHODIMP _MYCLASS_::OnUSBDeviceDetach(const PRUnichar *id, IVirtualBoxErrorInfo *error)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onShowWindow (in boolean check, out boolean canShow, out unsigned long long winId); */
NS_IMETHODIMP _MYCLASS_::OnShowWindow(PRBool check, PRBool *canShow, PRUint64 *winId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void accessGuestProperty (in wstring name, in wstring value, in wstring flags, in boolean isSetter, out wstring retValue, out unsigned long long retTimestamp, out wstring retFlags); */
NS_IMETHODIMP _MYCLASS_::AccessGuestProperty(const PRUnichar *name, const PRUnichar *value, const PRUnichar *flags, PRBool isSetter, PRUnichar **retValue, PRUint64 *retTimestamp, PRUnichar **retFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enumerateGuestProperties (in wstring patterns, out unsigned long keySize, [array, size_is (keySize)] out wstring key, out unsigned long valueSize, [array, size_is (valueSize)] out wstring value, out unsigned long timestampSize, [array, size_is (timestampSize)] out unsigned long long timestamp, out unsigned long flagsSize, [array, size_is (flagsSize)] out wstring flags); */
NS_IMETHODIMP _MYCLASS_::EnumerateGuestProperties(const PRUnichar *patterns, PRUint32 *keySize, PRUnichar ***key, PRUint32 *valueSize, PRUnichar ***value, PRUint32 *timestampSize, PRUint64 **timestamp, PRUint32 *flagsSize, PRUnichar ***flags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onlineMergeMedium (in IMediumAttachment mediumAttachment, in unsigned long sourceIdx, in unsigned long targetIdx, in IMedium source, in IMedium target, in boolean mergeForward, in IMedium parentForTarget, in unsigned long childrenToReparentSize, [array, size_is (childrenToReparentSize)] in IMedium childrenToReparent, in IProgress progress); */
NS_IMETHODIMP _MYCLASS_::OnlineMergeMedium(IMediumAttachment *mediumAttachment, PRUint32 sourceIdx, PRUint32 targetIdx, IMedium *source, IMedium *target, PRBool mergeForward, IMedium *parentForTarget, PRUint32 childrenToReparentSize, IMedium **childrenToReparent, IProgress *progress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IInternalSessionControl_GetPID_TO(smth) NS_IMETHOD GetPID (PRUint32 * aPid) { return smth GetPID (aPid); }
#define COM_FORWARD_IInternalSessionControl_GetPID_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_GetPID_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_GetPID_TO_BASE(base) COM_FORWARD_IInternalSessionControl_GetPID_TO (base::)
#define COM_FORWARD_IInternalSessionControl_GetRemoteConsole_TO(smth) NS_IMETHOD GetRemoteConsole (IConsole * * aConsole) { return smth GetRemoteConsole (aConsole); }
#define COM_FORWARD_IInternalSessionControl_GetRemoteConsole_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_GetRemoteConsole_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_GetRemoteConsole_TO_BASE(base) COM_FORWARD_IInternalSessionControl_GetRemoteConsole_TO (base::)
#define COM_FORWARD_IInternalSessionControl_AssignMachine_TO(smth) NS_IMETHOD AssignMachine (IMachine * aMachine) { return smth AssignMachine (aMachine); }
#define COM_FORWARD_IInternalSessionControl_AssignMachine_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_AssignMachine_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_AssignMachine_TO_BASE(base) COM_FORWARD_IInternalSessionControl_AssignMachine_TO (base::)
#define COM_FORWARD_IInternalSessionControl_AssignRemoteMachine_TO(smth) NS_IMETHOD AssignRemoteMachine (IMachine * aMachine, IConsole * aConsole) { return smth AssignRemoteMachine (aMachine, aConsole); }
#define COM_FORWARD_IInternalSessionControl_AssignRemoteMachine_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_AssignRemoteMachine_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_AssignRemoteMachine_TO_BASE(base) COM_FORWARD_IInternalSessionControl_AssignRemoteMachine_TO (base::)
#define COM_FORWARD_IInternalSessionControl_UpdateMachineState_TO(smth) NS_IMETHOD UpdateMachineState (PRUint32 aAMachineState) { return smth UpdateMachineState (aAMachineState); }
#define COM_FORWARD_IInternalSessionControl_UpdateMachineState_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_UpdateMachineState_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_UpdateMachineState_TO_BASE(base) COM_FORWARD_IInternalSessionControl_UpdateMachineState_TO (base::)
#define COM_FORWARD_IInternalSessionControl_Uninitialize_TO(smth) NS_IMETHOD Uninitialize() { return smth Uninitialize(); }
#define COM_FORWARD_IInternalSessionControl_Uninitialize_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_Uninitialize_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_Uninitialize_TO_BASE(base) COM_FORWARD_IInternalSessionControl_Uninitialize_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnNetworkAdapterChange_TO(smth) NS_IMETHOD OnNetworkAdapterChange (INetworkAdapter * aNetworkAdapter, PRBool aChangeAdapter) { return smth OnNetworkAdapterChange (aNetworkAdapter, aChangeAdapter); }
#define COM_FORWARD_IInternalSessionControl_OnNetworkAdapterChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnNetworkAdapterChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnNetworkAdapterChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnNetworkAdapterChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnSerialPortChange_TO(smth) NS_IMETHOD OnSerialPortChange (ISerialPort * aSerialPort) { return smth OnSerialPortChange (aSerialPort); }
#define COM_FORWARD_IInternalSessionControl_OnSerialPortChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnSerialPortChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnSerialPortChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnSerialPortChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnParallelPortChange_TO(smth) NS_IMETHOD OnParallelPortChange (IParallelPort * aParallelPort) { return smth OnParallelPortChange (aParallelPort); }
#define COM_FORWARD_IInternalSessionControl_OnParallelPortChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnParallelPortChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnParallelPortChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnParallelPortChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnStorageControllerChange_TO(smth) NS_IMETHOD OnStorageControllerChange() { return smth OnStorageControllerChange(); }
#define COM_FORWARD_IInternalSessionControl_OnStorageControllerChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnStorageControllerChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnStorageControllerChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnStorageControllerChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnMediumChange_TO(smth) NS_IMETHOD OnMediumChange (IMediumAttachment * aMediumAttachment, PRBool aForce) { return smth OnMediumChange (aMediumAttachment, aForce); }
#define COM_FORWARD_IInternalSessionControl_OnMediumChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnMediumChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnMediumChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnMediumChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnCPUChange_TO(smth) NS_IMETHOD OnCPUChange (PRUint32 aCpu, PRBool aAdd) { return smth OnCPUChange (aCpu, aAdd); }
#define COM_FORWARD_IInternalSessionControl_OnCPUChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnCPUChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnCPUChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnCPUChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnVRDPServerChange_TO(smth) NS_IMETHOD OnVRDPServerChange (PRBool aRestart) { return smth OnVRDPServerChange (aRestart); }
#define COM_FORWARD_IInternalSessionControl_OnVRDPServerChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnVRDPServerChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnVRDPServerChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnVRDPServerChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnUSBControllerChange_TO(smth) NS_IMETHOD OnUSBControllerChange() { return smth OnUSBControllerChange(); }
#define COM_FORWARD_IInternalSessionControl_OnUSBControllerChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnUSBControllerChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnUSBControllerChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnUSBControllerChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnSharedFolderChange_TO(smth) NS_IMETHOD OnSharedFolderChange (PRBool aGlobal) { return smth OnSharedFolderChange (aGlobal); }
#define COM_FORWARD_IInternalSessionControl_OnSharedFolderChange_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnSharedFolderChange_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnSharedFolderChange_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnSharedFolderChange_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnUSBDeviceAttach_TO(smth) NS_IMETHOD OnUSBDeviceAttach (IUSBDevice * aDevice, IVirtualBoxErrorInfo * aError, PRUint32 aMaskedInterfaces) { return smth OnUSBDeviceAttach (aDevice, aError, aMaskedInterfaces); }
#define COM_FORWARD_IInternalSessionControl_OnUSBDeviceAttach_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnUSBDeviceAttach_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnUSBDeviceAttach_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnUSBDeviceAttach_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnUSBDeviceDetach_TO(smth) NS_IMETHOD OnUSBDeviceDetach (PRUnichar * aId, IVirtualBoxErrorInfo * aError) { return smth OnUSBDeviceDetach (aId, aError); }
#define COM_FORWARD_IInternalSessionControl_OnUSBDeviceDetach_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnUSBDeviceDetach_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnUSBDeviceDetach_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnUSBDeviceDetach_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnShowWindow_TO(smth) NS_IMETHOD OnShowWindow (PRBool aCheck, PRBool * aCanShow, PRUint64 * aWinId) { return smth OnShowWindow (aCheck, aCanShow, aWinId); }
#define COM_FORWARD_IInternalSessionControl_OnShowWindow_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnShowWindow_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnShowWindow_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnShowWindow_TO (base::)
#define COM_FORWARD_IInternalSessionControl_AccessGuestProperty_TO(smth) NS_IMETHOD AccessGuestProperty (PRUnichar * aName, PRUnichar * aValue, PRUnichar * aFlags, PRBool aIsSetter, PRUnichar * * aRetValue, PRUint64 * aRetTimestamp, PRUnichar * * aRetFlags) { return smth AccessGuestProperty (aName, aValue, aFlags, aIsSetter, aRetValue, aRetTimestamp, aRetFlags); }
#define COM_FORWARD_IInternalSessionControl_AccessGuestProperty_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_AccessGuestProperty_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_AccessGuestProperty_TO_BASE(base) COM_FORWARD_IInternalSessionControl_AccessGuestProperty_TO (base::)
#define COM_FORWARD_IInternalSessionControl_EnumerateGuestProperties_TO(smth) NS_IMETHOD EnumerateGuestProperties (PRUnichar * aPatterns, PRUint32 * aKeySize, PRUnichar * * * aKey, PRUint32 * aValueSize, PRUnichar * * * aValue, PRUint32 * aTimestampSize, PRUint64 * * aTimestamp, PRUint32 * aFlagsSize, PRUnichar * * * aFlags) { return smth EnumerateGuestProperties (aPatterns, aKeySize+++, aKey, aValueSize+++, aValue, aTimestampSize+++, aTimestamp, aFlagsSize, aFlags); }
#define COM_FORWARD_IInternalSessionControl_EnumerateGuestProperties_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_EnumerateGuestProperties_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_EnumerateGuestProperties_TO_BASE(base) COM_FORWARD_IInternalSessionControl_EnumerateGuestProperties_TO (base::)
#define COM_FORWARD_IInternalSessionControl_OnlineMergeMedium_TO(smth) NS_IMETHOD OnlineMergeMedium (IMediumAttachment * aMediumAttachment, PRUint32 aSourceIdx, PRUint32 aTargetIdx, IMedium * aSource, IMedium * aTarget, PRBool aMergeForward, IMedium * aParentForTarget, PRUint32 aChildrenToReparentSize, IMedium * * aChildrenToReparent, IProgress * aProgress) { return smth OnlineMergeMedium (aMediumAttachment, aSourceIdx, aTargetIdx, aSource, aTarget, aMergeForward, aParentForTarget, aChildrenToReparentSize+++, aChildrenToReparent, aProgress); }
#define COM_FORWARD_IInternalSessionControl_OnlineMergeMedium_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_OnlineMergeMedium_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_OnlineMergeMedium_TO_BASE(base) COM_FORWARD_IInternalSessionControl_OnlineMergeMedium_TO (base::)
#define COM_FORWARD_IInternalSessionControl_TO(smth) NS_FORWARD_IINTERNALSESSIONCONTROL (smth)
#define COM_FORWARD_IInternalSessionControl_TO_OBJ(obj) COM_FORWARD_IInternalSessionControl_TO ((obj)->)
#define COM_FORWARD_IInternalSessionControl_TO_BASE(base) COM_FORWARD_IInternalSessionControl_TO (base::)

/* starting interface:    ISession */
#define ISESSION_IID_STR "12f4dcdb-12b2-4ec1-b7cd-ddd9f6c5bf4d"

#define ISESSION_IID \
  {0x12f4dcdb, 0x12b2, 0x4ec1, \
    { 0xb7, 0xcd, 0xdd, 0xd9, 0xf6, 0xc5, 0xbf, 0x4d }}

class NS_NO_VTABLE ISession : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISESSION_IID)

  /* readonly attribute PRUint32 state; */
  NS_IMETHOD GetState(PRUint32 *aState) = 0;

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

  /* readonly attribute IMachine machine; */
  NS_IMETHOD GetMachine(IMachine * *aMachine) = 0;

  /* readonly attribute IConsole console; */
  NS_IMETHOD GetConsole(IConsole * *aConsole) = 0;

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

#define COM_FORWARD_ISession_GETTER_State_TO(smth) NS_IMETHOD GetState (PRUint32 * aState) { return smth GetState (aState); }
#define COM_FORWARD_ISession_GETTER_State_TO_OBJ(obj) COM_FORWARD_ISession_GETTER_State_TO ((obj)->)
#define COM_FORWARD_ISession_GETTER_State_TO_BASE(base) COM_FORWARD_ISession_GETTER_State_TO (base::)
#define COM_FORWARD_ISession_GETTER_Type_TO(smth) NS_IMETHOD GetType (PRUint32 * aType) { return smth GetType (aType); }
#define COM_FORWARD_ISession_GETTER_Type_TO_OBJ(obj) COM_FORWARD_ISession_GETTER_Type_TO ((obj)->)
#define COM_FORWARD_ISession_GETTER_Type_TO_BASE(base) COM_FORWARD_ISession_GETTER_Type_TO (base::)
#define COM_FORWARD_ISession_GETTER_Machine_TO(smth) NS_IMETHOD GetMachine (IMachine * * aMachine) { return smth GetMachine (aMachine); }
#define COM_FORWARD_ISession_GETTER_Machine_TO_OBJ(obj) COM_FORWARD_ISession_GETTER_Machine_TO ((obj)->)
#define COM_FORWARD_ISession_GETTER_Machine_TO_BASE(base) COM_FORWARD_ISession_GETTER_Machine_TO (base::)
#define COM_FORWARD_ISession_GETTER_Console_TO(smth) NS_IMETHOD GetConsole (IConsole * * aConsole) { return smth GetConsole (aConsole); }
#define COM_FORWARD_ISession_GETTER_Console_TO_OBJ(obj) COM_FORWARD_ISession_GETTER_Console_TO ((obj)->)
#define COM_FORWARD_ISession_GETTER_Console_TO_BASE(base) COM_FORWARD_ISession_GETTER_Console_TO (base::)
#define COM_FORWARD_ISession_Close_TO(smth) NS_IMETHOD Close() { return smth Close(); }
#define COM_FORWARD_ISession_Close_TO_OBJ(obj) COM_FORWARD_ISession_Close_TO ((obj)->)
#define COM_FORWARD_ISession_Close_TO_BASE(base) COM_FORWARD_ISession_Close_TO (base::)
#define COM_FORWARD_ISession_TO(smth) NS_FORWARD_ISESSION (smth)
#define COM_FORWARD_ISession_TO_OBJ(obj) COM_FORWARD_ISession_TO ((obj)->)
#define COM_FORWARD_ISession_TO_BASE(base) COM_FORWARD_ISession_TO (base::)

/* starting interface:    IStorageController */
#define ISTORAGECONTROLLER_IID_STR "fd93adc0-bbaa-4256-9e6e-00e29f9151c9"

#define ISTORAGECONTROLLER_IID \
  {0xfd93adc0, 0xbbaa, 0x4256, \
    { 0x9e, 0x6e, 0x00, 0xe2, 0x9f, 0x91, 0x51, 0xc9 }}

class NS_NO_VTABLE IStorageController : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(ISTORAGECONTROLLER_IID)

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

  /* readonly attribute unsigned long maxDevicesPerPortCount; */
  NS_IMETHOD GetMaxDevicesPerPortCount(PRUint32 *aMaxDevicesPerPortCount) = 0;

  /* readonly attribute unsigned long minPortCount; */
  NS_IMETHOD GetMinPortCount(PRUint32 *aMinPortCount) = 0;

  /* readonly attribute unsigned long maxPortCount; */
  NS_IMETHOD GetMaxPortCount(PRUint32 *aMaxPortCount) = 0;

  /* attribute unsigned long instance; */
  NS_IMETHOD GetInstance(PRUint32 *aInstance) = 0;
  NS_IMETHOD SetInstance(PRUint32 aInstance) = 0;

  /* attribute unsigned long portCount; */
  NS_IMETHOD GetPortCount(PRUint32 *aPortCount) = 0;
  NS_IMETHOD SetPortCount(PRUint32 aPortCount) = 0;

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

  /* attribute PRUint32 controllerType; */
  NS_IMETHOD GetControllerType(PRUint32 *aControllerType) = 0;
  NS_IMETHOD SetControllerType(PRUint32 aControllerType) = 0;

  /* attribute boolean useHostIOCache; */
  NS_IMETHOD GetUseHostIOCache(PRBool *aUseHostIOCache) = 0;
  NS_IMETHOD SetUseHostIOCache(PRBool aUseHostIOCache) = 0;

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

  /* void setIDEEmulationPort (in long devicePosition, in long portNumber); */
  NS_IMETHOD SetIDEEmulationPort(PRInt32 devicePosition, PRInt32 portNumber) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_ISTORAGECONTROLLER \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD GetMaxDevicesPerPortCount(PRUint32 *aMaxDevicesPerPortCount); \
  NS_IMETHOD GetMinPortCount(PRUint32 *aMinPortCount); \
  NS_IMETHOD GetMaxPortCount(PRUint32 *aMaxPortCount); \
  NS_IMETHOD GetInstance(PRUint32 *aInstance); \
  NS_IMETHOD SetInstance(PRUint32 aInstance); \
  NS_IMETHOD GetPortCount(PRUint32 *aPortCount); \
  NS_IMETHOD SetPortCount(PRUint32 aPortCount); \
  NS_IMETHOD GetBus(PRUint32 *aBus); \
  NS_IMETHOD GetControllerType(PRUint32 *aControllerType); \
  NS_IMETHOD SetControllerType(PRUint32 aControllerType); \
  NS_IMETHOD GetUseHostIOCache(PRBool *aUseHostIOCache); \
  NS_IMETHOD SetUseHostIOCache(PRBool aUseHostIOCache); \
  NS_IMETHOD GetIDEEmulationPort(PRInt32 devicePosition, PRInt32 *portNumber); \
  NS_IMETHOD SetIDEEmulationPort(PRInt32 devicePosition, PRInt32 portNumber); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_ISTORAGECONTROLLER(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD GetMaxDevicesPerPortCount(PRUint32 *aMaxDevicesPerPortCount) { return _to GetMaxDevicesPerPortCount(aMaxDevicesPerPortCount); } \
  NS_IMETHOD GetMinPortCount(PRUint32 *aMinPortCount) { return _to GetMinPortCount(aMinPortCount); } \
  NS_IMETHOD GetMaxPortCount(PRUint32 *aMaxPortCount) { return _to GetMaxPortCount(aMaxPortCount); } \
  NS_IMETHOD GetInstance(PRUint32 *aInstance) { return _to GetInstance(aInstance); } \
  NS_IMETHOD SetInstance(PRUint32 aInstance) { return _to SetInstance(aInstance); } \
  NS_IMETHOD GetPortCount(PRUint32 *aPortCount) { return _to GetPortCount(aPortCount); } \
  NS_IMETHOD SetPortCount(PRUint32 aPortCount) { return _to SetPortCount(aPortCount); } \
  NS_IMETHOD GetBus(PRUint32 *aBus) { return _to GetBus(aBus); } \
  NS_IMETHOD GetControllerType(PRUint32 *aControllerType) { return _to GetControllerType(aControllerType); } \
  NS_IMETHOD SetControllerType(PRUint32 aControllerType) { return _to SetControllerType(aControllerType); } \
  NS_IMETHOD GetUseHostIOCache(PRBool *aUseHostIOCache) { return _to GetUseHostIOCache(aUseHostIOCache); } \
  NS_IMETHOD SetUseHostIOCache(PRBool aUseHostIOCache) { return _to SetUseHostIOCache(aUseHostIOCache); } \
  NS_IMETHOD GetIDEEmulationPort(PRInt32 devicePosition, PRInt32 *portNumber) { return _to GetIDEEmulationPort(devicePosition, portNumber); } \
  NS_IMETHOD SetIDEEmulationPort(PRInt32 devicePosition, PRInt32 portNumber) { return _to SetIDEEmulationPort(devicePosition, portNumber); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_ISTORAGECONTROLLER(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetMaxDevicesPerPortCount(PRUint32 *aMaxDevicesPerPortCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxDevicesPerPortCount(aMaxDevicesPerPortCount); } \
  NS_IMETHOD GetMinPortCount(PRUint32 *aMinPortCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMinPortCount(aMinPortCount); } \
  NS_IMETHOD GetMaxPortCount(PRUint32 *aMaxPortCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxPortCount(aMaxPortCount); } \
  NS_IMETHOD GetInstance(PRUint32 *aInstance) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInstance(aInstance); } \
  NS_IMETHOD SetInstance(PRUint32 aInstance) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetInstance(aInstance); } \
  NS_IMETHOD GetPortCount(PRUint32 *aPortCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPortCount(aPortCount); } \
  NS_IMETHOD SetPortCount(PRUint32 aPortCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPortCount(aPortCount); } \
  NS_IMETHOD GetBus(PRUint32 *aBus) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBus(aBus); } \
  NS_IMETHOD GetControllerType(PRUint32 *aControllerType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetControllerType(aControllerType); } \
  NS_IMETHOD SetControllerType(PRUint32 aControllerType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetControllerType(aControllerType); } \
  NS_IMETHOD GetUseHostIOCache(PRBool *aUseHostIOCache) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUseHostIOCache(aUseHostIOCache); } \
  NS_IMETHOD SetUseHostIOCache(PRBool aUseHostIOCache) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetUseHostIOCache(aUseHostIOCache); } \
  NS_IMETHOD GetIDEEmulationPort(PRInt32 devicePosition, PRInt32 *portNumber) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIDEEmulationPort(devicePosition, portNumber); } \
  NS_IMETHOD SetIDEEmulationPort(PRInt32 devicePosition, PRInt32 portNumber) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIDEEmulationPort(devicePosition, portNumber); } 

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

/* Header file */
class _MYCLASS_ : public IStorageController
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_ISTORAGECONTROLLER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute wstring name; */
NS_IMETHODIMP _MYCLASS_::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long maxDevicesPerPortCount; */
NS_IMETHODIMP _MYCLASS_::GetMaxDevicesPerPortCount(PRUint32 *aMaxDevicesPerPortCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long minPortCount; */
NS_IMETHODIMP _MYCLASS_::GetMinPortCount(PRUint32 *aMinPortCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long maxPortCount; */
NS_IMETHODIMP _MYCLASS_::GetMaxPortCount(PRUint32 *aMaxPortCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long instance; */
NS_IMETHODIMP _MYCLASS_::GetInstance(PRUint32 *aInstance)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetInstance(PRUint32 aInstance)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long portCount; */
NS_IMETHODIMP _MYCLASS_::GetPortCount(PRUint32 *aPortCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPortCount(PRUint32 aPortCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* attribute PRUint32 controllerType; */
NS_IMETHODIMP _MYCLASS_::GetControllerType(PRUint32 *aControllerType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetControllerType(PRUint32 aControllerType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean useHostIOCache; */
NS_IMETHODIMP _MYCLASS_::GetUseHostIOCache(PRBool *aUseHostIOCache)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetUseHostIOCache(PRBool aUseHostIOCache)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void setIDEEmulationPort (in long devicePosition, in long portNumber); */
NS_IMETHODIMP _MYCLASS_::SetIDEEmulationPort(PRInt32 devicePosition, PRInt32 portNumber)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IStorageController_GETTER_Name_TO(smth) NS_IMETHOD GetName (PRUnichar * * aName) { return smth GetName (aName); }
#define COM_FORWARD_IStorageController_GETTER_Name_TO_OBJ(obj) COM_FORWARD_IStorageController_GETTER_Name_TO ((obj)->)
#define COM_FORWARD_IStorageController_GETTER_Name_TO_BASE(base) COM_FORWARD_IStorageController_GETTER_Name_TO (base::)
#define COM_FORWARD_IStorageController_GETTER_MaxDevicesPerPortCount_TO(smth) NS_IMETHOD GetMaxDevicesPerPortCount (PRUint32 * aMaxDevicesPerPortCount) { return smth GetMaxDevicesPerPortCount (aMaxDevicesPerPortCount); }
#define COM_FORWARD_IStorageController_GETTER_MaxDevicesPerPortCount_TO_OBJ(obj) COM_FORWARD_IStorageController_GETTER_MaxDevicesPerPortCount_TO ((obj)->)
#define COM_FORWARD_IStorageController_GETTER_MaxDevicesPerPortCount_TO_BASE(base) COM_FORWARD_IStorageController_GETTER_MaxDevicesPerPortCount_TO (base::)
#define COM_FORWARD_IStorageController_GETTER_MinPortCount_TO(smth) NS_IMETHOD GetMinPortCount (PRUint32 * aMinPortCount) { return smth GetMinPortCount (aMinPortCount); }
#define COM_FORWARD_IStorageController_GETTER_MinPortCount_TO_OBJ(obj) COM_FORWARD_IStorageController_GETTER_MinPortCount_TO ((obj)->)
#define COM_FORWARD_IStorageController_GETTER_MinPortCount_TO_BASE(base) COM_FORWARD_IStorageController_GETTER_MinPortCount_TO (base::)
#define COM_FORWARD_IStorageController_GETTER_MaxPortCount_TO(smth) NS_IMETHOD GetMaxPortCount (PRUint32 * aMaxPortCount) { return smth GetMaxPortCount (aMaxPortCount); }
#define COM_FORWARD_IStorageController_GETTER_MaxPortCount_TO_OBJ(obj) COM_FORWARD_IStorageController_GETTER_MaxPortCount_TO ((obj)->)
#define COM_FORWARD_IStorageController_GETTER_MaxPortCount_TO_BASE(base) COM_FORWARD_IStorageController_GETTER_MaxPortCount_TO (base::)
#define COM_FORWARD_IStorageController_GETTER_Instance_TO(smth) NS_IMETHOD GetInstance (PRUint32 * aInstance) { return smth GetInstance (aInstance); }
#define COM_FORWARD_IStorageController_GETTER_Instance_TO_OBJ(obj) COM_FORWARD_IStorageController_GETTER_Instance_TO ((obj)->)
#define COM_FORWARD_IStorageController_GETTER_Instance_TO_BASE(base) COM_FORWARD_IStorageController_GETTER_Instance_TO (base::)
#define COM_FORWARD_IStorageController_SETTER_Instance_TO(smth) NS_IMETHOD SetInstance (PRUint32 aInstance) { return smth SetInstance (aInstance); }
#define COM_FORWARD_IStorageController_SETTER_Instance_TO_OBJ(obj) COM_FORWARD_IStorageController_SETTER_Instance_TO ((obj)->)
#define COM_FORWARD_IStorageController_SETTER_Instance_TO_BASE(base) COM_FORWARD_IStorageController_SETTER_Instance_TO (base::)
#define COM_FORWARD_IStorageController_GETTER_PortCount_TO(smth) NS_IMETHOD GetPortCount (PRUint32 * aPortCount) { return smth GetPortCount (aPortCount); }
#define COM_FORWARD_IStorageController_GETTER_PortCount_TO_OBJ(obj) COM_FORWARD_IStorageController_GETTER_PortCount_TO ((obj)->)
#define COM_FORWARD_IStorageController_GETTER_PortCount_TO_BASE(base) COM_FORWARD_IStorageController_GETTER_PortCount_TO (base::)
#define COM_FORWARD_IStorageController_SETTER_PortCount_TO(smth) NS_IMETHOD SetPortCount (PRUint32 aPortCount) { return smth SetPortCount (aPortCount); }
#define COM_FORWARD_IStorageController_SETTER_PortCount_TO_OBJ(obj) COM_FORWARD_IStorageController_SETTER_PortCount_TO ((obj)->)
#define COM_FORWARD_IStorageController_SETTER_PortCount_TO_BASE(base) COM_FORWARD_IStorageController_SETTER_PortCount_TO (base::)
#define COM_FORWARD_IStorageController_GETTER_Bus_TO(smth) NS_IMETHOD GetBus (PRUint32 * aBus) { return smth GetBus (aBus); }
#define COM_FORWARD_IStorageController_GETTER_Bus_TO_OBJ(obj) COM_FORWARD_IStorageController_GETTER_Bus_TO ((obj)->)
#define COM_FORWARD_IStorageController_GETTER_Bus_TO_BASE(base) COM_FORWARD_IStorageController_GETTER_Bus_TO (base::)
#define COM_FORWARD_IStorageController_GETTER_ControllerType_TO(smth) NS_IMETHOD GetControllerType (PRUint32 * aControllerType) { return smth GetControllerType (aControllerType); }
#define COM_FORWARD_IStorageController_GETTER_ControllerType_TO_OBJ(obj) COM_FORWARD_IStorageController_GETTER_ControllerType_TO ((obj)->)
#define COM_FORWARD_IStorageController_GETTER_ControllerType_TO_BASE(base) COM_FORWARD_IStorageController_GETTER_ControllerType_TO (base::)
#define COM_FORWARD_IStorageController_SETTER_ControllerType_TO(smth) NS_IMETHOD SetControllerType (PRUint32 aControllerType) { return smth SetControllerType (aControllerType); }
#define COM_FORWARD_IStorageController_SETTER_ControllerType_TO_OBJ(obj) COM_FORWARD_IStorageController_SETTER_ControllerType_TO ((obj)->)
#define COM_FORWARD_IStorageController_SETTER_ControllerType_TO_BASE(base) COM_FORWARD_IStorageController_SETTER_ControllerType_TO (base::)
#define COM_FORWARD_IStorageController_GETTER_UseHostIOCache_TO(smth) NS_IMETHOD GetUseHostIOCache (PRBool * aUseHostIOCache) { return smth GetUseHostIOCache (aUseHostIOCache); }
#define COM_FORWARD_IStorageController_GETTER_UseHostIOCache_TO_OBJ(obj) COM_FORWARD_IStorageController_GETTER_UseHostIOCache_TO ((obj)->)
#define COM_FORWARD_IStorageController_GETTER_UseHostIOCache_TO_BASE(base) COM_FORWARD_IStorageController_GETTER_UseHostIOCache_TO (base::)
#define COM_FORWARD_IStorageController_SETTER_UseHostIOCache_TO(smth) NS_IMETHOD SetUseHostIOCache (PRBool aUseHostIOCache) { return smth SetUseHostIOCache (aUseHostIOCache); }
#define COM_FORWARD_IStorageController_SETTER_UseHostIOCache_TO_OBJ(obj) COM_FORWARD_IStorageController_SETTER_UseHostIOCache_TO ((obj)->)
#define COM_FORWARD_IStorageController_SETTER_UseHostIOCache_TO_BASE(base) COM_FORWARD_IStorageController_SETTER_UseHostIOCache_TO (base::)
#define COM_FORWARD_IStorageController_GetIDEEmulationPort_TO(smth) NS_IMETHOD GetIDEEmulationPort (PRInt32 aDevicePosition, PRInt32 * aPortNumber) { return smth GetIDEEmulationPort (aDevicePosition, aPortNumber); }
#define COM_FORWARD_IStorageController_GetIDEEmulationPort_TO_OBJ(obj) COM_FORWARD_IStorageController_GetIDEEmulationPort_TO ((obj)->)
#define COM_FORWARD_IStorageController_GetIDEEmulationPort_TO_BASE(base) COM_FORWARD_IStorageController_GetIDEEmulationPort_TO (base::)
#define COM_FORWARD_IStorageController_SetIDEEmulationPort_TO(smth) NS_IMETHOD SetIDEEmulationPort (PRInt32 aDevicePosition, PRInt32 aPortNumber) { return smth SetIDEEmulationPort (aDevicePosition, aPortNumber); }
#define COM_FORWARD_IStorageController_SetIDEEmulationPort_TO_OBJ(obj) COM_FORWARD_IStorageController_SetIDEEmulationPort_TO ((obj)->)
#define COM_FORWARD_IStorageController_SetIDEEmulationPort_TO_BASE(base) COM_FORWARD_IStorageController_SetIDEEmulationPort_TO (base::)
#define COM_FORWARD_IStorageController_TO(smth) NS_FORWARD_ISTORAGECONTROLLER (smth)
#define COM_FORWARD_IStorageController_TO_OBJ(obj) COM_FORWARD_IStorageController_TO ((obj)->)
#define COM_FORWARD_IStorageController_TO_BASE(base) COM_FORWARD_IStorageController_TO (base::)

/* starting interface:    IPerformanceMetric */
#define IPERFORMANCEMETRIC_IID_STR "2a1a60ae-9345-4019-ad53-d34ba41cbfe9"

#define IPERFORMANCEMETRIC_IID \
  {0x2a1a60ae, 0x9345, 0x4019, \
    { 0xad, 0x53, 0xd3, 0x4b, 0xa4, 0x1c, 0xbf, 0xe9 }}

class NS_NO_VTABLE IPerformanceMetric : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IPERFORMANCEMETRIC_IID)

  /* readonly attribute wstring metricName; */
  NS_IMETHOD GetMetricName(PRUnichar * *aMetricName) = 0;

  /* readonly attribute nsISupports object; */
  NS_IMETHOD GetObject(nsISupports * *aObject) = 0;

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

  /* readonly attribute unsigned long period; */
  NS_IMETHOD GetPeriod(PRUint32 *aPeriod) = 0;

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

  /* readonly attribute wstring unit; */
  NS_IMETHOD GetUnit(PRUnichar * *aUnit) = 0;

  /* readonly attribute long minimumValue; */
  NS_IMETHOD GetMinimumValue(PRInt32 *aMinimumValue) = 0;

  /* readonly attribute long maximumValue; */
  NS_IMETHOD GetMaximumValue(PRInt32 *aMaximumValue) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IPERFORMANCEMETRIC \
  NS_IMETHOD GetMetricName(PRUnichar * *aMetricName); \
  NS_IMETHOD GetObject(nsISupports * *aObject); \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription); \
  NS_IMETHOD GetPeriod(PRUint32 *aPeriod); \
  NS_IMETHOD GetCount(PRUint32 *aCount); \
  NS_IMETHOD GetUnit(PRUnichar * *aUnit); \
  NS_IMETHOD GetMinimumValue(PRInt32 *aMinimumValue); \
  NS_IMETHOD GetMaximumValue(PRInt32 *aMaximumValue); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IPERFORMANCEMETRIC(_to) \
  NS_IMETHOD GetMetricName(PRUnichar * *aMetricName) { return _to GetMetricName(aMetricName); } \
  NS_IMETHOD GetObject(nsISupports * *aObject) { return _to GetObject(aObject); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return _to GetDescription(aDescription); } \
  NS_IMETHOD GetPeriod(PRUint32 *aPeriod) { return _to GetPeriod(aPeriod); } \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return _to GetCount(aCount); } \
  NS_IMETHOD GetUnit(PRUnichar * *aUnit) { return _to GetUnit(aUnit); } \
  NS_IMETHOD GetMinimumValue(PRInt32 *aMinimumValue) { return _to GetMinimumValue(aMinimumValue); } \
  NS_IMETHOD GetMaximumValue(PRInt32 *aMaximumValue) { return _to GetMaximumValue(aMaximumValue); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IPERFORMANCEMETRIC(_to) \
  NS_IMETHOD GetMetricName(PRUnichar * *aMetricName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMetricName(aMetricName); } \
  NS_IMETHOD GetObject(nsISupports * *aObject) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetObject(aObject); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } \
  NS_IMETHOD GetPeriod(PRUint32 *aPeriod) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPeriod(aPeriod); } \
  NS_IMETHOD GetCount(PRUint32 *aCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCount(aCount); } \
  NS_IMETHOD GetUnit(PRUnichar * *aUnit) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUnit(aUnit); } \
  NS_IMETHOD GetMinimumValue(PRInt32 *aMinimumValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMinimumValue(aMinimumValue); } \
  NS_IMETHOD GetMaximumValue(PRInt32 *aMaximumValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaximumValue(aMaximumValue); } 

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

/* Header file */
class _MYCLASS_ : public IPerformanceMetric
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IPERFORMANCEMETRIC

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute wstring metricName; */
NS_IMETHODIMP _MYCLASS_::GetMetricName(PRUnichar * *aMetricName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsISupports object; */
NS_IMETHODIMP _MYCLASS_::GetObject(nsISupports * *aObject)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring description; */
NS_IMETHODIMP _MYCLASS_::GetDescription(PRUnichar * *aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long period; */
NS_IMETHODIMP _MYCLASS_::GetPeriod(PRUint32 *aPeriod)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long count; */
NS_IMETHODIMP _MYCLASS_::GetCount(PRUint32 *aCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring unit; */
NS_IMETHODIMP _MYCLASS_::GetUnit(PRUnichar * *aUnit)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long minimumValue; */
NS_IMETHODIMP _MYCLASS_::GetMinimumValue(PRInt32 *aMinimumValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long maximumValue; */
NS_IMETHODIMP _MYCLASS_::GetMaximumValue(PRInt32 *aMaximumValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IPerformanceMetric_GETTER_MetricName_TO(smth) NS_IMETHOD GetMetricName (PRUnichar * * aMetricName) { return smth GetMetricName (aMetricName); }
#define COM_FORWARD_IPerformanceMetric_GETTER_MetricName_TO_OBJ(obj) COM_FORWARD_IPerformanceMetric_GETTER_MetricName_TO ((obj)->)
#define COM_FORWARD_IPerformanceMetric_GETTER_MetricName_TO_BASE(base) COM_FORWARD_IPerformanceMetric_GETTER_MetricName_TO (base::)
#define COM_FORWARD_IPerformanceMetric_GETTER_Object_TO(smth) NS_IMETHOD GetObject (nsISupports * * aObject) { return smth GetObject (aObject); }
#define COM_FORWARD_IPerformanceMetric_GETTER_Object_TO_OBJ(obj) COM_FORWARD_IPerformanceMetric_GETTER_Object_TO ((obj)->)
#define COM_FORWARD_IPerformanceMetric_GETTER_Object_TO_BASE(base) COM_FORWARD_IPerformanceMetric_GETTER_Object_TO (base::)
#define COM_FORWARD_IPerformanceMetric_GETTER_Description_TO(smth) NS_IMETHOD GetDescription (PRUnichar * * aDescription) { return smth GetDescription (aDescription); }
#define COM_FORWARD_IPerformanceMetric_GETTER_Description_TO_OBJ(obj) COM_FORWARD_IPerformanceMetric_GETTER_Description_TO ((obj)->)
#define COM_FORWARD_IPerformanceMetric_GETTER_Description_TO_BASE(base) COM_FORWARD_IPerformanceMetric_GETTER_Description_TO (base::)
#define COM_FORWARD_IPerformanceMetric_GETTER_Period_TO(smth) NS_IMETHOD GetPeriod (PRUint32 * aPeriod) { return smth GetPeriod (aPeriod); }
#define COM_FORWARD_IPerformanceMetric_GETTER_Period_TO_OBJ(obj) COM_FORWARD_IPerformanceMetric_GETTER_Period_TO ((obj)->)
#define COM_FORWARD_IPerformanceMetric_GETTER_Period_TO_BASE(base) COM_FORWARD_IPerformanceMetric_GETTER_Period_TO (base::)
#define COM_FORWARD_IPerformanceMetric_GETTER_Count_TO(smth) NS_IMETHOD GetCount (PRUint32 * aCount) { return smth GetCount (aCount); }
#define COM_FORWARD_IPerformanceMetric_GETTER_Count_TO_OBJ(obj) COM_FORWARD_IPerformanceMetric_GETTER_Count_TO ((obj)->)
#define COM_FORWARD_IPerformanceMetric_GETTER_Count_TO_BASE(base) COM_FORWARD_IPerformanceMetric_GETTER_Count_TO (base::)
#define COM_FORWARD_IPerformanceMetric_GETTER_Unit_TO(smth) NS_IMETHOD GetUnit (PRUnichar * * aUnit) { return smth GetUnit (aUnit); }
#define COM_FORWARD_IPerformanceMetric_GETTER_Unit_TO_OBJ(obj) COM_FORWARD_IPerformanceMetric_GETTER_Unit_TO ((obj)->)
#define COM_FORWARD_IPerformanceMetric_GETTER_Unit_TO_BASE(base) COM_FORWARD_IPerformanceMetric_GETTER_Unit_TO (base::)
#define COM_FORWARD_IPerformanceMetric_GETTER_MinimumValue_TO(smth) NS_IMETHOD GetMinimumValue (PRInt32 * aMinimumValue) { return smth GetMinimumValue (aMinimumValue); }
#define COM_FORWARD_IPerformanceMetric_GETTER_MinimumValue_TO_OBJ(obj) COM_FORWARD_IPerformanceMetric_GETTER_MinimumValue_TO ((obj)->)
#define COM_FORWARD_IPerformanceMetric_GETTER_MinimumValue_TO_BASE(base) COM_FORWARD_IPerformanceMetric_GETTER_MinimumValue_TO (base::)
#define COM_FORWARD_IPerformanceMetric_GETTER_MaximumValue_TO(smth) NS_IMETHOD GetMaximumValue (PRInt32 * aMaximumValue) { return smth GetMaximumValue (aMaximumValue); }
#define COM_FORWARD_IPerformanceMetric_GETTER_MaximumValue_TO_OBJ(obj) COM_FORWARD_IPerformanceMetric_GETTER_MaximumValue_TO ((obj)->)
#define COM_FORWARD_IPerformanceMetric_GETTER_MaximumValue_TO_BASE(base) COM_FORWARD_IPerformanceMetric_GETTER_MaximumValue_TO (base::)
#define COM_FORWARD_IPerformanceMetric_TO(smth) NS_FORWARD_IPERFORMANCEMETRIC (smth)
#define COM_FORWARD_IPerformanceMetric_TO_OBJ(obj) COM_FORWARD_IPerformanceMetric_TO ((obj)->)
#define COM_FORWARD_IPerformanceMetric_TO_BASE(base) COM_FORWARD_IPerformanceMetric_TO (base::)

/* starting interface:    IPerformanceCollector */
#define IPERFORMANCECOLLECTOR_IID_STR "e22e1acb-ac4a-43bb-a31c-17321659b0c6"

#define IPERFORMANCECOLLECTOR_IID \
  {0xe22e1acb, 0xac4a, 0x43bb, \
    { 0xa3, 0x1c, 0x17, 0x32, 0x16, 0x59, 0xb0, 0xc6 }}

class NS_NO_VTABLE IPerformanceCollector : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(IPERFORMANCECOLLECTOR_IID)

  /* void getMetricNames (out unsigned long metricNamesSize, [array, size_is (metricNamesSize), retval] out wstring metricNames); */
  NS_IMETHOD GetMetricNames(PRUint32 *metricNamesSize, PRUnichar ***metricNames) = 0;

  /* void getMetrics (in unsigned long metricNamesSize, [array, size_is (metricNamesSize)] in wstring metricNames, in unsigned long objectsSize, [array, size_is (objectsSize)] in nsISupports objects, out unsigned long metricsSize, [array, size_is (metricsSize), retval] out IPerformanceMetric metrics); */
  NS_IMETHOD GetMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *metricsSize, IPerformanceMetric ***metrics) = 0;

  /* void setupMetrics (in unsigned long metricNamesSize, [array, size_is (metricNamesSize)] in wstring metricNames, in unsigned long objectsSize, [array, size_is (objectsSize)] in nsISupports objects, in unsigned long period, in unsigned long count, out unsigned long affectedMetricsSize, [array, size_is (affectedMetricsSize), retval] out IPerformanceMetric affectedMetrics); */
  NS_IMETHOD SetupMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 period, PRUint32 count, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics) = 0;

  /* void enableMetrics (in unsigned long metricNamesSize, [array, size_is (metricNamesSize)] in wstring metricNames, in unsigned long objectsSize, [array, size_is (objectsSize)] in nsISupports objects, out unsigned long affectedMetricsSize, [array, size_is (affectedMetricsSize), retval] out IPerformanceMetric affectedMetrics); */
  NS_IMETHOD EnableMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics) = 0;

  /* void disableMetrics (in unsigned long metricNamesSize, [array, size_is (metricNamesSize)] in wstring metricNames, in unsigned long objectsSize, [array, size_is (objectsSize)] in nsISupports objects, out unsigned long affectedMetricsSize, [array, size_is (affectedMetricsSize), retval] out IPerformanceMetric affectedMetrics); */
  NS_IMETHOD DisableMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics) = 0;

  /* void queryMetricsData (in unsigned long metricNamesSize, [array, size_is (metricNamesSize)] in wstring metricNames, in unsigned long objectsSize, [array, size_is (objectsSize)] in nsISupports objects, out unsigned long returnMetricNamesSize, [array, size_is (returnMetricNamesSize)] out wstring returnMetricNames, out unsigned long returnObjectsSize, [array, size_is (returnObjectsSize)] out nsISupports returnObjects, out unsigned long returnUnitsSize, [array, size_is (returnUnitsSize)] out wstring returnUnits, out unsigned long returnScalesSize, [array, size_is (returnScalesSize)] out unsigned long returnScales, out unsigned long returnSequenceNumbersSize, [array, size_is (returnSequenceNumbersSize)] out unsigned long returnSequenceNumbers, out unsigned long returnDataIndicesSize, [array, size_is (returnDataIndicesSize)] out unsigned long returnDataIndices, out unsigned long returnDataLengthsSize, [array, size_is (returnDataLengthsSize)] out unsigned long returnDataLengths, out unsigned long returnDataSize, [array, size_is (returnDataSize), retval] out long returnData); */
  NS_IMETHOD QueryMetricsData(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *returnMetricNamesSize, PRUnichar ***returnMetricNames, PRUint32 *returnObjectsSize, nsISupports ***returnObjects, PRUint32 *returnUnitsSize, PRUnichar ***returnUnits, PRUint32 *returnScalesSize, PRUint32 **returnScales, PRUint32 *returnSequenceNumbersSize, PRUint32 **returnSequenceNumbers, PRUint32 *returnDataIndicesSize, PRUint32 **returnDataIndices, PRUint32 *returnDataLengthsSize, PRUint32 **returnDataLengths, PRUint32 *returnDataSize, PRInt32 **returnData) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_IPERFORMANCECOLLECTOR \
  NS_IMETHOD GetMetricNames(PRUint32 *metricNamesSize, PRUnichar ***metricNames); \
  NS_IMETHOD GetMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *metricsSize, IPerformanceMetric ***metrics); \
  NS_IMETHOD SetupMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 period, PRUint32 count, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics); \
  NS_IMETHOD EnableMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics); \
  NS_IMETHOD DisableMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics); \
  NS_IMETHOD QueryMetricsData(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *returnMetricNamesSize, PRUnichar ***returnMetricNames, PRUint32 *returnObjectsSize, nsISupports ***returnObjects, PRUint32 *returnUnitsSize, PRUnichar ***returnUnits, PRUint32 *returnScalesSize, PRUint32 **returnScales, PRUint32 *returnSequenceNumbersSize, PRUint32 **returnSequenceNumbers, PRUint32 *returnDataIndicesSize, PRUint32 **returnDataIndices, PRUint32 *returnDataLengthsSize, PRUint32 **returnDataLengths, PRUint32 *returnDataSize, PRInt32 **returnData); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_IPERFORMANCECOLLECTOR(_to) \
  NS_IMETHOD GetMetricNames(PRUint32 *metricNamesSize, PRUnichar ***metricNames) { return _to GetMetricNames(metricNamesSize, metricNames); } \
  NS_IMETHOD GetMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *metricsSize, IPerformanceMetric ***metrics) { return _to GetMetrics(metricNamesSize, metricNames, objectsSize, objects, metricsSize, metrics); } \
  NS_IMETHOD SetupMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 period, PRUint32 count, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics) { return _to SetupMetrics(metricNamesSize, metricNames, objectsSize, objects, period, count, affectedMetricsSize, affectedMetrics); } \
  NS_IMETHOD EnableMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics) { return _to EnableMetrics(metricNamesSize, metricNames, objectsSize, objects, affectedMetricsSize, affectedMetrics); } \
  NS_IMETHOD DisableMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics) { return _to DisableMetrics(metricNamesSize, metricNames, objectsSize, objects, affectedMetricsSize, affectedMetrics); } \
  NS_IMETHOD QueryMetricsData(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *returnMetricNamesSize, PRUnichar ***returnMetricNames, PRUint32 *returnObjectsSize, nsISupports ***returnObjects, PRUint32 *returnUnitsSize, PRUnichar ***returnUnits, PRUint32 *returnScalesSize, PRUint32 **returnScales, PRUint32 *returnSequenceNumbersSize, PRUint32 **returnSequenceNumbers, PRUint32 *returnDataIndicesSize, PRUint32 **returnDataIndices, PRUint32 *returnDataLengthsSize, PRUint32 **returnDataLengths, PRUint32 *returnDataSize, PRInt32 **returnData) { return _to QueryMetricsData(metricNamesSize, metricNames, objectsSize, objects, returnMetricNamesSize, returnMetricNames, returnObjectsSize, returnObjects, returnUnitsSize, returnUnits, returnScalesSize, returnScales, returnSequenceNumbersSize, returnSequenceNumbers, returnDataIndicesSize, returnDataIndices, returnDataLengthsSize, returnDataLengths, returnDataSize, returnData); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_IPERFORMANCECOLLECTOR(_to) \
  NS_IMETHOD GetMetricNames(PRUint32 *metricNamesSize, PRUnichar ***metricNames) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMetricNames(metricNamesSize, metricNames); } \
  NS_IMETHOD GetMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *metricsSize, IPerformanceMetric ***metrics) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMetrics(metricNamesSize, metricNames, objectsSize, objects, metricsSize, metrics); } \
  NS_IMETHOD SetupMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 period, PRUint32 count, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetupMetrics(metricNamesSize, metricNames, objectsSize, objects, period, count, affectedMetricsSize, affectedMetrics); } \
  NS_IMETHOD EnableMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnableMetrics(metricNamesSize, metricNames, objectsSize, objects, affectedMetricsSize, affectedMetrics); } \
  NS_IMETHOD DisableMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics) { return !_to ? NS_ERROR_NULL_POINTER : _to->DisableMetrics(metricNamesSize, metricNames, objectsSize, objects, affectedMetricsSize, affectedMetrics); } \
  NS_IMETHOD QueryMetricsData(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *returnMetricNamesSize, PRUnichar ***returnMetricNames, PRUint32 *returnObjectsSize, nsISupports ***returnObjects, PRUint32 *returnUnitsSize, PRUnichar ***returnUnits, PRUint32 *returnScalesSize, PRUint32 **returnScales, PRUint32 *returnSequenceNumbersSize, PRUint32 **returnSequenceNumbers, PRUint32 *returnDataIndicesSize, PRUint32 **returnDataIndices, PRUint32 *returnDataLengthsSize, PRUint32 **returnDataLengths, PRUint32 *returnDataSize, PRInt32 **returnData) { return !_to ? NS_ERROR_NULL_POINTER : _to->QueryMetricsData(metricNamesSize, metricNames, objectsSize, objects, returnMetricNamesSize, returnMetricNames, returnObjectsSize, returnObjects, returnUnitsSize, returnUnits, returnScalesSize, returnScales, returnSequenceNumbersSize, returnSequenceNumbers, returnDataIndicesSize, returnDataIndices, returnDataLengthsSize, returnDataLengths, returnDataSize, returnData); } 

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

/* Header file */
class _MYCLASS_ : public IPerformanceCollector
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IPERFORMANCECOLLECTOR

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void getMetricNames (out unsigned long metricNamesSize, [array, size_is (metricNamesSize), retval] out wstring metricNames); */
NS_IMETHODIMP _MYCLASS_::GetMetricNames(PRUint32 *metricNamesSize, PRUnichar ***metricNames)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMetrics (in unsigned long metricNamesSize, [array, size_is (metricNamesSize)] in wstring metricNames, in unsigned long objectsSize, [array, size_is (objectsSize)] in nsISupports objects, out unsigned long metricsSize, [array, size_is (metricsSize), retval] out IPerformanceMetric metrics); */
NS_IMETHODIMP _MYCLASS_::GetMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *metricsSize, IPerformanceMetric ***metrics)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setupMetrics (in unsigned long metricNamesSize, [array, size_is (metricNamesSize)] in wstring metricNames, in unsigned long objectsSize, [array, size_is (objectsSize)] in nsISupports objects, in unsigned long period, in unsigned long count, out unsigned long affectedMetricsSize, [array, size_is (affectedMetricsSize), retval] out IPerformanceMetric affectedMetrics); */
NS_IMETHODIMP _MYCLASS_::SetupMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 period, PRUint32 count, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enableMetrics (in unsigned long metricNamesSize, [array, size_is (metricNamesSize)] in wstring metricNames, in unsigned long objectsSize, [array, size_is (objectsSize)] in nsISupports objects, out unsigned long affectedMetricsSize, [array, size_is (affectedMetricsSize), retval] out IPerformanceMetric affectedMetrics); */
NS_IMETHODIMP _MYCLASS_::EnableMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void disableMetrics (in unsigned long metricNamesSize, [array, size_is (metricNamesSize)] in wstring metricNames, in unsigned long objectsSize, [array, size_is (objectsSize)] in nsISupports objects, out unsigned long affectedMetricsSize, [array, size_is (affectedMetricsSize), retval] out IPerformanceMetric affectedMetrics); */
NS_IMETHODIMP _MYCLASS_::DisableMetrics(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *affectedMetricsSize, IPerformanceMetric ***affectedMetrics)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void queryMetricsData (in unsigned long metricNamesSize, [array, size_is (metricNamesSize)] in wstring metricNames, in unsigned long objectsSize, [array, size_is (objectsSize)] in nsISupports objects, out unsigned long returnMetricNamesSize, [array, size_is (returnMetricNamesSize)] out wstring returnMetricNames, out unsigned long returnObjectsSize, [array, size_is (returnObjectsSize)] out nsISupports returnObjects, out unsigned long returnUnitsSize, [array, size_is (returnUnitsSize)] out wstring returnUnits, out unsigned long returnScalesSize, [array, size_is (returnScalesSize)] out unsigned long returnScales, out unsigned long returnSequenceNumbersSize, [array, size_is (returnSequenceNumbersSize)] out unsigned long returnSequenceNumbers, out unsigned long returnDataIndicesSize, [array, size_is (returnDataIndicesSize)] out unsigned long returnDataIndices, out unsigned long returnDataLengthsSize, [array, size_is (returnDataLengthsSize)] out unsigned long returnDataLengths, out unsigned long returnDataSize, [array, size_is (returnDataSize), retval] out long returnData); */
NS_IMETHODIMP _MYCLASS_::QueryMetricsData(PRUint32 metricNamesSize, const PRUnichar **metricNames, PRUint32 objectsSize, nsISupports **objects, PRUint32 *returnMetricNamesSize, PRUnichar ***returnMetricNames, PRUint32 *returnObjectsSize, nsISupports ***returnObjects, PRUint32 *returnUnitsSize, PRUnichar ***returnUnits, PRUint32 *returnScalesSize, PRUint32 **returnScales, PRUint32 *returnSequenceNumbersSize, PRUint32 **returnSequenceNumbers, PRUint32 *returnDataIndicesSize, PRUint32 **returnDataIndices, PRUint32 *returnDataLengthsSize, PRUint32 **returnDataLengths, PRUint32 *returnDataSize, PRInt32 **returnData)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define COM_FORWARD_IPerformanceCollector_GETTER_MetricNames_TO(smth) NS_IMETHOD GetMetricNames (PRUint32 * aMetricNamesSize, PRUnichar * * * aMetricNames) { return smth GetMetricNames (aMetricNamesSize, aMetricNames); }
#define COM_FORWARD_IPerformanceCollector_GETTER_MetricNames_TO_OBJ(obj) COM_FORWARD_IPerformanceCollector_GETTER_MetricNames_TO ((obj)->)
#define COM_FORWARD_IPerformanceCollector_GETTER_MetricNames_TO_BASE(base) COM_FORWARD_IPerformanceCollector_GETTER_MetricNames_TO (base::)
#define COM_FORWARD_IPerformanceCollector_GetMetrics_TO(smth) NS_IMETHOD GetMetrics (PRUint32 aMetricNamesSize, PRUnichar * * aMetricNames, PRUint32 aObjectsSize, nsISupports * * aObjects, PRUint32 * aMetricsSize, IPerformanceMetric * * * aMetrics) { return smth GetMetrics (aMetricNamesSize+++, aMetricNames, aObjectsSize+++, aObjects, aMetricsSize, aMetrics); }
#define COM_FORWARD_IPerformanceCollector_GetMetrics_TO_OBJ(obj) COM_FORWARD_IPerformanceCollector_GetMetrics_TO ((obj)->)
#define COM_FORWARD_IPerformanceCollector_GetMetrics_TO_BASE(base) COM_FORWARD_IPerformanceCollector_GetMetrics_TO (base::)
#define COM_FORWARD_IPerformanceCollector_SetupMetrics_TO(smth) NS_IMETHOD SetupMetrics (PRUint32 aMetricNamesSize, PRUnichar * * aMetricNames, PRUint32 aObjectsSize, nsISupports * * aObjects, PRUint32 aPeriod, PRUint32 aCount, PRUint32 * aAffectedMetricsSize, IPerformanceMetric * * * aAffectedMetrics) { return smth SetupMetrics (aMetricNamesSize+++, aMetricNames, aObjectsSize+++, aObjects, aPeriod, aCount, aAffectedMetricsSize, aAffectedMetrics); }
#define COM_FORWARD_IPerformanceCollector_SetupMetrics_TO_OBJ(obj) COM_FORWARD_IPerformanceCollector_SetupMetrics_TO ((obj)->)
#define COM_FORWARD_IPerformanceCollector_SetupMetrics_TO_BASE(base) COM_FORWARD_IPerformanceCollector_SetupMetrics_TO (base::)
#define COM_FORWARD_IPerformanceCollector_EnableMetrics_TO(smth) NS_IMETHOD EnableMetrics (PRUint32 aMetricNamesSize, PRUnichar * * aMetricNames, PRUint32 aObjectsSize, nsISupports * * aObjects, PRUint32 * aAffectedMetricsSize, IPerformanceMetric * * * aAffectedMetrics) { return smth EnableMetrics (aMetricNamesSize+++, aMetricNames, aObjectsSize+++, aObjects, aAffectedMetricsSize, aAffectedMetrics); }
#define COM_FORWARD_IPerformanceCollector_EnableMetrics_TO_OBJ(obj) COM_FORWARD_IPerformanceCollector_EnableMetrics_TO ((obj)->)
#define COM_FORWARD_IPerformanceCollector_EnableMetrics_TO_BASE(base) COM_FORWARD_IPerformanceCollector_EnableMetrics_TO (base::)
#define COM_FORWARD_IPerformanceCollector_DisableMetrics_TO(smth) NS_IMETHOD DisableMetrics (PRUint32 aMetricNamesSize, PRUnichar * * aMetricNames, PRUint32 aObjectsSize, nsISupports * * aObjects, PRUint32 * aAffectedMetricsSize, IPerformanceMetric * * * aAffectedMetrics) { return smth DisableMetrics (aMetricNamesSize+++, aMetricNames, aObjectsSize+++, aObjects, aAffectedMetricsSize, aAffectedMetrics); }
#define COM_FORWARD_IPerformanceCollector_DisableMetrics_TO_OBJ(obj) COM_FORWARD_IPerformanceCollector_DisableMetrics_TO ((obj)->)
#define COM_FORWARD_IPerformanceCollector_DisableMetrics_TO_BASE(base) COM_FORWARD_IPerformanceCollector_DisableMetrics_TO (base::)
#define COM_FORWARD_IPerformanceCollector_QueryMetricsData_TO(smth) NS_IMETHOD QueryMetricsData (PRUint32 aMetricNamesSize, PRUnichar * * aMetricNames, PRUint32 aObjectsSize, nsISupports * * aObjects, PRUint32 * aReturnMetricNamesSize, PRUnichar * * * aReturnMetricNames, PRUint32 * aReturnObjectsSize, nsISupports * * * aReturnObjects, PRUint32 * aReturnUnitsSize, PRUnichar * * * aReturnUnits, PRUint32 * aReturnScalesSize, PRUint32 * * aReturnScales, PRUint32 * aReturnSequenceNumbersSize, PRUint32 * * aReturnSequenceNumbers, PRUint32 * aReturnDataIndicesSize, PRUint32 * * aReturnDataIndices, PRUint32 * aReturnDataLengthsSize, PRUint32 * * aReturnDataLengths, PRUint32 * aReturnDataSize, PRInt32 * * aReturnData) { return smth QueryMetricsData (aMetricNamesSize+++, aMetricNames, aObjectsSize+++, aObjects, aReturnMetricNamesSize+++, aReturnMetricNames, aReturnObjectsSize+++, aReturnObjects, aReturnUnitsSize+++, aReturnUnits, aReturnScalesSize+++, aReturnScales, aReturnSequenceNumbersSize+++, aReturnSequenceNumbers, aReturnDataIndicesSize+++, aReturnDataIndices, aReturnDataLengthsSize+++, aReturnDataLengths, aReturnDataSize, aReturnData); }
#define COM_FORWARD_IPerformanceCollector_QueryMetricsData_TO_OBJ(obj) COM_FORWARD_IPerformanceCollector_QueryMetricsData_TO ((obj)->)
#define COM_FORWARD_IPerformanceCollector_QueryMetricsData_TO_BASE(base) COM_FORWARD_IPerformanceCollector_QueryMetricsData_TO (base::)
#define COM_FORWARD_IPerformanceCollector_TO(smth) NS_FORWARD_IPERFORMANCECOLLECTOR (smth)
#define COM_FORWARD_IPerformanceCollector_TO_OBJ(obj) COM_FORWARD_IPerformanceCollector_TO ((obj)->)
#define COM_FORWARD_IPerformanceCollector_TO_BASE(base) COM_FORWARD_IPerformanceCollector_TO (base::)

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

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

class NS_NO_VTABLE INATEngine : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(INATENGINE_IID)

  /* attribute wstring network; */
  NS_IMETHOD GetNetwork(PRUnichar * *aNetwork) = 0;
  NS_IMETHOD SetNetwork(const PRUnichar * aNetwork) = 0;

  /* attribute wstring hostIP; */
  NS_IMETHOD GetHostIP(PRUnichar * *aHostIP) = 0;
  NS_IMETHOD SetHostIP(const PRUnichar * aHostIP) = 0;

  /* attribute wstring tftpPrefix; */
  NS_IMETHOD GetTftpPrefix(PRUnichar * *aTftpPrefix) = 0;
  NS_IMETHOD SetTftpPrefix(const PRUnichar * aTftpPrefix) = 0;

  /* attribute wstring tftpBootFile; */
  NS_IMETHOD GetTftpBootFile(PRUnichar * *aTftpBootFile) = 0;
  NS_IMETHOD SetTftpBootFile(const PRUnichar * aTftpBootFile) = 0;

  /* attribute wstring tftpNextServer; */
  NS_IMETHOD GetTftpNextServer(PRUnichar * *aTftpNextServer) = 0;
  NS_IMETHOD SetTftpNextServer(const PRUnichar * aTftpNextServer) = 0;

  /* attribute unsigned long aliasMode; */
  NS_IMETHOD GetAliasMode(PRUint32 *aAliasMode) = 0;
  NS_IMETHOD SetAliasMode(PRUint32 aAliasMode) = 0;

  /* attribute boolean dnsPassDomain; */
  NS_IMETHOD GetDnsPassDomain(PRBool *aDnsPassDomain) = 0;
  NS_IMETHOD SetDnsPassDomain(PRBool aDnsPassDomain) = 0;

  /* attribute boolean dnsProxy; */
  NS_IMETHOD GetDnsProxy(PRBool *aDnsProxy) = 0;
  NS_IMETHOD SetDnsProxy(PRBool aDnsProxy) = 0;

  /* attribute boolean dnsUseHostResolver; */
  NS_IMETHOD GetDnsUseHostResolver(PRBool *aDnsUseHostResolver) = 0;
  NS_IMETHOD SetDnsUseHostResolver(PRBool aDnsUseHostResolver) = 0;

  /* void getRedirects (out unsigned long redirectsSize, [array, size_is (redirectsSize), retval] out wstring redirects); */
  NS_IMETHOD GetRedirects(PRUint32 *redirectsSize, PRUnichar ***redirects) = 0;

  /* void setNetworkSettings (in unsigned long mtu, in unsigned long sockSnd, in unsigned long sockRcv, in unsigned long TcpWndSnd, in unsigned long TcpWndRcv); */
  NS_IMETHOD SetNetworkSettings(PRUint32 mtu, PRUint32 sockSnd, PRUint32 sockRcv, PRUint32 TcpWndSnd, PRUint32 TcpWndRcv) = 0;

  /* void getNetworkSettings (out unsigned long mtu, out unsigned long sockSnd, out unsigned long sockRcv, out unsigned long TcpWndSnd, out unsigned long TcpWndRcv); */
  NS_IMETHOD GetNetworkSettings(PRUint32 *mtu, PRUint32 *sockSnd, PRUint32 *sockRcv, PRUint32 *TcpWndSnd, PRUint32 *TcpWndRcv) = 0;

  /* void addRedirect (in wstring name, in PRUint32 proto, in wstring hostIp, in unsigned short hostPort, in wstring guestIp, in unsigned short guestPort); */
  NS_IMETHOD AddRedirect(const PRUnichar *name, PRUint32 proto, const PRUnichar *hostIp, PRUint16 hostPort, const PRUnichar *guestIp, PRUint16 guestPort) = 0;

  /* void removeRedirect (in wstring name); */
  NS_IMETHOD RemoveRedirect(const PRUnichar *name) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_INATENGINE \
  NS_IMETHOD GetNetwork(PRUnichar * *aNetwork); \
  NS_IMETHOD SetNetwork(const PRUnichar * aNetwork); \
  NS_IMETHOD GetHostIP(PRUnichar * *aHostIP); \
  NS_IMETHOD SetHostIP(const PRUnichar * aHostIP); \
  NS_IMETHOD GetTftpPrefix(PRUnichar * *aTftpPrefix); \
  NS_IMETHOD SetTftpPrefix(const PRUnichar * aTftpPrefix); \
  NS_IMETHOD GetTftpBootFile(PRUnichar * *aTftpBootFile); \
  NS_IMETHOD SetTftpBootFile(const PRUnichar * aTftpBootFile); \
  NS_IMETHOD GetTftpNextServer(PRUnichar * *aTftpNextServer); \
  NS_IMETHOD SetTftpNextServer(const PRUnichar * aTftpNextServer); \
  NS_IMETHOD GetAliasMode(PRUint32 *aAliasMode); \
  NS_IMETHOD SetAliasMode(PRUint32 aAliasMode); \
  NS_IMETHOD GetDnsPassDomain(PRBool *aDnsPassDomain); \
  NS_IMETHOD SetDnsPassDomain(PRBool aDnsPassDomain); \
  NS_IMETHOD GetDnsProxy(PRBool *aDnsProxy); \
  NS_IMETHOD SetDnsProxy(PRBool aDnsProxy); \
  NS_IMETHOD GetDnsUseHostResolver(PRBool *aDnsUseHostResolver); \
  NS_IMETHOD SetDnsUseHostResolver(PRBool aDnsUseHostResolver); \
  NS_IMETHOD GetRedirects(PRUint32 *redirectsSize, PRUnichar ***redirects); \
  NS_IMETHOD SetNetworkSettings(PRUint32 mtu, PRUint32 sockSnd, PRUint32 sockRcv, PRUint32 TcpWndSnd, PRUint32 TcpWndRcv); \
  NS_IMETHOD GetNetworkSettings(PRUint32 *mtu, PRUint32 *sockSnd, PRUint32 *sockRcv, PRUint32 *TcpWndSnd, PRUint32 *TcpWndRcv); \
  NS_IMETHOD AddRedirect(const PRUnichar *name, PRUint32 proto, const PRUnichar *hostIp, PRUint16 hostPort, const PRUnichar *guestIp, PRUint16 guestPort); \
  NS_IMETHOD RemoveRedirect(const PRUnichar *name); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_INATENGINE(_to) \
  NS_IMETHOD GetNetwork(PRUnichar * *aNetwork) { return _to GetNetwork(aNetwork); } \
  NS_IMETHOD SetNetwork(const PRUnichar * aNetwork) { return _to SetNetwork(aNetwork); } \
  NS_IMETHOD GetHostIP(PRUnichar * *aHostIP) { return _to GetHostIP(aHostIP); } \
  NS_IMETHOD SetHostIP(const PRUnichar * aHostIP) { return _to SetHostIP(aHostIP); } \
  NS_IMETHOD GetTftpPrefix(PRUnichar * *aTftpPrefix) { return _to GetTftpPrefix(aTftpPrefix); } \
  NS_IMETHOD SetTftpPrefix(const PRUnichar * aTftpPrefix) { return _to SetTftpPrefix(aTftpPrefix); } \
  NS_IMETHOD GetTftpBootFile(PRUnichar * *aTftpBootFile) { return _to GetTftpBootFile(aTftpBootFile); } \
  NS_IMETHOD SetTftpBootFile(const PRUnichar * aTftpBootFile) { return _to SetTftpBootFile(aTftpBootFile); } \
  NS_IMETHOD GetTftpNextServer(PRUnichar * *aTftpNextServer) { return _to GetTftpNextServer(aTftpNextServer); } \
  NS_IMETHOD SetTftpNextServer(const PRUnichar * aTftpNextServer) { return _to SetTftpNextServer(aTftpNextServer); } \
  NS_IMETHOD GetAliasMode(PRUint32 *aAliasMode) { return _to GetAliasMode(aAliasMode); } \
  NS_IMETHOD SetAliasMode(PRUint32 aAliasMode) { return _to SetAliasMode(aAliasMode); } \
  NS_IMETHOD GetDnsPassDomain(PRBool *aDnsPassDomain) { return _to GetDnsPassDomain(aDnsPassDomain); } \
  NS_IMETHOD SetDnsPassDomain(PRBool aDnsPassDomain) { return _to SetDnsPassDomain(aDnsPassDomain); } \
  NS_IMETHOD GetDnsProxy(PRBool *aDnsProxy) { return _to GetDnsProxy(aDnsProxy); } \
  NS_IMETHOD SetDnsProxy(PRBool aDnsProxy) { return _to SetDnsProxy(aDnsProxy); } \
  NS_IMETHOD GetDnsUseHostResolver(PRBool *aDnsUseHostResolver) { return _to GetDnsUseHostResolver(aDnsUseHostResolver); } \
  NS_IMETHOD SetDnsUseHostResolver(PRBool aDnsUseHostResolver) { return _to SetDnsUseHostResolver(aDnsUseHostResolver); } \
  NS_IMETHOD GetRedirects(PRUint32 *redirectsSize, PRUnichar ***redirects) { return _to GetRedirects(redirectsSize, redirects); } \
  NS_IMETHOD SetNetworkSettings(PRUint32 mtu, PRUint32 sockSnd, PRUint32 sockRcv, PRUint32 TcpWndSnd, PRUint32 TcpWndRcv) { return _to SetNetworkSettings(mtu, sockSnd, sockRcv, TcpWndSnd, TcpWndRcv); } \
  NS_IMETHOD GetNetworkSettings(PRUint32 *mtu, PRUint32 *sockSnd, PRUint32 *sockRcv, PRUint32 *TcpWndSnd, PRUint32 *TcpWndRcv) { return _to GetNetworkSettings(mtu, sockSnd, sockRcv, TcpWndSnd, TcpWndRcv); } \
  NS_IMETHOD AddRedirect(const PRUnichar *name, PRUint32 proto, const PRUnichar *hostIp, PRUint16 hostPort, const PRUnichar *guestIp, PRUint16 guestPort) { return _to AddRedirect(name, proto, hostIp, hostPort, guestIp, guestPort); } \
  NS_IMETHOD RemoveRedirect(const PRUnichar *name) { return _to RemoveRedirect(name); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_INATENGINE(_to) \
  NS_IMETHOD GetNetwork(PRUnichar * *aNetwork) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetwork(aNetwork); } \
  NS_IMETHOD SetNetwork(const PRUnichar * aNetwork) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNetwork(aNetwork); } \
  NS_IMETHOD GetHostIP(PRUnichar * *aHostIP) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHostIP(aHostIP); } \
  NS_IMETHOD SetHostIP(const PRUnichar * aHostIP) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHostIP(aHostIP); } \
  NS_IMETHOD GetTftpPrefix(PRUnichar * *aTftpPrefix) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTftpPrefix(aTftpPrefix); } \
  NS_IMETHOD SetTftpPrefix(const PRUnichar * aTftpPrefix) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTftpPrefix(aTftpPrefix); } \
  NS_IMETHOD GetTftpBootFile(PRUnichar * *aTftpBootFile) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTftpBootFile(aTftpBootFile); } \
  NS_IMETHOD SetTftpBootFile(const PRUnichar * aTftpBootFile) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTftpBootFile(aTftpBootFile); } \
  NS_IMETHOD GetTftpNextServer(PRUnichar * *aTftpNextServer) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTftpNextServer(aTftpNextServer); } \
  NS_IMETHOD SetTftpNextServer(const PRUnichar * aTftpNextServer) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTftpNextServer(aTftpNextServer); } \
  NS_IMETHOD GetAliasMode(PRUint32 *aAliasMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAliasMode(aAliasMode); } \
  NS_IMETHOD SetAliasMode(PRUint32 aAliasMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAliasMode(aAliasMode); } \
  NS_IMETHOD GetDnsPassDomain(PRBool *aDnsPassDomain) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDnsPassDomain(aDnsPassDomain); } \
  NS_IMETHOD SetDnsPassDomain(PRBool aDnsPassDomain) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDnsPassDomain(aDnsPassDomain); } \
  NS_IMETHOD GetDnsProxy(PRBool *aDnsProxy) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDnsProxy(aDnsProxy); } \
  NS_IMETHOD SetDnsProxy(PRBool aDnsProxy) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDnsProxy(aDnsProxy); } \
  NS_IMETHOD GetDnsUseHostResolver(PRBool *aDnsUseHostResolver) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDnsUseHostResolver(aDnsUseHostResolver); } \
  NS_IMETHOD SetDnsUseHostResolver(PRBool aDnsUseHostResolver) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDnsUseHostResolver(aDnsUseHostResolver); } \
  NS_IMETHOD GetRedirects(PRUint32 *redirectsSize, PRUnichar ***redirects) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRedirects(redirectsSize, redirects); } \
  NS_IMETHOD SetNetworkSettings(PRUint32 mtu, PRUint32 sockSnd, PRUint32 sockRcv, PRUint32 TcpWndSnd, PRUint32 TcpWndRcv) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNetworkSettings(mtu, sockSnd, sockRcv, TcpWndSnd, TcpWndRcv); } \
  NS_IMETHOD GetNetworkSettings(PRUint32 *mtu, PRUint32 *sockSnd, PRUint32 *sockRcv, PRUint32 *TcpWndSnd, PRUint32 *TcpWndRcv) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworkSettings(mtu, sockSnd, sockRcv, TcpWndSnd, TcpWndRcv); } \
  NS_IMETHOD AddRedirect(const PRUnichar *name, PRUint32 proto, const PRUnichar *hostIp, PRUint16 hostPort, const PRUnichar *guestIp, PRUint16 guestPort) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddRedirect(name, proto, hostIp, hostPort, guestIp, guestPort); } \
  NS_IMETHOD RemoveRedirect(const PRUnichar *name) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveRedirect(name); } 

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

/* Header file */
class _MYCLASS_ : public INATEngine
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_INATENGINE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* attribute wstring network; */
NS_IMETHODIMP _MYCLASS_::GetNetwork(PRUnichar * *aNetwork)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetNetwork(const PRUnichar * aNetwork)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring hostIP; */
NS_IMETHODIMP _MYCLASS_::GetHostIP(PRUnichar * *aHostIP)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetHostIP(const PRUnichar * aHostIP)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring tftpPrefix; */
NS_IMETHODIMP _MYCLASS_::GetTftpPrefix(PRUnichar * *aTftpPrefix)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTftpPrefix(const PRUnichar * aTftpPrefix)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring tftpBootFile; */
NS_IMETHODIMP _MYCLASS_::GetTftpBootFile(PRUnichar * *aTftpBootFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTftpBootFile(const PRUnichar * aTftpBootFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring tftpNextServer; */
NS_IMETHODIMP _MYCLASS_::GetTftpNextServer(PRUnichar * *aTftpNextServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTftpNextServer(const PRUnichar * aTftpNextServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long aliasMode; */
NS_IMETHODIMP _MYCLASS_::GetAliasMode(PRUint32 *aAliasMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAliasMode(PRUint32 aAliasMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean dnsPassDomain; */
NS_IMETHODIMP _MYCLASS_::GetDnsPassDomain(PRBool *aDnsPassDomain)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDnsPassDomain(PRBool aDnsPassDomain)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean dnsProxy; */
NS_IMETHODIMP _MYCLASS_::GetDnsProxy(PRBool *aDnsProxy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDnsProxy(PRBool aDnsProxy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean dnsUseHostResolver; */
NS_IMETHODIMP _MYCLASS_::GetDnsUseHostResolver(PRBool *aDnsUseHostResolver)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDnsUseHostResolver(PRBool aDnsUseHostResolver)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getRedirects (out unsigned long redirectsSize, [array, size_is (redirectsSize), retval] out wstring redirects); */
NS_IMETHODIMP _MYCLASS_::GetRedirects(PRUint32 *redirectsSize, PRUnichar ***redirects)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setNetworkSettings (in unsigned long mtu, in unsigned long sockSnd, in unsigned long sockRcv, in unsigned long TcpWndSnd, in unsigned long TcpWndRcv); */
NS_IMETHODIMP _MYCLASS_::SetNetworkSettings(PRUint32 mtu, PRUint32 sockSnd, PRUint32 sockRcv, PRUint32 TcpWndSnd, PRUint32 TcpWndRcv)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNetworkSettings (out unsigned long mtu, out unsigned long sockSnd, out unsigned long sockRcv, out unsigned long TcpWndSnd, out unsigned long TcpWndRcv); */
NS_IMETHODIMP _MYCLASS_::GetNetworkSettings(PRUint32 *mtu, PRUint32 *sockSnd, PRUint32 *sockRcv, PRUint32 *TcpWndSnd, PRUint32 *TcpWndRcv)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addRedirect (in wstring name, in PRUint32 proto, in wstring hostIp, in unsigned short hostPort, in wstring guestIp, in unsigned short guestPort); */
NS_IMETHODIMP _MYCLASS_::AddRedirect(const PRUnichar *name, PRUint32 proto, const PRUnichar *hostIp, PRUint16 hostPort, const PRUnichar *guestIp, PRUint16 guestPort)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

#define COM_FORWARD_INATEngine_GETTER_Network_TO(smth) NS_IMETHOD GetNetwork (PRUnichar * * aNetwork) { return smth GetNetwork (aNetwork); }
#define COM_FORWARD_INATEngine_GETTER_Network_TO_OBJ(obj) COM_FORWARD_INATEngine_GETTER_Network_TO ((obj)->)
#define COM_FORWARD_INATEngine_GETTER_Network_TO_BASE(base) COM_FORWARD_INATEngine_GETTER_Network_TO (base::)
#define COM_FORWARD_INATEngine_SETTER_Network_TO(smth) NS_IMETHOD SetNetwork (const PRUnichar * aNetwork) { return smth SetNetwork (aNetwork); }
#define COM_FORWARD_INATEngine_SETTER_Network_TO_OBJ(obj) COM_FORWARD_INATEngine_SETTER_Network_TO ((obj)->)
#define COM_FORWARD_INATEngine_SETTER_Network_TO_BASE(base) COM_FORWARD_INATEngine_SETTER_Network_TO (base::)
#define COM_FORWARD_INATEngine_GETTER_HostIP_TO(smth) NS_IMETHOD GetHostIP (PRUnichar * * aHostIP) { return smth GetHostIP (aHostIP); }
#define COM_FORWARD_INATEngine_GETTER_HostIP_TO_OBJ(obj) COM_FORWARD_INATEngine_GETTER_HostIP_TO ((obj)->)
#define COM_FORWARD_INATEngine_GETTER_HostIP_TO_BASE(base) COM_FORWARD_INATEngine_GETTER_HostIP_TO (base::)
#define COM_FORWARD_INATEngine_SETTER_HostIP_TO(smth) NS_IMETHOD SetHostIP (const PRUnichar * aHostIP) { return smth SetHostIP (aHostIP); }
#define COM_FORWARD_INATEngine_SETTER_HostIP_TO_OBJ(obj) COM_FORWARD_INATEngine_SETTER_HostIP_TO ((obj)->)
#define COM_FORWARD_INATEngine_SETTER_HostIP_TO_BASE(base) COM_FORWARD_INATEngine_SETTER_HostIP_TO (base::)
#define COM_FORWARD_INATEngine_GETTER_TftpPrefix_TO(smth) NS_IMETHOD GetTftpPrefix (PRUnichar * * aTftpPrefix) { return smth GetTftpPrefix (aTftpPrefix); }
#define COM_FORWARD_INATEngine_GETTER_TftpPrefix_TO_OBJ(obj) COM_FORWARD_INATEngine_GETTER_TftpPrefix_TO ((obj)->)
#define COM_FORWARD_INATEngine_GETTER_TftpPrefix_TO_BASE(base) COM_FORWARD_INATEngine_GETTER_TftpPrefix_TO (base::)
#define COM_FORWARD_INATEngine_SETTER_TftpPrefix_TO(smth) NS_IMETHOD SetTftpPrefix (const PRUnichar * aTftpPrefix) { return smth SetTftpPrefix (aTftpPrefix); }
#define COM_FORWARD_INATEngine_SETTER_TftpPrefix_TO_OBJ(obj) COM_FORWARD_INATEngine_SETTER_TftpPrefix_TO ((obj)->)
#define COM_FORWARD_INATEngine_SETTER_TftpPrefix_TO_BASE(base) COM_FORWARD_INATEngine_SETTER_TftpPrefix_TO (base::)
#define COM_FORWARD_INATEngine_GETTER_TftpBootFile_TO(smth) NS_IMETHOD GetTftpBootFile (PRUnichar * * aTftpBootFile) { return smth GetTftpBootFile (aTftpBootFile); }
#define COM_FORWARD_INATEngine_GETTER_TftpBootFile_TO_OBJ(obj) COM_FORWARD_INATEngine_GETTER_TftpBootFile_TO ((obj)->)
#define COM_FORWARD_INATEngine_GETTER_TftpBootFile_TO_BASE(base) COM_FORWARD_INATEngine_GETTER_TftpBootFile_TO (base::)
#define COM_FORWARD_INATEngine_SETTER_TftpBootFile_TO(smth) NS_IMETHOD SetTftpBootFile (const PRUnichar * aTftpBootFile) { return smth SetTftpBootFile (aTftpBootFile); }
#define COM_FORWARD_INATEngine_SETTER_TftpBootFile_TO_OBJ(obj) COM_FORWARD_INATEngine_SETTER_TftpBootFile_TO ((obj)->)
#define COM_FORWARD_INATEngine_SETTER_TftpBootFile_TO_BASE(base) COM_FORWARD_INATEngine_SETTER_TftpBootFile_TO (base::)
#define COM_FORWARD_INATEngine_GETTER_TftpNextServer_TO(smth) NS_IMETHOD GetTftpNextServer (PRUnichar * * aTftpNextServer) { return smth GetTftpNextServer (aTftpNextServer); }
#define COM_FORWARD_INATEngine_GETTER_TftpNextServer_TO_OBJ(obj) COM_FORWARD_INATEngine_GETTER_TftpNextServer_TO ((obj)->)
#define COM_FORWARD_INATEngine_GETTER_TftpNextServer_TO_BASE(base) COM_FORWARD_INATEngine_GETTER_TftpNextServer_TO (base::)
#define COM_FORWARD_INATEngine_SETTER_TftpNextServer_TO(smth) NS_IMETHOD SetTftpNextServer (const PRUnichar * aTftpNextServer) { return smth SetTftpNextServer (aTftpNextServer); }
#define COM_FORWARD_INATEngine_SETTER_TftpNextServer_TO_OBJ(obj) COM_FORWARD_INATEngine_SETTER_TftpNextServer_TO ((obj)->)
#define COM_FORWARD_INATEngine_SETTER_TftpNextServer_TO_BASE(base) COM_FORWARD_INATEngine_SETTER_TftpNextServer_TO (base::)
#define COM_FORWARD_INATEngine_GETTER_AliasMode_TO(smth) NS_IMETHOD GetAliasMode (PRUint32 * aAliasMode) { return smth GetAliasMode (aAliasMode); }
#define COM_FORWARD_INATEngine_GETTER_AliasMode_TO_OBJ(obj) COM_FORWARD_INATEngine_GETTER_AliasMode_TO ((obj)->)
#define COM_FORWARD_INATEngine_GETTER_AliasMode_TO_BASE(base) COM_FORWARD_INATEngine_GETTER_AliasMode_TO (base::)
#define COM_FORWARD_INATEngine_SETTER_AliasMode_TO(smth) NS_IMETHOD SetAliasMode (PRUint32 aAliasMode) { return smth SetAliasMode (aAliasMode); }
#define COM_FORWARD_INATEngine_SETTER_AliasMode_TO_OBJ(obj) COM_FORWARD_INATEngine_SETTER_AliasMode_TO ((obj)->)
#define COM_FORWARD_INATEngine_SETTER_AliasMode_TO_BASE(base) COM_FORWARD_INATEngine_SETTER_AliasMode_TO (base::)
#define COM_FORWARD_INATEngine_GETTER_DnsPassDomain_TO(smth) NS_IMETHOD GetDnsPassDomain (PRBool * aDnsPassDomain) { return smth GetDnsPassDomain (aDnsPassDomain); }
#define COM_FORWARD_INATEngine_GETTER_DnsPassDomain_TO_OBJ(obj) COM_FORWARD_INATEngine_GETTER_DnsPassDomain_TO ((obj)->)
#define COM_FORWARD_INATEngine_GETTER_DnsPassDomain_TO_BASE(base) COM_FORWARD_INATEngine_GETTER_DnsPassDomain_TO (base::)
#define COM_FORWARD_INATEngine_SETTER_DnsPassDomain_TO(smth) NS_IMETHOD SetDnsPassDomain (PRBool aDnsPassDomain) { return smth SetDnsPassDomain (aDnsPassDomain); }
#define COM_FORWARD_INATEngine_SETTER_DnsPassDomain_TO_OBJ(obj) COM_FORWARD_INATEngine_SETTER_DnsPassDomain_TO ((obj)->)
#define COM_FORWARD_INATEngine_SETTER_DnsPassDomain_TO_BASE(base) COM_FORWARD_INATEngine_SETTER_DnsPassDomain_TO (base::)
#define COM_FORWARD_INATEngine_GETTER_DnsProxy_TO(smth) NS_IMETHOD GetDnsProxy (PRBool * aDnsProxy) { return smth GetDnsProxy (aDnsProxy); }
#define COM_FORWARD_INATEngine_GETTER_DnsProxy_TO_OBJ(obj) COM_FORWARD_INATEngine_GETTER_DnsProxy_TO ((obj)->)
#define COM_FORWARD_INATEngine_GETTER_DnsProxy_TO_BASE(base) COM_FORWARD_INATEngine_GETTER_DnsProxy_TO (base::)
#define COM_FORWARD_INATEngine_SETTER_DnsProxy_TO(smth) NS_IMETHOD SetDnsProxy (PRBool aDnsProxy) { return smth SetDnsProxy (aDnsProxy); }
#define COM_FORWARD_INATEngine_SETTER_DnsProxy_TO_OBJ(obj) COM_FORWARD_INATEngine_SETTER_DnsProxy_TO ((obj)->)
#define COM_FORWARD_INATEngine_SETTER_DnsProxy_TO_BASE(base) COM_FORWARD_INATEngine_SETTER_DnsProxy_TO (base::)
#define COM_FORWARD_INATEngine_GETTER_DnsUseHostResolver_TO(smth) NS_IMETHOD GetDnsUseHostResolver (PRBool * aDnsUseHostResolver) { return smth GetDnsUseHostResolver (aDnsUseHostResolver); }
#define COM_FORWARD_INATEngine_GETTER_DnsUseHostResolver_TO_OBJ(obj) COM_FORWARD_INATEngine_GETTER_DnsUseHostResolver_TO ((obj)->)
#define COM_FORWARD_INATEngine_GETTER_DnsUseHostResolver_TO_BASE(base) COM_FORWARD_INATEngine_GETTER_DnsUseHostResolver_TO (base::)
#define COM_FORWARD_INATEngine_SETTER_DnsUseHostResolver_TO(smth) NS_IMETHOD SetDnsUseHostResolver (PRBool aDnsUseHostResolver) { return smth SetDnsUseHostResolver (aDnsUseHostResolver); }
#define COM_FORWARD_INATEngine_SETTER_DnsUseHostResolver_TO_OBJ(obj) COM_FORWARD_INATEngine_SETTER_DnsUseHostResolver_TO ((obj)->)
#define COM_FORWARD_INATEngine_SETTER_DnsUseHostResolver_TO_BASE(base) COM_FORWARD_INATEngine_SETTER_DnsUseHostResolver_TO (base::)
#define COM_FORWARD_INATEngine_GETTER_Redirects_TO(smth) NS_IMETHOD GetRedirects (PRUint32 * aRedirectsSize, PRUnichar * * * aRedirects) { return smth GetRedirects (aRedirectsSize, aRedirects); }
#define COM_FORWARD_INATEngine_GETTER_Redirects_TO_OBJ(obj) COM_FORWARD_INATEngine_GETTER_Redirects_TO ((obj)->)
#define COM_FORWARD_INATEngine_GETTER_Redirects_TO_BASE(base) COM_FORWARD_INATEngine_GETTER_Redirects_TO (base::)
#define COM_FORWARD_INATEngine_SetNetworkSettings_TO(smth) NS_IMETHOD SetNetworkSettings (PRUint32 aMtu, PRUint32 aSockSnd, PRUint32 aSockRcv, PRUint32 aTcpWndSnd, PRUint32 aTcpWndRcv) { return smth SetNetworkSettings (aMtu, aSockSnd, aSockRcv, aTcpWndSnd, aTcpWndRcv); }
#define COM_FORWARD_INATEngine_SetNetworkSettings_TO_OBJ(obj) COM_FORWARD_INATEngine_SetNetworkSettings_TO ((obj)->)
#define COM_FORWARD_INATEngine_SetNetworkSettings_TO_BASE(base) COM_FORWARD_INATEngine_SetNetworkSettings_TO (base::)
#define COM_FORWARD_INATEngine_GetNetworkSettings_TO(smth) NS_IMETHOD GetNetworkSettings (PRUint32 * aMtu, PRUint32 * aSockSnd, PRUint32 * aSockRcv, PRUint32 * aTcpWndSnd, PRUint32 * aTcpWndRcv) { return smth GetNetworkSettings (aMtu, aSockSnd, aSockRcv, aTcpWndSnd, aTcpWndRcv); }
#define COM_FORWARD_INATEngine_GetNetworkSettings_TO_OBJ(obj) COM_FORWARD_INATEngine_GetNetworkSettings_TO ((obj)->)
#define COM_FORWARD_INATEngine_GetNetworkSettings_TO_BASE(base) COM_FORWARD_INATEngine_GetNetworkSettings_TO (base::)
#define COM_FORWARD_INATEngine_AddRedirect_TO(smth) NS_IMETHOD AddRedirect (PRUnichar * aName, PRUint32 aProto, PRUnichar * aHostIp, PRUint16 aHostPort, PRUnichar * aGuestIp, PRUint16 aGuestPort) { return smth AddRedirect (aName, aProto, aHostIp, aHostPort, aGuestIp, aGuestPort); }
#define COM_FORWARD_INATEngine_AddRedirect_TO_OBJ(obj) COM_FORWARD_INATEngine_AddRedirect_TO ((obj)->)
#define COM_FORWARD_INATEngine_AddRedirect_TO_BASE(base) COM_FORWARD_INATEngine_AddRedirect_TO (base::)
#define COM_FORWARD_INATEngine_RemoveRedirect_TO(smth) NS_IMETHOD RemoveRedirect (PRUnichar * aName) { return smth RemoveRedirect (aName); }
#define COM_FORWARD_INATEngine_RemoveRedirect_TO_OBJ(obj) COM_FORWARD_INATEngine_RemoveRedirect_TO ((obj)->)
#define COM_FORWARD_INATEngine_RemoveRedirect_TO_BASE(base) COM_FORWARD_INATEngine_RemoveRedirect_TO (base::)
#define COM_FORWARD_INATEngine_TO(smth) NS_FORWARD_INATENGINE (smth)
#define COM_FORWARD_INATEngine_TO_OBJ(obj) COM_FORWARD_INATEngine_TO ((obj)->)
#define COM_FORWARD_INATEngine_TO_BASE(base) COM_FORWARD_INATEngine_TO (base::)
#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
#define NS_CALLBACKWRAPPER_CID { \
    0x49EE8561, 0x5563, 0x4715, \
    { 0xB1, 0x8C, 0xA4, 0xB1, 0xA4, 0x90, 0xDA, 0xFE } \
}
#define NS_CALLBACKWRAPPER_CONTRACTID "@virtualbox.org/CallbackWrapper;1"
// for compatibility with Win32
#define CLSID_CallbackWrapper (nsCID) NS_CALLBACKWRAPPER_CID

#endif /* __gen_VirtualBox_XPCOM_h__ */
