~ubuntu-branches/ubuntu/trusty/virtualbox-ose/trusty

« back to all changes in this revision

Viewing changes to src/VBox/Main/include/HardDiskFormatImpl.h

  • Committer: Bazaar Package Importer
  • Author(s): Felix Geyer
  • Date: 2009-12-18 16:44:29 UTC
  • mfrom: (0.3.3 upstream) (0.4.6 squeeze)
  • Revision ID: james.westby@ubuntu.com-20091218164429-jd34ccexpv5na11a
Tags: 3.1.2-dfsg-1ubuntu1
* Merge from Debian unstable (LP: #498219), remaining changes:
  - Disable update action
    - debian/patches/u01-disable-update-action.dpatch
  - VirtualBox should go in Accessories, not in System tools (LP: #288590)
    - debian/virtualbox-ose-qt.files/virtualbox-ose.desktop
  - Add Apport hook
    - debian/virtualbox-ose.files/source_virtualbox-ose.py
    - debian/virtualbox-ose.install
  - Add Launchpad integration
    - debian/control
    - debian/lpi-bug.xpm
    - debian/patches/u02-lp-integration.dpatch
* Fixes the following bugs:
  - Kernel module fails to build with Linux >= 2.6.32 (LP: #474625)
  - X.Org drivers need to be rebuilt against X-Server 1.7 (LP: #495935)
  - The *-source packages try to build the kernel modules even though the
    kernel headers aren't available (LP: #473334)
* Replace *-source packages with transitional packages for *-dkms.
* Adapt u01-disable-update-action.dpatch and u02-lp-integration.dpatch for
  new upstream version.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* $Id: HardDiskFormatImpl.h $ */
2
 
 
3
 
/** @file
4
 
 *
5
 
 * VirtualBox COM class implementation
6
 
 */
7
 
 
8
 
/*
9
 
 * Copyright (C) 2008 Sun Microsystems, Inc.
10
 
 *
11
 
 * This file is part of VirtualBox Open Source Edition (OSE), as
12
 
 * available from http://www.virtualbox.org. This file is free software;
13
 
 * you can redistribute it and/or modify it under the terms of the GNU
14
 
 * General Public License (GPL) as published by the Free Software
15
 
 * Foundation, in version 2 as it comes in the "COPYING" file of the
16
 
 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
17
 
 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
18
 
 *
19
 
 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
20
 
 * Clara, CA 95054 USA or visit http://www.sun.com if you need
21
 
 * additional information or have any questions.
22
 
 */
23
 
 
24
 
#ifndef ____H_HARDDISKFORMAT
25
 
#define ____H_HARDDISKFORMAT
26
 
 
27
 
#include "VirtualBoxBase.h"
28
 
 
29
 
#include <VBox/com/array.h>
30
 
 
31
 
#include <list>
32
 
 
33
 
struct VDBACKENDINFO;
34
 
 
35
 
/**
36
 
 * The HardDiskFormat class represents the backend used to store hard disk data
37
 
 * (IHardDiskFormat interface).
38
 
 *
39
 
 * @note Instances of this class are permanently caller-referenced by HardDisk
40
 
 * objects (through addCaller()) so that an attempt to uninitialize or delete
41
 
 * them before all HardDisk objects are uninitialized will produce an endless
42
 
 * wait!
43
 
 */
44
 
class ATL_NO_VTABLE HardDiskFormat :
45
 
    public VirtualBoxBaseNEXT,
46
 
    public VirtualBoxSupportErrorInfoImpl <HardDiskFormat, IHardDiskFormat>,
47
 
    public VirtualBoxSupportTranslation <HardDiskFormat>,
48
 
    VBOX_SCRIPTABLE_IMPL(IHardDiskFormat)
49
 
{
50
 
public:
51
 
 
52
 
    struct Property
53
 
    {
54
 
        Bstr name;
55
 
        Bstr description;
56
 
        DataType_T type;
57
 
        ULONG flags;
58
 
        Bstr defaultValue;
59
 
    };
60
 
 
61
 
    typedef std::list <Bstr> BstrList;
62
 
    typedef std::list <Property> PropertyList;
63
 
 
64
 
    struct Data
65
 
    {
66
 
        Data() : capabilities (0) {}
67
 
 
68
 
        const Bstr id;
69
 
        const Bstr name;
70
 
        const BstrList fileExtensions;
71
 
        const uint64_t capabilities;
72
 
        const PropertyList properties;
73
 
    };
74
 
 
75
 
    VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT (HardDiskFormat)
76
 
 
77
 
    DECLARE_NOT_AGGREGATABLE (HardDiskFormat)
78
 
 
79
 
    DECLARE_PROTECT_FINAL_CONSTRUCT()
80
 
 
81
 
    BEGIN_COM_MAP(HardDiskFormat)
82
 
        COM_INTERFACE_ENTRY (ISupportErrorInfo)
83
 
        COM_INTERFACE_ENTRY (IHardDiskFormat)
84
 
        COM_INTERFACE_ENTRY (IDispatch)
85
 
    END_COM_MAP()
86
 
 
87
 
    NS_DECL_ISUPPORTS
88
 
 
89
 
    DECLARE_EMPTY_CTOR_DTOR (HardDiskFormat)
90
 
 
91
 
    HRESULT FinalConstruct();
92
 
    void FinalRelease();
93
 
 
94
 
    // public initializer/uninitializer for internal purposes only
95
 
    HRESULT init (const VDBACKENDINFO *aVDInfo);
96
 
    void uninit();
97
 
 
98
 
    // IHardDiskFormat properties
99
 
    STDMETHOD(COMGETTER(Id)) (BSTR *aId);
100
 
    STDMETHOD(COMGETTER(Name)) (BSTR *aName);
101
 
    STDMETHOD(COMGETTER(FileExtensions)) (ComSafeArrayOut (BSTR, aFileExtensions));
102
 
    STDMETHOD(COMGETTER(Capabilities)) (ULONG *aCaps);
103
 
 
104
 
    // IHardDiskFormat methods
105
 
    STDMETHOD(DescribeProperties) (ComSafeArrayOut (BSTR, aNames),
106
 
                                   ComSafeArrayOut (BSTR, aDescriptions),
107
 
                                   ComSafeArrayOut (DataType_T, aTypes),
108
 
                                   ComSafeArrayOut (ULONG, aFlags),
109
 
                                   ComSafeArrayOut (BSTR, aDefaults));
110
 
 
111
 
    // public methods only for internal purposes
112
 
 
113
 
    // public methods for internal purposes only
114
 
    // (ensure there is a caller and a read lock before calling them!)
115
 
 
116
 
    /** Const, no need to lock */
117
 
    const Bstr &id() const { return m.id; }
118
 
    /** Const, no need to lock */
119
 
    const BstrList &fileExtensions() const { return m.fileExtensions; }
120
 
    /** Const, no need to lock */
121
 
    uint64_t capabilities() const { return m.capabilities; }
122
 
    /** Const, no need to lock */
123
 
    const PropertyList &properties() const { return m.properties; }
124
 
 
125
 
    // for VirtualBoxSupportErrorInfoImpl
126
 
    static const wchar_t *getComponentName() { return L"HardDiskFormat"; }
127
 
 
128
 
private:
129
 
 
130
 
    Data m;
131
 
};
132
 
 
133
 
#endif // ____H_HARDDISKFORMAT
134
 
 
135
 
/* vi: set tabstop=4 shiftwidth=4 expandtab: */