VirtualBox

source: vbox/trunk/src/VBox/Main/include/HostFloppyDriveImpl.h@ 14959

Last change on this file since 14959 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_HOSTFLOPPYDRIVEIMPL
23#define ____H_HOSTFLOPPYDRIVEIMPL
24
25#include "VirtualBoxBase.h"
26#include "Collection.h"
27
28class ATL_NO_VTABLE HostFloppyDrive :
29 public VirtualBoxBaseNEXT,
30 public VirtualBoxSupportErrorInfoImpl <HostFloppyDrive, IHostFloppyDrive>,
31 public VirtualBoxSupportTranslation <HostFloppyDrive>,
32 public IHostFloppyDrive
33{
34public:
35
36 VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT (HostFloppyDrive)
37
38 DECLARE_NOT_AGGREGATABLE (HostFloppyDrive)
39
40 DECLARE_PROTECT_FINAL_CONSTRUCT()
41
42 BEGIN_COM_MAP(HostFloppyDrive)
43 COM_INTERFACE_ENTRY(ISupportErrorInfo)
44 COM_INTERFACE_ENTRY(IHostFloppyDrive)
45 END_COM_MAP()
46
47 NS_DECL_ISUPPORTS
48
49 DECLARE_EMPTY_CTOR_DTOR (HostFloppyDrive)
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 // IHostFloppyDrive properties
60 STDMETHOD(COMGETTER(Name)) (BSTR *aName);
61 STDMETHOD(COMGETTER(Description)) (BSTR *aDescription);
62 STDMETHOD(COMGETTER(Udi)) (BSTR *aUdi);
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"HostFloppyDrive"; }
77
78private:
79
80 const Bstr mName;
81 const Bstr mDescription;
82 const Bstr mUdi;
83};
84
85COM_DECL_READONLY_ENUM_AND_COLLECTION_BEGIN (HostFloppyDrive)
86
87 STDMETHOD(FindByName) (INPTR BSTR aName, IHostFloppyDrive **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, HostFloppyDriveCollection::tr (
108 "The host floppy drive named '%ls' could not be found"), aName);
109
110 return found.queryInterfaceTo (aDrive);
111 }
112
113COM_DECL_READONLY_ENUM_AND_COLLECTION_END (HostFloppyDrive)
114
115#endif // ____H_HOSTFLOPPYDRIVEIMPL
116/* vi: set tabstop=4 shiftwidth=4 expandtab: */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette