/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM /tmp/comm-release/mailnews/imap/public/nsIMsgImapMailFolder.idl
 */

#ifndef __gen_nsIMsgImapMailFolder_h__
#define __gen_nsIMsgImapMailFolder_h__


#ifndef __gen_nsISupports_h__
#include "nsISupports.h"
#endif

#ifndef __gen_nsIMsgFolder_h__
#include "nsIMsgFolder.h"
#endif

#ifndef __gen_nsIStringEnumerator_h__
#include "nsIStringEnumerator.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
class nsIMsgWindow; /* forward declaration */

class nsIImapIncomingServer; /* forward declaration */

class nsIMsgParseMailMsgState; /* forward declaration */

class nsIAutoSyncState; /* forward declaration */


/* starting interface:    nsIMsgImapFolderProps */
#define NS_IMSGIMAPFOLDERPROPS_IID_STR "09d99f2c-3e23-4f8c-a536-5c277baa9585"

#define NS_IMSGIMAPFOLDERPROPS_IID \
  {0x09d99f2c, 0x3e23, 0x4f8c, \
    { 0xa5, 0x36, 0x5c, 0x27, 0x7b, 0xaa, 0x95, 0x85 }}

class NS_NO_VTABLE nsIMsgImapFolderProps : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGIMAPFOLDERPROPS_IID)

  /* void setFolderType (in AString folderType); */
  NS_IMETHOD SetFolderType(const nsAString & folderType) = 0;

  /* void setFolderTypeDescription (in AString folderTypeDescription); */
  NS_IMETHOD SetFolderTypeDescription(const nsAString & folderTypeDescription) = 0;

  /* void setFolderPermissions (in AString permissions); */
  NS_IMETHOD SetFolderPermissions(const nsAString & permissions) = 0;

  /* void serverDoesntSupportACL (); */
  NS_IMETHOD ServerDoesntSupportACL(void) = 0;

  /* void showQuotaData (in boolean showData); */
  NS_IMETHOD ShowQuotaData(bool showData) = 0;

  /* void setQuotaStatus (in AString folderQuotaStatus); */
  NS_IMETHOD SetQuotaStatus(const nsAString & folderQuotaStatus) = 0;

  /* void setQuotaData (in ACString quotaroot, in unsigned long usedKB, in unsigned long maxKB); */
  NS_IMETHOD SetQuotaData(const nsACString & quotaroot, uint32_t usedKB, uint32_t maxKB) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgImapFolderProps, NS_IMSGIMAPFOLDERPROPS_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGIMAPFOLDERPROPS \
  NS_IMETHOD SetFolderType(const nsAString & folderType); \
  NS_IMETHOD SetFolderTypeDescription(const nsAString & folderTypeDescription); \
  NS_IMETHOD SetFolderPermissions(const nsAString & permissions); \
  NS_IMETHOD ServerDoesntSupportACL(void); \
  NS_IMETHOD ShowQuotaData(bool showData); \
  NS_IMETHOD SetQuotaStatus(const nsAString & folderQuotaStatus); \
  NS_IMETHOD SetQuotaData(const nsACString & quotaroot, uint32_t usedKB, uint32_t maxKB); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGIMAPFOLDERPROPS(_to) \
  NS_IMETHOD SetFolderType(const nsAString & folderType) { return _to SetFolderType(folderType); } \
  NS_IMETHOD SetFolderTypeDescription(const nsAString & folderTypeDescription) { return _to SetFolderTypeDescription(folderTypeDescription); } \
  NS_IMETHOD SetFolderPermissions(const nsAString & permissions) { return _to SetFolderPermissions(permissions); } \
  NS_IMETHOD ServerDoesntSupportACL(void) { return _to ServerDoesntSupportACL(); } \
  NS_IMETHOD ShowQuotaData(bool showData) { return _to ShowQuotaData(showData); } \
  NS_IMETHOD SetQuotaStatus(const nsAString & folderQuotaStatus) { return _to SetQuotaStatus(folderQuotaStatus); } \
  NS_IMETHOD SetQuotaData(const nsACString & quotaroot, uint32_t usedKB, uint32_t maxKB) { return _to SetQuotaData(quotaroot, usedKB, maxKB); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGIMAPFOLDERPROPS(_to) \
  NS_IMETHOD SetFolderType(const nsAString & folderType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFolderType(folderType); } \
  NS_IMETHOD SetFolderTypeDescription(const nsAString & folderTypeDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFolderTypeDescription(folderTypeDescription); } \
  NS_IMETHOD SetFolderPermissions(const nsAString & permissions) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFolderPermissions(permissions); } \
  NS_IMETHOD ServerDoesntSupportACL(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->ServerDoesntSupportACL(); } \
  NS_IMETHOD ShowQuotaData(bool showData) { return !_to ? NS_ERROR_NULL_POINTER : _to->ShowQuotaData(showData); } \
  NS_IMETHOD SetQuotaStatus(const nsAString & folderQuotaStatus) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetQuotaStatus(folderQuotaStatus); } \
  NS_IMETHOD SetQuotaData(const nsACString & quotaroot, uint32_t usedKB, uint32_t maxKB) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetQuotaData(quotaroot, usedKB, maxKB); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsMsgImapFolderProps : public nsIMsgImapFolderProps
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGIMAPFOLDERPROPS

  nsMsgImapFolderProps();

private:
  ~nsMsgImapFolderProps();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgImapFolderProps, nsIMsgImapFolderProps)

nsMsgImapFolderProps::nsMsgImapFolderProps()
{
  /* member initializers and constructor code */
}

nsMsgImapFolderProps::~nsMsgImapFolderProps()
{
  /* destructor code */
}

/* void setFolderType (in AString folderType); */
NS_IMETHODIMP nsMsgImapFolderProps::SetFolderType(const nsAString & folderType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setFolderTypeDescription (in AString folderTypeDescription); */
NS_IMETHODIMP nsMsgImapFolderProps::SetFolderTypeDescription(const nsAString & folderTypeDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setFolderPermissions (in AString permissions); */
NS_IMETHODIMP nsMsgImapFolderProps::SetFolderPermissions(const nsAString & permissions)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void serverDoesntSupportACL (); */
NS_IMETHODIMP nsMsgImapFolderProps::ServerDoesntSupportACL()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void showQuotaData (in boolean showData); */
NS_IMETHODIMP nsMsgImapFolderProps::ShowQuotaData(bool showData)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setQuotaStatus (in AString folderQuotaStatus); */
NS_IMETHODIMP nsMsgImapFolderProps::SetQuotaStatus(const nsAString & folderQuotaStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setQuotaData (in ACString quotaroot, in unsigned long usedKB, in unsigned long maxKB); */
NS_IMETHODIMP nsMsgImapFolderProps::SetQuotaData(const nsACString & quotaroot, uint32_t usedKB, uint32_t maxKB)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIMsgImapMailFolder */
#define NS_IMSGIMAPMAILFOLDER_IID_STR "fea0f455-7adf-4683-bf2f-c95c3fff03df"

#define NS_IMSGIMAPMAILFOLDER_IID \
  {0xfea0f455, 0x7adf, 0x4683, \
    { 0xbf, 0x2f, 0xc9, 0x5c, 0x3f, 0xff, 0x03, 0xdf }}

class NS_NO_VTABLE nsIMsgImapMailFolder : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGIMAPMAILFOLDER_IID)

  /* void removeSubFolder (in nsIMsgFolder folder); */
  NS_IMETHOD RemoveSubFolder(nsIMsgFolder *folder) = 0;

  /* void createClientSubfolderInfo (in ACString folderName, in char hierarchyDelimiter, in long flags, in boolean suppressNotification); */
  NS_IMETHOD CreateClientSubfolderInfo(const nsACString & folderName, char hierarchyDelimiter, int32_t flags, bool suppressNotification) = 0;

  /* void list (); */
  NS_IMETHOD List(void) = 0;

  /* void renameLocal (in ACString newname, in nsIMsgFolder parent); */
  NS_IMETHOD RenameLocal(const nsACString & newname, nsIMsgFolder *parent) = 0;

  /* void prepareToRename (); */
  NS_IMETHOD PrepareToRename(void) = 0;

  /* void performExpand (in nsIMsgWindow aMsgWindow); */
  NS_IMETHOD PerformExpand(nsIMsgWindow *aMsgWindow) = 0;

  /* void recursiveCloseActiveConnections (in nsIImapIncomingServer aImapServer); */
  NS_IMETHOD RecursiveCloseActiveConnections(nsIImapIncomingServer *aImapServer) = 0;

  /* void renameClient (in nsIMsgWindow msgWindow, in nsIMsgFolder msgFolder, in ACString oldName, in ACString newName); */
  NS_IMETHOD RenameClient(nsIMsgWindow *msgWindow, nsIMsgFolder *msgFolder, const nsACString & oldName, const nsACString & newName) = 0;

  /* void storeImapFlags (in long aFlags, in boolean aAddFlags, [array, size_is (aNumKeys)] in nsMsgKey aKeysToFlag, in unsigned long aNumKeys, in nsIUrlListener aUrlListener); */
  NS_IMETHOD StoreImapFlags(int32_t aFlags, bool aAddFlags, nsMsgKey *aKeysToFlag, uint32_t aNumKeys, nsIUrlListener *aUrlListener) = 0;

  /* nsIURI setImapFlags (in string uids, in long flags); */
  NS_IMETHOD SetImapFlags(const char * uids, int32_t flags, nsIURI * *_retval) = 0;

  /* void replayOfflineMoveCopy ([array, size_is (numKeys)] in nsMsgKey keys, in unsigned long numKeys, in boolean isMove, in nsIMsgFolder aDstFolder, in nsIUrlListener aUrlListener, in nsIMsgWindow aWindow); */
  NS_IMETHOD ReplayOfflineMoveCopy(nsMsgKey *keys, uint32_t numKeys, bool isMove, nsIMsgFolder *aDstFolder, nsIUrlListener *aUrlListener, nsIMsgWindow *aWindow) = 0;

  /* nsIURI playbackOfflineFolderCreate (in AString folderName, in nsIMsgWindow aWindow); */
  NS_IMETHOD PlaybackOfflineFolderCreate(const nsAString & folderName, nsIMsgWindow *aWindow, nsIURI * *_retval) = 0;

  /* void addMoveResultPseudoKey (in nsMsgKey aMsgKey); */
  NS_IMETHOD AddMoveResultPseudoKey(nsMsgKey aMsgKey) = 0;

  /* void liteSelect (in nsIUrlListener aUrlListener, in nsIMsgWindow aWindow); */
  NS_IMETHOD LiteSelect(nsIUrlListener *aUrlListener, nsIMsgWindow *aWindow) = 0;

  /* void fillInFolderProps (in nsIMsgImapFolderProps aFolderProps); */
  NS_IMETHOD FillInFolderProps(nsIMsgImapFolderProps *aFolderProps) = 0;

  /* void resetNamespaceReferences (); */
  NS_IMETHOD ResetNamespaceReferences(void) = 0;

  /* void folderPrivileges (in nsIMsgWindow aWindow); */
  NS_IMETHOD FolderPrivileges(nsIMsgWindow *aWindow) = 0;

  /* nsIMsgImapMailFolder findOnlineSubFolder (in ACString onlineName); */
  NS_IMETHOD FindOnlineSubFolder(const nsACString & onlineName, nsIMsgImapMailFolder * *_retval) = 0;

  /* void addFolderRights (in ACString userName, in ACString rights); */
  NS_IMETHOD AddFolderRights(const nsACString & userName, const nsACString & rights) = 0;

  /* void refreshFolderRights (); */
  NS_IMETHOD RefreshFolderRights(void) = 0;

  /* void markPendingRemoval (in nsIMsgDBHdr aHdr, in boolean aMark); */
  NS_IMETHOD MarkPendingRemoval(nsIMsgDBHdr *aHdr, bool aMark) = 0;

  /* void expunge (in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow); */
  NS_IMETHOD Expunge(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow) = 0;

  /* void updateStatus (in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow); */
  NS_IMETHOD UpdateStatus(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow) = 0;

  /* void updateFolderWithListener (in nsIMsgWindow aMsgWindow, in nsIUrlListener aListener); */
  NS_IMETHOD UpdateFolderWithListener(nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener) = 0;

  /* nsIURI issueCommandOnMsgs (in ACString command, in string uids, in nsIMsgWindow aWindow); */
  NS_IMETHOD IssueCommandOnMsgs(const nsACString & command, const char * uids, nsIMsgWindow *aWindow, nsIURI * *_retval) = 0;

  /* nsIURI fetchCustomMsgAttribute (in ACString msgAttribute, in string uids, in nsIMsgWindow aWindow); */
  NS_IMETHOD FetchCustomMsgAttribute(const nsACString & msgAttribute, const char * uids, nsIMsgWindow *aWindow, nsIURI * *_retval) = 0;

  /* nsIURI storeCustomKeywords (in nsIMsgWindow aMsgWindow, in ACString aFlagsToAdd, in ACString aFlagsToSubtract, [array, size_is (aNumKeys)] in nsMsgKey aKeysToStore, in unsigned long aNumKeys); */
  NS_IMETHOD StoreCustomKeywords(nsIMsgWindow *aMsgWindow, const nsACString & aFlagsToAdd, const nsACString & aFlagsToSubtract, nsMsgKey *aKeysToStore, uint32_t aNumKeys, nsIURI * *_retval) = 0;

  /* void notifyIfNewMail (); */
  NS_IMETHOD NotifyIfNewMail(void) = 0;

  /* void initiateAutoSync (in nsIUrlListener aUrlListener); */
  NS_IMETHOD InitiateAutoSync(nsIUrlListener *aUrlListener) = 0;

  /* attribute boolean verifiedAsOnlineFolder; */
  NS_IMETHOD GetVerifiedAsOnlineFolder(bool *aVerifiedAsOnlineFolder) = 0;
  NS_IMETHOD SetVerifiedAsOnlineFolder(bool aVerifiedAsOnlineFolder) = 0;

  /* attribute boolean explicitlyVerify; */
  NS_IMETHOD GetExplicitlyVerify(bool *aExplicitlyVerify) = 0;
  NS_IMETHOD SetExplicitlyVerify(bool aExplicitlyVerify) = 0;

  /* attribute char hierarchyDelimiter; */
  NS_IMETHOD GetHierarchyDelimiter(char *aHierarchyDelimiter) = 0;
  NS_IMETHOD SetHierarchyDelimiter(char aHierarchyDelimiter) = 0;

  /* attribute long boxFlags; */
  NS_IMETHOD GetBoxFlags(int32_t *aBoxFlags) = 0;
  NS_IMETHOD SetBoxFlags(int32_t aBoxFlags) = 0;

  /* attribute ACString onlineName; */
  NS_IMETHOD GetOnlineName(nsACString & aOnlineName) = 0;
  NS_IMETHOD SetOnlineName(const nsACString & aOnlineName) = 0;

  /* attribute boolean isNamespace; */
  NS_IMETHOD GetIsNamespace(bool *aIsNamespace) = 0;
  NS_IMETHOD SetIsNamespace(bool aIsNamespace) = 0;

  /* readonly attribute boolean canOpenFolder; */
  NS_IMETHOD GetCanOpenFolder(bool *aCanOpenFolder) = 0;

  /* attribute ACString adminUrl; */
  NS_IMETHOD GetAdminUrl(nsACString & aAdminUrl) = 0;
  NS_IMETHOD SetAdminUrl(const nsACString & aAdminUrl) = 0;

  /* readonly attribute boolean hasAdminUrl; */
  NS_IMETHOD GetHasAdminUrl(bool *aHasAdminUrl) = 0;

  /* attribute boolean performingBiff; */
  NS_IMETHOD GetPerformingBiff(bool *aPerformingBiff) = 0;
  NS_IMETHOD SetPerformingBiff(bool aPerformingBiff) = 0;

  /* readonly attribute nsIMsgParseMailMsgState hdrParser; */
  NS_IMETHOD GetHdrParser(nsIMsgParseMailMsgState * *aHdrParser) = 0;

  /* readonly attribute nsIImapIncomingServer imapIncomingServer; */
  NS_IMETHOD GetImapIncomingServer(nsIImapIncomingServer * *aImapIncomingServer) = 0;

  /* readonly attribute nsIAutoSyncState autoSyncStateObj; */
  NS_IMETHOD GetAutoSyncStateObj(nsIAutoSyncState * *aAutoSyncStateObj) = 0;

  /* readonly attribute long serverTotal; */
  NS_IMETHOD GetServerTotal(int32_t *aServerTotal) = 0;

  /* readonly attribute long serverUnseen; */
  NS_IMETHOD GetServerUnseen(int32_t *aServerUnseen) = 0;

  /* readonly attribute long serverRecent; */
  NS_IMETHOD GetServerRecent(int32_t *aServerRecent) = 0;

  /* readonly attribute long serverNextUID; */
  NS_IMETHOD GetServerNextUID(int32_t *aServerNextUID) = 0;

  /* void getQuota (out boolean valid, out unsigned long usedKB, out unsigned long maxKB); */
  NS_IMETHOD GetQuota(bool *valid, uint32_t *usedKB, uint32_t *maxKB) = 0;

  /* nsIUTF8StringEnumerator getOtherUsersWithAccess (); */
  NS_IMETHOD GetOtherUsersWithAccess(nsIUTF8StringEnumerator * *_retval) = 0;

  /* ACString getPermissionsForUser (in ACString username); */
  NS_IMETHOD GetPermissionsForUser(const nsACString & username, nsACString & _retval) = 0;

  /* void changePendingTotal (in long aDelta); */
  NS_IMETHOD ChangePendingTotal(int32_t aDelta) = 0;

  /* void changePendingUnread (in long aDelta); */
  NS_IMETHOD ChangePendingUnread(int32_t aDelta) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgImapMailFolder, NS_IMSGIMAPMAILFOLDER_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGIMAPMAILFOLDER \
  NS_IMETHOD RemoveSubFolder(nsIMsgFolder *folder); \
  NS_IMETHOD CreateClientSubfolderInfo(const nsACString & folderName, char hierarchyDelimiter, int32_t flags, bool suppressNotification); \
  NS_IMETHOD List(void); \
  NS_IMETHOD RenameLocal(const nsACString & newname, nsIMsgFolder *parent); \
  NS_IMETHOD PrepareToRename(void); \
  NS_IMETHOD PerformExpand(nsIMsgWindow *aMsgWindow); \
  NS_IMETHOD RecursiveCloseActiveConnections(nsIImapIncomingServer *aImapServer); \
  NS_IMETHOD RenameClient(nsIMsgWindow *msgWindow, nsIMsgFolder *msgFolder, const nsACString & oldName, const nsACString & newName); \
  NS_IMETHOD StoreImapFlags(int32_t aFlags, bool aAddFlags, nsMsgKey *aKeysToFlag, uint32_t aNumKeys, nsIUrlListener *aUrlListener); \
  NS_IMETHOD SetImapFlags(const char * uids, int32_t flags, nsIURI * *_retval); \
  NS_IMETHOD ReplayOfflineMoveCopy(nsMsgKey *keys, uint32_t numKeys, bool isMove, nsIMsgFolder *aDstFolder, nsIUrlListener *aUrlListener, nsIMsgWindow *aWindow); \
  NS_IMETHOD PlaybackOfflineFolderCreate(const nsAString & folderName, nsIMsgWindow *aWindow, nsIURI * *_retval); \
  NS_IMETHOD AddMoveResultPseudoKey(nsMsgKey aMsgKey); \
  NS_IMETHOD LiteSelect(nsIUrlListener *aUrlListener, nsIMsgWindow *aWindow); \
  NS_IMETHOD FillInFolderProps(nsIMsgImapFolderProps *aFolderProps); \
  NS_IMETHOD ResetNamespaceReferences(void); \
  NS_IMETHOD FolderPrivileges(nsIMsgWindow *aWindow); \
  NS_IMETHOD FindOnlineSubFolder(const nsACString & onlineName, nsIMsgImapMailFolder * *_retval); \
  NS_IMETHOD AddFolderRights(const nsACString & userName, const nsACString & rights); \
  NS_IMETHOD RefreshFolderRights(void); \
  NS_IMETHOD MarkPendingRemoval(nsIMsgDBHdr *aHdr, bool aMark); \
  NS_IMETHOD Expunge(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow); \
  NS_IMETHOD UpdateStatus(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow); \
  NS_IMETHOD UpdateFolderWithListener(nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener); \
  NS_IMETHOD IssueCommandOnMsgs(const nsACString & command, const char * uids, nsIMsgWindow *aWindow, nsIURI * *_retval); \
  NS_IMETHOD FetchCustomMsgAttribute(const nsACString & msgAttribute, const char * uids, nsIMsgWindow *aWindow, nsIURI * *_retval); \
  NS_IMETHOD StoreCustomKeywords(nsIMsgWindow *aMsgWindow, const nsACString & aFlagsToAdd, const nsACString & aFlagsToSubtract, nsMsgKey *aKeysToStore, uint32_t aNumKeys, nsIURI * *_retval); \
  NS_IMETHOD NotifyIfNewMail(void); \
  NS_IMETHOD InitiateAutoSync(nsIUrlListener *aUrlListener); \
  NS_IMETHOD GetVerifiedAsOnlineFolder(bool *aVerifiedAsOnlineFolder); \
  NS_IMETHOD SetVerifiedAsOnlineFolder(bool aVerifiedAsOnlineFolder); \
  NS_IMETHOD GetExplicitlyVerify(bool *aExplicitlyVerify); \
  NS_IMETHOD SetExplicitlyVerify(bool aExplicitlyVerify); \
  NS_IMETHOD GetHierarchyDelimiter(char *aHierarchyDelimiter); \
  NS_IMETHOD SetHierarchyDelimiter(char aHierarchyDelimiter); \
  NS_IMETHOD GetBoxFlags(int32_t *aBoxFlags); \
  NS_IMETHOD SetBoxFlags(int32_t aBoxFlags); \
  NS_IMETHOD GetOnlineName(nsACString & aOnlineName); \
  NS_IMETHOD SetOnlineName(const nsACString & aOnlineName); \
  NS_IMETHOD GetIsNamespace(bool *aIsNamespace); \
  NS_IMETHOD SetIsNamespace(bool aIsNamespace); \
  NS_IMETHOD GetCanOpenFolder(bool *aCanOpenFolder); \
  NS_IMETHOD GetAdminUrl(nsACString & aAdminUrl); \
  NS_IMETHOD SetAdminUrl(const nsACString & aAdminUrl); \
  NS_IMETHOD GetHasAdminUrl(bool *aHasAdminUrl); \
  NS_IMETHOD GetPerformingBiff(bool *aPerformingBiff); \
  NS_IMETHOD SetPerformingBiff(bool aPerformingBiff); \
  NS_IMETHOD GetHdrParser(nsIMsgParseMailMsgState * *aHdrParser); \
  NS_IMETHOD GetImapIncomingServer(nsIImapIncomingServer * *aImapIncomingServer); \
  NS_IMETHOD GetAutoSyncStateObj(nsIAutoSyncState * *aAutoSyncStateObj); \
  NS_IMETHOD GetServerTotal(int32_t *aServerTotal); \
  NS_IMETHOD GetServerUnseen(int32_t *aServerUnseen); \
  NS_IMETHOD GetServerRecent(int32_t *aServerRecent); \
  NS_IMETHOD GetServerNextUID(int32_t *aServerNextUID); \
  NS_IMETHOD GetQuota(bool *valid, uint32_t *usedKB, uint32_t *maxKB); \
  NS_IMETHOD GetOtherUsersWithAccess(nsIUTF8StringEnumerator * *_retval); \
  NS_IMETHOD GetPermissionsForUser(const nsACString & username, nsACString & _retval); \
  NS_IMETHOD ChangePendingTotal(int32_t aDelta); \
  NS_IMETHOD ChangePendingUnread(int32_t aDelta); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGIMAPMAILFOLDER(_to) \
  NS_IMETHOD RemoveSubFolder(nsIMsgFolder *folder) { return _to RemoveSubFolder(folder); } \
  NS_IMETHOD CreateClientSubfolderInfo(const nsACString & folderName, char hierarchyDelimiter, int32_t flags, bool suppressNotification) { return _to CreateClientSubfolderInfo(folderName, hierarchyDelimiter, flags, suppressNotification); } \
  NS_IMETHOD List(void) { return _to List(); } \
  NS_IMETHOD RenameLocal(const nsACString & newname, nsIMsgFolder *parent) { return _to RenameLocal(newname, parent); } \
  NS_IMETHOD PrepareToRename(void) { return _to PrepareToRename(); } \
  NS_IMETHOD PerformExpand(nsIMsgWindow *aMsgWindow) { return _to PerformExpand(aMsgWindow); } \
  NS_IMETHOD RecursiveCloseActiveConnections(nsIImapIncomingServer *aImapServer) { return _to RecursiveCloseActiveConnections(aImapServer); } \
  NS_IMETHOD RenameClient(nsIMsgWindow *msgWindow, nsIMsgFolder *msgFolder, const nsACString & oldName, const nsACString & newName) { return _to RenameClient(msgWindow, msgFolder, oldName, newName); } \
  NS_IMETHOD StoreImapFlags(int32_t aFlags, bool aAddFlags, nsMsgKey *aKeysToFlag, uint32_t aNumKeys, nsIUrlListener *aUrlListener) { return _to StoreImapFlags(aFlags, aAddFlags, aKeysToFlag, aNumKeys, aUrlListener); } \
  NS_IMETHOD SetImapFlags(const char * uids, int32_t flags, nsIURI * *_retval) { return _to SetImapFlags(uids, flags, _retval); } \
  NS_IMETHOD ReplayOfflineMoveCopy(nsMsgKey *keys, uint32_t numKeys, bool isMove, nsIMsgFolder *aDstFolder, nsIUrlListener *aUrlListener, nsIMsgWindow *aWindow) { return _to ReplayOfflineMoveCopy(keys, numKeys, isMove, aDstFolder, aUrlListener, aWindow); } \
  NS_IMETHOD PlaybackOfflineFolderCreate(const nsAString & folderName, nsIMsgWindow *aWindow, nsIURI * *_retval) { return _to PlaybackOfflineFolderCreate(folderName, aWindow, _retval); } \
  NS_IMETHOD AddMoveResultPseudoKey(nsMsgKey aMsgKey) { return _to AddMoveResultPseudoKey(aMsgKey); } \
  NS_IMETHOD LiteSelect(nsIUrlListener *aUrlListener, nsIMsgWindow *aWindow) { return _to LiteSelect(aUrlListener, aWindow); } \
  NS_IMETHOD FillInFolderProps(nsIMsgImapFolderProps *aFolderProps) { return _to FillInFolderProps(aFolderProps); } \
  NS_IMETHOD ResetNamespaceReferences(void) { return _to ResetNamespaceReferences(); } \
  NS_IMETHOD FolderPrivileges(nsIMsgWindow *aWindow) { return _to FolderPrivileges(aWindow); } \
  NS_IMETHOD FindOnlineSubFolder(const nsACString & onlineName, nsIMsgImapMailFolder * *_retval) { return _to FindOnlineSubFolder(onlineName, _retval); } \
  NS_IMETHOD AddFolderRights(const nsACString & userName, const nsACString & rights) { return _to AddFolderRights(userName, rights); } \
  NS_IMETHOD RefreshFolderRights(void) { return _to RefreshFolderRights(); } \
  NS_IMETHOD MarkPendingRemoval(nsIMsgDBHdr *aHdr, bool aMark) { return _to MarkPendingRemoval(aHdr, aMark); } \
  NS_IMETHOD Expunge(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow) { return _to Expunge(aListener, aMsgWindow); } \
  NS_IMETHOD UpdateStatus(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow) { return _to UpdateStatus(aListener, aMsgWindow); } \
  NS_IMETHOD UpdateFolderWithListener(nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener) { return _to UpdateFolderWithListener(aMsgWindow, aListener); } \
  NS_IMETHOD IssueCommandOnMsgs(const nsACString & command, const char * uids, nsIMsgWindow *aWindow, nsIURI * *_retval) { return _to IssueCommandOnMsgs(command, uids, aWindow, _retval); } \
  NS_IMETHOD FetchCustomMsgAttribute(const nsACString & msgAttribute, const char * uids, nsIMsgWindow *aWindow, nsIURI * *_retval) { return _to FetchCustomMsgAttribute(msgAttribute, uids, aWindow, _retval); } \
  NS_IMETHOD StoreCustomKeywords(nsIMsgWindow *aMsgWindow, const nsACString & aFlagsToAdd, const nsACString & aFlagsToSubtract, nsMsgKey *aKeysToStore, uint32_t aNumKeys, nsIURI * *_retval) { return _to StoreCustomKeywords(aMsgWindow, aFlagsToAdd, aFlagsToSubtract, aKeysToStore, aNumKeys, _retval); } \
  NS_IMETHOD NotifyIfNewMail(void) { return _to NotifyIfNewMail(); } \
  NS_IMETHOD InitiateAutoSync(nsIUrlListener *aUrlListener) { return _to InitiateAutoSync(aUrlListener); } \
  NS_IMETHOD GetVerifiedAsOnlineFolder(bool *aVerifiedAsOnlineFolder) { return _to GetVerifiedAsOnlineFolder(aVerifiedAsOnlineFolder); } \
  NS_IMETHOD SetVerifiedAsOnlineFolder(bool aVerifiedAsOnlineFolder) { return _to SetVerifiedAsOnlineFolder(aVerifiedAsOnlineFolder); } \
  NS_IMETHOD GetExplicitlyVerify(bool *aExplicitlyVerify) { return _to GetExplicitlyVerify(aExplicitlyVerify); } \
  NS_IMETHOD SetExplicitlyVerify(bool aExplicitlyVerify) { return _to SetExplicitlyVerify(aExplicitlyVerify); } \
  NS_IMETHOD GetHierarchyDelimiter(char *aHierarchyDelimiter) { return _to GetHierarchyDelimiter(aHierarchyDelimiter); } \
  NS_IMETHOD SetHierarchyDelimiter(char aHierarchyDelimiter) { return _to SetHierarchyDelimiter(aHierarchyDelimiter); } \
  NS_IMETHOD GetBoxFlags(int32_t *aBoxFlags) { return _to GetBoxFlags(aBoxFlags); } \
  NS_IMETHOD SetBoxFlags(int32_t aBoxFlags) { return _to SetBoxFlags(aBoxFlags); } \
  NS_IMETHOD GetOnlineName(nsACString & aOnlineName) { return _to GetOnlineName(aOnlineName); } \
  NS_IMETHOD SetOnlineName(const nsACString & aOnlineName) { return _to SetOnlineName(aOnlineName); } \
  NS_IMETHOD GetIsNamespace(bool *aIsNamespace) { return _to GetIsNamespace(aIsNamespace); } \
  NS_IMETHOD SetIsNamespace(bool aIsNamespace) { return _to SetIsNamespace(aIsNamespace); } \
  NS_IMETHOD GetCanOpenFolder(bool *aCanOpenFolder) { return _to GetCanOpenFolder(aCanOpenFolder); } \
  NS_IMETHOD GetAdminUrl(nsACString & aAdminUrl) { return _to GetAdminUrl(aAdminUrl); } \
  NS_IMETHOD SetAdminUrl(const nsACString & aAdminUrl) { return _to SetAdminUrl(aAdminUrl); } \
  NS_IMETHOD GetHasAdminUrl(bool *aHasAdminUrl) { return _to GetHasAdminUrl(aHasAdminUrl); } \
  NS_IMETHOD GetPerformingBiff(bool *aPerformingBiff) { return _to GetPerformingBiff(aPerformingBiff); } \
  NS_IMETHOD SetPerformingBiff(bool aPerformingBiff) { return _to SetPerformingBiff(aPerformingBiff); } \
  NS_IMETHOD GetHdrParser(nsIMsgParseMailMsgState * *aHdrParser) { return _to GetHdrParser(aHdrParser); } \
  NS_IMETHOD GetImapIncomingServer(nsIImapIncomingServer * *aImapIncomingServer) { return _to GetImapIncomingServer(aImapIncomingServer); } \
  NS_IMETHOD GetAutoSyncStateObj(nsIAutoSyncState * *aAutoSyncStateObj) { return _to GetAutoSyncStateObj(aAutoSyncStateObj); } \
  NS_IMETHOD GetServerTotal(int32_t *aServerTotal) { return _to GetServerTotal(aServerTotal); } \
  NS_IMETHOD GetServerUnseen(int32_t *aServerUnseen) { return _to GetServerUnseen(aServerUnseen); } \
  NS_IMETHOD GetServerRecent(int32_t *aServerRecent) { return _to GetServerRecent(aServerRecent); } \
  NS_IMETHOD GetServerNextUID(int32_t *aServerNextUID) { return _to GetServerNextUID(aServerNextUID); } \
  NS_IMETHOD GetQuota(bool *valid, uint32_t *usedKB, uint32_t *maxKB) { return _to GetQuota(valid, usedKB, maxKB); } \
  NS_IMETHOD GetOtherUsersWithAccess(nsIUTF8StringEnumerator * *_retval) { return _to GetOtherUsersWithAccess(_retval); } \
  NS_IMETHOD GetPermissionsForUser(const nsACString & username, nsACString & _retval) { return _to GetPermissionsForUser(username, _retval); } \
  NS_IMETHOD ChangePendingTotal(int32_t aDelta) { return _to ChangePendingTotal(aDelta); } \
  NS_IMETHOD ChangePendingUnread(int32_t aDelta) { return _to ChangePendingUnread(aDelta); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGIMAPMAILFOLDER(_to) \
  NS_IMETHOD RemoveSubFolder(nsIMsgFolder *folder) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveSubFolder(folder); } \
  NS_IMETHOD CreateClientSubfolderInfo(const nsACString & folderName, char hierarchyDelimiter, int32_t flags, bool suppressNotification) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateClientSubfolderInfo(folderName, hierarchyDelimiter, flags, suppressNotification); } \
  NS_IMETHOD List(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->List(); } \
  NS_IMETHOD RenameLocal(const nsACString & newname, nsIMsgFolder *parent) { return !_to ? NS_ERROR_NULL_POINTER : _to->RenameLocal(newname, parent); } \
  NS_IMETHOD PrepareToRename(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->PrepareToRename(); } \
  NS_IMETHOD PerformExpand(nsIMsgWindow *aMsgWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->PerformExpand(aMsgWindow); } \
  NS_IMETHOD RecursiveCloseActiveConnections(nsIImapIncomingServer *aImapServer) { return !_to ? NS_ERROR_NULL_POINTER : _to->RecursiveCloseActiveConnections(aImapServer); } \
  NS_IMETHOD RenameClient(nsIMsgWindow *msgWindow, nsIMsgFolder *msgFolder, const nsACString & oldName, const nsACString & newName) { return !_to ? NS_ERROR_NULL_POINTER : _to->RenameClient(msgWindow, msgFolder, oldName, newName); } \
  NS_IMETHOD StoreImapFlags(int32_t aFlags, bool aAddFlags, nsMsgKey *aKeysToFlag, uint32_t aNumKeys, nsIUrlListener *aUrlListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->StoreImapFlags(aFlags, aAddFlags, aKeysToFlag, aNumKeys, aUrlListener); } \
  NS_IMETHOD SetImapFlags(const char * uids, int32_t flags, nsIURI * *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetImapFlags(uids, flags, _retval); } \
  NS_IMETHOD ReplayOfflineMoveCopy(nsMsgKey *keys, uint32_t numKeys, bool isMove, nsIMsgFolder *aDstFolder, nsIUrlListener *aUrlListener, nsIMsgWindow *aWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->ReplayOfflineMoveCopy(keys, numKeys, isMove, aDstFolder, aUrlListener, aWindow); } \
  NS_IMETHOD PlaybackOfflineFolderCreate(const nsAString & folderName, nsIMsgWindow *aWindow, nsIURI * *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->PlaybackOfflineFolderCreate(folderName, aWindow, _retval); } \
  NS_IMETHOD AddMoveResultPseudoKey(nsMsgKey aMsgKey) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddMoveResultPseudoKey(aMsgKey); } \
  NS_IMETHOD LiteSelect(nsIUrlListener *aUrlListener, nsIMsgWindow *aWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->LiteSelect(aUrlListener, aWindow); } \
  NS_IMETHOD FillInFolderProps(nsIMsgImapFolderProps *aFolderProps) { return !_to ? NS_ERROR_NULL_POINTER : _to->FillInFolderProps(aFolderProps); } \
  NS_IMETHOD ResetNamespaceReferences(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->ResetNamespaceReferences(); } \
  NS_IMETHOD FolderPrivileges(nsIMsgWindow *aWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->FolderPrivileges(aWindow); } \
  NS_IMETHOD FindOnlineSubFolder(const nsACString & onlineName, nsIMsgImapMailFolder * *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->FindOnlineSubFolder(onlineName, _retval); } \
  NS_IMETHOD AddFolderRights(const nsACString & userName, const nsACString & rights) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddFolderRights(userName, rights); } \
  NS_IMETHOD RefreshFolderRights(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->RefreshFolderRights(); } \
  NS_IMETHOD MarkPendingRemoval(nsIMsgDBHdr *aHdr, bool aMark) { return !_to ? NS_ERROR_NULL_POINTER : _to->MarkPendingRemoval(aHdr, aMark); } \
  NS_IMETHOD Expunge(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->Expunge(aListener, aMsgWindow); } \
  NS_IMETHOD UpdateStatus(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateStatus(aListener, aMsgWindow); } \
  NS_IMETHOD UpdateFolderWithListener(nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateFolderWithListener(aMsgWindow, aListener); } \
  NS_IMETHOD IssueCommandOnMsgs(const nsACString & command, const char * uids, nsIMsgWindow *aWindow, nsIURI * *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->IssueCommandOnMsgs(command, uids, aWindow, _retval); } \
  NS_IMETHOD FetchCustomMsgAttribute(const nsACString & msgAttribute, const char * uids, nsIMsgWindow *aWindow, nsIURI * *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->FetchCustomMsgAttribute(msgAttribute, uids, aWindow, _retval); } \
  NS_IMETHOD StoreCustomKeywords(nsIMsgWindow *aMsgWindow, const nsACString & aFlagsToAdd, const nsACString & aFlagsToSubtract, nsMsgKey *aKeysToStore, uint32_t aNumKeys, nsIURI * *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->StoreCustomKeywords(aMsgWindow, aFlagsToAdd, aFlagsToSubtract, aKeysToStore, aNumKeys, _retval); } \
  NS_IMETHOD NotifyIfNewMail(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyIfNewMail(); } \
  NS_IMETHOD InitiateAutoSync(nsIUrlListener *aUrlListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->InitiateAutoSync(aUrlListener); } \
  NS_IMETHOD GetVerifiedAsOnlineFolder(bool *aVerifiedAsOnlineFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVerifiedAsOnlineFolder(aVerifiedAsOnlineFolder); } \
  NS_IMETHOD SetVerifiedAsOnlineFolder(bool aVerifiedAsOnlineFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVerifiedAsOnlineFolder(aVerifiedAsOnlineFolder); } \
  NS_IMETHOD GetExplicitlyVerify(bool *aExplicitlyVerify) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExplicitlyVerify(aExplicitlyVerify); } \
  NS_IMETHOD SetExplicitlyVerify(bool aExplicitlyVerify) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetExplicitlyVerify(aExplicitlyVerify); } \
  NS_IMETHOD GetHierarchyDelimiter(char *aHierarchyDelimiter) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHierarchyDelimiter(aHierarchyDelimiter); } \
  NS_IMETHOD SetHierarchyDelimiter(char aHierarchyDelimiter) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHierarchyDelimiter(aHierarchyDelimiter); } \
  NS_IMETHOD GetBoxFlags(int32_t *aBoxFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBoxFlags(aBoxFlags); } \
  NS_IMETHOD SetBoxFlags(int32_t aBoxFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBoxFlags(aBoxFlags); } \
  NS_IMETHOD GetOnlineName(nsACString & aOnlineName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOnlineName(aOnlineName); } \
  NS_IMETHOD SetOnlineName(const nsACString & aOnlineName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetOnlineName(aOnlineName); } \
  NS_IMETHOD GetIsNamespace(bool *aIsNamespace) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsNamespace(aIsNamespace); } \
  NS_IMETHOD SetIsNamespace(bool aIsNamespace) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIsNamespace(aIsNamespace); } \
  NS_IMETHOD GetCanOpenFolder(bool *aCanOpenFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCanOpenFolder(aCanOpenFolder); } \
  NS_IMETHOD GetAdminUrl(nsACString & aAdminUrl) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAdminUrl(aAdminUrl); } \
  NS_IMETHOD SetAdminUrl(const nsACString & aAdminUrl) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAdminUrl(aAdminUrl); } \
  NS_IMETHOD GetHasAdminUrl(bool *aHasAdminUrl) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHasAdminUrl(aHasAdminUrl); } \
  NS_IMETHOD GetPerformingBiff(bool *aPerformingBiff) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPerformingBiff(aPerformingBiff); } \
  NS_IMETHOD SetPerformingBiff(bool aPerformingBiff) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPerformingBiff(aPerformingBiff); } \
  NS_IMETHOD GetHdrParser(nsIMsgParseMailMsgState * *aHdrParser) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHdrParser(aHdrParser); } \
  NS_IMETHOD GetImapIncomingServer(nsIImapIncomingServer * *aImapIncomingServer) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetImapIncomingServer(aImapIncomingServer); } \
  NS_IMETHOD GetAutoSyncStateObj(nsIAutoSyncState * *aAutoSyncStateObj) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAutoSyncStateObj(aAutoSyncStateObj); } \
  NS_IMETHOD GetServerTotal(int32_t *aServerTotal) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetServerTotal(aServerTotal); } \
  NS_IMETHOD GetServerUnseen(int32_t *aServerUnseen) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetServerUnseen(aServerUnseen); } \
  NS_IMETHOD GetServerRecent(int32_t *aServerRecent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetServerRecent(aServerRecent); } \
  NS_IMETHOD GetServerNextUID(int32_t *aServerNextUID) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetServerNextUID(aServerNextUID); } \
  NS_IMETHOD GetQuota(bool *valid, uint32_t *usedKB, uint32_t *maxKB) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetQuota(valid, usedKB, maxKB); } \
  NS_IMETHOD GetOtherUsersWithAccess(nsIUTF8StringEnumerator * *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOtherUsersWithAccess(_retval); } \
  NS_IMETHOD GetPermissionsForUser(const nsACString & username, nsACString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPermissionsForUser(username, _retval); } \
  NS_IMETHOD ChangePendingTotal(int32_t aDelta) { return !_to ? NS_ERROR_NULL_POINTER : _to->ChangePendingTotal(aDelta); } \
  NS_IMETHOD ChangePendingUnread(int32_t aDelta) { return !_to ? NS_ERROR_NULL_POINTER : _to->ChangePendingUnread(aDelta); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsMsgImapMailFolder : public nsIMsgImapMailFolder
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGIMAPMAILFOLDER

  nsMsgImapMailFolder();

private:
  ~nsMsgImapMailFolder();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgImapMailFolder, nsIMsgImapMailFolder)

nsMsgImapMailFolder::nsMsgImapMailFolder()
{
  /* member initializers and constructor code */
}

nsMsgImapMailFolder::~nsMsgImapMailFolder()
{
  /* destructor code */
}

/* void removeSubFolder (in nsIMsgFolder folder); */
NS_IMETHODIMP nsMsgImapMailFolder::RemoveSubFolder(nsIMsgFolder *folder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createClientSubfolderInfo (in ACString folderName, in char hierarchyDelimiter, in long flags, in boolean suppressNotification); */
NS_IMETHODIMP nsMsgImapMailFolder::CreateClientSubfolderInfo(const nsACString & folderName, char hierarchyDelimiter, int32_t flags, bool suppressNotification)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void list (); */
NS_IMETHODIMP nsMsgImapMailFolder::List()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void renameLocal (in ACString newname, in nsIMsgFolder parent); */
NS_IMETHODIMP nsMsgImapMailFolder::RenameLocal(const nsACString & newname, nsIMsgFolder *parent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void prepareToRename (); */
NS_IMETHODIMP nsMsgImapMailFolder::PrepareToRename()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void performExpand (in nsIMsgWindow aMsgWindow); */
NS_IMETHODIMP nsMsgImapMailFolder::PerformExpand(nsIMsgWindow *aMsgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void recursiveCloseActiveConnections (in nsIImapIncomingServer aImapServer); */
NS_IMETHODIMP nsMsgImapMailFolder::RecursiveCloseActiveConnections(nsIImapIncomingServer *aImapServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void renameClient (in nsIMsgWindow msgWindow, in nsIMsgFolder msgFolder, in ACString oldName, in ACString newName); */
NS_IMETHODIMP nsMsgImapMailFolder::RenameClient(nsIMsgWindow *msgWindow, nsIMsgFolder *msgFolder, const nsACString & oldName, const nsACString & newName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void storeImapFlags (in long aFlags, in boolean aAddFlags, [array, size_is (aNumKeys)] in nsMsgKey aKeysToFlag, in unsigned long aNumKeys, in nsIUrlListener aUrlListener); */
NS_IMETHODIMP nsMsgImapMailFolder::StoreImapFlags(int32_t aFlags, bool aAddFlags, nsMsgKey *aKeysToFlag, uint32_t aNumKeys, nsIUrlListener *aUrlListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIURI setImapFlags (in string uids, in long flags); */
NS_IMETHODIMP nsMsgImapMailFolder::SetImapFlags(const char * uids, int32_t flags, nsIURI * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void replayOfflineMoveCopy ([array, size_is (numKeys)] in nsMsgKey keys, in unsigned long numKeys, in boolean isMove, in nsIMsgFolder aDstFolder, in nsIUrlListener aUrlListener, in nsIMsgWindow aWindow); */
NS_IMETHODIMP nsMsgImapMailFolder::ReplayOfflineMoveCopy(nsMsgKey *keys, uint32_t numKeys, bool isMove, nsIMsgFolder *aDstFolder, nsIUrlListener *aUrlListener, nsIMsgWindow *aWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIURI playbackOfflineFolderCreate (in AString folderName, in nsIMsgWindow aWindow); */
NS_IMETHODIMP nsMsgImapMailFolder::PlaybackOfflineFolderCreate(const nsAString & folderName, nsIMsgWindow *aWindow, nsIURI * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addMoveResultPseudoKey (in nsMsgKey aMsgKey); */
NS_IMETHODIMP nsMsgImapMailFolder::AddMoveResultPseudoKey(nsMsgKey aMsgKey)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void liteSelect (in nsIUrlListener aUrlListener, in nsIMsgWindow aWindow); */
NS_IMETHODIMP nsMsgImapMailFolder::LiteSelect(nsIUrlListener *aUrlListener, nsIMsgWindow *aWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void fillInFolderProps (in nsIMsgImapFolderProps aFolderProps); */
NS_IMETHODIMP nsMsgImapMailFolder::FillInFolderProps(nsIMsgImapFolderProps *aFolderProps)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void resetNamespaceReferences (); */
NS_IMETHODIMP nsMsgImapMailFolder::ResetNamespaceReferences()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void folderPrivileges (in nsIMsgWindow aWindow); */
NS_IMETHODIMP nsMsgImapMailFolder::FolderPrivileges(nsIMsgWindow *aWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgImapMailFolder findOnlineSubFolder (in ACString onlineName); */
NS_IMETHODIMP nsMsgImapMailFolder::FindOnlineSubFolder(const nsACString & onlineName, nsIMsgImapMailFolder * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addFolderRights (in ACString userName, in ACString rights); */
NS_IMETHODIMP nsMsgImapMailFolder::AddFolderRights(const nsACString & userName, const nsACString & rights)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void refreshFolderRights (); */
NS_IMETHODIMP nsMsgImapMailFolder::RefreshFolderRights()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void markPendingRemoval (in nsIMsgDBHdr aHdr, in boolean aMark); */
NS_IMETHODIMP nsMsgImapMailFolder::MarkPendingRemoval(nsIMsgDBHdr *aHdr, bool aMark)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void expunge (in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow); */
NS_IMETHODIMP nsMsgImapMailFolder::Expunge(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void updateStatus (in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow); */
NS_IMETHODIMP nsMsgImapMailFolder::UpdateStatus(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void updateFolderWithListener (in nsIMsgWindow aMsgWindow, in nsIUrlListener aListener); */
NS_IMETHODIMP nsMsgImapMailFolder::UpdateFolderWithListener(nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIURI issueCommandOnMsgs (in ACString command, in string uids, in nsIMsgWindow aWindow); */
NS_IMETHODIMP nsMsgImapMailFolder::IssueCommandOnMsgs(const nsACString & command, const char * uids, nsIMsgWindow *aWindow, nsIURI * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIURI fetchCustomMsgAttribute (in ACString msgAttribute, in string uids, in nsIMsgWindow aWindow); */
NS_IMETHODIMP nsMsgImapMailFolder::FetchCustomMsgAttribute(const nsACString & msgAttribute, const char * uids, nsIMsgWindow *aWindow, nsIURI * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIURI storeCustomKeywords (in nsIMsgWindow aMsgWindow, in ACString aFlagsToAdd, in ACString aFlagsToSubtract, [array, size_is (aNumKeys)] in nsMsgKey aKeysToStore, in unsigned long aNumKeys); */
NS_IMETHODIMP nsMsgImapMailFolder::StoreCustomKeywords(nsIMsgWindow *aMsgWindow, const nsACString & aFlagsToAdd, const nsACString & aFlagsToSubtract, nsMsgKey *aKeysToStore, uint32_t aNumKeys, nsIURI * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyIfNewMail (); */
NS_IMETHODIMP nsMsgImapMailFolder::NotifyIfNewMail()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void initiateAutoSync (in nsIUrlListener aUrlListener); */
NS_IMETHODIMP nsMsgImapMailFolder::InitiateAutoSync(nsIUrlListener *aUrlListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean verifiedAsOnlineFolder; */
NS_IMETHODIMP nsMsgImapMailFolder::GetVerifiedAsOnlineFolder(bool *aVerifiedAsOnlineFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgImapMailFolder::SetVerifiedAsOnlineFolder(bool aVerifiedAsOnlineFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean explicitlyVerify; */
NS_IMETHODIMP nsMsgImapMailFolder::GetExplicitlyVerify(bool *aExplicitlyVerify)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgImapMailFolder::SetExplicitlyVerify(bool aExplicitlyVerify)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute char hierarchyDelimiter; */
NS_IMETHODIMP nsMsgImapMailFolder::GetHierarchyDelimiter(char *aHierarchyDelimiter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgImapMailFolder::SetHierarchyDelimiter(char aHierarchyDelimiter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute long boxFlags; */
NS_IMETHODIMP nsMsgImapMailFolder::GetBoxFlags(int32_t *aBoxFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgImapMailFolder::SetBoxFlags(int32_t aBoxFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute ACString onlineName; */
NS_IMETHODIMP nsMsgImapMailFolder::GetOnlineName(nsACString & aOnlineName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgImapMailFolder::SetOnlineName(const nsACString & aOnlineName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean isNamespace; */
NS_IMETHODIMP nsMsgImapMailFolder::GetIsNamespace(bool *aIsNamespace)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgImapMailFolder::SetIsNamespace(bool aIsNamespace)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean canOpenFolder; */
NS_IMETHODIMP nsMsgImapMailFolder::GetCanOpenFolder(bool *aCanOpenFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute ACString adminUrl; */
NS_IMETHODIMP nsMsgImapMailFolder::GetAdminUrl(nsACString & aAdminUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgImapMailFolder::SetAdminUrl(const nsACString & aAdminUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean hasAdminUrl; */
NS_IMETHODIMP nsMsgImapMailFolder::GetHasAdminUrl(bool *aHasAdminUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean performingBiff; */
NS_IMETHODIMP nsMsgImapMailFolder::GetPerformingBiff(bool *aPerformingBiff)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgImapMailFolder::SetPerformingBiff(bool aPerformingBiff)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMsgParseMailMsgState hdrParser; */
NS_IMETHODIMP nsMsgImapMailFolder::GetHdrParser(nsIMsgParseMailMsgState * *aHdrParser)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIImapIncomingServer imapIncomingServer; */
NS_IMETHODIMP nsMsgImapMailFolder::GetImapIncomingServer(nsIImapIncomingServer * *aImapIncomingServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIAutoSyncState autoSyncStateObj; */
NS_IMETHODIMP nsMsgImapMailFolder::GetAutoSyncStateObj(nsIAutoSyncState * *aAutoSyncStateObj)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long serverTotal; */
NS_IMETHODIMP nsMsgImapMailFolder::GetServerTotal(int32_t *aServerTotal)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long serverUnseen; */
NS_IMETHODIMP nsMsgImapMailFolder::GetServerUnseen(int32_t *aServerUnseen)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long serverRecent; */
NS_IMETHODIMP nsMsgImapMailFolder::GetServerRecent(int32_t *aServerRecent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long serverNextUID; */
NS_IMETHODIMP nsMsgImapMailFolder::GetServerNextUID(int32_t *aServerNextUID)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getQuota (out boolean valid, out unsigned long usedKB, out unsigned long maxKB); */
NS_IMETHODIMP nsMsgImapMailFolder::GetQuota(bool *valid, uint32_t *usedKB, uint32_t *maxKB)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIUTF8StringEnumerator getOtherUsersWithAccess (); */
NS_IMETHODIMP nsMsgImapMailFolder::GetOtherUsersWithAccess(nsIUTF8StringEnumerator * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* ACString getPermissionsForUser (in ACString username); */
NS_IMETHODIMP nsMsgImapMailFolder::GetPermissionsForUser(const nsACString & username, nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void changePendingTotal (in long aDelta); */
NS_IMETHODIMP nsMsgImapMailFolder::ChangePendingTotal(int32_t aDelta)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void changePendingUnread (in long aDelta); */
NS_IMETHODIMP nsMsgImapMailFolder::ChangePendingUnread(int32_t aDelta)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


#endif /* __gen_nsIMsgImapMailFolder_h__ */
