VirtualBox

source: vbox/trunk/src/VBox/Main/src-server/win/VBoxComEvents.h@ 56516

Last change on this file since 56516 was 55401, checked in by vboxsync, 10 years ago

added a couple of missing Id headers

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 1.7 KB
Line 
1/* $Id: VBoxComEvents.h 55401 2015-04-23 10:03:17Z vboxsync $ */
2/** @file
3 *
4 * Declaration of COM Events Helper routines.
5 */
6
7/*
8 * Copyright (C) 2010 Oracle Corporation
9 *
10 * This file is part of VirtualBox Open Source Edition (OSE), as
11 * available from http://www.virtualbox.org. This file is free software;
12 * you can redistribute it and/or modify it under the terms of the GNU
13 * General Public License (GPL) as published by the Free Software
14 * Foundation, in version 2 as it comes in the "COPYING" file of the
15 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
16 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
17 */
18
19#ifndef __VBOXCOMEVENTS_h__
20#define __VBOXCOMEVENTS_h__
21
22#include <map>
23
24#include "VBox/com/string.h"
25#include "VBox/com/guid.h"
26
27#include <VBox/err.h>
28
29#include <atlcom.h>
30
31
32class ComEventDesc
33{
34public:
35 ComEventDesc()
36 : mArgc(0), mArgs(0), mPos(0)
37 {}
38 ~ComEventDesc()
39 {
40 if (mArgs)
41 delete [] mArgs;
42 }
43
44 void init(const char* name, int argc)
45 {
46 // copies content
47 mName = name;
48 mArgc = argc;
49 if (mArgs)
50 delete [] mArgs;
51 mArgs = new CComVariant[mArgc];
52 mPos = argc - 1;
53 }
54
55 template <class T>
56 ComEventDesc& add(T v)
57 {
58 Assert(mPos>= 0);
59 mArgs[mPos] = v;
60 mPos--;
61 return *this;
62 }
63
64private:
65 com::Utf8Str mName;
66 int mArgc;
67 CComVariant* mArgs;
68 int mPos;
69
70 friend class ComEventsHelper;
71};
72
73class ComEventsHelper
74{
75public:
76 ComEventsHelper();
77 ~ComEventsHelper();
78
79 HRESULT init(const com::Guid &aGuid);
80 HRESULT lookup(com::Utf8Str &aName, DISPID *did);
81 HRESULT fire(IDispatch* aObj, ComEventDesc& desc, CComVariant *pResult);
82
83private:
84 typedef std::map<com::Utf8Str, DISPID> ComEventsMap;
85
86 ComEventsMap evMap;
87};
88
89#endif /* __VBOXCOMEVENTS_h__ */
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