WvStreams
comdef.h
1#ifndef __COMDEF_H
2#define __COMDEF_H
3
4//#warning "Using hideously broken fake comdef.h"
5
7{
8public:
9 void *p;
10};
11
12
13// FIXME: completely untested and random
14template <typename I>
16{
17public:
18 WvComSmart(IUnknown *ptr = 0, bool addref = false)
19 {
20 p = ptr;
21 }
22
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
57extern CLSID xblah;
58_COM_SMARTPTR_TYPEDEF(IUnknown, xblah);
59_COM_SMARTPTR_TYPEDEF(IDispatch, xblah);
60
62{
63public:
64 const char *ErrorMessage();
65};
66
67#define __uuidof(x) (xblah)
68
69#endif // _COMDEF_H