[1/2] include: Define IRangeList, IIMAPCallback and IIMAPTransport.

Hans Leidekker hans at codeweavers.com
Thu Sep 25 06:55:37 CDT 2008


diff --git a/include/imnxport.idl b/include/imnxport.idl
index baf29d3..3b0e1c8 100644
--- a/include/imnxport.idl
+++ b/include/imnxport.idl
@@ -21,6 +21,7 @@ import "imnact.idl";
 interface IInternetTransport;
 interface ISMTPTransport;
 interface IPOP3Transport;
+interface IIMAPTransport;
 
 /* CLSIDs */
 
@@ -684,16 +685,429 @@ interface IPOP3Transport : IInternetTransport
 
 /* FIXME: INNTPCallback, INNTPTransport */
 
-/* FIXME: IRangeList */
+[
+    object,
+    uuid(8C438160-4EF6-11d0-874F-00AA00530EE9),
+    local,
+]
+interface IRangeList : IUnknown
+{
+    const ULONG RL_RANGE_ERROR = ((ULONG)-1);
+    const ULONG RL_LAST_MESSAGE = ((ULONG)-1);
+
+    HRESULT Clear();
+
+    HRESULT IsInRange(
+        [in]    const ULONG value);
+
+    HRESULT Min(
+        [out]   ULONG *pulMin);
+
+    HRESULT Max(
+        [out]   ULONG *pulMax);
+
+    HRESULT Save(
+        [out]   byte **ppbDestination,
+        [out]   ULONG *pulSizeOfDestination);
+
+    HRESULT Load(
+        [in, size_is(ulSizeOfSource)]   byte *pbSource,
+        [in]    const ULONG ulSizeOfSource);
+
+    HRESULT AddRange(
+        [in]    const ULONG low,
+        [in]    const ULONG high);
+
+    HRESULT AddSingleValue(
+        [in]    const ULONG value);
+
+    HRESULT AddRangeList(
+        [in]    const IRangeList *prl);
+
+    HRESULT DeleteRange(
+        [in]    const ULONG low,
+        [in]    const ULONG high);
+
+    HRESULT DeleteSingleValue(
+        [in]    const ULONG value);
+
+    HRESULT DeleteRangeList(
+        [in]    const IRangeList *prl);
 
-/* FIXME: IIMAPCallback, IIMAPTransport */
+    HRESULT MinOfRange(
+        [in]    const ULONG value,
+        [out]   ULONG *pulMinOfRange);
+
+    HRESULT MaxOfRange(
+        [in]    const ULONG value,
+        [out]   ULONG *pulMaxOfRange);
+
+    HRESULT RangeToIMAPString(
+        [out]   LPSTR *ppszDestination,
+        [out]   LPDWORD pdwLengthOfDestination);
+
+    HRESULT Next(
+        [in]    const ULONG current,
+        [out]   ULONG *pulNext);
+
+    HRESULT Prev(
+        [in]    const ULONG current,
+        [out]   ULONG *pulPrev);
+
+    HRESULT Cardinality(
+        [out]   ULONG *pulCardinality);
+
+    HRESULT CardinalityFrom(
+        [in]    const ULONG ulStartPoint,
+        [out]   ULONG *pulCardinalityFrom);
+}
+
+[
+    object,
+    uuid(E9E9D8A3-4EDD-11d0-874F-00AA00530EE9),
+    local
+]
+interface IIMAPCallback : ITransportCallback
+{
+    typedef DWORD IMAP_MBOXFLAGS;
+    const IMAP_MBOXFLAGS IMAP_MBOX_NOFLAGS = 0x0;
+    const IMAP_MBOXFLAGS IMAP_MBOX_MARKED = 0x1;
+    const IMAP_MBOXFLAGS IMAP_MBOX_NOINFERIORS = 0x2;
+    const IMAP_MBOXFLAGS IMAP_MBOX_NOSELECT = 0x4;
+    const IMAP_MBOXFLAGS IMAP_MBOX_UNMARKED = 0x8;
+    const IMAP_MBOXFLAGS IMAP_MBOX_ALLFLAGS = 0xf;
+
+    typedef enum tagIMAP_RESPONSE_TYPE
+    {
+        irtERROR_NOTIFICATION,
+        irtCOMMAND_COMPLETION,
+        irtSERVER_ALERT,
+        irtPARSE_ERROR,
+        irtMAILBOX_UPDATE,
+        irtDELETED_MSG,
+        irtFETCH_BODY,
+        irtUPDATE_MSG,
+        irtAPPLICABLE_FLAGS,
+        irtPERMANENT_FLAGS,
+        irtUIDVALIDITY,
+        irtREADWRITE_STATUS,
+        irtTRYCREATE,
+        irtSEARCH,
+        irtMAILBOX_LISTING,
+        irtMAILBOX_STATUS,
+        irtAPPEND_PROGRESS,
+        irtUPDATE_MSG_EX
+    } IMAP_RESPONSE_TYPE;
+
+    typedef struct tagFETCH_BODY_PART
+    {
+        DWORD dwMsgSeqNum;
+        LPSTR pszBodyTag;
+        DWORD dwTotalBytes;
+        DWORD dwSizeOfData;
+        DWORD dwOffset;
+        BOOL fDone;
+        LPSTR pszData;
+        LPARAM lpFetchCookie1;
+        LPARAM lpFetchCookie2;
+    } FETCH_BODY_PART;
+
+    typedef struct tagFETCH_CMD_RESULTS
+    {
+        DWORD dwMsgSeqNum;
+        BOOL bMsgFlags;
+        IMAP_MSGFLAGS mfMsgFlags;
+        BOOL bRFC822Size;
+        DWORD dwRFC822Size;
+        BOOL bUID;
+        DWORD dwUID;
+        BOOL bInternalDate;
+        FILETIME ftInternalDate;
+        LPARAM lpFetchCookie1;
+        LPARAM lpFetchCookie2;
+    } FETCH_CMD_RESULTS;
+
+    typedef struct tagIMAPADDR
+    {
+        LPSTR pszName;
+        LPSTR pszADL;
+        LPSTR pszMailbox;
+        LPSTR pszHost;
+        struct tagIMAPADDR *pNext;
+    } IMAPADDR;
+
+    typedef struct tagFETCH_CMD_RESULTS_EX
+    {
+        DWORD dwMsgSeqNum;
+        BOOL bMsgFlags;
+        IMAP_MSGFLAGS mfMsgFlags;
+        BOOL bRFC822Size;
+        DWORD dwRFC822Size;
+        BOOL bUID;
+        DWORD dwUID;
+        BOOL bInternalDate;
+        FILETIME ftInternalDate;
+        LPARAM lpFetchCookie1;
+        LPARAM lpFetchCookie2;
+        BOOL bEnvelope;
+        FILETIME ftENVDate;
+        LPSTR pszENVSubject;
+        IMAPADDR *piaENVFrom;
+        IMAPADDR *piaENVSender;
+        IMAPADDR *piaENVReplyTo;
+        IMAPADDR *piaENVTo;
+        IMAPADDR *piaENVCc;
+        IMAPADDR *piaENVBcc;
+        LPSTR pszENVInReplyTo;
+        LPSTR pszENVMessageID;
+        DWORD dwReserved1;
+        DWORD dwReserved2;
+        DWORD dwReserved3;
+    } FETCH_CMD_RESULTS_EX;
+
+    typedef struct tagMBOX_MSGCOUNT
+    {
+        BOOL bGotExistsResponse;
+        DWORD dwExists;
+        BOOL bGotRecentResponse;
+        DWORD dwRecent;
+        BOOL bGotUnseenResponse;
+        DWORD dwUnseen;
+    } MBOX_MSGCOUNT;
+
+    typedef struct tagIMAP_LISTLSUB_RESPONSE
+    {
+        LPSTR pszMailboxName;
+        IMAP_MBOXFLAGS imfMboxFlags;
+        char cHierarchyChar;
+    } IMAP_LISTLSUB_RESPONSE;
+
+    typedef struct tagIMAP_STATUS_RESPONSE
+    {
+        LPSTR pszMailboxName;
+        BOOL fMessages;
+        DWORD dwMessages;
+        BOOL fRecent;
+        DWORD dwRecent;
+        BOOL fUIDNext;
+        DWORD dwUIDNext;
+        BOOL fUIDValidity;
+        DWORD dwUIDValidity;
+        BOOL fUnseen;
+        DWORD dwUnseen;
+    } IMAP_STATUS_RESPONSE;
+
+    typedef struct tagAPPEND_PROGRESS
+    {
+        DWORD dwUploaded;
+        DWORD dwTotal;
+    } APPEND_PROGRESS;
+
+    typedef [switch_type(IMAP_RESPONSE_TYPE)] union tagIMAP_RESPONSE_DATA
+    {
+        [case (irtMAILBOX_UPDATE)] MBOX_MSGCOUNT *pmcMsgCount;
+        [case (irtDELETED_MSG)] DWORD dwDeletedMsgSeqNum;
+        [case (irtFETCH_BODY)] FETCH_BODY_PART *pFetchBodyPart;
+        [case (irtUPDATE_MSG)] FETCH_CMD_RESULTS *pFetchResults;
+        [case (irtAPPLICABLE_FLAGS, irtPERMANENT_FLAGS)] IMAP_MSGFLAGS imfImapMessageFlags;
+        [case (irtUIDVALIDITY)] DWORD dwUIDValidity;
+        [case (irtREADWRITE_STATUS)] BOOL bReadWrite;
+        [case (irtSEARCH)] IRangeList *prlSearchResults;
+        [case (irtMAILBOX_LISTING)] IMAP_LISTLSUB_RESPONSE illrdMailboxListing;
+        [case (irtMAILBOX_STATUS)] IMAP_STATUS_RESPONSE *pisrStatusResponse;
+        [case (irtAPPEND_PROGRESS)] APPEND_PROGRESS *papAppendProgress;
+        [case (irtUPDATE_MSG_EX)] FETCH_CMD_RESULTS_EX *pFetchResultsEx;
+    } IMAP_RESPONSE_DATA;
+
+    typedef struct tagIMAP_RESPONSE
+    {
+        WPARAM wParam;
+        LPARAM lParam;
+        HRESULT hrResult;
+        LPSTR lpszResponseText;
+        IMAP_RESPONSE_TYPE irtResponseType;
+        [switch_is(irtResponseType)] IMAP_RESPONSE_DATA irdResponseData;
+    } IMAP_RESPONSE;
+
+    HRESULT OnResponse([in] const IMAP_RESPONSE *pirIMAPResponse);
+}
+
+[
+object,
+uuid(E9E9D8A8-4EDD-11d0-874F-00AA00530EE9),
+local,
+]
+interface IIMAPTransport : IInternetTransport
+{
+    const DWORD IMAP_CAPABILITY_IMAP4 = 0x1;
+    const DWORD IMAP_CAPABILITY_IMAP4rev1 = 0x2;
+    const DWORD IMAP_CAPABILITY_IDLE = 0x4;
+    const DWORD IMAP_CAPABILITY_ALLFLAGS = 0x7;
+
+    HRESULT InitNew(
+        [in]    LPSTR pszLogFilePath,
+        [in]    IIMAPCallback *pCBHandler);
+
+    HRESULT NewIRangeList(
+        [out]   IRangeList **pprlNewRangeList);
+
+    HRESULT Capability(
+        [out]   DWORD *pdwCapabilityFlags);
+
+    HRESULT Select(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszMailboxName);
+
+    HRESULT Examine(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszMailboxName);
+
+    HRESULT Create(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszMailboxName);
+
+    HRESULT Delete(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszMailboxName);
+
+    HRESULT Rename(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszMailboxName,
+        [in]    LPSTR lpszNewMailboxName);
+
+    HRESULT Subscribe(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszMailboxName);
+
+    HRESULT Unsubscribe(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszMailboxName);
+
+    HRESULT List(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszMailboxNameReference,
+        [in]    LPSTR lpszMailboxNamePattern);
+
+    HRESULT Lsub(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszMailboxNameReference,
+        [in]    LPSTR lpszMailboxNamePattern);
+
+    HRESULT Append(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszMailboxName,
+        [in]    LPSTR lpszMessageFlags,
+        [in]    FILETIME ftMessageDateTime,
+        [in]    LPSTREAM lpstmMessageToSave);
+
+    HRESULT Close(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler);
+
+    HRESULT Expunge(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler);
+
+    HRESULT Search(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR lpszSearchCriteria,
+        [in]    boolean bReturnUIDs,
+        [in]    IRangeList *pMsgRange,
+        [in]    boolean bUIDRangeList);
+
+    HRESULT Fetch(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    IRangeList *pMsgRange,
+        [in]    boolean bUIDMsgRange,
+        [in]    LPSTR lpszFetchArgs);
+
+    HRESULT Store(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    IRangeList *pMsgRange,
+        [in]    boolean bUIDRangeList,
+        [in]    LPSTR lpszStoreArgs);
+
+    HRESULT Copy(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    IRangeList *pMsgRange,
+        [in]    boolean bUIDRangeList,
+        [in]    LPSTR lpszMailboxName);
+
+    HRESULT Noop(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler);
+
+    HRESULT ResizeMsgSeqNumTable(
+        [in]    DWORD dwSizeOfMbox);
+
+    HRESULT UpdateSeqNumToUID(
+        [in]    DWORD dwMsgSeqNum,
+        [in]    DWORD dwUID);
+
+    HRESULT RemoveSequenceNum(
+        [in]    DWORD dwDeletedMsgSeqNum);
+
+    HRESULT MsgSeqNumToUID(
+        [in]    DWORD dwMsgSeqNum,
+        [out]   DWORD *pdwUID);
+
+    HRESULT GetMsgSeqNumToUIDArray(
+        [out]   DWORD **ppdwMsgSeqNumToUIDArray,
+        [out]   DWORD *pdwNumberOfElements);
+
+    HRESULT GetHighestMsgSeqNum(
+        [out]   DWORD *pdwHighestMSN);
+
+    HRESULT ResetMsgSeqNumToUID();
+
+    HRESULT SetDefaultCBHandler(
+        [in]    IIMAPCallback *pCBHandler);
+
+    HRESULT Status(
+        [in]    WPARAM wParam,
+        [in]    LPARAM lParam,
+        [in]    IIMAPCallback *pCBHandler,
+        [in]    LPSTR pszMailboxName,
+        [in]    LPSTR pszStatusCmdArgs);
+}
 
 #if 0
 cpp_quote("HRESULT WINAPI CreateRASTransport(IRASTransport **ppTransport);")
 cpp_quote("HRESULT WINAPI CreateNNTPTransport(INNTPTransport **ppTransport);")
-cpp_quote("HRESULT WINAPI CreateIMAPTransport(IIMAPTransport **ppTransport);")
 cpp_quote("HRESULT WINAPI CreateIMAPTransport2(IIMAPTransport2 **ppTransport);")
-cpp_quote("HRESULT WINAPI CreateRangeList(IRangeList **ppRangeList);")
 #endif
+cpp_quote("HRESULT WINAPI CreateRangeList(IRangeList **ppRangeList);")
 cpp_quote("HRESULT WINAPI CreateSMTPTransport(ISMTPTransport **ppTransport);")
 cpp_quote("HRESULT WINAPI CreatePOP3Transport(IPOP3Transport **ppTransport);")
+cpp_quote("HRESULT WINAPI CreateIMAPTransport(IIMAPTransport **ppTransport);")



More information about the wine-patches mailing list