
/*
 *  DO NOT EDIT! This is a generated file.
 *
 *  XPCOM IDL (XPIDL) definition for VirtualBox Main API (COM interfaces)
 *  generated from XIDL (XML interface definition).
 *
 *  Source    : src/VBox/Main/idl/VirtualBox.xidl
 *  Generator : src/VBox/Main/idl/xpidl.xsl
 */

#include "nsISupports.idl"
#include "nsIException.idl"

[ptr] native booleanPtr (PRBool);
[ptr] native octetPtr   (PRUint8);
[ptr] native shortPtr   (PRInt16);
[ptr] native ushortPtr  (PRUint16);
[ptr] native longPtr    (PRInt32);
[ptr] native llongPtr   (PRInt64);
[ptr] native ulongPtr   (PRUint32);
[ptr] native ullongPtr  (PRUint64);


[ptr] native stringPtr  (string);
[ptr] native wcharPtr   (wchar);
[ptr] native wstringPtr (wstring);

%{C++
/* 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

  
%}

%{C++
#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
%}

interface IVirtualBoxErrorInfo;
interface ILocalOwner;
interface IVirtualBoxCallback;
interface IDHCPServer;
interface IVirtualBox;
interface IVFSExplorer;
interface IAppliance;
interface IVirtualSystemDescription;
interface IInternalMachineControl;
interface IBIOSSettings;
interface IMachine;
interface IConsoleCallback;
interface IRemoteDisplayInfo;
interface IConsole;
interface IHostNetworkInterface;
interface IHost;
interface ISystemProperties;
interface IGuestOSType;
interface IGuest;
interface IProgress;
interface ISnapshot;
interface IMediumAttachment;
interface IMedium;
interface IMediumFormat;
interface IKeyboard;
interface IMouse;
interface IFramebuffer;
interface IFramebufferOverlay;
interface IDisplay;
interface INetworkAdapter;
interface ISerialPort;
interface IParallelPort;
interface IMachineDebugger;
interface IUSBController;
interface IUSBDevice;
interface IUSBDeviceFilter;
interface IHostUSBDevice;
interface IHostUSBDeviceFilter;
interface IAudioAdapter;
interface IVRDPServer;
interface ISharedFolder;
interface IInternalSessionControl;
interface ISession;
interface IStorageController;
interface IPerformanceMetric;
interface IPerformanceCollector;
interface INATEngine;

[
    uuid(52bd6f5f-1adb-4493-975d-581a9c4b803f),
    scriptable
]
interface SettingsVersion
{
    const PRUint32 Null = 0;
    const PRUint32 v1_0 = 1;
    const PRUint32 v1_1 = 2;
    const PRUint32 v1_2 = 3;
    const PRUint32 v1_3pre = 4;
    const PRUint32 v1_3 = 5;
    const PRUint32 v1_4 = 6;
    const PRUint32 v1_5 = 7;
    const PRUint32 v1_6 = 8;
    const PRUint32 v1_7 = 9;
    const PRUint32 v1_8 = 10;
    const PRUint32 v1_9 = 11;
    const PRUint32 v1_10 = 12;
    const PRUint32 Future = 13;
};

/* cross-platform type name for SettingsVersion */
%{C++
#define SettingsVersion_T PRUint32
%}

/* cross-platform constants for SettingsVersion */
%{C++
#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
%}

[
    uuid(1da0007c-ddf7-4be8-bcac-d84a1558785f),
    scriptable
]
interface AccessMode
{
    const PRUint32 ReadOnly = 1;
    const PRUint32 ReadWrite = 2;
};

/* cross-platform type name for AccessMode */
%{C++
#define AccessMode_T PRUint32
%}

/* cross-platform constants for AccessMode */
%{C++
#define AccessMode_ReadOnly AccessMode::ReadOnly
#define AccessMode_ReadWrite AccessMode::ReadWrite
%}

[
    uuid(e998d075-543a-41fc-8aa9-5ca3e92393fd),
    scriptable
]
interface MachineState
{
    const PRUint32 Null = 0;
    const PRUint32 PoweredOff = 1;
    const PRUint32 Saved = 2;
    const PRUint32 Teleported = 3;
    const PRUint32 Aborted = 4;
    const PRUint32 Running = 5;
    const PRUint32 Paused = 6;
    const PRUint32 Stuck = 7;
    const PRUint32 Teleporting = 8;
    const PRUint32 LiveSnapshotting = 9;
    const PRUint32 Starting = 10;
    const PRUint32 Stopping = 11;
    const PRUint32 Saving = 12;
    const PRUint32 Restoring = 13;
    const PRUint32 TeleportingPausedVM = 14;
    const PRUint32 TeleportingIn = 15;
    const PRUint32 DeletingSnapshotOnline = 16;
    const PRUint32 DeletingSnapshotPaused = 17;
    const PRUint32 RestoringSnapshot = 18;
    const PRUint32 DeletingSnapshot = 19;
    const PRUint32 SettingUp = 20;
    const PRUint32 FirstOnline = 5;
    const PRUint32 LastOnline = 17;
    const PRUint32 FirstTransient = 8;
    const PRUint32 LastTransient = 20;
};

/* cross-platform type name for MachineState */
%{C++
#define MachineState_T PRUint32
%}

/* cross-platform constants for MachineState */
%{C++
#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
%}

[
    uuid(cf2700c0-ea4b-47ae-9725-7810114b94d8),
    scriptable
]
interface SessionState
{
    const PRUint32 Null = 0;
    const PRUint32 Closed = 1;
    const PRUint32 Open = 2;
    const PRUint32 Spawning = 3;
    const PRUint32 Closing = 4;
};

/* cross-platform type name for SessionState */
%{C++
#define SessionState_T PRUint32
%}

/* cross-platform constants for SessionState */
%{C++
#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
%}

[
    uuid(24d356a6-2f45-4abd-b977-1cbe9c4701f5),
    scriptable
]
interface CPUPropertyType
{
    const PRUint32 Null = 0;
    const PRUint32 PAE = 1;
    const PRUint32 Synthetic = 2;
};

/* cross-platform type name for CPUPropertyType */
%{C++
#define CPUPropertyType_T PRUint32
%}

/* cross-platform constants for CPUPropertyType */
%{C++
#define CPUPropertyType_Null CPUPropertyType::Null
#define CPUPropertyType_PAE CPUPropertyType::PAE
#define CPUPropertyType_Synthetic CPUPropertyType::Synthetic
%}

[
    uuid(ce81dfdd-d2b8-4a90-bbea-40ee8b7ffcee),
    scriptable
]
interface HWVirtExPropertyType
{
    const PRUint32 Null = 0;
    const PRUint32 Enabled = 1;
    const PRUint32 Exclusive = 2;
    const PRUint32 VPID = 3;
    const PRUint32 NestedPaging = 4;
    const PRUint32 LargePages = 5;
    const PRUint32 Force = 6;
};

/* cross-platform type name for HWVirtExPropertyType */
%{C++
#define HWVirtExPropertyType_T PRUint32
%}

/* cross-platform constants for HWVirtExPropertyType */
%{C++
#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
%}

[
    uuid(A13C02CB-0C2C-421E-8317-AC0E8AAA153A),
    scriptable
]
interface SessionType
{
    const PRUint32 Null = 0;
    const PRUint32 Direct = 1;
    const PRUint32 Remote = 2;
    const PRUint32 Existing = 3;
};

/* cross-platform type name for SessionType */
%{C++
#define SessionType_T PRUint32
%}

/* cross-platform constants for SessionType */
%{C++
#define SessionType_Null SessionType::Null
#define SessionType_Direct SessionType::Direct
#define SessionType_Remote SessionType::Remote
#define SessionType_Existing SessionType::Existing
%}

[
    uuid(6d9420f7-0b56-4636-99f9-7346f1b01e57),
    scriptable
]
interface DeviceType
{
    const PRUint32 Null = 0;
    const PRUint32 Floppy = 1;
    const PRUint32 DVD = 2;
    const PRUint32 HardDisk = 3;
    const PRUint32 Network = 4;
    const PRUint32 USB = 5;
    const PRUint32 SharedFolder = 6;
};

/* cross-platform type name for DeviceType */
%{C++
#define DeviceType_T PRUint32
%}

/* cross-platform constants for DeviceType */
%{C++
#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
%}

[
    uuid(6FC8AEAA-130A-4eb5-8954-3F921422D707),
    scriptable
]
interface DeviceActivity
{
    const PRUint32 Null = 0;
    const PRUint32 Idle = 1;
    const PRUint32 Reading = 2;
    const PRUint32 Writing = 3;
};

/* cross-platform type name for DeviceActivity */
%{C++
#define DeviceActivity_T PRUint32
%}

/* cross-platform constants for DeviceActivity */
%{C++
#define DeviceActivity_Null DeviceActivity::Null
#define DeviceActivity_Idle DeviceActivity::Idle
#define DeviceActivity_Reading DeviceActivity::Reading
#define DeviceActivity_Writing DeviceActivity::Writing
%}

[
    uuid(33364716-4008-4701-8f14-be0fa3d62950),
    scriptable
]
interface ClipboardMode
{
    const PRUint32 Disabled = 0;
    const PRUint32 HostToGuest = 1;
    const PRUint32 GuestToHost = 2;
    const PRUint32 Bidirectional = 3;
};

/* cross-platform type name for ClipboardMode */
%{C++
#define ClipboardMode_T PRUint32
%}

/* cross-platform constants for ClipboardMode */
%{C++
#define ClipboardMode_Disabled ClipboardMode::Disabled
#define ClipboardMode_HostToGuest ClipboardMode::HostToGuest
#define ClipboardMode_GuestToHost ClipboardMode::GuestToHost
#define ClipboardMode_Bidirectional ClipboardMode::Bidirectional
%}

[
    uuid(7c91096e-499e-4eca-9f9b-9001438d7855),
    scriptable
]
interface Scope
{
    const PRUint32 Global = 0;
    const PRUint32 Machine = 1;
    const PRUint32 Session = 2;
};

/* cross-platform type name for Scope */
%{C++
#define Scope_T PRUint32
%}

/* cross-platform constants for Scope */
%{C++
#define Scope_Global Scope::Global
#define Scope_Machine Scope::Machine
#define Scope_Session Scope::Session
%}

[
    uuid(ae4fb9f7-29d2-45b4-b2c7-d579603135d5),
    scriptable
]
interface BIOSBootMenuMode
{
    const PRUint32 Disabled = 0;
    const PRUint32 MenuOnly = 1;
    const PRUint32 MessageAndMenu = 2;
};

/* cross-platform type name for BIOSBootMenuMode */
%{C++
#define BIOSBootMenuMode_T PRUint32
%}

/* cross-platform constants for BIOSBootMenuMode */
%{C++
#define BIOSBootMenuMode_Disabled BIOSBootMenuMode::Disabled
#define BIOSBootMenuMode_MenuOnly BIOSBootMenuMode::MenuOnly
#define BIOSBootMenuMode_MessageAndMenu BIOSBootMenuMode::MessageAndMenu
%}

[
    uuid(64c38e6b-8bcf-45ad-ac03-9b406287c5bf),
    scriptable
]
interface ProcessorFeature
{
    const PRUint32 HWVirtEx = 0;
    const PRUint32 PAE = 1;
    const PRUint32 LongMode = 2;
    const PRUint32 NestedPaging = 3;
};

/* cross-platform type name for ProcessorFeature */
%{C++
#define ProcessorFeature_T PRUint32
%}

/* cross-platform constants for ProcessorFeature */
%{C++
#define ProcessorFeature_HWVirtEx ProcessorFeature::HWVirtEx
#define ProcessorFeature_PAE ProcessorFeature::PAE
#define ProcessorFeature_LongMode ProcessorFeature::LongMode
#define ProcessorFeature_NestedPaging ProcessorFeature::NestedPaging
%}

[
    uuid(b903f264-c230-483e-ac74-2b37ce60d371),
    scriptable
]
interface FirmwareType
{
    const PRUint32 BIOS = 1;
    const PRUint32 EFI = 2;
    const PRUint32 EFI32 = 3;
    const PRUint32 EFI64 = 4;
    const PRUint32 EFIDUAL = 5;
};

/* cross-platform type name for FirmwareType */
%{C++
#define FirmwareType_T PRUint32
%}

/* cross-platform constants for FirmwareType */
%{C++
#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
%}

[
    uuid(0d3c17a2-821a-4b2e-ae41-890c6c60aa97),
    scriptable
]
interface PointingHidType
{
    const PRUint32 None = 1;
    const PRUint32 PS2Mouse = 2;
    const PRUint32 USBMouse = 3;
    const PRUint32 USBTablet = 4;
    const PRUint32 ComboMouse = 5;
};

/* cross-platform type name for PointingHidType */
%{C++
#define PointingHidType_T PRUint32
%}

/* cross-platform constants for PointingHidType */
%{C++
#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
%}

[
    uuid(5a5b0996-3a3e-44bb-9019-56979812cbcc),
    scriptable
]
interface KeyboardHidType
{
    const PRUint32 None = 1;
    const PRUint32 PS2Keyboard = 2;
    const PRUint32 USBKeyboard = 3;
    const PRUint32 ComboKeyboard = 4;
};

/* cross-platform type name for KeyboardHidType */
%{C++
#define KeyboardHidType_T PRUint32
%}

/* cross-platform constants for KeyboardHidType */
%{C++
#define KeyboardHidType_None KeyboardHidType::None
#define KeyboardHidType_PS2Keyboard KeyboardHidType::PS2Keyboard
#define KeyboardHidType_USBKeyboard KeyboardHidType::USBKeyboard
#define KeyboardHidType_ComboKeyboard KeyboardHidType::ComboKeyboard
%}

[
    uuid(813999ba-b949-48a8-9230-aadc6285e2f2),
    scriptable
]
interface VFSType
{
    const PRUint32 File = 1;
    const PRUint32 Cloud = 2;
    const PRUint32 S3 = 3;
    const PRUint32 WebDav = 4;
};

/* cross-platform type name for VFSType */
%{C++
#define VFSType_T PRUint32
%}

/* cross-platform constants for VFSType */
%{C++
#define VFSType_File VFSType::File
#define VFSType_Cloud VFSType::Cloud
#define VFSType_S3 VFSType::S3
#define VFSType_WebDav VFSType::WebDav
%}

[
    uuid(714333cd-44e2-415f-a245-d378fa9b1242),
    scriptable
]
interface VFSFileType
{
    const PRUint32 Unknown = 1;
    const PRUint32 Fifo = 2;
    const PRUint32 DevChar = 3;
    const PRUint32 Directory = 4;
    const PRUint32 DevBlock = 5;
    const PRUint32 File = 6;
    const PRUint32 SymLink = 7;
    const PRUint32 Socket = 8;
    const PRUint32 WhiteOut = 9;
};

/* cross-platform type name for VFSFileType */
%{C++
#define VFSFileType_T PRUint32
%}

/* cross-platform constants for VFSFileType */
%{C++
#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
%}

[
    uuid(c0f8f135-3a1d-417d-afa6-b38b95a91f90),
    scriptable
]
interface VirtualSystemDescriptionType
{
    const PRUint32 Ignore = 1;
    const PRUint32 OS = 2;
    const PRUint32 Name = 3;
    const PRUint32 Product = 4;
    const PRUint32 Vendor = 5;
    const PRUint32 Version = 6;
    const PRUint32 ProductUrl = 7;
    const PRUint32 VendorUrl = 8;
    const PRUint32 Description = 9;
    const PRUint32 License = 10;
    const PRUint32 Miscellaneous = 11;
    const PRUint32 CPU = 12;
    const PRUint32 Memory = 13;
    const PRUint32 HardDiskControllerIDE = 14;
    const PRUint32 HardDiskControllerSATA = 15;
    const PRUint32 HardDiskControllerSCSI = 16;
    const PRUint32 HardDiskControllerSAS = 17;
    const PRUint32 HardDiskImage = 18;
    const PRUint32 Floppy = 19;
    const PRUint32 CDROM = 20;
    const PRUint32 NetworkAdapter = 21;
    const PRUint32 USBController = 22;
    const PRUint32 SoundCard = 23;
};

/* cross-platform type name for VirtualSystemDescriptionType */
%{C++
#define VirtualSystemDescriptionType_T PRUint32
%}

/* cross-platform constants for VirtualSystemDescriptionType */
%{C++
#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
%}

[
    uuid(56d9403f-3425-4118-9919-36f2a9b8c77c),
    scriptable
]
interface VirtualSystemDescriptionValueType
{
    const PRUint32 Reference = 1;
    const PRUint32 Original = 2;
    const PRUint32 Auto = 3;
    const PRUint32 ExtraConfig = 4;
};

/* cross-platform type name for VirtualSystemDescriptionValueType */
%{C++
#define VirtualSystemDescriptionValueType_T PRUint32
%}

/* cross-platform constants for VirtualSystemDescriptionValueType */
%{C++
#define VirtualSystemDescriptionValueType_Reference VirtualSystemDescriptionValueType::Reference
#define VirtualSystemDescriptionValueType_Original VirtualSystemDescriptionValueType::Original
#define VirtualSystemDescriptionValueType_Auto VirtualSystemDescriptionValueType::Auto
#define VirtualSystemDescriptionValueType_ExtraConfig VirtualSystemDescriptionValueType::ExtraConfig
%}

[
    uuid(1aa54aaf-2497-45a2-bfb1-8eb225e93d5b),
    scriptable
]
interface HostNetworkInterfaceMediumType
{
    const PRUint32 Unknown = 0;
    const PRUint32 Ethernet = 1;
    const PRUint32 PPP = 2;
    const PRUint32 SLIP = 3;
};

/* cross-platform type name for HostNetworkInterfaceMediumType */
%{C++
#define HostNetworkInterfaceMediumType_T PRUint32
%}

/* cross-platform constants for HostNetworkInterfaceMediumType */
%{C++
#define HostNetworkInterfaceMediumType_Unknown HostNetworkInterfaceMediumType::Unknown
#define HostNetworkInterfaceMediumType_Ethernet HostNetworkInterfaceMediumType::Ethernet
#define HostNetworkInterfaceMediumType_PPP HostNetworkInterfaceMediumType::PPP
#define HostNetworkInterfaceMediumType_SLIP HostNetworkInterfaceMediumType::SLIP
%}

[
    uuid(CC474A69-2710-434B-8D99-C38E5D5A6F41),
    scriptable
]
interface HostNetworkInterfaceStatus
{
    const PRUint32 Unknown = 0;
    const PRUint32 Up = 1;
    const PRUint32 Down = 2;
};

/* cross-platform type name for HostNetworkInterfaceStatus */
%{C++
#define HostNetworkInterfaceStatus_T PRUint32
%}

/* cross-platform constants for HostNetworkInterfaceStatus */
%{C++
#define HostNetworkInterfaceStatus_Unknown HostNetworkInterfaceStatus::Unknown
#define HostNetworkInterfaceStatus_Up HostNetworkInterfaceStatus::Up
#define HostNetworkInterfaceStatus_Down HostNetworkInterfaceStatus::Down
%}

[
    uuid(67431b00-9946-48a2-bc02-b25c5919f4f3),
    scriptable
]
interface HostNetworkInterfaceType
{
    const PRUint32 Bridged = 1;
    const PRUint32 HostOnly = 2;
};

/* cross-platform type name for HostNetworkInterfaceType */
%{C++
#define HostNetworkInterfaceType_T PRUint32
%}

/* cross-platform constants for HostNetworkInterfaceType */
%{C++
#define HostNetworkInterfaceType_Bridged HostNetworkInterfaceType::Bridged
#define HostNetworkInterfaceType_HostOnly HostNetworkInterfaceType::HostOnly
%}

[
    uuid(ef41e980-e012-43cd-9dea-479d4ef14d13),
    scriptable
]
interface MediumState
{
    const PRUint32 NotCreated = 0;
    const PRUint32 Created = 1;
    const PRUint32 LockedRead = 2;
    const PRUint32 LockedWrite = 3;
    const PRUint32 Inaccessible = 4;
    const PRUint32 Creating = 5;
    const PRUint32 Deleting = 6;
};

/* cross-platform type name for MediumState */
%{C++
#define MediumState_T PRUint32
%}

/* cross-platform constants for MediumState */
%{C++
#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
%}

[
    uuid(46bf1fd4-ad86-4ded-8c49-28bd2d148e5a),
    scriptable
]
interface MediumType
{
    const PRUint32 Normal = 0;
    const PRUint32 Immutable = 1;
    const PRUint32 Writethrough = 2;
    const PRUint32 Shareable = 3;
};

/* cross-platform type name for MediumType */
%{C++
#define MediumType_T PRUint32
%}

/* cross-platform constants for MediumType */
%{C++
#define MediumType_Normal MediumType::Normal
#define MediumType_Immutable MediumType::Immutable
#define MediumType_Writethrough MediumType::Writethrough
#define MediumType_Shareable MediumType::Shareable
%}

[
    uuid(584ea502-143b-4ab0-ad14-d1028fdf0316),
    scriptable
]
interface MediumVariant
{
    const PRUint32 Standard = 0;
    const PRUint32 VmdkSplit2G = 0x01;
    const PRUint32 VmdkStreamOptimized = 0x04;
    const PRUint32 VmdkESX = 0x08;
    const PRUint32 Fixed = 0x10000;
    const PRUint32 Diff = 0x20000;
};

/* cross-platform type name for MediumVariant */
%{C++
#define MediumVariant_T PRUint32
%}

/* cross-platform constants for MediumVariant */
%{C++
#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
%}

[
    uuid(d90ea51e-a3f1-4a01-beb1-c1723c0d3ba7),
    scriptable
]
interface DataType
{
    const PRUint32 Int32 = 0;
    const PRUint32 Int8 = 1;
    const PRUint32 String = 2;
};

/* cross-platform type name for DataType */
%{C++
#define DataType_T PRUint32
%}

/* cross-platform constants for DataType */
%{C++
#define DataType_Int32 DataType::Int32
#define DataType_Int8 DataType::Int8
#define DataType_String DataType::String
%}

[
    uuid(86884dcf-1d6b-4f1b-b4bf-f5aa44959d60),
    scriptable
]
interface DataFlags
{
    const PRUint32 None = 0x00;
    const PRUint32 Mandatory = 0x01;
    const PRUint32 Expert = 0x02;
    const PRUint32 Array = 0x04;
    const PRUint32 FlagMask = 0x07;
};

/* cross-platform type name for DataFlags */
%{C++
#define DataFlags_T PRUint32
%}

/* cross-platform constants for DataFlags */
%{C++
#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
%}

[
    uuid(70fcf810-99e8-4edc-aee4-7f51d489e657),
    scriptable
]
interface MediumFormatCapabilities
{
    const PRUint32 Uuid = 0x01;
    const PRUint32 CreateFixed = 0x02;
    const PRUint32 CreateDynamic = 0x04;
    const PRUint32 CreateSplit2G = 0x08;
    const PRUint32 Differencing = 0x10;
    const PRUint32 Asynchronous = 0x20;
    const PRUint32 File = 0x40;
    const PRUint32 Properties = 0x80;
    const PRUint32 CapabilityMask = 0xFF;
};

/* cross-platform type name for MediumFormatCapabilities */
%{C++
#define MediumFormatCapabilities_T PRUint32
%}

/* cross-platform constants for MediumFormatCapabilities */
%{C++
#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
%}

[
    uuid(9ee094b8-b28a-4d56-a166-973cb588d7f8),
    scriptable
]
interface MouseButtonState
{
    const PRUint32 LeftButton = 0x01;
    const PRUint32 RightButton = 0x02;
    const PRUint32 MiddleButton = 0x04;
    const PRUint32 WheelUp = 0x08;
    const PRUint32 WheelDown = 0x10;
    const PRUint32 XButton1 = 0x20;
    const PRUint32 XButton2 = 0x40;
    const PRUint32 MouseStateMask = 0x7F;
};

/* cross-platform type name for MouseButtonState */
%{C++
#define MouseButtonState_T PRUint32
%}

/* cross-platform constants for MouseButtonState */
%{C++
#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
%}

[
    uuid(7acfd5ed-29e3-45e3-8136-73c9224f3d2d),
    scriptable
]
interface FramebufferPixelFormat
{
    const PRUint32 Opaque = 0;
    const PRUint32 FOURCC_RGB = 0x32424752;
};

/* cross-platform type name for FramebufferPixelFormat */
%{C++
#define FramebufferPixelFormat_T PRUint32
%}

/* cross-platform constants for FramebufferPixelFormat */
%{C++
#define FramebufferPixelFormat_Opaque FramebufferPixelFormat::Opaque
#define FramebufferPixelFormat_FOURCC_RGB FramebufferPixelFormat::FOURCC_RGB
%}

[
    uuid(44bce1ee-99f7-4e8e-89fc-80597fd9eeaf),
    scriptable
]
interface NetworkAttachmentType
{
    const PRUint32 Null = 0;
    const PRUint32 NAT = 1;
    const PRUint32 Bridged = 2;
    const PRUint32 Internal = 3;
    const PRUint32 HostOnly = 4;
    const PRUint32 VDE = 5;
};

/* cross-platform type name for NetworkAttachmentType */
%{C++
#define NetworkAttachmentType_T PRUint32
%}

/* cross-platform constants for NetworkAttachmentType */
%{C++
#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
%}

[
    uuid(3c2281e4-d952-4e87-8c7d-24379cb6a81c),
    scriptable
]
interface NetworkAdapterType
{
    const PRUint32 Null = 0;
    const PRUint32 Am79C970A = 1;
    const PRUint32 Am79C973 = 2;
    const PRUint32 I82540EM = 3;
    const PRUint32 I82543GC = 4;
    const PRUint32 I82545EM = 5;
    const PRUint32 Virtio = 6;
};

/* cross-platform type name for NetworkAdapterType */
%{C++
#define NetworkAdapterType_T PRUint32
%}

/* cross-platform constants for NetworkAdapterType */
%{C++
#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
%}

[
    uuid(533b5fe3-0185-4197-86a7-17e37dd39d76),
    scriptable
]
interface PortMode
{
    const PRUint32 Disconnected = 0;
    const PRUint32 HostPipe = 1;
    const PRUint32 HostDevice = 2;
    const PRUint32 RawFile = 3;
};

/* cross-platform type name for PortMode */
%{C++
#define PortMode_T PRUint32
%}

/* cross-platform constants for PortMode */
%{C++
#define PortMode_Disconnected PortMode::Disconnected
#define PortMode_HostPipe PortMode::HostPipe
#define PortMode_HostDevice PortMode::HostDevice
#define PortMode_RawFile PortMode::RawFile
%}

[
    uuid(b99a2e65-67fb-4882-82fd-f3e5e8193ab4),
    scriptable
]
interface USBDeviceState
{
    const PRUint32 NotSupported = 0;
    const PRUint32 Unavailable = 1;
    const PRUint32 Busy = 2;
    const PRUint32 Available = 3;
    const PRUint32 Held = 4;
    const PRUint32 Captured = 5;
};

/* cross-platform type name for USBDeviceState */
%{C++
#define USBDeviceState_T PRUint32
%}

/* cross-platform constants for USBDeviceState */
%{C++
#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
%}

[
    uuid(cbc30a49-2f4e-43b5-9da6-121320475933),
    scriptable
]
interface USBDeviceFilterAction
{
    const PRUint32 Null = 0;
    const PRUint32 Ignore = 1;
    const PRUint32 Hold = 2;
};

/* cross-platform type name for USBDeviceFilterAction */
%{C++
#define USBDeviceFilterAction_T PRUint32
%}

/* cross-platform constants for USBDeviceFilterAction */
%{C++
#define USBDeviceFilterAction_Null USBDeviceFilterAction::Null
#define USBDeviceFilterAction_Ignore USBDeviceFilterAction::Ignore
#define USBDeviceFilterAction_Hold USBDeviceFilterAction::Hold
%}

[
    uuid(4bcc3d73-c2fe-40db-b72f-0c2ca9d68496),
    scriptable
]
interface AudioDriverType
{
    const PRUint32 Null = 0;
    const PRUint32 WinMM = 1;
    const PRUint32 OSS = 2;
    const PRUint32 ALSA = 3;
    const PRUint32 DirectSound = 4;
    const PRUint32 CoreAudio = 5;
    const PRUint32 MMPM = 6;
    const PRUint32 Pulse = 7;
    const PRUint32 SolAudio = 8;
};

/* cross-platform type name for AudioDriverType */
%{C++
#define AudioDriverType_T PRUint32
%}

/* cross-platform constants for AudioDriverType */
%{C++
#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
%}

[
    uuid(7afd395c-42c3-444e-8788-3ce80292f36c),
    scriptable
]
interface AudioControllerType
{
    const PRUint32 AC97 = 0;
    const PRUint32 SB16 = 1;
};

/* cross-platform type name for AudioControllerType */
%{C++
#define AudioControllerType_T PRUint32
%}

/* cross-platform constants for AudioControllerType */
%{C++
#define AudioControllerType_AC97 AudioControllerType::AC97
#define AudioControllerType_SB16 AudioControllerType::SB16
%}

[
    uuid(3d91887a-b67f-4b33-85bf-2da7ab1ea83a),
    scriptable
]
interface VRDPAuthType
{
    const PRUint32 Null = 0;
    const PRUint32 External = 1;
    const PRUint32 Guest = 2;
};

/* cross-platform type name for VRDPAuthType */
%{C++
#define VRDPAuthType_T PRUint32
%}

/* cross-platform constants for VRDPAuthType */
%{C++
#define VRDPAuthType_Null VRDPAuthType::Null
#define VRDPAuthType_External VRDPAuthType::External
#define VRDPAuthType_Guest VRDPAuthType::Guest
%}

[
    uuid(eee67ab3-668d-4ef5-91e0-7025fe4a0d7a),
    scriptable
]
interface StorageBus
{
    const PRUint32 Null = 0;
    const PRUint32 IDE = 1;
    const PRUint32 SATA = 2;
    const PRUint32 SCSI = 3;
    const PRUint32 Floppy = 4;
    const PRUint32 SAS = 5;
};

/* cross-platform type name for StorageBus */
%{C++
#define StorageBus_T PRUint32
%}

/* cross-platform constants for StorageBus */
%{C++
#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
%}

[
    uuid(8a412b8a-f43e-4456-bd37-b474f0879a58),
    scriptable
]
interface StorageControllerType
{
    const PRUint32 Null = 0;
    const PRUint32 LsiLogic = 1;
    const PRUint32 BusLogic = 2;
    const PRUint32 IntelAhci = 3;
    const PRUint32 PIIX3 = 4;
    const PRUint32 PIIX4 = 5;
    const PRUint32 ICH6 = 6;
    const PRUint32 I82078 = 7;
    const PRUint32 LsiLogicSas = 8;
};

/* cross-platform type name for StorageControllerType */
%{C++
#define StorageControllerType_T PRUint32
%}

/* cross-platform constants for StorageControllerType */
%{C++
#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
%}

[
    uuid(67772168-50d9-11df-9669-7fb714ee4fa1),
    scriptable
]
interface NATAliasMode
{
    const PRUint32 AliasLog = 0x1;
    const PRUint32 AliasProxyOnly = 0x02;
    const PRUint32 AliasUseSamePorts = 0x04;
};

/* cross-platform type name for NATAliasMode */
%{C++
#define NATAliasMode_T PRUint32
%}

/* cross-platform constants for NATAliasMode */
%{C++
#define NATAliasMode_AliasLog NATAliasMode::AliasLog
#define NATAliasMode_AliasProxyOnly NATAliasMode::AliasProxyOnly
#define NATAliasMode_AliasUseSamePorts NATAliasMode::AliasUseSamePorts
%}

[
    uuid(e90164be-eb03-11de-94af-fff9b1c1b19f),
    scriptable
]
interface NATProtocol
{
    const PRUint32 UDP = 0;
    const PRUint32 TCP = 1;
};

/* cross-platform type name for NATProtocol */
%{C++
#define NATProtocol_T PRUint32
%}

/* cross-platform constants for NATProtocol */
%{C++
#define NATProtocol_UDP NATProtocol::UDP
#define NATProtocol_TCP NATProtocol::TCP
%}

[
    uuid(4b86d186-407e-4f9e-8be8-e50061be8725),
    scriptable
]
interface IVirtualBoxErrorInfo : nsIException
{
    readonly attribute long resultCode;

    readonly attribute wstring interfaceID;

    readonly attribute wstring component;

    readonly attribute wstring text;

    readonly attribute IVirtualBoxErrorInfo next;

}; /* interface IVirtualBoxErrorInfo */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(308FF42A-DC45-49D4-A950-B1EEE5E00BB5),
    scriptable
]
interface ILocalOwner : nsISupports
{
    void setLocalObject (
        in nsISupports object
    );

}; /* interface ILocalOwner */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(7f6a65b6-ad5d-4a67-8872-0b11cb7ea95c),
    scriptable
]
interface IVirtualBoxCallback : nsISupports
{
    void onMachineStateChange (
        in wstring machineId,
        in PRUint32 state
    );

    void onMachineDataChange (
        in wstring machineId
    );

    void onExtraDataCanChange (
        in wstring machineId,
        in wstring key,
        in wstring value,
        out wstring error,
        [retval] out boolean allowChange
    );

    void onExtraDataChange (
        in wstring machineId,
        in wstring key,
        in wstring value
    );

    void onMediumRegistered (
        in wstring mediumId,
        in PRUint32 mediumType,
        in boolean registered
    );

    void onMachineRegistered (
        in wstring machineId,
        in boolean registered
    );

    void onSessionStateChange (
        in wstring machineId,
        in PRUint32 state
    );

    void onSnapshotTaken (
        in wstring machineId,
        in wstring snapshotId
    );

    void onSnapshotDeleted (
        in wstring machineId,
        in wstring snapshotId
    );

    void onSnapshotChange (
        in wstring machineId,
        in wstring snapshotId
    );

    void onGuestPropertyChange (
        in wstring machineId,
        in wstring name,
        in wstring value,
        in wstring flags
    );

}; /* interface IVirtualBoxCallback */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(6cfe387c-74fb-4ca7-bff6-973bec8af7a3),
    scriptable
]
interface IDHCPServer : nsISupports
{
    attribute boolean enabled;

    readonly attribute wstring IPAddress;

    readonly attribute wstring networkMask;

    readonly attribute wstring networkName;

    readonly attribute wstring lowerIP;

    readonly attribute wstring upperIP;

    void setConfiguration (
        in wstring IPAddress,
        in wstring networkMask,
        in wstring FromIPAddress,
        in wstring ToIPAddress
    );

    void start (
        in wstring networkName,
        in wstring trunkName,
        in wstring trunkType
    );

    void stop();

}; /* interface IDHCPServer */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(3f36e024-7fed-4f20-a02c-9158a82b44e6),
    scriptable
]
interface IVirtualBox : nsISupports
{
    readonly attribute wstring version;

    readonly attribute unsigned long revision;

    readonly attribute wstring packageType;

    readonly attribute wstring homeFolder;

    readonly attribute wstring settingsFilePath;

    readonly attribute IHost host;

    readonly attribute ISystemProperties systemProperties;

    void getMachines (
        out unsigned long machinesSize,
        [array, size_is(machinesSize), retval] out IMachine machines
    );

    void getHardDisks (
        out unsigned long hardDisksSize,
        [array, size_is(hardDisksSize), retval] out IMedium hardDisks
    );

    void getDVDImages (
        out unsigned long DVDImagesSize,
        [array, size_is(DVDImagesSize), retval] out IMedium DVDImages
    );

    void getFloppyImages (
        out unsigned long floppyImagesSize,
        [array, size_is(floppyImagesSize), retval] out IMedium floppyImages
    );

    void getProgressOperations (
        out unsigned long progressOperationsSize,
        [array, size_is(progressOperationsSize), retval] out IProgress progressOperations
    );

    void getGuestOSTypes (
        out unsigned long guestOSTypesSize,
        [array, size_is(guestOSTypesSize), retval] out IGuestOSType guestOSTypes
    );

    void getSharedFolders (
        out unsigned long sharedFoldersSize,
        [array, size_is(sharedFoldersSize), retval] out ISharedFolder sharedFolders
    );

    readonly attribute IPerformanceCollector performanceCollector;

    void getDHCPServers (
        out unsigned long DHCPServersSize,
        [array, size_is(DHCPServersSize), retval] out IDHCPServer DHCPServers
    );

    void createMachine (
        in wstring name,
        in wstring osTypeId,
        in wstring baseFolder,
        in wstring id,
        in boolean override,
        [retval] out IMachine machine
    );

    void createLegacyMachine (
        in wstring name,
        in wstring osTypeId,
        in wstring settingsFile,
        in wstring id,
        [retval] out IMachine machine
    );

    void openMachine (
        in wstring settingsFile,
        [retval] out IMachine machine
    );

    void registerMachine (
        in IMachine machine
    );

    void getMachine (
        in wstring id,
        [retval] out IMachine machine
    );

    void findMachine (
        in wstring name,
        [retval] out IMachine machine
    );

    void unregisterMachine (
        in wstring id,
        [retval] out IMachine machine
    );

    void createAppliance (
        [retval] out IAppliance appliance
    );

    void createHardDisk (
        in wstring format,
        in wstring location,
        [retval] out IMedium medium
    );

    void openHardDisk (
        in wstring location,
        in PRUint32 accessMode,
        in boolean setImageId,
        in wstring imageId,
        in boolean setParentId,
        in wstring parentId,
        [retval] out IMedium medium
    );

    void getHardDisk (
        in wstring id,
        [retval] out IMedium medium
    );

    void findHardDisk (
        in wstring location,
        [retval] out IMedium medium
    );

    void openDVDImage (
        in wstring location,
        in wstring id,
        [retval] out IMedium image
    );

    void getDVDImage (
        in wstring id,
        [retval] out IMedium image
    );

    void findDVDImage (
        in wstring location,
        [retval] out IMedium image
    );

    void openFloppyImage (
        in wstring location,
        in wstring id,
        [retval] out IMedium image
    );

    void getFloppyImage (
        in wstring id,
        [retval] out IMedium image
    );

    void findFloppyImage (
        in wstring location,
        [retval] out IMedium image
    );

    void getGuestOSType (
        in wstring id,
        [retval] out IGuestOSType type
    );

    void createSharedFolder (
        in wstring name,
        in wstring hostPath,
        in boolean writable
    );

    void removeSharedFolder (
        in wstring name
    );

    void getExtraDataKeys (
        out unsigned long valueSize,
        [array, size_is(valueSize) , retval] out wstring value
    );

    void getExtraData (
        in wstring key,
        [retval] out wstring value
    );

    void setExtraData (
        in wstring key,
        in wstring value
    );

    void openSession (
        in ISession session,
        in wstring machineId
    );

    void openRemoteSession (
        in ISession session,
        in wstring machineId,
        in wstring type,
        in wstring environment,
        [retval] out IProgress progress
    );

    void openExistingSession (
        in ISession session,
        in wstring machineId
    );

    void registerCallback (
        in IVirtualBoxCallback callback
    );

    void unregisterCallback (
        in IVirtualBoxCallback callback
    );

    void waitForPropertyChange (
        in wstring what,
        in unsigned long timeout,
        out wstring changed,
        out wstring values
    );

    void createDHCPServer (
        in wstring name,
        [retval] out IDHCPServer server
    );

    void findDHCPServerByNetworkName (
        in wstring name,
        [retval] out IDHCPServer server
    );

    void removeDHCPServer (
        in IDHCPServer server
    );

    void checkFirmwarePresent (
        in PRUint32 firmwareType,
        in wstring version,
        out wstring url,
        out wstring file,
        [retval] out boolean result
    );

}; /* interface IVirtualBox */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(2bb864a1-02a3-4474-a1d4-fb5f23b742e1),
    scriptable
]
interface IVFSExplorer : nsISupports
{
    readonly attribute wstring path;

    readonly attribute PRUint32 type;

    void update (
        [retval] out IProgress aProgress
    );

    void cd (
        in wstring aDir,
        [retval] out IProgress aProgress
    );

    void cdUp (
        [retval] out IProgress aProgress
    );

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

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

    void remove (
        in unsigned long aNamesSize,
        [array, size_is(aNamesSize)] in wstring aNames,
        [retval] out IProgress aProgress
    );

}; /* interface IVFSExplorer */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(e3ba9ab9-ac2c-4266-8bd2-91c4bf721ceb),
    scriptable
]
interface IAppliance : nsISupports
{
    readonly attribute wstring path;

    void getDisks (
        out unsigned long disksSize,
        [array, size_is(disksSize), retval] out wstring disks
    );

    void getVirtualSystemDescriptions (
        out unsigned long virtualSystemDescriptionsSize,
        [array, size_is(virtualSystemDescriptionsSize), retval] out IVirtualSystemDescription virtualSystemDescriptions
    );

    void read (
        in wstring file,
        [retval] out IProgress aProgress
    );

    void interpret();

    void importMachines (
        [retval] out IProgress aProgress
    );

    void createVFSExplorer (
        in wstring aUri,
        [retval] out IVFSExplorer aExplorer
    );

    void write (
        in wstring format,
        in wstring path,
        [retval] out IProgress aProgress
    );

    void getWarnings (
        out unsigned long aWarningsSize,
        [array, size_is(aWarningsSize) , retval] out wstring aWarnings
    );

}; /* interface IAppliance */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(d7525e6c-531a-4c51-8e04-41235083a3d8),
    scriptable
]
interface IVirtualSystemDescription : nsISupports
{
    readonly attribute unsigned long count;

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

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

    void getValuesByType (
        in PRUint32 aType,
        in PRUint32 aWhich,
        out unsigned long aValuesSize,
        [array, size_is(aValuesSize) , retval] out wstring aValues
    );

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

    void addDescription (
        in PRUint32 aType,
        in wstring aVBoxValue,
        in wstring aExtraConfigValue
    );

}; /* interface IVirtualSystemDescription */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(26604a54-8628-491b-a0ea-e1392a16d13b),
    scriptable
]
interface IInternalMachineControl : nsISupports
{
    void setRemoveSavedState (
        in boolean aRemove
    );

    void updateState (
        in PRUint32 state
    );

    void getIPCId (
        [retval] out wstring id
    );

    void beginPowerUp (
        in IProgress progress
    );

    void endPowerUp (
        in long result
    );

    void runUSBDeviceFilters (
        in IUSBDevice device,
        out boolean matched,
        out unsigned long maskedInterfaces
    );

    void captureUSBDevice (
        in wstring id
    );

    void detachUSBDevice (
        in wstring id,
        in boolean done
    );

    void autoCaptureUSBDevices();

    void detachAllUSBDevices (
        in boolean done
    );

    void onSessionEnd (
        in ISession session,
        [retval] out IProgress progress
    );

    void beginSavingState (
        in IProgress progress,
        out wstring stateFilePath
    );

    void endSavingState (
        in boolean success
    );

    void adoptSavedState (
        in wstring savedStateFile
    );

    void beginTakingSnapshot (
        in IConsole initiator,
        in wstring name,
        in wstring description,
        in IProgress consoleProgress,
        in boolean fTakingSnapshotOnline,
        out wstring stateFilePath
    );

    void endTakingSnapshot (
        in boolean success
    );

    void deleteSnapshot (
        in IConsole initiator,
        in wstring id,
        out PRUint32 machineState,
        [retval] out IProgress progress
    );

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

    void restoreSnapshot (
        in IConsole initiator,
        in ISnapshot snapshot,
        out PRUint32 machineState,
        [retval] out IProgress progress
    );

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

    void pushGuestProperty (
        in wstring name,
        in wstring value,
        in unsigned long long timestamp,
        in wstring flags
    );

    void lockMedia();

    void unlockMedia();

}; /* interface IInternalMachineControl */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(38b54279-dc35-4f5e-a431-835b867c6b5e),
    scriptable
]
interface IBIOSSettings : nsISupports
{
    attribute boolean logoFadeIn;

    attribute boolean logoFadeOut;

    attribute unsigned long logoDisplayTime;

    attribute wstring logoImagePath;

    attribute PRUint32 bootMenuMode;

    attribute boolean ACPIEnabled;

    attribute boolean IOAPICEnabled;

    attribute long long timeOffset;

    attribute boolean PXEDebugEnabled;

}; /* interface IBIOSSettings */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(6d9212cb-a5c0-48b7-bbc1-3fa2ba2ee6d2),
    scriptable
]
interface IMachine : nsISupports
{
    readonly attribute IVirtualBox parent;

    readonly attribute boolean accessible;

    readonly attribute IVirtualBoxErrorInfo accessError;

    attribute wstring name;

    attribute wstring description;

    readonly attribute wstring id;

    attribute wstring OSTypeId;

    attribute wstring HardwareVersion;

    attribute wstring hardwareUUID;

    attribute unsigned long CPUCount;

    attribute boolean CPUHotPlugEnabled;

    attribute unsigned long memorySize;

    attribute unsigned long memoryBalloonSize;

    attribute boolean PageFusionEnabled;

    attribute unsigned long VRAMSize;

    attribute boolean accelerate3DEnabled;

    attribute boolean accelerate2DVideoEnabled;

    attribute unsigned long monitorCount;

    readonly attribute IBIOSSettings BIOSSettings;

    attribute PRUint32 firmwareType;

    attribute PRUint32 pointingHidType;

    attribute PRUint32 keyboardHidType;

    attribute boolean hpetEnabled;

    attribute wstring snapshotFolder;

    readonly attribute IVRDPServer VRDPServer;

    void getMediumAttachments (
        out unsigned long mediumAttachmentsSize,
        [array, size_is(mediumAttachmentsSize), retval] out IMediumAttachment mediumAttachments
    );

    readonly attribute IUSBController USBController;

    readonly attribute IAudioAdapter audioAdapter;

    void getStorageControllers (
        out unsigned long storageControllersSize,
        [array, size_is(storageControllersSize), retval] out IStorageController storageControllers
    );

    readonly attribute wstring settingsFilePath;

    readonly attribute boolean settingsModified;

    readonly attribute PRUint32 sessionState;

    readonly attribute wstring sessionType;

    readonly attribute unsigned long sessionPid;

    readonly attribute PRUint32 state;

    readonly attribute long long lastStateChange;

    readonly attribute wstring stateFilePath;

    readonly attribute wstring logFolder;

    readonly attribute ISnapshot currentSnapshot;

    readonly attribute unsigned long snapshotCount;

    readonly attribute boolean currentStateModified;

    void getSharedFolders (
        out unsigned long sharedFoldersSize,
        [array, size_is(sharedFoldersSize), retval] out ISharedFolder sharedFolders
    );

    attribute PRUint32 clipboardMode;

    attribute wstring guestPropertyNotificationPatterns;

    attribute boolean teleporterEnabled;

    attribute unsigned long teleporterPort;

    attribute wstring teleporterAddress;

    attribute wstring teleporterPassword;

    attribute boolean RTCUseUTC;

    attribute boolean ioCacheEnabled;

    attribute unsigned long ioCacheSize;

    attribute unsigned long ioBandwidthMax;

    void setBootOrder (
        in unsigned long position,
        in PRUint32 device
    );

    void getBootOrder (
        in unsigned long position,
        [retval] out PRUint32 device
    );

    void attachDevice (
        in wstring name,
        in long controllerPort,
        in long device,
        in PRUint32 type,
        in wstring id
    );

    void detachDevice (
        in wstring name,
        in long controllerPort,
        in long device
    );

    void passthroughDevice (
        in wstring name,
        in long controllerPort,
        in long device,
        in boolean passthrough
    );

    void mountMedium (
        in wstring name,
        in long controllerPort,
        in long device,
        in wstring medium,
        in boolean force
    );

    void getMedium (
        in wstring name,
        in long controllerPort,
        in long device,
        [retval] out IMedium medium
    );

    void getMediumAttachmentsOfController (
        in wstring name,
        out unsigned long mediumAttachmentsSize,
        [array, size_is(mediumAttachmentsSize) , retval] out IMediumAttachment mediumAttachments
    );

    void getMediumAttachment (
        in wstring name,
        in long controllerPort,
        in long device,
        [retval] out IMediumAttachment attachment
    );

    void getNetworkAdapter (
        in unsigned long slot,
        [retval] out INetworkAdapter adapter
    );

    void addStorageController (
        in wstring name,
        in PRUint32 connectionType,
        [retval] out IStorageController controller
    );

    void getStorageControllerByName (
        in wstring name,
        [retval] out IStorageController storageController
    );

    void getStorageControllerByInstance (
        in unsigned long instance,
        [retval] out IStorageController storageController
    );

    void removeStorageController (
        in wstring name
    );

    void getSerialPort (
        in unsigned long slot,
        [retval] out ISerialPort port
    );

    void getParallelPort (
        in unsigned long slot,
        [retval] out IParallelPort port
    );

    void getExtraDataKeys (
        out unsigned long valueSize,
        [array, size_is(valueSize) , retval] out wstring value
    );

    void getExtraData (
        in wstring key,
        [retval] out wstring value
    );

    void setExtraData (
        in wstring key,
        in wstring value
    );

    void getCPUProperty (
        in PRUint32 property,
        [retval] out boolean value
    );

    void setCPUProperty (
        in PRUint32 property,
        in boolean value
    );

    void getCPUIDLeaf (
        in unsigned long id,
        out unsigned long valEax,
        out unsigned long valEbx,
        out unsigned long valEcx,
        out unsigned long valEdx
    );

    void setCPUIDLeaf (
        in unsigned long id,
        in unsigned long valEax,
        in unsigned long valEbx,
        in unsigned long valEcx,
        in unsigned long valEdx
    );

    void removeCPUIDLeaf (
        in unsigned long id
    );

    void removeAllCPUIDLeaves();

    void getHWVirtExProperty (
        in PRUint32 property,
        [retval] out boolean value
    );

    void setHWVirtExProperty (
        in PRUint32 property,
        in boolean value
    );

    void saveSettings();

    void discardSettings();

    void deleteSettings();

    void export (
        in IAppliance aAppliance,
        [retval] out IVirtualSystemDescription aDescription
    );

    void getSnapshot (
        in wstring id,
        [retval] out ISnapshot snapshot
    );

    void findSnapshot (
        in wstring name,
        [retval] out ISnapshot snapshot
    );

    void setCurrentSnapshot (
        in wstring id
    );

    void createSharedFolder (
        in wstring name,
        in wstring hostPath,
        in boolean writable
    );

    void removeSharedFolder (
        in wstring name
    );

    void canShowConsoleWindow (
        [retval] out boolean canShow
    );

    void showConsoleWindow (
        [retval] out unsigned long long winId
    );

    void getGuestProperty (
        in wstring name,
        out wstring value,
        out unsigned long long timestamp,
        out wstring flags
    );

    void getGuestPropertyValue (
        in wstring property,
        [retval] out wstring value
    );

    void getGuestPropertyTimestamp (
        in wstring property,
        [retval] out unsigned long long value
    );

    void setGuestProperty (
        in wstring property,
        in wstring value,
        in wstring flags
    );

    void setGuestPropertyValue (
        in wstring property,
        in wstring value
    );

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

    void querySavedThumbnailSize (
        in unsigned long screenId,
        out unsigned long size,
        out unsigned long width,
        out unsigned long height
    );

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

    void querySavedScreenshotPNGSize (
        in unsigned long screenId,
        out unsigned long size,
        out unsigned long width,
        out unsigned long height
    );

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

    void hotPlugCPU (
        in unsigned long cpu
    );

    void hotUnplugCPU (
        in unsigned long cpu
    );

    void getCPUStatus (
        in unsigned long cpu,
        [retval] out boolean attached
    );

    void queryLogFilename (
        in unsigned long idx,
        [retval] out wstring filename
    );

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

}; /* interface IMachine */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(60703f8d-81e4-4b45-a147-dcfd07692b19),
    scriptable
]
interface IConsoleCallback : nsISupports
{
    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
    );

    void onMouseCapabilityChange (
        in boolean supportsAbsolute,
        in boolean supportsRelative,
        in boolean needsHostCursor
    );

    void onKeyboardLedsChange (
        in boolean numLock,
        in boolean capsLock,
        in boolean scrollLock
    );

    void onStateChange (
        in PRUint32 state
    );

    void onAdditionsStateChange();

    void onNetworkAdapterChange (
        in INetworkAdapter networkAdapter
    );

    void onSerialPortChange (
        in ISerialPort serialPort
    );

    void onParallelPortChange (
        in IParallelPort parallelPort
    );

    void onStorageControllerChange();

    void onMediumChange (
        in IMediumAttachment mediumAttachment
    );

    void onCPUChange (
        in unsigned long cpu,
        in boolean add
    );

    void onVRDPServerChange();

    void onRemoteDisplayInfoChange();

    void onUSBControllerChange();

    void onUSBDeviceStateChange (
        in IUSBDevice device,
        in boolean attached,
        in IVirtualBoxErrorInfo error
    );

    void onSharedFolderChange (
        in PRUint32 scope
    );

    void onRuntimeError (
        in boolean fatal,
        in wstring id,
        in wstring message
    );

    void onCanShowWindow (
        [retval] out boolean canShow
    );

    void onShowWindow (
        [retval] out unsigned long long winId
    );

}; /* interface IConsoleCallback */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(b3741084-806f-4c3b-8c42-ebad1a81e45a),
    scriptable
]
interface IRemoteDisplayInfo : nsISupports
{
    readonly attribute boolean active;

    readonly attribute long port;

    readonly attribute unsigned long numberOfClients;

    readonly attribute long long beginTime;

    readonly attribute long long endTime;

    readonly attribute unsigned long long bytesSent;

    readonly attribute unsigned long long bytesSentTotal;

    readonly attribute unsigned long long bytesReceived;

    readonly attribute unsigned long long bytesReceivedTotal;

    readonly attribute wstring user;

    readonly attribute wstring domain;

    readonly attribute wstring clientName;

    readonly attribute wstring clientIP;

    readonly attribute unsigned long clientVersion;

    readonly attribute unsigned long encryptionStyle;

}; /* interface IRemoteDisplayInfo */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(6375231a-c17c-464b-92cb-ae9e128d71c3),
    scriptable
]
interface IConsole : nsISupports
{
    readonly attribute IMachine machine;

    readonly attribute PRUint32 state;

    readonly attribute IGuest guest;

    readonly attribute IKeyboard keyboard;

    readonly attribute IMouse mouse;

    readonly attribute IDisplay display;

    readonly attribute IMachineDebugger debugger;

    void getUSBDevices (
        out unsigned long USBDevicesSize,
        [array, size_is(USBDevicesSize), retval] out IUSBDevice USBDevices
    );

    void getRemoteUSBDevices (
        out unsigned long remoteUSBDevicesSize,
        [array, size_is(remoteUSBDevicesSize), retval] out IHostUSBDevice remoteUSBDevices
    );

    void getSharedFolders (
        out unsigned long sharedFoldersSize,
        [array, size_is(sharedFoldersSize), retval] out ISharedFolder sharedFolders
    );

    readonly attribute IRemoteDisplayInfo remoteDisplayInfo;

    void powerUp (
        [retval] out IProgress progress
    );

    void powerUpPaused (
        [retval] out IProgress progress
    );

    void powerDown (
        [retval] out IProgress progress
    );

    void reset();

    void pause();

    void resume();

    void powerButton();

    void sleepButton();

    void getPowerButtonHandled (
        [retval] out boolean handled
    );

    void getGuestEnteredACPIMode (
        [retval] out boolean entered
    );

    void saveState (
        [retval] out IProgress progress
    );

    void adoptSavedState (
        in wstring savedStateFile
    );

    void forgetSavedState (
        in boolean remove
    );

    void getDeviceActivity (
        in PRUint32 type,
        [retval] out PRUint32 activity
    );

    void attachUSBDevice (
        in wstring id
    );

    void detachUSBDevice (
        in wstring id,
        [retval] out IUSBDevice device
    );

    void findUSBDeviceByAddress (
        in wstring name,
        [retval] out IUSBDevice device
    );

    void findUSBDeviceById (
        in wstring id,
        [retval] out IUSBDevice device
    );

    void createSharedFolder (
        in wstring name,
        in wstring hostPath,
        in boolean writable
    );

    void removeSharedFolder (
        in wstring name
    );

    void takeSnapshot (
        in wstring name,
        in wstring description,
        [retval] out IProgress progress
    );

    void deleteSnapshot (
        in wstring id,
        [retval] out IProgress progress
    );

    void restoreSnapshot (
        in ISnapshot snapshot,
        [retval] out IProgress progress
    );

    void teleport (
        in wstring hostname,
        in unsigned long tcpport,
        in wstring password,
        in unsigned long maxDowntime,
        [retval] out IProgress progress
    );

    void registerCallback (
        in IConsoleCallback callback
    );

    void unregisterCallback (
        in IConsoleCallback callback
    );

}; /* interface IConsole */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(ce6fae58-7642-4102-b5db-c9005c2320a8),
    scriptable
]
interface IHostNetworkInterface : nsISupports
{
    readonly attribute wstring name;

    readonly attribute wstring id;

    readonly attribute wstring networkName;

    readonly attribute boolean dhcpEnabled;

    readonly attribute wstring IPAddress;

    readonly attribute wstring networkMask;

    readonly attribute boolean IPV6Supported;

    readonly attribute wstring IPV6Address;

    readonly attribute unsigned long IPV6NetworkMaskPrefixLength;

    readonly attribute wstring hardwareAddress;

    readonly attribute PRUint32 mediumType;

    readonly attribute PRUint32 status;

    readonly attribute PRUint32 interfaceType;

    void enableStaticIpConfig (
        in wstring IPAddress,
        in wstring networkMask
    );

    void enableStaticIpConfigV6 (
        in wstring IPV6Address,
        in unsigned long IPV6NetworkMaskPrefixLength
    );

    void enableDynamicIpConfig();

    void dhcpRediscover();

}; /* interface IHostNetworkInterface */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(35b004f4-7806-4009-bfa8-d1308adba7e5),
    scriptable
]
interface IHost : nsISupports
{
    void getDVDDrives (
        out unsigned long DVDDrivesSize,
        [array, size_is(DVDDrivesSize), retval] out IMedium DVDDrives
    );

    void getFloppyDrives (
        out unsigned long floppyDrivesSize,
        [array, size_is(floppyDrivesSize), retval] out IMedium floppyDrives
    );

    void getUSBDevices (
        out unsigned long USBDevicesSize,
        [array, size_is(USBDevicesSize), retval] out IHostUSBDevice USBDevices
    );

    void getUSBDeviceFilters (
        out unsigned long USBDeviceFiltersSize,
        [array, size_is(USBDeviceFiltersSize), retval] out IHostUSBDeviceFilter USBDeviceFilters
    );

    void getNetworkInterfaces (
        out unsigned long networkInterfacesSize,
        [array, size_is(networkInterfacesSize), retval] out IHostNetworkInterface networkInterfaces
    );

    readonly attribute unsigned long processorCount;

    readonly attribute unsigned long processorOnlineCount;

    readonly attribute unsigned long processorCoreCount;

    readonly attribute unsigned long memorySize;

    readonly attribute unsigned long memoryAvailable;

    readonly attribute wstring operatingSystem;

    readonly attribute wstring OSVersion;

    readonly attribute long long UTCTime;

    readonly attribute boolean Acceleration3DAvailable;

    void getProcessorSpeed (
        in unsigned long cpuId,
        [retval] out unsigned long speed
    );

    void getProcessorFeature (
        in PRUint32 feature,
        [retval] out boolean supported
    );

    void getProcessorDescription (
        in unsigned long cpuId,
        [retval] out wstring description
    );

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

    void createHostOnlyNetworkInterface (
        out IHostNetworkInterface hostInterface,
        [retval] out IProgress progress
    );

    void removeHostOnlyNetworkInterface (
        in wstring id,
        [retval] out IProgress progress
    );

    void createUSBDeviceFilter (
        in wstring name,
        [retval] out IHostUSBDeviceFilter filter
    );

    void insertUSBDeviceFilter (
        in unsigned long position,
        in IHostUSBDeviceFilter filter
    );

    void removeUSBDeviceFilter (
        in unsigned long position
    );

    void findHostDVDDrive (
        in wstring name,
        [retval] out IMedium drive
    );

    void findHostFloppyDrive (
        in wstring name,
        [retval] out IMedium drive
    );

    void findHostNetworkInterfaceByName (
        in wstring name,
        [retval] out IHostNetworkInterface networkInterface
    );

    void findHostNetworkInterfaceById (
        in wstring id,
        [retval] out IHostNetworkInterface networkInterface
    );

    void findHostNetworkInterfacesOfType (
        in PRUint32 type,
        out unsigned long networkInterfacesSize,
        [array, size_is(networkInterfacesSize) , retval] out IHostNetworkInterface networkInterfaces
    );

    void findUSBDeviceById (
        in wstring id,
        [retval] out IHostUSBDevice device
    );

    void findUSBDeviceByAddress (
        in wstring name,
        [retval] out IHostUSBDevice device
    );

}; /* interface IHost */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(07c3ffd8-8f59-49cc-b608-53a332e85cc3),
    scriptable
]
interface ISystemProperties : nsISupports
{
    readonly attribute unsigned long minGuestRAM;

    readonly attribute unsigned long maxGuestRAM;

    readonly attribute unsigned long minGuestVRAM;

    readonly attribute unsigned long maxGuestVRAM;

    readonly attribute unsigned long minGuestCPUCount;

    readonly attribute unsigned long maxGuestCPUCount;

    readonly attribute unsigned long maxGuestMonitors;

    readonly attribute unsigned long long maxVDISize;

    readonly attribute unsigned long networkAdapterCount;

    readonly attribute unsigned long serialPortCount;

    readonly attribute unsigned long parallelPortCount;

    readonly attribute unsigned long maxBootPosition;

    attribute wstring defaultMachineFolder;

    attribute wstring defaultHardDiskFolder;

    void getMediumFormats (
        out unsigned long mediumFormatsSize,
        [array, size_is(mediumFormatsSize), retval] out IMediumFormat mediumFormats
    );

    attribute wstring defaultHardDiskFormat;

    attribute unsigned long long freeDiskSpaceWarning;

    attribute unsigned long freeDiskSpacePercentWarning;

    attribute unsigned long long freeDiskSpaceError;

    attribute unsigned long freeDiskSpacePercentError;

    attribute wstring remoteDisplayAuthLibrary;

    attribute wstring webServiceAuthLibrary;

    attribute unsigned long LogHistoryCount;

    readonly attribute PRUint32 defaultAudioDriver;

    void getMaxDevicesPerPortForStorageBus (
        in PRUint32 bus,
        [retval] out unsigned long maxDevicesPerPort
    );

    void getMinPortCountForStorageBus (
        in PRUint32 bus,
        [retval] out unsigned long minPortCount
    );

    void getMaxPortCountForStorageBus (
        in PRUint32 bus,
        [retval] out unsigned long maxPortCount
    );

    void getMaxInstancesOfStorageBus (
        in PRUint32 bus,
        [retval] out unsigned long maxInstances
    );

    void getDeviceTypesForStorageBus (
        in PRUint32 bus,
        out unsigned long deviceTypesSize,
        [array, size_is(deviceTypesSize) , retval] out PRUint32 deviceTypes
    );

}; /* interface ISystemProperties */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(e3f6727e-a09b-41ea-a824-864a176472f3),
    scriptable
]
interface IGuestOSType : nsISupports
{
    readonly attribute wstring familyId;

    readonly attribute wstring familyDescription;

    readonly attribute wstring id;

    readonly attribute wstring description;

    readonly attribute boolean is64Bit;

    readonly attribute boolean recommendedIOAPIC;

    readonly attribute boolean recommendedVirtEx;

    readonly attribute unsigned long recommendedRAM;

    readonly attribute unsigned long recommendedVRAM;

    readonly attribute unsigned long recommendedHDD;

    readonly attribute PRUint32 adapterType;

    readonly attribute boolean recommendedPae;

    readonly attribute PRUint32 recommendedDvdStorageController;

    readonly attribute PRUint32 recommendedDvdStorageBus;

    readonly attribute PRUint32 recommendedHdStorageController;

    readonly attribute PRUint32 recommendedHdStorageBus;

    readonly attribute PRUint32 recommendedFirmware;

    readonly attribute boolean recommendedUsbHid;

    readonly attribute boolean recommendedHpet;

    readonly attribute boolean recommendedUsbTablet;

    readonly attribute boolean recommendedRtcUseUtc;

}; /* interface IGuestOSType */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(d915dff1-ed38-495a-91f1-ab6c53932468),
    scriptable
]
interface IGuest : nsISupports
{
    readonly attribute wstring OSTypeId;

    readonly attribute boolean additionsActive;

    readonly attribute wstring additionsVersion;

    readonly attribute boolean supportsSeamless;

    readonly attribute boolean supportsGraphics;

    attribute unsigned long memoryBalloonSize;

    attribute boolean pageFusionEnabled;

    attribute unsigned long statisticsUpdateInterval;

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

    void setCredentials (
        in wstring userName,
        in wstring password,
        in wstring domain,
        in boolean allowInteractiveLogon
    );

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

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

    void getProcessStatus (
        in unsigned long pid,
        out unsigned long exitcode,
        out unsigned long flags,
        [retval] out unsigned long reason
    );

}; /* interface IGuest */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(856aa038-853f-42e2-acf7-6e7b02dbe294),
    scriptable
]
interface IProgress : nsISupports
{
    readonly attribute wstring id;

    readonly attribute wstring description;

    readonly attribute nsISupports initiator;

    readonly attribute boolean cancelable;

    readonly attribute unsigned long percent;

    readonly attribute long timeRemaining;

    readonly attribute boolean completed;

    readonly attribute boolean canceled;

    readonly attribute long resultCode;

    readonly attribute IVirtualBoxErrorInfo errorInfo;

    readonly attribute unsigned long operationCount;

    readonly attribute unsigned long operation;

    readonly attribute wstring operationDescription;

    readonly attribute unsigned long operationPercent;

    attribute unsigned long timeout;

    void setCurrentOperationProgress (
        in unsigned long percent
    );

    void setNextOperation (
        in wstring nextOperationDescription,
        in unsigned long nextOperationsWeight
    );

    void waitForCompletion (
        in long timeout
    );

    void waitForOperationCompletion (
        in unsigned long operation,
        in long timeout
    );

    void cancel();

}; /* interface IProgress */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(1a2d0551-58a4-4107-857e-ef414fc42ffc),
    scriptable
]
interface ISnapshot : nsISupports
{
    readonly attribute wstring id;

    attribute wstring name;

    attribute wstring description;

    readonly attribute long long timeStamp;

    readonly attribute boolean online;

    readonly attribute IMachine machine;

    readonly attribute ISnapshot parent;

    void getChildren (
        out unsigned long childrenSize,
        [array, size_is(childrenSize), retval] out ISnapshot children
    );

}; /* interface ISnapshot */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(e58eb3eb-8627-428b-bdf8-34487c848de5),
    scriptable
]
interface IMediumAttachment : nsISupports
{
    readonly attribute IMedium medium;

    readonly attribute wstring controller;

    readonly attribute long port;

    readonly attribute long device;

    readonly attribute PRUint32 type;

    readonly attribute boolean passthrough;

}; /* interface IMediumAttachment */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(1d578f43-5ef1-4415-b556-7592d3ccdc8f),
    scriptable
]
interface IMedium : nsISupports
{
    readonly attribute wstring id;

    attribute wstring description;

    readonly attribute PRUint32 state;

    attribute wstring location;

    readonly attribute wstring name;

    readonly attribute PRUint32 deviceType;

    readonly attribute boolean hostDrive;

    readonly attribute unsigned long long size;

    readonly attribute wstring format;

    readonly attribute IMediumFormat mediumFormat;

    attribute PRUint32 type;

    readonly attribute IMedium parent;

    void getChildren (
        out unsigned long childrenSize,
        [array, size_is(childrenSize), retval] out IMedium children
    );

    readonly attribute IMedium base;

    readonly attribute boolean readOnly;

    readonly attribute unsigned long long logicalSize;

    attribute boolean autoReset;

    readonly attribute wstring lastAccessError;

    void getMachineIds (
        out unsigned long machineIdsSize,
        [array, size_is(machineIdsSize), retval] out wstring machineIds
    );

    void refreshState (
        [retval] out PRUint32 state
    );

    void getSnapshotIds (
        in wstring machineId,
        out unsigned long snapshotIdsSize,
        [array, size_is(snapshotIdsSize) , retval] out wstring snapshotIds
    );

    void lockRead (
        [retval] out PRUint32 state
    );

    void unlockRead (
        [retval] out PRUint32 state
    );

    void lockWrite (
        [retval] out PRUint32 state
    );

    void unlockWrite (
        [retval] out PRUint32 state
    );

    void close();

    void getProperty (
        in wstring name,
        [retval] out wstring value
    );

    void setProperty (
        in wstring name,
        in wstring value
    );

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

    void setProperties (
        in unsigned long namesSize,
        [array, size_is(namesSize)] in wstring names,
        in unsigned long valuesSize,
        [array, size_is(valuesSize)] in wstring values
    );

    void createBaseStorage (
        in unsigned long long logicalSize,
        in PRUint32 variant,
        [retval] out IProgress progress
    );

    void deleteStorage (
        [retval] out IProgress progress
    );

    void createDiffStorage (
        in IMedium target,
        in PRUint32 variant,
        [retval] out IProgress progress
    );

    void mergeTo (
        in IMedium target,
        [retval] out IProgress progress
    );

    void cloneTo (
        in IMedium target,
        in PRUint32 variant,
        in IMedium parent,
        [retval] out IProgress progress
    );

    void compact (
        [retval] out IProgress progress
    );

    void resize (
        in unsigned long long logicalSize,
        [retval] out IProgress progress
    );

    void reset (
        [retval] out IProgress progress
    );

}; /* interface IMedium */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(89f52554-d469-4799-9fad-1705e86a08b1),
    scriptable
]
interface IMediumFormat : nsISupports
{
    readonly attribute wstring id;

    readonly attribute wstring name;

    void getFileExtensions (
        out unsigned long fileExtensionsSize,
        [array, size_is(fileExtensionsSize), retval] out wstring fileExtensions
    );

    readonly attribute unsigned long capabilities;

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

}; /* interface IMediumFormat */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(2d1a531b-4c6e-49cc-8af6-5c857b78b5d7),
    scriptable
]
interface IKeyboard : nsISupports
{
    void putScancode (
        in long scancode
    );

    void putScancodes (
        in unsigned long scancodesSize,
        [array, size_is(scancodesSize)] in long scancodes,
        [retval] out unsigned long codesStored
    );

    void putCAD();

}; /* interface IKeyboard */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(7c0f2eae-f92d-498c-b802-e1a3763774dc),
    scriptable
]
interface IMouse : nsISupports
{
    readonly attribute boolean absoluteSupported;

    readonly attribute boolean relativeSupported;

    readonly attribute boolean needsHostCursor;

    void putMouseEvent (
        in long dx,
        in long dy,
        in long dz,
        in long dw,
        in long buttonState
    );

    void putMouseEventAbsolute (
        in long x,
        in long y,
        in long dz,
        in long dw,
        in long buttonState
    );

}; /* interface IMouse */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(b7ed347a-5765-40a0-ae1c-f543eb4ddeaf),
    scriptable
]
interface IFramebuffer : nsISupports
{
    [noscript]
    readonly attribute octetPtr address;

    readonly attribute unsigned long width;

    readonly attribute unsigned long height;

    readonly attribute unsigned long bitsPerPixel;

    readonly attribute unsigned long bytesPerLine;

    readonly attribute unsigned long pixelFormat;

    readonly attribute boolean usesGuestVRAM;

    readonly attribute unsigned long heightReduction;

    readonly attribute IFramebufferOverlay overlay;

    readonly attribute unsigned long long winId;

    void lock();

    void unlock();

    void notifyUpdate (
        in unsigned long x,
        in unsigned long y,
        in unsigned long width,
        in unsigned long height
    );

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

    void videoModeSupported (
        in unsigned long width,
        in unsigned long height,
        in unsigned long bpp,
        [retval] out boolean supported
    );

    [noscript]
    void getVisibleRegion (
        in octetPtr rectangles,
        in unsigned long count,
        [retval] out unsigned long countCopied
    );

    [noscript]
    void setVisibleRegion (
        in octetPtr rectangles,
        in unsigned long count
    );

    [noscript]
    void processVHWACommand (
        in octetPtr command
    );

}; /* interface IFramebuffer */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(0bcc1c7e-e415-47d2-bfdb-e4c705fb0f47),
    scriptable
]
interface IFramebufferOverlay : IFramebuffer
{
    readonly attribute unsigned long x;

    readonly attribute unsigned long y;

    attribute boolean visible;

    attribute unsigned long alpha;

    void move (
        in unsigned long x,
        in unsigned long y
    );

}; /* interface IFramebufferOverlay */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(1fa79e39-0cc9-4ab3-9df3-ed3e96b42496),
    scriptable
]
interface IDisplay : nsISupports
{
    void getScreenResolution (
        in unsigned long screenId,
        out unsigned long width,
        out unsigned long height,
        out unsigned long bitsPerPixel
    );

    void setFramebuffer (
        in unsigned long screenId,
        in IFramebuffer framebuffer
    );

    void getFramebuffer (
        in unsigned long screenId,
        out IFramebuffer framebuffer,
        out long xOrigin,
        out long yOrigin
    );

    void setVideoModeHint (
        in unsigned long width,
        in unsigned long height,
        in unsigned long bitsPerPixel,
        in unsigned long display
    );

    void setSeamlessMode (
        in boolean enabled
    );

    [noscript]
    void takeScreenShot (
        in unsigned long screenId,
        in octetPtr address,
        in unsigned long width,
        in unsigned long height
    );

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

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

    void invalidateAndUpdate();

    void resizeCompleted (
        in unsigned long screenId
    );

    [noscript]
    void completeVHWACommand (
        in octetPtr command
    );

}; /* interface IDisplay */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(5bdb9df8-a5e1-4322-a139-b7a4a734c790),
    scriptable
]
interface INetworkAdapter : nsISupports
{
    attribute PRUint32 adapterType;

    readonly attribute unsigned long slot;

    attribute boolean enabled;

    attribute wstring MACAddress;

    readonly attribute PRUint32 attachmentType;

    attribute wstring hostInterface;

    attribute wstring internalNetwork;

    attribute wstring NATNetwork;

    attribute wstring VDENetwork;

    attribute boolean cableConnected;

    attribute unsigned long lineSpeed;

    attribute boolean traceEnabled;

    attribute wstring traceFile;

    readonly attribute INATEngine natDriver;

    attribute unsigned long bootPriority;

    void attachToNAT();

    void attachToBridgedInterface();

    void attachToInternalNetwork();

    void attachToHostOnlyInterface();

    void attachToVDE();

    void detach();

}; /* interface INetworkAdapter */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(937f6970-5103-4745-b78e-d28dcf1479a8),
    scriptable
]
interface ISerialPort : nsISupports
{
    readonly attribute unsigned long slot;

    attribute boolean enabled;

    attribute unsigned long IOBase;

    attribute unsigned long IRQ;

    attribute PRUint32 hostMode;

    attribute boolean server;

    attribute wstring path;

}; /* interface ISerialPort */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(0c925f06-dd10-4b77-8de8-294d738c3214),
    scriptable
]
interface IParallelPort : nsISupports
{
    readonly attribute unsigned long slot;

    attribute boolean enabled;

    attribute unsigned long IOBase;

    attribute unsigned long IRQ;

    attribute wstring path;

}; /* interface IParallelPort */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(b0b2a2dd-0627-4502-91c2-ddc5e77609e0),
    scriptable
]
interface IMachineDebugger : nsISupports
{
    attribute boolean singlestep;

    attribute boolean recompileUser;

    attribute boolean recompileSupervisor;

    attribute boolean PATMEnabled;

    attribute boolean CSAMEnabled;

    attribute boolean logEnabled;

    readonly attribute boolean HWVirtExEnabled;

    readonly attribute boolean HWVirtExNestedPagingEnabled;

    readonly attribute boolean HWVirtExVPIDEnabled;

    readonly attribute boolean PAEEnabled;

    attribute unsigned long virtualTimeRate;

    readonly attribute unsigned long long VM;

    void resetStats (
        in wstring pattern
    );

    void dumpStats (
        in wstring pattern
    );

    void getStats (
        in wstring pattern,
        in boolean withDescriptions,
        out wstring stats
    );

    void injectNMI();

}; /* interface IMachineDebugger */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(6fdcccc5-abd3-4fec-9387-2ad3914fc4a8),
    scriptable
]
interface IUSBController : nsISupports
{
    attribute boolean enabled;

    attribute boolean enabledEhci;

    readonly attribute boolean proxyAvailable;

    readonly attribute unsigned short USBStandard;

    void getDeviceFilters (
        out unsigned long deviceFiltersSize,
        [array, size_is(deviceFiltersSize), retval] out IUSBDeviceFilter deviceFilters
    );

    void createDeviceFilter (
        in wstring name,
        [retval] out IUSBDeviceFilter filter
    );

    void insertDeviceFilter (
        in unsigned long position,
        in IUSBDeviceFilter filter
    );

    void removeDeviceFilter (
        in unsigned long position,
        [retval] out IUSBDeviceFilter filter
    );

}; /* interface IUSBController */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(f8967b0b-4483-400f-92b5-8b675d98a85b),
    scriptable
]
interface IUSBDevice : nsISupports
{
    readonly attribute wstring id;

    readonly attribute unsigned short vendorId;

    readonly attribute unsigned short productId;

    readonly attribute unsigned short revision;

    readonly attribute wstring manufacturer;

    readonly attribute wstring product;

    readonly attribute wstring serialNumber;

    readonly attribute wstring address;

    readonly attribute unsigned short port;

    readonly attribute unsigned short version;

    readonly attribute unsigned short portVersion;

    readonly attribute boolean remote;

}; /* interface IUSBDevice */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(d6831fb4-1a94-4c2c-96ef-8d0d6192066d),
    scriptable
]
interface IUSBDeviceFilter : nsISupports
{
    attribute wstring name;

    attribute boolean active;

    attribute wstring vendorId;

    attribute wstring productId;

    attribute wstring revision;

    attribute wstring manufacturer;

    attribute wstring product;

    attribute wstring serialNumber;

    attribute wstring port;

    attribute wstring remote;

    attribute unsigned long maskedInterfaces;

}; /* interface IUSBDeviceFilter */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(173b4b44-d268-4334-a00d-b6521c9a740a),
    scriptable
]
interface IHostUSBDevice : IUSBDevice
{
    readonly attribute PRUint32 state;

}; /* interface IHostUSBDevice */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(4cc70246-d74a-400f-8222-3900489c0374),
    scriptable
]
interface IHostUSBDeviceFilter : IUSBDeviceFilter
{
    attribute PRUint32 action;

}; /* interface IHostUSBDeviceFilter */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(921873db-5f3f-4b69-91f9-7be9e535a2cb),
    scriptable
]
interface IAudioAdapter : nsISupports
{
    attribute boolean enabled;

    attribute PRUint32 audioController;

    attribute PRUint32 audioDriver;

}; /* interface IAudioAdapter */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(7aeeb530-0b08-41fe-835d-9be9ec1dbe5c),
    scriptable
]
interface IVRDPServer : nsISupports
{
    attribute boolean enabled;

    attribute wstring ports;

    attribute wstring netAddress;

    attribute PRUint32 authType;

    attribute unsigned long authTimeout;

    attribute boolean allowMultiConnection;

    attribute boolean reuseSingleConnection;

    attribute boolean videoChannel;

    attribute unsigned long videoChannelQuality;

}; /* interface IVRDPServer */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(64637bb2-9e17-471c-b8f3-f8968dd9884e),
    scriptable
]
interface ISharedFolder : nsISupports
{
    readonly attribute wstring name;

    readonly attribute wstring hostPath;

    readonly attribute boolean accessible;

    readonly attribute boolean writable;

    readonly attribute wstring lastAccessError;

}; /* interface ISharedFolder */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(ab161f72-e4b3-44e6-a919-2256474bda66),
    scriptable
]
interface IInternalSessionControl : nsISupports
{
    void getPID (
        [retval] out unsigned long pid
    );

    void getRemoteConsole (
        [retval] out IConsole console
    );

    void assignMachine (
        in IMachine machine
    );

    void assignRemoteMachine (
        in IMachine machine,
        in IConsole console
    );

    void updateMachineState (
        in PRUint32 aMachineState
    );

    void uninitialize();

    void onNetworkAdapterChange (
        in INetworkAdapter networkAdapter,
        in boolean changeAdapter
    );

    void onSerialPortChange (
        in ISerialPort serialPort
    );

    void onParallelPortChange (
        in IParallelPort parallelPort
    );

    void onStorageControllerChange();

    void onMediumChange (
        in IMediumAttachment mediumAttachment,
        in boolean force
    );

    void onCPUChange (
        in unsigned long cpu,
        in boolean add
    );

    void onVRDPServerChange (
        in boolean restart
    );

    void onUSBControllerChange();

    void onSharedFolderChange (
        in boolean global
    );

    void onUSBDeviceAttach (
        in IUSBDevice device,
        in IVirtualBoxErrorInfo error,
        in unsigned long maskedInterfaces
    );

    void onUSBDeviceDetach (
        in wstring id,
        in IVirtualBoxErrorInfo error
    );

    void onShowWindow (
        in boolean check,
        out boolean canShow,
        out unsigned long long winId
    );

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

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

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

}; /* interface IInternalSessionControl */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(12F4DCDB-12B2-4EC1-B7CD-DDD9F6C5BF4D),
    scriptable
]
interface ISession : nsISupports
{
    readonly attribute PRUint32 state;

    readonly attribute PRUint32 type;

    readonly attribute IMachine machine;

    readonly attribute IConsole console;

    void close();

}; /* interface ISession */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(fd93adc0-bbaa-4256-9e6e-00e29f9151c9),
    scriptable
]
interface IStorageController : nsISupports
{
    readonly attribute wstring name;

    readonly attribute unsigned long maxDevicesPerPortCount;

    readonly attribute unsigned long minPortCount;

    readonly attribute unsigned long maxPortCount;

    attribute unsigned long instance;

    attribute unsigned long portCount;

    readonly attribute PRUint32 bus;

    attribute PRUint32 controllerType;

    attribute boolean useHostIOCache;

    void getIDEEmulationPort (
        in long devicePosition,
        [retval] out long portNumber
    );

    void setIDEEmulationPort (
        in long devicePosition,
        in long portNumber
    );

}; /* interface IStorageController */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(2a1a60ae-9345-4019-ad53-d34ba41cbfe9),
    scriptable
]
interface IPerformanceMetric : nsISupports
{
    readonly attribute wstring metricName;

    readonly attribute nsISupports object;

    readonly attribute wstring description;

    readonly attribute unsigned long period;

    readonly attribute unsigned long count;

    readonly attribute wstring unit;

    readonly attribute long minimumValue;

    readonly attribute long maximumValue;

}; /* interface IPerformanceMetric */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(e22e1acb-ac4a-43bb-a31c-17321659b0c6),
    scriptable
]
interface IPerformanceCollector : nsISupports
{
    void getMetricNames (
        out unsigned long metricNamesSize,
        [array, size_is(metricNamesSize), retval] out wstring metricNames
    );

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

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

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

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

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

}; /* interface IPerformanceCollector */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

[
    uuid(4b286616-eb03-11de-b0fb-1701eca42246),
    scriptable
]
interface INATEngine : nsISupports
{
    attribute wstring network;

    attribute wstring hostIP;

    attribute wstring tftpPrefix;

    attribute wstring tftpBootFile;

    attribute wstring tftpNextServer;

    attribute unsigned long aliasMode;

    attribute boolean dnsPassDomain;

    attribute boolean dnsProxy;

    attribute boolean dnsUseHostResolver;

    void getRedirects (
        out unsigned long redirectsSize,
        [array, size_is(redirectsSize), retval] out wstring redirects
    );

    void setNetworkSettings (
        in unsigned long mtu,
        in unsigned long sockSnd,
        in unsigned long sockRcv,
        in unsigned long TcpWndSnd,
        in unsigned long TcpWndRcv
    );

    void getNetworkSettings (
        out unsigned long mtu,
        out unsigned long sockSnd,
        out unsigned long sockRcv,
        out unsigned long TcpWndSnd,
        out unsigned long TcpWndRcv
    );

    void addRedirect (
        in wstring name,
        in PRUint32 proto,
        in wstring hostIp,
        in unsigned short hostPort,
        in wstring guestIp,
        in unsigned short guestPort
    );

    void removeRedirect (
        in wstring name
    );

}; /* interface INATEngine */

/* Interface implementation forwarder macro */
%{C++
#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::)
%}

%{C++
#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
%}

%{C++
#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
%}

%{C++
#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
%}

