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