settings.h revision a12929133f77ffa755a13a7d5d2ff3d87c41c9c5
d46ee884c41b808b239563b1978468aae12e33a2vboxsync/** @file
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * Settings file data structures.
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync *
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * These structures are created by the settings file loader and filled with values
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * copied from the raw XML data. This was all new with VirtualBox 3.1 and allows us
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * to finally make the XML reader version-independent and read VirtualBox XML files
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * from earlier and even newer (future) versions without requiring complicated,
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * tedious and error-prone XSLT conversions.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync *
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * It is this file that defines all structures that map VirtualBox global and
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * machine settings to XML files. These structures are used by the rest of Main,
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * even though this header file does not require anything else in Main.
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync *
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * Note: Headers in Main code have been tweaked to only declare the structures
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * defined here so that this header need only be included from code files that
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * actually use these structures.
d46ee884c41b808b239563b1978468aae12e33a2vboxsync */
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
d46ee884c41b808b239563b1978468aae12e33a2vboxsync/*
e2760cdc84c692bc46cfaf5018d313db2f122acavboxsync * Copyright (C) 2007-2010 Sun Microsystems, Inc.
d46ee884c41b808b239563b1978468aae12e33a2vboxsync *
d46ee884c41b808b239563b1978468aae12e33a2vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
d46ee884c41b808b239563b1978468aae12e33a2vboxsync * available from http://www.virtualbox.org. This file is free software;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync * you can redistribute it and/or modify it under the terms of the GNU
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * General Public License (GPL) as published by the Free Software
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync *
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * The contents of this file may alternatively be used under the terms
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * of the Common Development and Distribution License Version 1.0
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * VirtualBox OSE distribution, in which case the provisions of the
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * CDDL are applicable instead of those of the GPL.
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync *
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * You may elect to license modified versions of this file under the
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * terms and conditions of either the GPL or the CDDL or both.
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync *
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * additional information or have any questions.
d46ee884c41b808b239563b1978468aae12e33a2vboxsync */
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
d46ee884c41b808b239563b1978468aae12e33a2vboxsync#ifndef ___VBox_settings_h
d46ee884c41b808b239563b1978468aae12e33a2vboxsync#define ___VBox_settings_h
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
d46ee884c41b808b239563b1978468aae12e33a2vboxsync#include <iprt/time.h>
3b70c9ab3cea93ab1a771d2db319311282041382vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync#include "VBox/com/VirtualBox.h"
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync#include <VBox/com/Guid.h>
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync#include <VBox/com/string.h>
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync#include <list>
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync#include <map>
2a229554eb081e98411c81dcdef146c35a000f80vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsyncnamespace xml
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync class ElementNode;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync}
e33247bff4fddfdba92538374bcc9e2753044a38vboxsync
d46ee884c41b808b239563b1978468aae12e33a2vboxsyncnamespace settings
d46ee884c41b808b239563b1978468aae12e33a2vboxsync{
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsyncclass ConfigFileError;
e33247bff4fddfdba92538374bcc9e2753044a38vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync////////////////////////////////////////////////////////////////////////////////
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync//
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync// Helper classes
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync//
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync////////////////////////////////////////////////////////////////////////////////
e33247bff4fddfdba92538374bcc9e2753044a38vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync// ExtraDataItem (used by both VirtualBox.xml and machines XML)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsynctypedef std::map<com::Utf8Str, com::Utf8Str> ExtraDataItemsMap;
71e8510a26b72d539cf6d7d7157bd87a53de8cf4vboxsyncstruct USBDeviceFilter;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsynctypedef std::list<USBDeviceFilter> USBDeviceFiltersList;
e33247bff4fddfdba92538374bcc9e2753044a38vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync/**
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * Common base class for both MainConfigFile and MachineConfigFile
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync * which contains some common logic for both.
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync */
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncclass ConfigFileBase
e33247bff4fddfdba92538374bcc9e2753044a38vboxsync{
e33247bff4fddfdba92538374bcc9e2753044a38vboxsyncpublic:
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fileExists();
e33247bff4fddfdba92538374bcc9e2753044a38vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync void copyBaseFrom(const ConfigFileBase &b);
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsyncprotected:
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync ConfigFileBase(const com::Utf8Str *pstrFilename);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync ~ConfigFileBase();
e33247bff4fddfdba92538374bcc9e2753044a38vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void parseUUID(com::Guid &guid,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync const com::Utf8Str &strUUID) const;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void parseTimestamp(RTTIMESPEC &timestamp,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync const com::Utf8Str &str) const;
e33247bff4fddfdba92538374bcc9e2753044a38vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str makeString(const RTTIMESPEC &tm);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str makeString(const com::Guid &guid);
e33247bff4fddfdba92538374bcc9e2753044a38vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void readExtraData(const xml::ElementNode &elmExtraData,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync ExtraDataItemsMap &map);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void readUSBDeviceFilters(const xml::ElementNode &elmDeviceFilters,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync USBDeviceFiltersList &ll);
e33247bff4fddfdba92538374bcc9e2753044a38vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void createStubDocument();
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void writeExtraData(xml::ElementNode &elmParent, const ExtraDataItemsMap &me);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void writeUSBDeviceFilters(xml::ElementNode &elmParent,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync const USBDeviceFiltersList &ll,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fHostMode);
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void clearDocument();
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync struct Data;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync Data *m;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync friend class ConfigFileError;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync////////////////////////////////////////////////////////////////////////////////
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync//
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync// Structures shared between Machine XML and VirtualBox.xml
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync//
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync////////////////////////////////////////////////////////////////////////////////
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync/**
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * USB device filter definition. This struct is used both in MainConfigFile
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * (for global USB filters) and MachineConfigFile (for machine filters).
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync *
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * your settings might never get saved.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync */
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncstruct USBDeviceFilter
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync USBDeviceFilter()
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync : fActive(false),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync action(USBDeviceFilterAction_Null),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync ulMaskedInterfaces(0)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {}
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool operator==(const USBDeviceFilter&u) const;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strName;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fActive;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strVendorId,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync strProductId,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync strRevision,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync strManufacturer,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync strProduct,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync strSerialNumber,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync strPort;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync USBDeviceFilterAction_T action; // only used with host USB filters
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strRemote; // irrelevant for host USB objects
fd0cf98cb3eafc5c96b7e95d934b01c5df4785fbvboxsync uint32_t ulMaskedInterfaces; // irrelevant for host USB objects
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync////////////////////////////////////////////////////////////////////////////////
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync//
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync// VirtualBox.xml structures
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync//
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync////////////////////////////////////////////////////////////////////////////////
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncstruct Host
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync USBDeviceFiltersList llUSBDeviceFilters;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncstruct SystemProperties
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync SystemProperties()
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync : ulLogHistoryCount(3)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {}
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strDefaultMachineFolder;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strDefaultHardDiskFolder;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strDefaultHardDiskFormat;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strRemoteDisplayAuthLibrary;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strWebServiceAuthLibrary;
fd0cf98cb3eafc5c96b7e95d934b01c5df4785fbvboxsync uint32_t ulLogHistoryCount;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsynctypedef std::map<com::Utf8Str, com::Utf8Str> PropertiesMap;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsyncstruct Medium;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsynctypedef std::list<Medium> MediaList;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncstruct Medium
d46ee884c41b808b239563b1978468aae12e33a2vboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Guid uuid;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strLocation;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strDescription;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync // the following are for hard disks only:
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strFormat;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fAutoReset; // optional, only for diffs, default is false
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync PropertiesMap properties;
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync MediumType_T hdType;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync MediaList llChildren; // only used with hard disks
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncstruct MachineRegistryEntry
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Guid uuid;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strSettingsFile;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsynctypedef std::list<MachineRegistryEntry> MachinesRegistry;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncstruct DHCPServer
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strNetworkName,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync strIPAddress,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync strIPNetworkMask,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync strIPLower,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync strIPUpper;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fEnabled;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsynctypedef std::list<DHCPServer> DHCPServersList;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncclass MainConfigFile : public ConfigFileBase
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsyncpublic:
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync MainConfigFile(const com::Utf8Str *pstrFilename);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync typedef enum {Error, HardDisk, DVDImage, FloppyImage} MediaType;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void readMedium(MediaType t, const xml::ElementNode &elmMedium, MediaList &llMedia);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void readMediaRegistry(const xml::ElementNode &elmMediaRegistry);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void readMachineRegistry(const xml::ElementNode &elmMachineRegistry);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void readDHCPServers(const xml::ElementNode &elmDHCPServers);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void writeHardDisk(xml::ElementNode &elmMedium,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync const Medium &m,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint32_t level);
6c2e2f2be39d679eb8e2e371afd146099f8dc5e7vboxsync void write(const com::Utf8Str strFilename);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync Host host;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync SystemProperties systemProperties;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync MediaList llHardDisks,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync llDvdImages,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync llFloppyImages;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync MachinesRegistry llMachines;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync DHCPServersList llDhcpServers;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync ExtraDataItemsMap mapExtraDataItems;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
5ff3fa0492332325f57e80636321619e2224027evboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync////////////////////////////////////////////////////////////////////////////////
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync//
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync// Machine XML structures
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync//
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync////////////////////////////////////////////////////////////////////////////////
5ff3fa0492332325f57e80636321619e2224027evboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync/**
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * your settings might never get saved.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync */
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncstruct VRDPSettings
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync VRDPSettings()
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync : fEnabled(true),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync authType(VRDPAuthType_Null),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync ulAuthTimeout(5000),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fAllowMultiConnection(false),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fReuseSingleConnection(false)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {}
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool operator==(const VRDPSettings& v) const;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fEnabled;
aa0632eb844172ced4bef7b3afdbb216c8462fb2vboxsync com::Utf8Str strPort;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strNetAddress;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync VRDPAuthType_T authType;
fd0cf98cb3eafc5c96b7e95d934b01c5df4785fbvboxsync uint32_t ulAuthTimeout;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fAllowMultiConnection,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fReuseSingleConnection;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
5ff3fa0492332325f57e80636321619e2224027evboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync/**
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * your settings might never get saved.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync */
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncstruct BIOSSettings
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync BIOSSettings()
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync : fACPIEnabled(true),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fIOAPICEnabled(false),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fLogoFadeIn(true),
a12929133f77ffa755a13a7d5d2ff3d87c41c9c5vboxsync fLogoFadeOut(true),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync ulLogoDisplayTime(0),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync biosBootMenuMode(BIOSBootMenuMode_MessageAndMenu),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fPXEDebugEnabled(false),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync llTimeOffset(0)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {}
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool operator==(const BIOSSettings &d) const;
52262a1f2eed7acaf08d8a169159e8201c9da661vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fACPIEnabled,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fIOAPICEnabled,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fLogoFadeIn,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fLogoFadeOut;
fd0cf98cb3eafc5c96b7e95d934b01c5df4785fbvboxsync uint32_t ulLogoDisplayTime;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strLogoImagePath;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync BIOSBootMenuMode_T biosBootMenuMode;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fPXEDebugEnabled;
10153a147e7cb38821b5e7404bd2ef6b9af5be4avboxsync int64_t llTimeOffset;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
5ff3fa0492332325f57e80636321619e2224027evboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync/**
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * your settings might never get saved.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync */
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncstruct USBController
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync USBController()
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync : fEnabled(false),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fEnabledEHCI(false)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {}
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool operator==(const USBController &u) const;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fEnabled;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fEnabledEHCI;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync USBDeviceFiltersList llDeviceFilters;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
5ff3fa0492332325f57e80636321619e2224027evboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync/**
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * your settings might never get saved.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync */
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncstruct NetworkAdapter
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync NetworkAdapter()
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync : ulSlot(0),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync type(NetworkAdapterType_Am79C970A),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fEnabled(false),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fCableConnected(false),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync ulLineSpeed(0),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fTraceEnabled(false),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync mode(NetworkAttachmentType_Null)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {}
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool operator==(const NetworkAdapter &n) const;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint32_t ulSlot;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync NetworkAdapterType_T type;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fEnabled;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strMACAddress;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fCableConnected;
fd0cf98cb3eafc5c96b7e95d934b01c5df4785fbvboxsync uint32_t ulLineSpeed;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fTraceEnabled;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strTraceFile;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync NetworkAttachmentType_T mode;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strName; // with NAT: nat network or empty;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync // with bridged: host interface or empty;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync // otherwise: network name (required)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsynctypedef std::list<NetworkAdapter> NetworkAdaptersList;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync/**
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * your settings might never get saved.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync */
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncstruct SerialPort
d46ee884c41b808b239563b1978468aae12e33a2vboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync SerialPort()
d3bef44ac7674167abeada174f0d6cf0572249c5vboxsync : ulSlot(0),
d3bef44ac7674167abeada174f0d6cf0572249c5vboxsync fEnabled(false),
d3bef44ac7674167abeada174f0d6cf0572249c5vboxsync ulIOBase(4),
d3bef44ac7674167abeada174f0d6cf0572249c5vboxsync ulIRQ(0x3f8),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync portMode(PortMode_Disconnected),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fServer(false)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {}
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool operator==(const SerialPort &n) const;
d3bef44ac7674167abeada174f0d6cf0572249c5vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint32_t ulSlot;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fEnabled;
fd0cf98cb3eafc5c96b7e95d934b01c5df4785fbvboxsync uint32_t ulIOBase;
fd0cf98cb3eafc5c96b7e95d934b01c5df4785fbvboxsync uint32_t ulIRQ;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync PortMode_T portMode;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strPath;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fServer;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsynctypedef std::list<SerialPort> SerialPortsList;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync/**
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * your settings might never get saved.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync */
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncstruct ParallelPort
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync ParallelPort()
04ee5d908f45a7883257fa7e40fb42bbdbaf24b9vboxsync : ulSlot(0),
04ee5d908f45a7883257fa7e40fb42bbdbaf24b9vboxsync fEnabled(false),
04ee5d908f45a7883257fa7e40fb42bbdbaf24b9vboxsync ulIOBase(0x378),
04ee5d908f45a7883257fa7e40fb42bbdbaf24b9vboxsync ulIRQ(4)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {}
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool operator==(const ParallelPort &d) const;
04ee5d908f45a7883257fa7e40fb42bbdbaf24b9vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint32_t ulSlot;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fEnabled;
fd0cf98cb3eafc5c96b7e95d934b01c5df4785fbvboxsync uint32_t ulIOBase;
fd0cf98cb3eafc5c96b7e95d934b01c5df4785fbvboxsync uint32_t ulIRQ;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strPath;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsynctypedef std::list<ParallelPort> ParallelPortsList;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync/**
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * your settings might never get saved.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync */
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncstruct AudioAdapter
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync AudioAdapter()
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync : fEnabled(true),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync controllerType(AudioControllerType_AC97),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync driverType(AudioDriverType_Null)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {}
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool operator==(const AudioAdapter &a) const
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync {
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync return (this == &a)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync || ( (fEnabled == a.fEnabled)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync && (controllerType == a.controllerType)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync && (driverType == a.driverType)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync );
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync }
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fEnabled;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync AudioControllerType_T controllerType;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync AudioDriverType_T driverType;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync/**
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * your settings might never get saved.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync */
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncstruct SharedFolder
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync SharedFolder()
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync : fWritable(false)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {}
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool operator==(const SharedFolder &a) const;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strName,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync strHostPath;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fWritable;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsynctypedef std::list<SharedFolder> SharedFoldersList;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync/**
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * your settings might never get saved.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync */
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncstruct GuestProperty
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync GuestProperty()
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync : timestamp(0)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {};
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool operator==(const GuestProperty &g) const;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strName,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync strValue;
fd0cf98cb3eafc5c96b7e95d934b01c5df4785fbvboxsync uint64_t timestamp;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strFlags;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsynctypedef std::list<GuestProperty> GuestPropertiesList;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsynctypedef std::map<uint32_t, DeviceType_T> BootOrderMap;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync/**
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * your settings might never get saved.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync */
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsyncstruct CpuIdLeaf
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync{
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync CpuIdLeaf()
1ea22ca610c19eb455275a4398575b6291c27629vboxsync : ulId(UINT32_MAX),
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync ulEax(0),
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync ulEbx(0),
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync ulEcx(0),
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync ulEdx(0)
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync {}
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool operator==(const CpuIdLeaf &c) const
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync {
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync return ( (this == &c)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync || ( (ulId == c.ulId)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync && (ulEax == c.ulEax)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync && (ulEbx == c.ulEbx)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync && (ulEcx == c.ulEcx)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync && (ulEdx == c.ulEdx)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync )
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync );
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync }
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync uint32_t ulId;
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync uint32_t ulEax;
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync uint32_t ulEbx;
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync uint32_t ulEcx;
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync uint32_t ulEdx;
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync};
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsynctypedef std::list<CpuIdLeaf> CpuIdLeafsList;
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync/**
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * your settings might never get saved.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync */
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsyncstruct Cpu
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync{
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync Cpu()
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync : ulId(UINT32_MAX)
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync {}
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool operator==(const Cpu &c) const
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync {
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync return (ulId == c.ulId);
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync }
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync uint32_t ulId;
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync};
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsynctypedef std::list<Cpu> CpuList;
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync/**
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * Representation of Machine hardware; this is used in the MachineConfigFile.hardwareMachine
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * field.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync *
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * your settings might never get saved.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync */
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncstruct Hardware
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
606bf1f8cb2c02eb19f231f75e56417f0439951fvboxsync Hardware();
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool operator==(const Hardware&) const;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strVersion; // hardware version, optional
ad9e5a61fea617d40d07390ff1737277d6aef869vboxsync com::Guid uuid; // hardware uuid, optional (null).
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fHardwareVirt,
2c744347b35ec425c206a25ca4095d30a12474d9vboxsync fHardwareVirtExclusive,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fNestedPaging,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fVPID,
7119861e2c17e0a4e0638b06a544cc571cf6804avboxsync fSyntheticCpu,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fPAE;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint32_t cCPUs;
7a5aa60c341d7f14da337f31a3ed1afcee98bc8avboxsync bool fCpuHotPlug; // requires settings version 1.10 (VirtualBox 3.2)
7a5aa60c341d7f14da337f31a3ed1afcee98bc8avboxsync CpuList llCpus; // requires settings version 1.10 (VirtualBox 3.2)
7a5aa60c341d7f14da337f31a3ed1afcee98bc8avboxsync bool fHpetEnabled; // requires settings version 1.10 (VirtualBox 3.2)
7a5aa60c341d7f14da337f31a3ed1afcee98bc8avboxsync
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync CpuIdLeafsList llCpuIdLeafs;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint32_t ulMemorySizeMB;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync BootOrderMap mapBootOrder; // item 0 has highest priority
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint32_t ulVRAMSizeMB;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint32_t cMonitors;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fAccelerate3D,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync fAccelerate2DVideo; // requires settings version 1.8 (VirtualBox 3.1)
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync FirmwareType_T firmwareType; // requires settings version 1.9 (VirtualBox 3.1)
7a5aa60c341d7f14da337f31a3ed1afcee98bc8avboxsync
c606fa3531314e32f0ae90495618aeae47418477vboxsync PointingHidType_T pointingHidType; // requires settings version 1.10 (VirtualBox 3.2)
c606fa3531314e32f0ae90495618aeae47418477vboxsync KeyboardHidType_T keyboardHidType; // requires settings version 1.10 (VirtualBox 3.2)
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync VRDPSettings vrdpSettings;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync BIOSSettings biosSettings;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync USBController usbController;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync NetworkAdaptersList llNetworkAdapters;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync SerialPortsList llSerialPorts;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync ParallelPortsList llParallelPorts;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync AudioAdapter audioAdapter;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync // technically these two have no business in the hardware section, but for some
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync // clever reason <Hardware> is where they are in the XML....
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync SharedFoldersList llSharedFolders;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync ClipboardMode_T clipboardMode;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint32_t ulMemoryBalloonSize;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync uint32_t ulStatisticsUpdateInterval;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync GuestPropertiesList llGuestProperties;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strNotificationPatterns;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync/**
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync * A device attached to a storage controller. This can either be a
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync * hard disk or a DVD drive or a floppy drive and also specifies
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync * which medium is "in" the drive; as a result, this is a combination
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync * of the Main IMedium and IMediumAttachment interfaces.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync *
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * your settings might never get saved.
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync */
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncstruct AttachedDevice
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync AttachedDevice()
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync : deviceType(DeviceType_Null),
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync fPassThrough(false),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync lPort(0),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync lDevice(0)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {}
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool operator==(const AttachedDevice &a) const;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync DeviceType_T deviceType; // only HardDisk, DVD or Floppy are allowed
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync // DVDs can be in pass-through mode:
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync bool fPassThrough;
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync
10153a147e7cb38821b5e7404bd2ef6b9af5be4avboxsync int32_t lPort;
10153a147e7cb38821b5e7404bd2ef6b9af5be4avboxsync int32_t lDevice;
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync // if an image file is attached to the device (ISO, RAW, or hard disk image such as VDI),
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync // this is its UUID; it depends on deviceType which media registry this then needs to
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync // be looked up in. If no image file (only permitted for DVDs and floppies), then the UUID is NULL
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Guid uuid;
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync // for DVDs and floppies, the attachment can also be a host device:
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync com::Utf8Str strHostDriveSrc; // if != NULL, value of <HostDrive>/@src
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsynctypedef std::list<AttachedDevice> AttachedDevicesList;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync/**
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * your settings might never get saved.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync */
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncstruct StorageController
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync StorageController()
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync : storageBus(StorageBus_IDE),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync controllerType(StorageControllerType_PIIX3),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync ulPortCount(2),
c8faf7a704e698dec3679d7df43ae55b1bab3eadvboxsync ulInstance(0),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync lIDE0MasterEmulationPort(0),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync lIDE0SlaveEmulationPort(0),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync lIDE1MasterEmulationPort(0),
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync lIDE1SlaveEmulationPort(0)
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync {}
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool operator==(const StorageController &s) const;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync com::Utf8Str strName;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync StorageBus_T storageBus; // _SATA, _SCSI, _IDE
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync StorageControllerType_T controllerType;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync uint32_t ulPortCount;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync uint32_t ulInstance;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync // only for when controllerType == StorageControllerType_IntelAhci:
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync int32_t lIDE0MasterEmulationPort,
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync lIDE0SlaveEmulationPort,
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync lIDE1MasterEmulationPort,
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync lIDE1SlaveEmulationPort;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync AttachedDevicesList llAttachedDevices;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync};
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsynctypedef std::list<StorageController> StorageControllersList;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync/**
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * We wrap the storage controllers list into an extra struct so we can
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * use an undefined struct without needing std::list<> in all the headers.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync *
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * your settings might never get saved.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync */
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncstruct Storage
d46ee884c41b808b239563b1978468aae12e33a2vboxsync{
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool operator==(const Storage &s) const;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync StorageControllersList llStorageControllers;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync};
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsyncstruct Snapshot;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsynctypedef std::list<Snapshot> SnapshotsList;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync/**
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * your settings might never get saved.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync */
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncstruct Snapshot
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync{
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool operator==(const Snapshot &s) const;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Guid uuid;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strName,
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync strDescription; // optional
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync RTTIMESPEC timestamp;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strStateFile; // for online snapshots only
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync Hardware hardware;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync Storage storage;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync SnapshotsList llChildSnapshots;
d46ee884c41b808b239563b1978468aae12e33a2vboxsync};
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync/**
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * MachineConfigFile represents an XML machine configuration. All the machine settings
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * that go out to the XML (or are read from it) are in here.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync *
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * the operator== which is used by Machine::saveSettings(), or otherwise your settings
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync * might never get saved.
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync */
358a99c385080f7f31166943f3ac3a2aea6b5263vboxsyncclass MachineConfigFile : public ConfigFileBase
d46ee884c41b808b239563b1978468aae12e33a2vboxsync{
d46ee884c41b808b239563b1978468aae12e33a2vboxsyncpublic:
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync MachineConfigFile(const com::Utf8Str *pstrFilename);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync bool operator==(const MachineConfigFile &m) const;
8cd393943ea52545c4d063f5a94436639f0f80b6vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void readNetworkAdapters(const xml::ElementNode &elmHardware, NetworkAdaptersList &ll);
34aaaf212fe61ccafbae15eb832d6062ba548799vboxsync void readCpuIdTree(const xml::ElementNode &elmCpuid, CpuIdLeafsList &ll);
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync void readCpuTree(const xml::ElementNode &elmCpu, CpuList &ll);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void readSerialPorts(const xml::ElementNode &elmUART, SerialPortsList &ll);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void readParallelPorts(const xml::ElementNode &elmLPT, ParallelPortsList &ll);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void readGuestProperties(const xml::ElementNode &elmGuestProperties, Hardware &hw);
f83c571186f95b28f63a1acb516edaf6ee372419vboxsync void readStorageControllerAttributes(const xml::ElementNode &elmStorageController, StorageController &sctl);
f83c571186f95b28f63a1acb516edaf6ee372419vboxsync void readHardware(const xml::ElementNode &elmHardware, Hardware &hw, Storage &strg);
f83c571186f95b28f63a1acb516edaf6ee372419vboxsync void readHardDiskAttachments_pre1_7(const xml::ElementNode &elmHardDiskAttachments, Storage &strg);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void readStorageControllers(const xml::ElementNode &elmStorageControllers, Storage &strg);
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync void readDVDAndFloppies_pre1_9(const xml::ElementNode &elmHardware, Storage &strg);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void readSnapshot(const xml::ElementNode &elmSnapshot, Snapshot &snap);
8ef9698f7d5a2304d43584fb942a7b69c7424f51vboxsync void convertOldOSType_pre1_5(com::Utf8Str &str);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void readMachine(const xml::ElementNode &elmMachine);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fc148a6b23d25a87561beaffe0ba06c3ba93bf5avboxsync void writeHardware(xml::ElementNode &elmParent, const Hardware &hw, const Storage &strg);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void writeStorageControllers(xml::ElementNode &elmParent, const Storage &st);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void writeSnapshot(xml::ElementNode &elmParent, const Snapshot &snap);
14b903b792c76bd7d1a240370d64a146d90e28f4vboxsync void bumpSettingsVersionIfNeeded();
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync void write(const com::Utf8Str &strFilename);
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Guid uuid;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strName;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fNameSync;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strDescription;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strOsType;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strStateFile;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Guid uuidCurrentSnapshot;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync com::Utf8Str strSnapshotFolder;
9e4ea89b1085fdaa5861e45a729d9c978db1a8f1vboxsync bool fTeleporterEnabled;
9e4ea89b1085fdaa5861e45a729d9c978db1a8f1vboxsync uint32_t uTeleporterPort;
9e4ea89b1085fdaa5861e45a729d9c978db1a8f1vboxsync com::Utf8Str strTeleporterAddress;
9e4ea89b1085fdaa5861e45a729d9c978db1a8f1vboxsync com::Utf8Str strTeleporterPassword;
e2760cdc84c692bc46cfaf5018d313db2f122acavboxsync bool fRTCUseUTC;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fCurrentStateModified; // optional, default is true
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync RTTIMESPEC timeLastStateChange; // optional, defaults to now
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync bool fAborted; // optional, default is false
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync Hardware hardwareMachine;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync Storage storageMachine;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync ExtraDataItemsMap mapExtraDataItems;
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync SnapshotsList llFirstSnapshot; // first snapshot or empty list if there's none
d46ee884c41b808b239563b1978468aae12e33a2vboxsync};
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
fe06619ae576367ff3568e6abd99fb8ad28cc73avboxsync} // namespace settings
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
d46ee884c41b808b239563b1978468aae12e33a2vboxsync
d46ee884c41b808b239563b1978468aae12e33a2vboxsync#endif /* ___VBox_settings_h */