WvStreams
comdef.h
1 #ifndef __COMDEF_H
2 #define __COMDEF_H
3 
4 //#warning "Using hideously broken fake comdef.h"
5 
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 
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