WvStreams
win32
cominclude
comdef.h
1
#ifndef __COMDEF_H
2
#define __COMDEF_H
3
4
//#warning "Using hideously broken fake comdef.h"
5
6
class
WvComSmartBase
7
{
8
public
:
9
void
*p;
10
};
11
12
13
// FIXME: completely untested and random
14
template
<
typename
I>
15
class
WvComSmart
:
public
WvComSmartBase
16
{
17
public
:
18
WvComSmart
(IUnknown *ptr = 0,
bool
addref =
false
)
19
{
20
p = ptr;
21
}
22
23
WvComSmart
(
const
WvComSmartBase
&b)
24
{
25
p = b.p;
26
}
27
28
bool
operator== (
const
void
*b)
const
29
{
30
return
p == b;
31
}
32
33
bool
operator!= (
const
void
*b)
const
34
{
35
return
p != b;
36
}
37
38
I *operator-> ()
39
{
40
return
(I *)p;
41
}
42
43
operator
I* ()
44
{
45
return
(I *)p;
46
}
47
48
I **operator& ()
49
{
50
return
(I **)&p;
51
}
52
};
53
54
#define _COM_SMARTPTR_TYPEDEF(x, y) typedef WvComSmart<x> x##Ptr;
55
56
// FIXME
57
extern
CLSID xblah;
58
_COM_SMARTPTR_TYPEDEF(IUnknown, xblah);
59
_COM_SMARTPTR_TYPEDEF(IDispatch, xblah);
60
61
class
_com_error
62
{
63
public
:
64
const
char
*ErrorMessage();
65
};
66
67
#define __uuidof(x) (xblah)
68
69
#endif // _COMDEF_H
WvComSmart
Definition:
comdef.h:15
_com_error
Definition:
comdef.h:61
WvComSmartBase
Definition:
comdef.h:6
Generated by
1.8.17