1 #ifndef _COM_GLUE_H_
2 #define _COM_GLUE_H_
3 
4 #ifdef FOR_GLUE
5 
6 #include <initguid.h>
7 
8 // {A604CB9C-2AB5-11D4-B6D3-0060089002FE}
9 DEFINE_GUID(CLSID_TypeLib, 0xA604CB9C, 0x2ab5, 0x11d4, 0xb6, 0xd3, 0x00, 0x60, 0x08, 0x90, 0x02, 0xfe);
10 
11 // {A3B0AF9E-2AB0-11D4-B6D2-0060089002FE}
12 DEFINE_GUID(CLSID_IMzObj, 0xA3B0AF9E, 0x2ab0, 0x11d4, 0xb6, 0xd2, 0x00, 0x60, 0x08, 0x90, 0x02, 0xfe);
13 
14 // {A604CBA8-2AB5-11D4-B6D3-0060089002FE}
15 DEFINE_GUID(IID_IMzObj, 0xA604CBA8, 0x2ab5, 0x11d4, 0xb6, 0xd3, 0x00, 0x60, 0x08, 0x90, 0x02, 0xfe);
16 
17 #undef  INTERFACE
18 #define INTERFACE IMzObj
DECLARE_INTERFACE_(INTERFACE,IDispatch)19 DECLARE_INTERFACE_ (INTERFACE, IDispatch)
20 {
21 	// IUnknown functions
22 	STDMETHOD  (QueryInterface)		(THIS_ REFIID, void **) PURE;
23 	STDMETHOD_ (ULONG, AddRef)		(THIS) PURE;
24 	STDMETHOD_ (ULONG, Release)		(THIS) PURE;
25 	// IDispatch functions
26 	STDMETHOD_ (ULONG, GetTypeInfoCount)(THIS_ UINT *) PURE;
27 	STDMETHOD_ (ULONG, GetTypeInfo)		(THIS_ UINT, LCID, ITypeInfo **) PURE;
28 	STDMETHOD_ (ULONG, GetIDsOfNames)	(THIS_ REFIID, LPOLESTR *, UINT, LCID, DISPID *) PURE;
29 	STDMETHOD_ (ULONG, Invoke)			(THIS_ DISPID, REFIID, LCID, WORD, DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *) PURE;
30 	// Extra functions
31 	STDMETHOD  (Eval)			(THIS_ BSTR, BSTR *) PURE;
32 	STDMETHOD  (About)			(THIS) PURE;
33 	STDMETHOD  (Reset)			(THIS) PURE;
34 };
35 
36 // {A604CBA9-2AB5-11D4-B6D3-0060089002FE}
37 DEFINE_GUID(DIID_IMzObjEvents, 0xA604CBA9, 0x2ab5, 0x11d4, 0xb6, 0xd3, 0x00, 0x60, 0x08, 0x90, 0x02, 0xfe);
38 
39 #undef  INTERFACE
40 #define INTERFACE IMzObjEvents
DECLARE_INTERFACE_(INTERFACE,IDispatch)41 DECLARE_INTERFACE_ (INTERFACE, IDispatch)
42 {
43 	// IUnknown functions
44 	STDMETHOD  (QueryInterface)		(THIS_ REFIID, void **) PURE;
45 	STDMETHOD_ (ULONG, AddRef)		(THIS) PURE;
46 	STDMETHOD_ (ULONG, Release)		(THIS) PURE;
47 	// IDispatch functions
48 	STDMETHOD_ (ULONG, GetTypeInfoCount)(THIS_ UINT *) PURE;
49 	STDMETHOD_ (ULONG, GetTypeInfo)		(THIS_ UINT, LCID, ITypeInfo **) PURE;
50 	STDMETHOD_ (ULONG, GetIDsOfNames)	(THIS_ REFIID, LPOLESTR *, UINT, LCID, DISPID *) PURE;
51 	STDMETHOD_ (ULONG, Invoke)			(THIS_ DISPID, REFIID, LCID, WORD, DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *) PURE;
52 	// Extra functions
53 	STDMETHOD  (SchemeError)                (THIS_ BSTR *) PURE;
54 };
55 
56 #else
57 
58 typedef struct IMzObj { int dummy; } IMzObj;
59 
60 #endif
61 
62 extern HRESULT com_register();
63 extern int com_unregister();
64 extern int com_can_unregister();
65 extern const GUID com_get_class_iid();
66 
67 extern void *new_mzobj(IMzObj*);
68 extern void delete_mzobj(void*);
69 extern HRESULT mzobj_about(void*);
70 extern HRESULT mzobj_reset(void*);
71 extern HRESULT mzobj_eval(void*, BSTR, BSTR*);
72 
73 extern VOID Fire_SchemeError(IMzObj *com_obj, BSTR description);
74 
75 #endif // _COM_GLUE_H_
76