mshtml: Make sure that HTML headers are terminated by endline.
[wine] / include / mimeole.idl
1 /*
2  * Copyright 2007 Robert Shearman for CodeWeavers
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 import "ocidl.idl";
20 import "objidl.idl";
21 import "propidl.idl";
22
23 #define DECLARE_HANDLE(name) typedef void *name
24
25 interface IMimeMessageCallback;
26 interface IMimeEnumAddressTypes;
27 interface IMimeMessageParts;
28 interface IMimeMessageTree;
29 interface IMimeBody;
30 interface IMimeEnumProperties;
31
32 cpp_quote("DEFINE_GUID(CLSID_IMimeBody,      0xfd853cdb, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
33 cpp_quote("DEFINE_GUID(CLSID_IMimeAllocator, 0xfd853cdd, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
34 cpp_quote("DEFINE_GUID(CLSID_IMimeMessage,   0xfd853ce3, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
35 cpp_quote("DEFINE_GUID(CLSID_IMimeSecurity,  0xfd853cde, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
36 cpp_quote("DEFINE_GUID(CLSID_IVirtualStream, 0xfd853cdf, 0x7f86, 0x11d0, 0x82, 0x52, 0x0, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);")
37
38 cpp_quote("#define MIME_E_REG_CREATE_KEY         0x800cce01")
39 cpp_quote("#define MIME_E_REG_QUERY_INFO         0x800cce02")
40 cpp_quote("#define MIME_E_INVALID_ENCTYPE        0x800cce03")
41 cpp_quote("#define MIME_E_BOUNDARY_MISMATCH      0x800cce04")
42 cpp_quote("#define MIME_E_NOT_FOUND              0x800cce05")
43 cpp_quote("#define MIME_E_NO_DATA                0x800cce05")
44 cpp_quote("#define MIME_E_BUFFER_TOO_SMALL       0x800cce06")
45 cpp_quote("#define MIME_E_INVALID_ITEM_FLAGS     0x800cce07")
46 cpp_quote("#define MIME_E_ONE_LINE_ITEME         0x800cce08")
47 cpp_quote("#define MIME_E_INVALID_HANDLE         0x800cce09")
48 cpp_quote("#define MIME_E_CHARSET_TRANSLATE      0x800cce0a")
49 cpp_quote("#define MIME_E_NOT_INITIALIZED        0x800cce0b")
50
51 cpp_quote("#define MIME_E_INVALID_CHARSET_TYPE   0x800cce31")
52
53 cpp_quote("#define MIME_E_INVALID_TEXT_TYPE      0x800cce38")
54
55 cpp_quote("#define MIME_E_SECURITY_NOOP          0x800cceb1")
56 cpp_quote("#define MIME_S_SECURITY_NOOP          0x000cceb1")
57
58 cpp_quote("typedef enum tagMIMEPROPID {")
59 cpp_quote("    PID_HDR_NEWSGROUP  = 2,")
60 cpp_quote("    PID_HDR_NEWSGROUPS = 3,")
61 cpp_quote("    PID_HDR_REFS       = 4,")
62 cpp_quote("    PID_HDR_SUBJECT    = 5,")
63 cpp_quote("    PID_HDR_FROM       = 6,")
64 cpp_quote("    PID_HDR_MESSAGEID  = 7,")
65 cpp_quote("    PID_HDR_RETURNPATH = 8,")
66 cpp_quote("    PID_HDR_RR         = 9,")
67 cpp_quote("    PID_HDR_RETRCPTO   = 10,")
68 cpp_quote("    PID_HDR_APPARTO    = 11,")
69 cpp_quote("    PID_HDR_DATE       = 12,")
70 cpp_quote("    PID_HDR_RECEIVED   = 13,")
71 cpp_quote("    PID_HDR_REPLYTO    = 14,")
72 cpp_quote("    PID_HDR_XMAILER    = 15,")
73 cpp_quote("    PID_HDR_BCC        = 16,")
74 cpp_quote("    PID_HDR_MIMEVER    = 17,")
75 cpp_quote("    PID_HDR_CNTTYPE    = 18,")
76 cpp_quote("    PID_HDR_CNTXFER    = 19,")
77 cpp_quote("    PID_HDR_CNTID      = 20,")
78 cpp_quote("    PID_HDR_CNTDESC    = 21,")
79 cpp_quote("    PID_HDR_CNTDISP    = 22,")
80 cpp_quote("    PID_HDR_CNTBASE    = 23,")
81 cpp_quote("    PID_HDR_CNTLOC     = 24,")
82 cpp_quote("    PID_HDR_TO         = 25,")
83 cpp_quote("    PID_HDR_PATH       = 26,")
84 cpp_quote("    PID_HDR_FOLLOWUPTO = 27,")
85 cpp_quote("    PID_HDR_EXPIRES    = 28,")
86 cpp_quote("    PID_HDR_CC         = 29,")
87
88 cpp_quote("    PID_HDR_SENDER     = 61,")
89
90 cpp_quote("    PID_HDR_INREPLYTO  = 77,")
91 cpp_quote("} MIMEPROPID;")
92
93 cpp_quote("#define TYPEDID_MASK                  ((ULONG)0xffff)")
94 cpp_quote("#define TYPEDID_TYPE(t)               ((VARTYPE)((t) & TYPEDID_MASK))")
95
96 cpp_quote("#define OID_HIDE_TNEF_ATTACHMENTS     (0x000e0000 | VT_BOOL)")
97 cpp_quote("#define OID_SECURITY_TYPE             (0x00180000 | VT_UI4)")
98 cpp_quote("#define OID_SECURITY_HWND_OWNER       (0x00320000 | VT_UI4)")
99 cpp_quote("#define OID_HEADER_RELOAD_TYPE        (0x00370000 | VT_UI4)")
100 cpp_quote("#define OID_SHOW_MACBINARY            (0x00390000 | VT_BOOL)")
101
102
103 [
104     uuid(e4b28371-83b0-11d0-8259-00c04fd85ab4),
105     version(1.0)
106 ]
107 library MIMEOLE
108 {
109     importlib("stdole2.tlb");
110
111     DECLARE_HANDLE(HCHARSET);
112     DECLARE_HANDLE(HBODY);
113     DECLARE_HANDLE(HHEADERROW);
114
115     typedef HCHARSET *LPHCHARSET;
116     typedef HBODY *LPHBODY;
117     typedef HHEADERROW *LPHHEADERROW;
118     typedef DWORD TYPEDID;
119     typedef const PROPVARIANT *LPCPROPVARIANT;
120     typedef const BLOB *LPCBLOB;
121
122     typedef enum tagRELOADTYPE
123     {
124         RELOAD_HEADER_NONE,
125         RELOAD_HEADER_RESET,
126         RELOAD_HEADER_APPEND,
127         RELOAD_HEADER_REPLACE,
128     } RELOADTYPE;
129
130     typedef enum tagMIMESAVETYPE
131     {
132         SAVE_RFC822,
133         SAVE_RFC1521,
134     } MIMESAVETYPE;
135
136     typedef enum tagCSETAPPLYTYPE
137     {
138         CSET_APPLY_UNTAGGED,
139         CSET_APPLY_ALL,
140         CSET_APPLY_TAG_ALL,
141     } CSETAPPLYTYPE;
142
143     typedef enum tagENCODINGTYPE
144     {
145         IET_BINARY,
146         IET_BASE64,
147         IET_UUENCODE,
148         IET_QP,
149         IET_7BIT,
150         IET_8BIT,
151         IET_INETCSET,
152         IET_UNICODE,
153         IET_RFC1522,
154         IET_ENCODED,
155         IET_CURRENT,
156         IET_UNKNOWN,
157         IET_BINHEX40,
158         IET_LAST
159     } ENCODINGTYPE;
160
161     const SHORT IET_DECODED = IET_BINARY;
162
163     const SHORT CCHMAX_HEADER_LINE = 1000;
164
165     [
166         uuid(c5588349-7f86-11d0-8252-00c04fd85ab4),
167         object
168     ]
169     interface IMimeInternational : IUnknown
170     {
171         typedef [unique] IMimeInternational *LPMIMEINTERNATIONAL;
172         typedef DWORD CODEPAGEID;
173
174         const CODEPAGEID CP_USASCII = 1252;
175         const CODEPAGEID CP_UNICODE = 1200;
176         const CODEPAGEID CP_JAUTODETECT = 50932;
177         const CODEPAGEID CP_KAUTODETECT = 50949;
178         const CODEPAGEID CP_ISO2022JPESC = 50221;
179         const CODEPAGEID CP_ISO2022JPSIO = 50222;
180
181         const SHORT CCHMAX_CSET_NAME = 128;
182         const SHORT CCHMAX_LANG_NAME = 128;
183         const SHORT CCHMAX_FACE_NAME = 128;
184
185         typedef struct tagINETCSETINFO
186         {
187             CHAR        szName[CCHMAX_CSET_NAME];
188             HCHARSET    hCharset;
189             CODEPAGEID  cpiWindows;
190             CODEPAGEID  cpiInternet;
191             DWORD       dwReserved1;
192         } INETCSETINFO, *LPINETCSETINFO;
193
194         typedef enum tagINETLANGMASK
195         {
196             ILM_FAMILY          = 0x01,
197             ILM_NAME            = 0x02,
198             ILM_BODYCSET        = 0x04,
199             ILM_HEADERCSET      = 0x08,
200             ILM_WEBCSET         = 0x10,
201             ILM_FIXEDFONT       = 0x20,
202             ILM_VARIABLEFONT    = 0x40,
203         } INETLANGMASK;
204
205         typedef struct tagCODEPAGEINFO
206         {
207             DWORD dwMask;
208             CODEPAGEID cpiCodePage;
209             BOOL fIsValidCodePage;
210             ULONG ulMaxCharSize;
211             BOOL fInternetCP;
212             CODEPAGEID cpiFamily;
213             CHAR szName[CCHMAX_LANG_NAME];
214             CHAR szBodyCset[CCHMAX_CSET_NAME];
215             CHAR szHeaderCset[CCHMAX_CSET_NAME];
216             CHAR szWebCset[CCHMAX_CSET_NAME];
217             CHAR szFixedFont[CCHMAX_FACE_NAME];
218             CHAR szVariableFont[CCHMAX_FACE_NAME];
219             ENCODINGTYPE ietNewsDefault;
220             ENCODINGTYPE ietMailDefault;
221             DWORD dwReserved1;
222         } CODEPAGEINFO, *LPCODEPAGEINFO;
223
224         typedef struct tagRFC1522INFO
225         {
226             BOOL fRfc1522Allowed;
227             BOOL fRfc1522Used;
228             BOOL fAllow8bit;
229             HCHARSET hRfc1522Cset;
230         } RFC1522INFO, *LPRFC1522INFO;
231
232         typedef enum tagCHARSETTYPE
233         {
234             CHARSET_BODY,
235             CHARSET_HEADER,
236             CHARSET_WEB,
237         } CHARSETTYPE;
238
239
240         HRESULT SetDefaultCharset(
241             [in]        HCHARSET hCharset);
242         HRESULT GetDefaultCharset(
243             [out]       LPHCHARSET phCharset);
244         HRESULT GetCodePageCharset(
245             [in]        CODEPAGEID cpiCodePage,
246             [in]        CHARSETTYPE ctCsetType,
247             [out]       LPHCHARSET phCharset);
248         HRESULT FindCharset(
249             [in]        LPCSTR pszCharset,
250             [out]       LPHCHARSET phCharset);
251         HRESULT GetCharsetInfo(
252             [in]        HCHARSET hCharset,
253             [in, out]   LPINETCSETINFO pCsetInfo);
254         HRESULT GetCodePageInfo(
255             [in]        CODEPAGEID cpiCodePage,
256             [in, out]   LPCODEPAGEINFO pCodePageInfo);
257         HRESULT CanConvertCodePages(
258             [in]        CODEPAGEID cpiSource,
259             [in]        CODEPAGEID cpiDest);
260         HRESULT DecodeHeader(
261             [in]        HCHARSET hCharset,
262             [in]        LPCSTR pszData,
263             [in, out]   LPPROPVARIANT pDecoded,
264             [in, out]   LPRFC1522INFO pRfc1522Info);
265         HRESULT EncodeHeader(
266             [in]        HCHARSET hCharset,
267             [in]        LPPROPVARIANT pData,
268             [out]       LPSTR *ppszEncoded,
269             [in, out]   LPRFC1522INFO pRfc1522Info);
270         HRESULT ConvertBuffer(
271             [in]        CODEPAGEID cpiSource,
272             [in]        CODEPAGEID cpiDest,
273             [in]        LPBLOB pIn,
274             [in, out]   LPBLOB pOut,
275             [out]       ULONG *pcbRead);
276         HRESULT ConvertString(
277             [in]        CODEPAGEID cpiSource,
278             [in]        CODEPAGEID cpiDest,
279             [in]        LPPROPVARIANT pIn,
280             [in, out]   LPPROPVARIANT pOut);
281         HRESULT MLANG_ConvertInetReset(void);
282         HRESULT MLANG_ConvertInetString(
283             [in]        CODEPAGEID cpiSource,
284             [in]        CODEPAGEID cpiDest,
285             [in]        LPCSTR pSource,
286             [in]        int *pnSizeOfSource,
287             [in,out,unique]  LPSTR pDestination,
288             [in]        int *pnDstSize);
289         HRESULT Rfc1522Decode(
290             [in]        LPCSTR pszValue,
291             [in,ref]    LPSTR pszCharset,
292             [in]        ULONG cchmax,
293             [out]       LPSTR *ppszDecoded);
294         HRESULT Rfc1522Encode(
295             [in]        LPCSTR pszValue,
296             [in]        HCHARSET hCharset,
297             [out]       LPSTR *ppszEncoded);
298     }
299
300     [
301         uuid(c5588353-7f86-11d0-8252-00c04fd85ab4),
302         object
303     ]
304     interface IMimeSecurity : IUnknown
305     {
306         typedef [unique] IMimeSecurity *LPMIMESECURITY;
307
308         cpp_quote("#ifdef __WINE_WINCRYPT_H")
309         cpp_quote("typedef PCCERT_CONTEXT PCX509CERT;")
310         cpp_quote("#else")
311         typedef const void *PCX509CERT;
312         typedef void *HCERTSTORE;
313         cpp_quote("#endif")
314
315         typedef BLOB THUMBBLOB;
316         typedef void *HCAPICERTSTORE;
317
318         cpp_quote("#define MST_NONE             0x00000000")
319         cpp_quote("#define MST_THIS_SIGN        0x00000001")
320         cpp_quote("#define MST_THIS_ENCRYPT     0x00000002")
321         cpp_quote("#define MST_BLOB_FLAG        0x00000004")
322         cpp_quote("#define MST_THIS_BLOBSIGN    (MST_BLOB_FLAG | MST_THIS_SIGN)")
323         cpp_quote("#define MST_CHILD_SIGN       0x00000100")
324         cpp_quote("#define MST_CHILD_ENCRYPT    0x00000200")
325         cpp_quote("#define MST_SUBMSG_SIGN      0x00001000")
326         cpp_quote("#define MST_SUBMSG_ENCRYPT   0x00002000")
327         cpp_quote("#define MST_RECEIPT_REQUEST  0x00010000")
328         cpp_quote("#define MST_CLASS_SMIME_V1   0x00000000")
329         cpp_quote("#define MST_CLASS_PGP        0x01000000")
330
331         typedef enum tagCERTSTATE
332         {
333             CERTIFICATE_OK,
334             CERTIFICATE_NOT_PRESENT,
335             CERTIFICATE_EXPIRED,
336             CERTIFICATE_CHAIN_TOO_LONG,
337             CERTIFICATE_MISSING_ISSUER,
338             CERTIFICATE_CRL_LISTED,
339             CERTIFICATE_NOT_TRUSTED,
340             CERTIFICATE_INVALID,
341             CERTIFICATE_ERROR,
342             CERTIFICATE_NOPRINT,
343             CERTIFICATE_UNKNOWN
344         } CERTSTATE;
345
346         typedef enum tagCERTNAMETYPE
347         {
348             SIMPLE,
349             OID,
350             X500,
351         } CERTNAMETYPE;
352
353         typedef enum tagCERTDATAID
354         {
355             CDID_EMAIL,
356             CDID_MAX
357         } CERTDATAID;
358
359         typedef struct tagX509CERTRESULT
360         {
361             DWORD       cEntries;
362             CERTSTATE  *rgcs;
363             PCX509CERT *rgpCert;
364         } X509CERTRESULT, *PX509CERTRESULT;
365         typedef const X509CERTRESULT *PCX509CERTRESULT;
366
367         HRESULT InitNew(void);
368
369         HRESULT CheckInit(void);
370
371         HRESULT EncodeMessage(
372             [in]    IMimeMessageTree */*const*/ pTree,
373             [in]    DWORD dwFlags);
374
375         HRESULT EncodeBody(
376             [in]    IMimeMessageTree */*const*/ pTree,
377             [in]    HBODY hEncodeRoot,
378             [in]    DWORD dwFlags);
379
380         HRESULT DecodeMessage(
381             [in]    IMimeMessageTree */*const*/ pTree,
382             [in]    DWORD dwFlags);
383
384         HRESULT DecodeBody(
385             [in]    IMimeMessageTree */*const*/ pTree,
386             [in]    HBODY hDecodeRoot,
387             [in]    DWORD dwFlags);
388
389         HRESULT EnumCertificates(
390             [in]    HCAPICERTSTORE hc,
391             [in]    DWORD dwUsage,
392             [in]    PCX509CERT pPrev,
393             [out]   PCX509CERT *ppCert);
394
395         HRESULT GetCertificateName(
396             [in]    const PCX509CERT pX509Cert,
397             [in]    const CERTNAMETYPE cn,
398             [out]   LPSTR *ppszName);
399
400         HRESULT GetMessageType(
401             [in]    const HWND hwndParent,
402             [in]    IMimeBody */*const*/ pBody,
403             [out]   DWORD */*const*/ pdwSecType);
404
405         HRESULT GetCertData(
406             [in]        const PCX509CERT pX509Cert,
407             [in]        const CERTDATAID dataid,
408             [out, ref]  LPPROPVARIANT pValue);
409     }
410
411     [
412         uuid(fd853cd1-7f86-11d0-8252-00c04fd85ab4),
413         object
414     ]
415     interface IMimeHeaderTable : IPersistStream
416     {
417         /* FIXME: fill this in */
418     }
419
420     [
421         uuid(fd853cec-7f86-11d0-8252-00c04fd85ab4),
422         object
423     ]
424     interface IMimePropertySchema : IUnknown
425     {
426         typedef enum tagMIMEPROPFLAGS
427         {
428             MPF_INETCSET            = 0x01,
429             MPF_RFC1522             = 0x02,
430             MPF_ADDRESS             = 0x04,
431             MPF_HASPARAMS           = 0x08,
432             MPF_MIME                = 0x10,
433             MPF_READONLY            = 0x20
434         } MIMEPROPFLAGS;
435
436         /* FIXME: fill this in */
437     }
438
439     [
440         uuid(fd853cd3-7f86-11d0-8252-00c04fd85ab4),
441         object
442     ]
443     interface IMimePropertySet : IPersistStreamInit
444     {
445         typedef [unique] IMimePropertySet *LPMIMEPROPERTYSET;
446
447         cpp_quote("#define PDF_ENCODED              0x00000001")
448         cpp_quote("#define PDF_NAMEINDATA           0x00000002")
449         cpp_quote("#define PDF_HEADERFORMAT        (0x00000004 | PDF_ENCODED)")
450         cpp_quote("#define PDF_NOCOMMENTS           0x00000008")
451         cpp_quote("#define PDF_SAVENOENCODE         0x00000010")
452         cpp_quote("#define PDF_VECTOR               0x00000020")
453
454         typedef struct tagMIMEPARAMINFO
455         {
456             LPSTR           pszName;
457             LPSTR           pszData;
458         } MIMEPARAMINFO, *LPMIMEPARAMINFO;
459
460         typedef enum tagPROPINFOMASK
461         {
462             PIM_CHARSET           = 0x01,
463             PIM_ENCODINGTYPE      = 0x02,
464             PIM_ROWNUMBER         = 0x04,
465             PIM_FLAGS             = 0x08,
466             PIM_PROPID            = 0x10,
467             PIM_VALUES            = 0x20,
468             PIM_VTDEFAULT         = 0x40,
469             PIM_VTCURRENT         = 0x80
470         } PROPINFOMASK;
471
472         typedef struct tagMIMEPROPINFO
473         {
474             DWORD           dwMask;
475             HCHARSET        hCharset;
476             ENCODINGTYPE    ietEncoding;
477             DWORD           dwRowNumber;
478             DWORD           dwFlags;
479             DWORD           dwPropId;
480             DWORD           cValues;
481             VARTYPE         vtDefault;
482             VARTYPE         vtCurrent;
483         } MIMEPROPINFO, *LPMIMEPROPINFO;
484         typedef const MIMEPROPINFO *LPCMIMEPROPINFO;
485
486         HRESULT GetPropInfo(
487             [in]        LPCSTR               pszName,
488             [in,out]    LPMIMEPROPINFO       pInfo);
489
490         HRESULT SetPropInfo(
491             [in]        LPCSTR               pszName,
492             [in]        LPCMIMEPROPINFO      pInfo);
493
494 cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
495 cpp_quote("#undef GetProp")
496 cpp_quote("#undef SetProp")
497 cpp_quote("#undef EnumProps")
498 cpp_quote("#endif")
499         HRESULT GetProp(
500             [in]        LPCSTR               pszName,
501             [in]        DWORD                dwFlags,
502             [in,out]    LPPROPVARIANT        pValue);
503
504         HRESULT SetProp(
505             [in]        LPCSTR               pszName,
506             [in]        DWORD                dwFlags,
507             [in]        LPCPROPVARIANT       pValue);
508
509         HRESULT AppendProp(
510             [in]        LPCSTR               pszName,
511             [in]        DWORD                dwFlags,
512             [in]        LPPROPVARIANT        pValue);
513
514         HRESULT DeleteProp(
515             [in]        LPCSTR               pszName);
516
517         HRESULT CopyProps(
518             [in]        ULONG                cNames,
519             [in,unique] LPCSTR               *prgszName,
520             [in]        IMimePropertySet     *pPropertySet);
521
522         HRESULT MoveProps(
523             [in]        ULONG                cNames,
524             [in]        LPCSTR               *prgszName,
525             [in]        IMimePropertySet     *pPropertySet);
526
527         HRESULT DeleteExcept(
528             [in]        ULONG                cNames,
529             [in]        LPCSTR               *prgszName);
530
531         HRESULT QueryProp(
532             [in]        LPCSTR               pszName,
533             [in]        LPCSTR               pszCriteria,
534             [in]        boolean              fSubString,
535             [in]        boolean              fCaseSensitive);
536
537         HRESULT GetCharset(
538             [out]       LPHCHARSET           phCharset);
539
540         HRESULT SetCharset(
541             [in]        HCHARSET             hCharset,
542             [in]        CSETAPPLYTYPE        applytype);
543
544         HRESULT GetParameters(
545             [in]        LPCSTR               pszName,
546             [out]       ULONG                *pcParams,
547             [out]       LPMIMEPARAMINFO      *pprgParam);
548
549         HRESULT IsContentType(
550             [in]        LPCSTR               pszPriType,
551             [in,unique] LPCSTR               pszSubType);
552
553         HRESULT BindToObject(
554             [in]        REFIID               riid,
555             [out,iid_is(riid)] void          **ppvObject);
556
557         HRESULT Clone(
558             [out]       IMimePropertySet     **ppPropertySet);
559
560         HRESULT SetOption(
561             [in]        const TYPEDID        oid,
562             [in]        LPCPROPVARIANT       pValue);
563
564         HRESULT GetOption(
565             [in]        const TYPEDID        oid,
566             [in,out]    LPPROPVARIANT        pValue);
567
568         cpp_quote("#define EPF_NONAME 0x00000001")
569
570         HRESULT EnumProps(
571             [in]        DWORD                dwFlags,
572             [out]       IMimeEnumProperties  **ppEnum);
573
574     }
575
576     [
577         uuid(c558834a-7f86-11d0-8252-00c04fd85ab4),
578         object
579     ]
580     interface IMimeAddressTable : IUnknown
581     {
582         typedef [unique] IMimeAddressTable *LPMIMEADDRESSTABLE;
583
584         DECLARE_HANDLE(HADDRESS);
585         typedef HADDRESS *LPHADDRESS;
586         typedef DWORD IADDRESSTYPE;
587
588         typedef enum tagADDRESSFORMAT
589         {
590             AFT_DISPLAY_FRIENDLY,
591             AFT_DISPLAY_EMAIL,
592             AFT_DISPLAY_BOTH,
593             AFT_RFC822_DECODED,
594             AFT_RFC822_ENCODED,
595             AFT_RFC822_TRANSMIT,
596         } ADDRESSFORMAT;
597
598         typedef struct tagADDRESSPROPS
599         {
600             DWORD           dwProps;
601             HADDRESS        hAddress;
602             ENCODINGTYPE    ietFriendly;
603             HCHARSET        hCharset;
604             DWORD           dwAdrType;
605             LPSTR           pszFriendly;
606             LPWSTR          pwszReserved;
607             LPSTR           pszEmail;
608             CERTSTATE       certstate;
609             THUMBBLOB       tbSigning;
610             THUMBBLOB       tbEncryption;
611             DWORD           dwCookie;
612             DWORD           dwReserved1;
613             DWORD           dwReserved2;
614         } ADRESSPROPS, *LPADDRESSPROPS;
615
616         typedef struct tagADDRESSLIST
617         {
618             ULONG           cAdrs;
619             LPADDRESSPROPS  prgAdr;
620         } ADDRESSLIST, *LPADDRESSLIST;
621
622         /* FIXME: fill this in */
623     }
624
625     [
626         uuid(ee519f11-851a-11d0-8252-00c04fd85ab4),
627         object
628     ]
629     interface IMimeWebDocument : IUnknown
630     {
631         /* FIXME: fill this in */
632     }
633
634     [
635         uuid(c558834c-7f86-11d0-8252-00c04fd85ab4),
636         object
637     ]
638     interface IMimeBody : IMimePropertySet
639     {
640         typedef [unique] IMimeBody *LPMIMEBODY;
641
642         typedef enum tagIMSGBODYTYPE
643         {
644             IBT_SECURE,
645             IBT_ATTACHMENT,
646             IBT_EMPTY,
647             IBT_CSETTAGGED,
648             IBT_AUTOATTACH,
649         } IMSGBODYTYPE;
650
651         typedef struct tagBODYOFFSETS
652         {
653             DWORD cbBoundaryStart;
654             DWORD cbHeaderStart;
655             DWORD cbBodyStart;
656             DWORD cbBodyEnd;
657         } BODYOFFSETS, *LPBODYOFFSETS;
658
659         typedef struct tagTRANSMITINFO
660         {
661             ENCODINGTYPE ietCurrent;
662             ENCODINGTYPE ietXmitMime;
663             ENCODINGTYPE ietXmit822;
664             ULONG cbLongestLine;
665             ULONG cExtended;
666             ULONG ulPercentExt;
667             ULONG cbSize;
668             ULONG cLines;
669         } TRANSMITINFO, *LPTRANSMITINFO;
670
671         HRESULT IsType(
672             [in]        IMSGBODYTYPE     bodytype);
673
674         HRESULT SetDisplayName(
675             [in]        LPCSTR           pszDisplay);
676
677         HRESULT GetDisplayName(
678             [out]       LPSTR            *ppszDisplay);
679
680         HRESULT GetOffsets(
681             [out]       LPBODYOFFSETS     pOffsets);
682
683         HRESULT GetCurrentEncoding(
684             [out]       ENCODINGTYPE     *pietEncoding);
685
686         HRESULT SetCurrentEncoding(
687             [in]        ENCODINGTYPE     ietEncoding);
688
689         HRESULT GetEstimatedSize(
690             [in]        ENCODINGTYPE     ietEncoding,
691             [out]       ULONG            *pcbSize);
692
693         HRESULT GetDataHere(
694             [in]        ENCODINGTYPE     ietEncoding,
695             [in]        IStream          *pStream);
696
697         HRESULT GetData(
698             [in]        ENCODINGTYPE     ietEncoding,
699             [out]       IStream          **ppStream);
700
701         HRESULT SetData(
702             [in]        ENCODINGTYPE     ietEncoding,
703             [in,unique] LPCSTR           pszPriType,
704             [in,unique] LPCSTR           pszSubType,
705             [in]        REFIID           riid,
706             [in,iid_is(riid)]  LPVOID    pvObject);
707
708         HRESULT EmptyData(void);
709
710         HRESULT CopyTo(
711             [in]        IMimeBody        *pBody);
712
713         HRESULT GetTransmitInfo(
714             [in,out]    LPTRANSMITINFO   pTransmitInfo);
715
716         HRESULT SaveToFile(
717             [in]        ENCODINGTYPE     ietEncoding,
718             [in]        LPCSTR           pszFilePath);
719
720         HRESULT GetHandle(
721            [out]        LPHBODY          phBody);
722
723     }
724
725     [
726         uuid(fd853cd4-7f86-11d0-8252-00c04fd85ab4),
727         object
728     ]
729     interface IMimeMessageTree : IPersistStreamInit
730     {
731         typedef [unique] IMimeMessageTree *LPMIMEMESSAGETREE;
732
733         const HBODY HBODY_ROOT = (HBODY)-1;
734
735         typedef enum tagBODYLOCATION
736         {
737             IBL_ROOT,
738             IBL_PARENT,
739             IBL_FIRST,
740             IBL_LAST,
741             IBL_NEXT,
742             IBL_PREVIOUS,
743         } BODYLOCATION;
744
745         typedef struct tagFINDBODY
746         {
747             LPSTR pszPriType;
748             LPSTR pszSubType;
749             DWORD dwReserved;
750         } FINDBODY, *LPFINDBODY;
751
752         HRESULT GetMessageSource(
753             [out]       IStream **ppStream,
754             [in]        DWORD dwFlags);
755
756         HRESULT GetMessageSize(
757             [out]       ULONG *pcbSize,
758             [in]        DWORD dwFlags);
759
760         HRESULT LoadOffsetTable(
761             [in]        IStream *pStream);
762
763         HRESULT SaveOffsetTable(
764             [in]        IStream *pStream,
765             [in]        DWORD dwFlags);
766
767         HRESULT GetFlags(
768             [out]       DWORD *pdwFlags);
769
770         HRESULT Commit(
771             [in]        DWORD dwFlags);
772
773         HRESULT HandsOffStorage();
774
775         HRESULT BindToObject(
776             [in]        const HBODY hBody,
777             [in]        REFIID riid,
778             [out, iid_is(riid)] void **ppvObject);
779
780         HRESULT SaveBody(
781             [in]        HBODY hBody,
782             [in]        DWORD dwFlags,
783             [in]        IStream *pStream);
784
785         HRESULT InsertBody(
786             [in]        BODYLOCATION location,
787             [in]        HBODY hPivot,
788             [out]       LPHBODY phBody);
789
790         HRESULT GetBody(
791             [in]        BODYLOCATION location,
792             [in]        HBODY hPivot,
793             [out]       LPHBODY phBody);
794
795         HRESULT DeleteBody(
796             [in]        HBODY hBody,
797             [in]        DWORD dwFlags);
798
799         HRESULT MoveBody(
800             [in]        HBODY hBody,
801             [in]        BODYLOCATION location);
802
803         HRESULT CountBodies(
804             [in]        HBODY hParent,
805             [in]        boolean fRecurse,
806             [out]       ULONG *pcBodies);
807
808         HRESULT FindFirst(
809             [in, out]   LPFINDBODY pFindBody,
810             [out]       LPHBODY phBody);
811
812         HRESULT FindNext(
813             [in, out]   LPFINDBODY pFindBody,
814             [out]       LPHBODY phBody);
815
816         HRESULT ResolveURL(
817             [in]        HBODY hRelated,
818             [in]        LPCSTR pszBase,
819             [in]        LPCSTR pszURL,
820             [in]        DWORD dwFlags,
821             [out]       LPHBODY phBody);
822
823         HRESULT ToMultipart(
824             [in]        HBODY hBody,
825             [in]        LPCSTR pszSubType,
826             [out]       LPHBODY phMultipart);
827
828         HRESULT GetBodyOffsets(
829             [in]        HBODY hBody,
830             [in, out]   LPBODYOFFSETS pOffsets);
831
832         HRESULT GetCharset(
833             [out]       LPHCHARSET phCharset);
834
835         HRESULT SetCharset(
836             [in]        HCHARSET hCharset,
837             [in]        CSETAPPLYTYPE applytype);
838
839         HRESULT IsBodyType(
840             [in]        HBODY hBody,
841             [in]        IMSGBODYTYPE bodytype);
842
843         HRESULT IsContentType(
844             [in]        HBODY hBody,
845             [in]        LPCSTR pszPriType,
846             [in]        LPCSTR pszSubType);
847
848         HRESULT QueryBodyProp(
849             [in]        HBODY hBody,
850             [in]        LPCSTR pszName,
851             [in]        LPCSTR pszCriteria,
852             [in]        boolean fSubString,
853             [in]        boolean fCaseSensitive);
854
855         HRESULT GetBodyProp(
856             [in]        HBODY hBody,
857             [in]        LPCSTR pszName,
858             [in]        DWORD dwFlags,
859             [in, out]   LPPROPVARIANT pValue);
860
861         HRESULT SetBodyProp(
862             [in]        HBODY hBody,
863             [in]        LPCSTR pszName,
864             [in]        DWORD dwFlags,
865             [in]        LPCPROPVARIANT pValue);
866
867         HRESULT DeleteBodyProp(
868             [in]        HBODY hBody,
869             [in]        LPCSTR pszName);
870
871         HRESULT SetOption(
872             [in]        const TYPEDID oid,
873             [in]        LPCPROPVARIANT pValue);
874
875         HRESULT GetOption(
876             [in]        const TYPEDID oid,
877             [in, out]   LPPROPVARIANT pValue);
878     }
879
880     [
881         uuid(fd853cd5-7f86-11d0-8252-00c04fd85ab4),
882         object
883     ]
884     interface IMimeMessage : IMimeMessageTree
885     {
886         typedef [unique] IMimeMessage *LPMIMEMESSAGE;
887
888         typedef DWORD TEXTTYPE;
889
890         typedef enum tagIMSGFLAGS
891         {
892             IMF_ATTACHMENTS     = 0x00000001,
893             IMF_MULTIPART       = 0x00000002,
894             IMF_SUBMULTIPART    = 0x00000004,
895             IMF_MIME            = 0x00000008,
896             IMF_HTML            = 0x00000010,
897             IMF_PLAIN           = 0x00000020,
898             IMF_PARTIAL         = 0x00000040,
899             IMF_SIGNED          = 0x00000080,
900             IMF_ENCRYPTED       = 0x00000100,
901             IMF_TNEF            = 0x00000200,
902             IMF_MHTML           = 0x00000400,
903             IMF_SECURE          = 0x00000800,
904             IMF_TEXT            = 0x00001000,
905             IMF_CSETTAGGED      = 0x00002000,
906             IMF_NEWS            = 0x00004000,
907             IMF_VOICEMAIL       = 0x00008000,
908             IMF_HASVCARD        = 0x00010000,
909             IMF_RFC1154         = 0x00020000,
910         } IMSGFLAGS;
911
912         typedef enum tagIMSGPRIORITY
913         {
914             IMSG_PRI_LOW    = 5,
915             IMSG_PRI_NORMAL = 3,
916             IMSG_PRI_HIGH   = 1,
917         } IMSGPRIORITY;
918
919         cpp_quote("#define WPF_HTML             0x00000001")
920         cpp_quote("#define WPF_AUTOINLINE       0x00000002")
921         cpp_quote("#define WPF_SLIDESHOW        0x00000004")
922         cpp_quote("#define WPF_ATTACHLINKS      0x00000008")
923         cpp_quote("#define WPF_IMAGESONLY       0x00000010")
924         cpp_quote("#define WPF_NOMETACHARSET    0x00000020")
925
926         typedef struct tagWEPAGEOPTIONS
927         {
928             DWORD cbSize;
929             DWORD dwFlags;
930             DWORD dwDelay;
931             WCHAR wchQuote;
932         } WEBPAGEOPTIONS, *LPWEBPAGEOPTIONS;
933
934         cpp_quote("#define TXT_PLAIN       1")
935         cpp_quote("#define TXT_HTML        2")
936
937         HRESULT CreateWebPage(
938             [in]        IStream *pRootStm,
939             [in]        LPWEBPAGEOPTIONS pOptions,
940             [in]        IMimeMessageCallback *pCallback,
941             [out]       IMoniker **ppMoniker);
942
943         HRESULT GetProp(
944             [in]        LPCSTR pszName,
945             [in]        DWORD dwFlags,
946             [in,out]    LPPROPVARIANT pValue);
947
948         HRESULT SetProp(
949             [in]        LPCSTR pszName,
950             [in]        DWORD dwFlags,
951             [in]        LPCPROPVARIANT pValue);
952
953         HRESULT DeleteProp(
954             [in]        LPCSTR pszName);
955
956         HRESULT QueryProp(
957             [in]        LPCSTR pszName,
958             [in]        LPCSTR pszCriteria,
959             [in]        boolean fSubString,
960             [in]        boolean fCaseSensitive);
961
962         HRESULT GetTextBody(
963             [in]        DWORD dwTxtType,
964             [in]        ENCODINGTYPE ietEncoding,
965             [out]       IStream **pStream,
966             [out]       LPHBODY phBody);
967
968         HRESULT SetTextBody(
969             [in]        DWORD dwTxtType,
970             [in]        ENCODINGTYPE ietEncoding,
971             [in]        HBODY hAlternative,
972             [in]        IStream *pStream,
973             [out]       LPHBODY phBody);
974
975         HRESULT AttachObject(
976             [in]        REFIID riid,
977             [in, iid_is(riid)] void *pvObject,
978             [out]       LPHBODY phBody);
979
980         HRESULT AttachFile(
981             [in]        LPCSTR pszFilePath,
982             [in]        IStream *pstmFile,
983             [out]       LPHBODY phBody);
984
985         HRESULT AttachURL(
986             [in]        LPCSTR pszBase,
987             [in]        LPCSTR pszURL,
988             [in]        DWORD dwFlags,
989             [in]        IStream *pstmURL,
990             [out]       LPSTR *ppszCIDURL,
991             [out]       LPHBODY phBody);
992
993         HRESULT GetAttachments(
994             [out]       ULONG *pcAttach,
995             [out]       LPHBODY *pprghAttach);
996
997         HRESULT GetAddressTable(
998             [out]       IMimeAddressTable **ppTable);
999
1000         HRESULT GetSender(
1001             [in, out]   LPADDRESSPROPS pAddress);
1002
1003         HRESULT GetAddressTypes(
1004             [in]        DWORD dwAdrTypes,
1005             [in]        DWORD dwProps,
1006             [in, out]   LPADDRESSLIST pList);
1007
1008         HRESULT GetAddressFormat(
1009             [in]        DWORD dwAdrTypes,
1010             [in]        ADDRESSFORMAT format,
1011             [out]       LPSTR *ppszFormat);
1012
1013         HRESULT EnumAddressTypes(
1014             [in]        DWORD dwAdrTypes,
1015             [in]        DWORD dwProps,
1016             [out]       IMimeEnumAddressTypes **ppEnum);
1017
1018         HRESULT SplitMessage(
1019             [in]        ULONG cbMaxPart,
1020             [out]       IMimeMessageParts **ppParts);
1021
1022         HRESULT GetRootMoniker(
1023             [out]       IMoniker **ppMoniker);
1024     }
1025
1026     [
1027         uuid(761aa741-7bda-11d1-8aa9-00c04fb951f3),
1028         object
1029     ]
1030     interface IMimeMessageCallback : IUnknown
1031     {
1032         HRESULT OnWebPageSplitter(
1033             [in]       DWORD cInlined,
1034             [in]       IStream *ppStream);
1035     }
1036
1037     [
1038         uuid(de4ad8da-555f-11d1-8dd0-00c04fb951f9),
1039         object
1040     ]
1041     interface IPersistMime : IPersist
1042     {
1043         /* FIXME: fill this in */
1044     }
1045
1046     [
1047         uuid(c558834f-7f86-11d0-8252-00c04fd85ab4),
1048         object
1049     ]
1050     interface IMimeMessageParts : IUnknown
1051     {
1052         /* FIXME: fill this in */
1053     }
1054
1055     [
1056         uuid(c558834d-7f86-11d0-8252-00c04fd85ab4),
1057         object
1058     ]
1059     interface IMimeEnumHeaderRows : IUnknown
1060     {
1061         typedef struct tagENUMHEADERROW
1062         {
1063             HHEADERROW   hRow;
1064             LPSTR        pszHeader;
1065             LPSTR        pszData;
1066             ULONG        cchData;
1067             DWORD_PTR    dwReserved;
1068         } ENUMHEADERROW, *LPENUMHEADERROW;
1069
1070         /* FIXME: fill this in */
1071     }
1072
1073     [
1074         uuid(fd853cee-7f86-11d0-8252-00c04fd85ab4),
1075         object
1076     ]
1077     interface IMimeEnumProperties : IUnknown
1078     {
1079         typedef [unique] IMimeEnumProperties *LPMIMEENUMPROPERTIES;
1080
1081         typedef struct tagENUMPROPERTY
1082         {
1083             LPSTR       pszName;
1084             HHEADERROW  hRow;
1085             DWORD       dwPropId;
1086         } ENUMPROPERTY, *LPENUMPROPERTY;
1087
1088         HRESULT Next(
1089             [in]      ULONG cFetch,
1090             [in, out] LPENUMPROPERTY prgProp,
1091             [out]     ULONG *pcFetched);
1092
1093         HRESULT Skip(
1094             [in]      ULONG cItems);
1095
1096         HRESULT Reset(void);
1097
1098         HRESULT Clone(
1099             [out]      IMimeEnumProperties **ppEnum);
1100
1101         HRESULT Count(
1102             [out]      ULONG *pcItems);
1103
1104     }
1105
1106     [
1107         uuid(c5588354-7f86-11d0-8252-00c04fd85ab4),
1108         object
1109     ]
1110     interface IMimeEnumAddressTypes : IUnknown
1111     {
1112         /* FIXME: fill this in */
1113     }
1114
1115     [
1116         uuid(c5588350-7f86-11d0-8252-00c04fd85ab4),
1117         object
1118     ]
1119     interface IMimeEnumMessageParts : IUnknown
1120     {
1121         /* FIXME: fill this in */
1122     }
1123
1124     [
1125         uuid(64577981-86d7-11d1-bdfc-00c04fa31009),
1126         object
1127     ]
1128     interface IHashTable : IUnknown
1129     {
1130         /* FIXME: fill this in */
1131     }
1132
1133     [
1134         uuid(c5588351-7f86-11d0-8252-00c04fd85ab4),
1135         object
1136     ]
1137     interface IMimeAllocator : IMalloc
1138     {
1139         typedef [unique] IMimeAllocator *LPMIMEALLOCATOR;
1140
1141         HRESULT FreeParamInfoArray(
1142             [in] ULONG            cParams,
1143             [in] LPMIMEPARAMINFO  prgParam,
1144             [in] boolean          fFreeArray);
1145
1146         HRESULT FreeAddressList(
1147             [in,out] LPADDRESSLIST pList);
1148
1149         HRESULT FreeAddressProps(
1150             [in,out] LPADDRESSPROPS pAddress);
1151
1152         HRESULT ReleaseObjects(
1153             [in] ULONG            cObjects,
1154             [in] IUnknown         **prgpUnknown,
1155             [in] boolean          fFreeArray);
1156
1157         HRESULT FreeEnumHeaderRowArray(
1158             [in] ULONG            cRows,
1159             [in] LPENUMHEADERROW  prgRow,
1160             [in] boolean          fFreeArray);
1161
1162         HRESULT FreeEnumPropertyArray(
1163             [in] ULONG            cProps,
1164             [in] LPENUMPROPERTY   prgProp,
1165             [in] boolean          fFreeArray);
1166
1167         HRESULT FreeThumbprint(
1168             [in] THUMBBLOB         *pthumbprint);
1169
1170         HRESULT PropVariantClear(
1171             [in] LPPROPVARIANT     pProp);
1172
1173     }
1174
1175     [
1176         uuid(feceaffd-c441-11d1-960e-00c04fbd7c09),
1177         object
1178     ]
1179     interface IMimeObjResolver : IUnknown
1180     {
1181         /* FIXME: fill this in */
1182     }
1183
1184     [
1185         uuid(b0d17fc2-7bc4-11d1-bdfa-00c04fa31009),
1186         object
1187     ]
1188     interface IFontCache : IUnknown
1189     {
1190         /* FIXME: fill this in */
1191     }
1192
1193     [
1194         uuid(b0d17fc5-7bc4-11d1-bdfa-00c04fa31009),
1195         object
1196     ]
1197     interface IFontCacheNotify : IUnknown
1198     {
1199         /* FIXME: fill this in */
1200     }
1201
1202     [
1203         uuid(70183210-7b36-11d2-8c12-00c04fa31009),
1204         object
1205     ]
1206     interface IMimeEditTag : IUnknown
1207     {
1208         /* FIXME: fill this in */
1209     }
1210
1211     [
1212         uuid(d09ee528-7b38-11d2-8c12-00c04fa31009),
1213         object
1214     ]
1215     interface IMimeEditTagCollection : IUnknown
1216     {
1217         /* FIXME: fill this in */
1218     }
1219
1220     [
1221          uuid(ba715ae0-a740-11d2-8b22-0080c76b34c6),
1222          local
1223     ]
1224     interface IMimeSecurityCallback : IUnknown
1225     {
1226         /* FIXME: fill this in */
1227
1228         cpp_quote("#define CMS_RECIPIENT_INFO_TYPE_UNKNOWN                0")
1229         cpp_quote("#define CMS_RECIPIENT_INFO_TYPE_KEYTRANS               1")
1230         cpp_quote("#define CMS_RECIPIENT_INFO_TYPE_KEYAGREE               2")
1231         cpp_quote("#define CMS_RECIPIENT_INFO_TYPE_MAIL_LIST              3")
1232
1233         cpp_quote("#define CMS_RECIPIENT_INFO_PUBKEY_CERTIFICATE          0")
1234         cpp_quote("#define CMS_RECIPIENT_INFO_PUBKEY_KEYTRANS             1")
1235         cpp_quote("#define CMS_RECIPIENT_INFO_PUBKEY_PROVIDER             2")
1236         cpp_quote("#define CMS_RECIPIENT_INFO_PUBKEY_EPHEMERAL_KEYAGREE   3")
1237         cpp_quote("#define CMS_RECIPIENT_INFO_PUBKEY_STATIC_KEYAGREE      4")
1238
1239         cpp_quote("#define CMS_RECIPIENT_INFO_KEYID_CERTIFICATE           0")
1240         cpp_quote("#define CMS_RECIPIENT_INFO_KEYID_ISSUERSERIAL          1")
1241         cpp_quote("#define CMS_RECIPIENT_INFO_KEYID_KEY_ID                2")
1242
1243     }
1244 }
1245
1246 cpp_quote("#ifdef __cplusplus")
1247 cpp_quote(" extern \"C\" {")
1248 cpp_quote("#endif")
1249
1250 cpp_quote("")
1251 cpp_quote("HRESULT WINAPI MimeOleSetCompatMode(DWORD);")
1252 cpp_quote("HRESULT WINAPI MimeOleContentTypeFromUrl(LPCSTR,LPCSTR,LPSTR*);")
1253 cpp_quote("HRESULT WINAPI MimeOleParseMhtmlUrl(LPSTR,LPSTR*,LPSTR*);")
1254 cpp_quote("HRESULT WINAPI MimeOleObjectFromUrl(LPCSTR,BOOL,REFIID,LPVOID*,IUnknown**);")
1255 cpp_quote("HRESULT WINAPI MimeOleObjectFromMoniker(BINDF,IMoniker*,IBindCtx*,REFIID,LPVOID*,IMoniker**);")
1256 cpp_quote("HRESULT WINAPI MimeOleCombineURL(LPCSTR,ULONG,LPCSTR,ULONG,BOOL,LPSTR*);")
1257 cpp_quote("HRESULT WINAPI MimeOleGetSubjectFileName(IMimePropertySet*,ULONG*,ULONG*,LPSTR,ULONG);")
1258 cpp_quote("HRESULT WINAPI MimeOleCreateWebDocument(LPCSTR,LPCSTR,IMimeWebDocument**);")
1259 cpp_quote("HRESULT WINAPI MimeOleGetRelatedSection(IMimeMessageTree*,boolean,LPHBODY,boolean*);")
1260 cpp_quote("HRESULT WINAPI MimeOleGetMixedSection(IMimeMessageTree*,boolean,LPHBODY,boolean*);")
1261 cpp_quote("HRESULT WINAPI MimeOleGetAlternativeSection(IMimeMessageTree*,LPHBODY,boolean*);")
1262 cpp_quote("HRESULT WINAPI MimeOleGenerateCID(LPSTR,ULONG,boolean);")
1263 cpp_quote("HRESULT WINAPI MimeOleGenerateMID(LPSTR,ULONG,boolean);")
1264 cpp_quote("HRESULT WINAPI MimeOleCreateByteStream(IStream**);")
1265 cpp_quote("HRESULT WINAPI MimeOlGetPropertySchema(IMimePropertySchema**);")
1266 cpp_quote("HRESULT WINAPI MimeOleQueryString(LPCSTR,LPCSTR,boolean,boolean);")
1267 cpp_quote("HRESULT WINAPI MimeOleGetPropA(IMimePropertySet*,LPCSTR,DWORD,LPSTR*);")
1268 cpp_quote("HRESULT WINAPI MimeOleSetPropA(IMimePropertySet*,LPCSTR,DWORD,LPCSTR);")
1269 cpp_quote("HRESULT WINAPI MimeOleGetPropW(IMimePropertySet*,LPCSTR,DWORD,LPWSTR*);")
1270 cpp_quote("HRESULT WINAPI MimeOleSetPropW(IMimePropertySet*,LPCSTR,DWORD,LPCWSTR);")
1271 cpp_quote("HRESULT WINAPI MimeOleGetBodyPropA(IMimeMessageTree*,HBODY,LPCSTR,DWORD,LPSTR*);")
1272 cpp_quote("HRESULT WINAPI MimeOleSetBodyPropA(IMimeMessageTree*,HBODY,LPCSTR,DWORD,LPCSTR);")
1273 cpp_quote("HRESULT WINAPI MimeOleGetBodyPropW(IMimeMessageTree*,HBODY,LPCSTR,DWORD,LPWSTR*);")
1274 cpp_quote("HRESULT WINAPI MimeOleSetBodyPropW(IMimeMessageTree*,HBODY,LPCSTR,DWORD,LPCWSTR);")
1275 cpp_quote("HRESULT WINAPI MimeOleCreateHeaderTable(IMimeHeaderTable**);")
1276 cpp_quote("HRESULT WINAPI MimeOleVariantFree(LPPROPVARIANT);")
1277 cpp_quote("HRESULT WINAPI MimeOleVariantCopy(LPPROPVARIANT,LPPROPVARIANT);")
1278 cpp_quote("HRESULT WINAPI MimeOleGetExtClassId(LPCSTR,LPCLSID);")
1279 cpp_quote("HRESULT WINAPI MimeOleEncodeHeader(HCHARSET,LPPROPVARIANT,LPSTR*,LPRFC1522INFO);")
1280 cpp_quote("HRESULT WINAPI MimeOleDecodeHeader(HCHARSET,LPCSTR,LPPROPVARIANT,LPRFC1522INFO);")
1281 cpp_quote("HRESULT WINAPI MimeOleRfc1522Decode(LPCSTR,LPSTR,ULONG,LPSTR*);")
1282 cpp_quote("HRESULT WINAPI MimeOleRfc1522Encode(LPCSTR,HCHARSET,LPSTR*);")
1283 cpp_quote("HRESULT WINAPI MimeOleGetInternat(IMimeInternational**);")
1284 cpp_quote("HRESULT WINAPI MimeOleFindCharset(LPCSTR,LPHCHARSET);")
1285 cpp_quote("HRESULT WINAPI MimeOleGetCharsetInfo(HCHARSET,LPINETCSETINFO);")
1286 cpp_quote("HRESULT WINAPI MimeOleGetCodePageInfo(HCHARSET,LPCODEPAGEINFO);")
1287 cpp_quote("HRESULT WINAPI MimeOleGetDefaultCharset(LPHCHARSET);")
1288 cpp_quote("HRESULT WINAPI MimeOleSetDefaultCharset(HCHARSET);")
1289 cpp_quote("HRESULT WINAPI MimeOleGetCodePageCharset(CODEPAGEID,CHARSETTYPE,LPHCHARSET);")
1290 cpp_quote("HRESULT WINAPI MimeOleCreateVirtualStream(IStream**);")
1291 cpp_quote("HRESULT WINAPI MimeOleOpenFileStream(LPCSTR,DWORD,DWORD,IStream**);")
1292 cpp_quote("HRESULT WINAPI MimeOleIsTnefStream(IStream*);")
1293 cpp_quote("HRESULT WINAPI MimeOleGenerateFileName(LPCSTR,LPCSTR,LPCSTR,LPSTR*);")
1294 cpp_quote("HRESULT WINAPI MimeOleGetFileExtension(LPCSTR,LPSTR,ULONG);")
1295 cpp_quote("HRESULT WINAPI MimeOleCreateSecurity(IMimeSecurity**);")
1296 cpp_quote("HRESULT WINAPI MimeOleInetDateToFileTime(LPCSTR,LPFILETIME);")
1297 cpp_quote("HRESULT WINAPI MimeOleFileTimeToInetDate(LPFILETIME,LPSTR,ULONG);")
1298 cpp_quote("HRESULT WINAPI MimeOleCreateMessageParts(IMimeMessageParts**);")
1299 cpp_quote("HRESULT WINAPI MimeOleGetAllocator(IMimeAllocator**);")
1300 cpp_quote("HRESULT WINAPI MimeOleParseRfc822Address(DWORD,ENCODINGTYPE,LPCSTR,LPADDRESSLIST);")
1301 cpp_quote("HRESULT WINAPI MimeOleCreateMessage(IUnknown*,IMimeMessage**);")
1302 cpp_quote("HRESULT WINAPI MimeOleMergePartialHeaders(IStream*,IStream*);")
1303 cpp_quote("HRESULT WINAPI MimeOleEscapeString(CODEPAGEID,LPCSTR,LPSTR*);")
1304 cpp_quote("HRESULT WINAPI MimeOleGetExtContentType(LPCSTR,LPSTR*);")
1305 cpp_quote("HRESULT WINAPI MimeOleGetContentTypeExt(LPCSTR,LPSTR*);")
1306 cpp_quote("HRESULT WINAPI MimeOleGetFileInfo(LPSTR,LPSTR*,LPSTR*,LPSTR*,LPSTR*,LPSTR*);")
1307 cpp_quote("HRESULT WINAPI MimeOleCreateBody(IMimeBody**);")
1308 cpp_quote("HRESULT WINAPI MimeOleCreatePropertySet(IUnknown*,IMimePropertySet**);")
1309 cpp_quote("HRESULT WINAPI MimeOleCreateMessageTree(IUnknown*,IMimeMessageTree**);")
1310 cpp_quote("HRESULT WINAPI MimeOleGetCertsFromThumbprints(THUMBBLOB*,X509CERTRESULT*,const HCERTSTORE*,DWORD);")
1311 cpp_quote("HRESULT WINAPI MimeOleSplitMessage(IMimeMessage*,ULONG,IMimeMessageParts**);")
1312 cpp_quote("HRESULT WINAPI MimeOleClearDirtyTree(IMimeMessageTree*);")
1313 cpp_quote("HRESULT WINAPI MimeOleConvertEnrichedToHTML(CODEPAGEID,IStream*,IStream*);")
1314 cpp_quote("HRESULT WINAPI MimeOleSMimeCapsToDlg(LPBYTE,DWORD,DWORD,PCX509CERT*,HWND,DWORD,DWORD,DWORD);")
1315 cpp_quote("HRESULT WINAPI MimeOleSMimeCapsFromDlg(HWND,DWORD,DWORD,DWORD,LPBYTE,DWORD*);")
1316 cpp_quote("HRESULT WINAPI MimeOleSMimeCapInit(LPBYTE,DWORD,LPVOID*);")
1317 cpp_quote("HRESULT WINAPI MimeOleSMimeCapAddSMimeCap(LPBYTE,DWORD,LPVOID);")
1318 cpp_quote("HRESULT WINAPI MimeOleSMimeCapAddCert(LPBYTE,DWORD,BOOL,LPVOID);")
1319 cpp_quote("HRESULT WINAPI MimeOleSMimeCapGetEncAlg(LPVOID,LPBYTE,DWORD*,DWORD*);")
1320 cpp_quote("HRESULT WINAPI MimeOleSMimeCapGetHashAlg(LPVOID,LPBYTE,DWORD*,DWORD*);")
1321 cpp_quote("HRESULT WINAPI MimeOleSMimeCapRelease(LPVOID);")
1322 cpp_quote("HRESULT WINAPI MimeOleAlgNameFromSMimeap(LPBYTE,DWORD,LPCSTR*);")
1323 cpp_quote("HRESULT WINAPI MimeOleAlgStrengthFromSMimeCap(LPBYTE,DWORD,BOOL,DWORD*);")
1324 cpp_quote("HRESULT WINAPI MimeOleSMimeCapsFull(LPVOID,BOOL,BOOL,LPBYTE,DWORD*);")
1325 cpp_quote("HRESULT WINAPI MimeOleCreateHashTable(DWORD,BOOL,IHashTable**);")
1326 cpp_quote("HRESULT WINAPI MimeOleStripHeaders(IMimeMessage*,HBODY,LPCSTR,LPCSTR,IStream**);")
1327
1328 cpp_quote("HRESULT WINAPI MimeEditViewSource(HWND,IMimeMessage*);")
1329 cpp_quote("HRESULT WINAPI MimeEditIsSafeToRun(HWND,LPCSTR);")
1330 cpp_quote("HRESULT WINAPI MimeEditVerifyTrust(HWND,LPCSTR,LPCSTR);")
1331 cpp_quote("HRESULT WINAPI MimeEditCreateMimeDocument(IUnknown*,IMimeMessage*,DWORD,IMimeMessage**);")
1332 cpp_quote("HRESULT WINAPI MimeEditGetBackgroundImageUrl(IUnknown*,BSTR*);")
1333 cpp_quote("HRESULT WINAPI MimeEditDocumentFromStream(IStream*,REFIID,void**);")
1334
1335 cpp_quote("#ifdef __cplusplus")
1336 cpp_quote("}")
1337 cpp_quote("#endif")