VirtualBox

source: vbox/trunk/src/VBox/Main/include/HostDVDDriveImpl.h@ 14949

Last change on this file since 14949 was 14949, checked in by vboxsync, 16 years ago

Appended vim modeline to set tabstop and expand tabs (in the way
suggested by our coding guidelines).

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.4 KB
Line 
1/** @file
2 *
3 * VirtualBox COM class implementation
4 */
5
6/*
7 * Copyright (C) 2006-2007 Sun Microsystems, Inc.
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 *
17 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
18 * Clara, CA 95054 USA or visit http://www.sun.com if you need
19 * additional information or have any questions.
20 */
21
22#ifndef ____H_HOSTDVDDRIVEIMPL
23#define ____H_HOSTDVDDRIVEIMPL
24
25#include "VirtualBoxBase.h"
26#include "Collection.h"
27
28class ATL_NO_VTABLE HostDVDDrive :
29 public VirtualBoxBaseNEXT,
30 public VirtualBoxSupportErrorInfoImpl <HostDVDDrive, IHostDVDDrive>,
31 public VirtualBoxSupportTranslation <HostDVDDrive>,
32 public IHostDVDDrive
33{
34public:
35
36 VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT (HostDVDDrive)
37
38 DECLARE_NOT_AGGREGATABLE (HostDVDDrive)
39
40 DECLARE_PROTECT_FINAL_CONSTRUCT()
41
42 BEGIN_COM_MAP(HostDVDDrive)
43 COM_INTERFACE_ENTRY(ISupportErrorInfo)
44 COM_INTERFACE_ENTRY(IHostDVDDrive)
45 END_COM_MAP()
46
47 NS_DECL_ISUPPORTS
48
49 DECLARE_EMPTY_CTOR_DTOR (HostDVDDrive)
50
51 HRESULT FinalConstruct();
52 void FinalRelease();
53
54 // public initializer/uninitializer for internal purposes only
55 HRESULT init (INPTR BSTR aName, INPTR BSTR aUdi = NULL,
56 INPTR BSTR aDescription = NULL);
57 void uninit();
58
59 // IHostDVDDrive properties
60 STDMETHOD(COMGETTER(Name)) (BSTR *aName);
61 STDMETHOD(COMGETTER(Udi)) (BSTR *aUdi);
62 STDMETHOD(COMGETTER(Description)) (BSTR *aDescription);
63
64 // public methods for internal purposes only
65
66 /* @note Must be called from under the object read lock. */
67 const Bstr &name() const { return mName; }
68
69 /* @note Must be called from under the object read lock. */
70 const Bstr &udi() const { return mUdi; }
71
72 /* @note Must be called from under the object read lock. */
73 const Bstr &description() const { return mDescription; }
74
75 // for VirtualBoxSupportErrorInfoImpl
76 static const wchar_t *getComponentName() { return L"HostDVDDrive"; }
77
78private:
79
80 const Bstr mName;
81 const Bstr mDescription;
82 const Bstr mUdi;
83};
84
85COM_DECL_READONLY_ENUM_AND_COLLECTION_BEGIN (HostDVDDrive)
86
87 STDMETHOD(FindByName) (INPTR BSTR aName, IHostDVDDrive **aDrive)
88 {
89 if (!aName)
90 return E_INVALIDARG;
91 if (!aDrive)
92 return E_POINTER;
93
94 *aDrive = NULL;
95 Vector::value_type found;
96 Vector::iterator it = vec.begin();
97 while (it != vec.end() && !found)
98 {
99 Bstr n;
100 (*it)->COMGETTER(Name) (n.asOutParam());
101 if (n == aName)
102 found = *it;
103 ++ it;
104 }
105
106 if (!found)
107 return setError (E_INVALIDARG, HostDVDDriveCollection::tr (
108 "The host DVD drive named '%ls' could not be found"), aName);
109
110 return found.queryInterfaceTo (aDrive);
111 }
112
113COM_DECL_READONLY_ENUM_AND_COLLECTION_END (HostDVDDrive)
114
115#endif // ____H_HOSTDVDDRIVEIMPL
116/* vi: set tabstop=4 shiftwidth=4 expandtab: */
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use