/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM nsIMsgFolder.idl
 */

#ifndef __gen_nsIMsgFolder_h__
#define __gen_nsIMsgFolder_h__


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

#ifndef __gen_nsIFolder_h__
#include "nsIFolder.h"
#endif

#ifndef __gen_nsIMsgThread_h__
#include "nsIMsgThread.h"
#endif

#ifndef __gen_nsIMsgIncomingServer_h__
#include "nsIMsgIncomingServer.h"
#endif

#ifndef __gen_nsIFileSpec_h__
#include "nsIFileSpec.h"
#endif

#ifndef __gen_nsISupportsArray_h__
#include "nsISupportsArray.h"
#endif

#ifndef __gen_nsIMsgCopyServiceListener_h__
#include "nsIMsgCopyServiceListener.h"
#endif

#ifndef __gen_nsIUrlListener_h__
#include "nsIUrlListener.h"
#endif

#ifndef __gen_nsIEnumerator_h__
#include "nsIEnumerator.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
#include "nsIMsgDatabase.h"
#include "nsMsgKeyArray.h"
class nsIMsgDBHdr; /* forward declaration */

class nsIMsgWindow; /* forward declaration */

class nsIMsgDatabase; /* forward declaration */

class nsIDBFolderInfo; /* forward declaration */

class nsMsgKeyArray; /* forward declaration */

class nsIMsgFilterList; /* forward declaration */

class nsIMsgFolderCacheElement; /* forward declaration */

class nsAutoString; /* forward declaration */

class nsITransport; /* forward declaration */

typedef PRInt32 nsMsgBiffState;

typedef PRInt32 nsMsgDispositionState;


/* starting interface:    nsIMsgFolder */
#define NS_IMSGFOLDER_IID_STR "85e39ff0-b248-11d2-b7ef-00805f05ffa5"

#define NS_IMSGFOLDER_IID \
  {0x85e39ff0, 0xb248, 0x11d2, \
    { 0xb7, 0xef, 0x00, 0x80, 0x5f, 0x05, 0xff, 0xa5 }}

class NS_NO_VTABLE nsIMsgFolder : public nsIFolder {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMSGFOLDER_IID)

  enum { nsMsgBiffState_NewMail = 0 };

  enum { nsMsgBiffState_NoMail = 1 };

  enum { nsMsgBiffState_Unknown = 2 };

  /* void AddUnique (in nsISupports element); */
  NS_IMETHOD AddUnique(nsISupports *element) = 0;

  /* void ReplaceElement (in nsISupports element, in nsISupports newElement); */
  NS_IMETHOD ReplaceElement(nsISupports *element, nsISupports *newElement) = 0;

  /* nsISimpleEnumerator getMessages (in nsIMsgWindow aMsgWindow); */
  NS_IMETHOD GetMessages(nsIMsgWindow *aMsgWindow, nsISimpleEnumerator **_retval) = 0;

  /* void startFolderLoading (); */
  NS_IMETHOD StartFolderLoading(void) = 0;

  /* void endFolderLoading (); */
  NS_IMETHOD EndFolderLoading(void) = 0;

  /* void updateFolder (in nsIMsgWindow aWindow); */
  NS_IMETHOD UpdateFolder(nsIMsgWindow *aWindow) = 0;

  /* nsIEnumerator getVisibleSubFolders (); */
  NS_IMETHOD GetVisibleSubFolders(nsIEnumerator **_retval) = 0;

  /* readonly attribute wstring prettiestName; */
  NS_IMETHOD GetPrettiestName(PRUnichar * *aPrettiestName) = 0;

  /**
   * URL for this folder
   */
  /* readonly attribute string folderURL; */
  NS_IMETHOD GetFolderURL(char * *aFolderURL) = 0;

  /**
   * should probably move to the server
   */
  /* attribute boolean deleteIsMoveToTrash; */
  NS_IMETHOD GetDeleteIsMoveToTrash(PRBool *aDeleteIsMoveToTrash) = 0;
  NS_IMETHOD SetDeleteIsMoveToTrash(PRBool aDeleteIsMoveToTrash) = 0;

  /**
   * should probably move to the server
   */
  /* readonly attribute boolean showDeletedMessages; */
  NS_IMETHOD GetShowDeletedMessages(PRBool *aShowDeletedMessages) = 0;

  /**
   * this folder's parent server
   */
  /* readonly attribute nsIMsgIncomingServer server; */
  NS_IMETHOD GetServer(nsIMsgIncomingServer * *aServer) = 0;

  /**
   * is this folder the "phantom" server folder?
   */
  /* readonly attribute boolean isServer; */
  NS_IMETHOD GetIsServer(PRBool *aIsServer) = 0;

  /* readonly attribute boolean canSubscribe; */
  NS_IMETHOD GetCanSubscribe(PRBool *aCanSubscribe) = 0;

  /* readonly attribute boolean canFileMessages; */
  NS_IMETHOD GetCanFileMessages(PRBool *aCanFileMessages) = 0;

  /* readonly attribute boolean noSelect; */
  NS_IMETHOD GetNoSelect(PRBool *aNoSelect) = 0;

  /**
   * does this folder allow subfolders?
   * for example, newsgroups cannot have subfolders, and the INBOX
   * on some IMAP servers cannot have subfolders
   */
  /* readonly attribute boolean canCreateSubfolders; */
  NS_IMETHOD GetCanCreateSubfolders(PRBool *aCanCreateSubfolders) = 0;

  /**
   * can you change the name of this folder?
   * for example, newsgroups
   * and some special folders can't be renamed
   */
  /* readonly attribute boolean canRename; */
  NS_IMETHOD GetCanRename(PRBool *aCanRename) = 0;

  /* readonly attribute boolean canCompact; */
  NS_IMETHOD GetCanCompact(PRBool *aCanCompact) = 0;

  /**
   * the phantom server folder
   */
  /* readonly attribute nsIMsgFolder rootFolder; */
  NS_IMETHOD GetRootFolder(nsIMsgFolder * *aRootFolder) = 0;

  /* readonly attribute nsIMsgFilterList filterList; */
  NS_IMETHOD GetFilterList(nsIMsgFilterList * *aFilterList) = 0;

  /* void ForceDBClosed (); */
  NS_IMETHOD ForceDBClosed(void) = 0;

  /* void Delete (); */
  NS_IMETHOD Delete(void) = 0;

  /* void deleteSubFolders (in nsISupportsArray folders, in nsIMsgWindow msgWindow); */
  NS_IMETHOD DeleteSubFolders(nsISupportsArray *folders, nsIMsgWindow *msgWindow) = 0;

  /* void propagateDelete (in nsIMsgFolder folder, in boolean deleteStorage); */
  NS_IMETHOD PropagateDelete(nsIMsgFolder *folder, PRBool deleteStorage) = 0;

  /* void recursiveDelete (in boolean deleteStorage); */
  NS_IMETHOD RecursiveDelete(PRBool deleteStorage) = 0;

  /* void createSubfolder (in wstring folderName, in nsIMsgWindow msgWindow); */
  NS_IMETHOD CreateSubfolder(const PRUnichar *folderName, nsIMsgWindow *msgWindow) = 0;

  /* [noscript] nsIMsgFolder addSubfolder (in nsAutoString folderName); */
  NS_IMETHOD AddSubfolder(nsAutoString *folderName, nsIMsgFolder **_retval) = 0;

  /* void createStorageIfMissing (in nsIUrlListener urlListener); */
  NS_IMETHOD CreateStorageIfMissing(nsIUrlListener *urlListener) = 0;

  /* void compact (in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow); */
  NS_IMETHOD Compact(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow) = 0;

  /* void compactAll (in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow); */
  NS_IMETHOD CompactAll(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow) = 0;

  /* void emptyTrash (in nsIMsgWindow aMsgWindow, in nsIUrlListener aListener); */
  NS_IMETHOD EmptyTrash(nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener) = 0;

  /**
   * change the name of the folder
   *
   * @param name the new name of the folder
   */
  /* void rename (in wstring name, in nsIMsgWindow msgWindow); */
  NS_IMETHOD Rename(const PRUnichar *name, nsIMsgWindow *msgWindow) = 0;

  /**
   * looks in immediate children of this folder for the given name
   *
   * @param name the name of the target subfolder
   */
  /* boolean containsChildNamed (in string name); */
  NS_IMETHOD ContainsChildNamed(const char *name, PRBool *_retval) = 0;

  /* boolean isAncestorOf (in nsIMsgFolder folder); */
  NS_IMETHOD IsAncestorOf(nsIMsgFolder *folder, PRBool *_retval) = 0;

  /* string generateUniqueSubfolderName (in string prefix, in nsIMsgFolder otherFolder); */
  NS_IMETHOD GenerateUniqueSubfolderName(const char *prefix, nsIMsgFolder *otherFolder, char **_retval) = 0;

  /* void updateSummaryTotals (in boolean force); */
  NS_IMETHOD UpdateSummaryTotals(PRBool force) = 0;

  /* void summaryChanged (); */
  NS_IMETHOD SummaryChanged(void) = 0;

  /**
   * get the total number of unread messages in this folder,
   * or in all subfolders
   *
   * @param deep if true, descends into all subfolders and gets a grand total
   */
  /* long getNumUnread (in boolean deep); */
  NS_IMETHOD GetNumUnread(PRBool deep, PRInt32 *_retval) = 0;

  /**
   * get the total number of messages in this folder,
   * or in all subfolders
   *
   * @param deep if true, descends into all subfolders and gets a grand total
   */
  /* long getTotalMessages (in boolean deep); */
  NS_IMETHOD GetTotalMessages(PRBool deep, PRInt32 *_retval) = 0;

  /**
  * does this folder have new messages
  *
  */
  /* attribute boolean hasNewMessages; */
  NS_IMETHOD GetHasNewMessages(PRBool *aHasNewMessages) = 0;
  NS_IMETHOD SetHasNewMessages(PRBool aHasNewMessages) = 0;

  /**
   * return the first new message in the folder
   *
   */
  /* readonly attribute nsIMsgDBHdr firstNewMessage; */
  NS_IMETHOD GetFirstNewMessage(nsIMsgDBHdr * *aFirstNewMessage) = 0;

  /**
   * clear new status flag of all of the new messages
   *
   */
  /* void clearNewMessages (); */
  NS_IMETHOD ClearNewMessages(void) = 0;

  /* readonly attribute unsigned long expungedBytes; */
  NS_IMETHOD GetExpungedBytes(PRUint32 *aExpungedBytes) = 0;

  /**
   * can this folder be deleted?
   * for example, special folders cannot be deleted
   */
  /* readonly attribute boolean deletable; */
  NS_IMETHOD GetDeletable(PRBool *aDeletable) = 0;

  /**
   * should we be displaying recipients instead of the sender?
   * for example, in the Sent folder, recipients are more relevant
   * than the sender
   */
  /* readonly attribute boolean displayRecipients; */
  NS_IMETHOD GetDisplayRecipients(PRBool *aDisplayRecipients) = 0;

  /**
   * used to determine if it will take a long time to download all
   * the headers in this folder - so that we can do folder notifications
   * synchronously instead of asynchronously
   */
  /* boolean manyHeadersToDownload (); */
  NS_IMETHOD ManyHeadersToDownload(PRBool *_retval) = 0;

  /* readonly attribute boolean requiresCleanup; */
  NS_IMETHOD GetRequiresCleanup(PRBool *aRequiresCleanup) = 0;

  /* void clearRequiresCleanup (); */
  NS_IMETHOD ClearRequiresCleanup(void) = 0;

  /**
   * this should go into a news-specific interface
   */
  /* readonly attribute boolean knowsSearchNntpExtension; */
  NS_IMETHOD GetKnowsSearchNntpExtension(PRBool *aKnowsSearchNntpExtension) = 0;

  /**
   * this should go into a news-specific interface
   */
  /* readonly attribute boolean allowsPosting; */
  NS_IMETHOD GetAllowsPosting(PRBool *aAllowsPosting) = 0;

  /* readonly attribute string relativePathName; */
  NS_IMETHOD GetRelativePathName(char * *aRelativePathName) = 0;

  /**
   * size of this folder (including headers??) on disk
   */
  /* readonly attribute unsigned long sizeOnDisk; */
  NS_IMETHOD GetSizeOnDisk(PRUint32 *aSizeOnDisk) = 0;

  /**
   * set the password for this folder (what is this used for?)
   */
  /* void rememberPassword (in string password); */
  NS_IMETHOD RememberPassword(const char *password) = 0;

  /* readonly attribute string rememberedPassword; */
  NS_IMETHOD GetRememberedPassword(char * *aRememberedPassword) = 0;

  /* boolean userNeedsToAuthenticateForFolder (in boolean displayOnly); */
  NS_IMETHOD UserNeedsToAuthenticateForFolder(PRBool displayOnly, PRBool *_retval) = 0;

  /* readonly attribute string username; */
  NS_IMETHOD GetUsername(char * *aUsername) = 0;

  /* readonly attribute string hostname; */
  NS_IMETHOD GetHostname(char * *aHostname) = 0;

  /* void setFlag (in unsigned long flag); */
  NS_IMETHOD SetFlag(PRUint32 flag) = 0;

  /* void clearFlag (in unsigned long flag); */
  NS_IMETHOD ClearFlag(PRUint32 flag) = 0;

  /* boolean getFlag (in unsigned long flag); */
  NS_IMETHOD GetFlag(PRUint32 flag, PRBool *_retval) = 0;

  /* void setPrefFlag (); */
  NS_IMETHOD SetPrefFlag(void) = 0;

  /* void toggleFlag (in unsigned long flag); */
  NS_IMETHOD ToggleFlag(PRUint32 flag) = 0;

  /* void onFlagChange (in unsigned long flag); */
  NS_IMETHOD OnFlagChange(PRUint32 flag) = 0;

  /* attribute unsigned long flags; */
  NS_IMETHOD GetFlags(PRUint32 *aFlags) = 0;
  NS_IMETHOD SetFlags(PRUint32 aFlags) = 0;

  /* void RecursiveSetDeleteIsMoveToTrash (in boolean bVal); */
  NS_IMETHOD RecursiveSetDeleteIsMoveToTrash(PRBool bVal) = 0;

  /* nsIMsgFolder getFoldersWithFlag (in unsigned long flags, in unsigned long resultsize, out unsigned long numFolders); */
  NS_IMETHOD GetFoldersWithFlag(PRUint32 flags, PRUint32 resultsize, PRUint32 *numFolders, nsIMsgFolder **_retval) = 0;

  /* void getExpansionArray (in nsISupportsArray expansionArray); */
  NS_IMETHOD GetExpansionArray(nsISupportsArray *expansionArray) = 0;

  /* string getUriForMsg (in nsIMsgDBHdr msgHdr); */
  NS_IMETHOD GetUriForMsg(nsIMsgDBHdr *msgHdr, char **_retval) = 0;

  /* void deleteMessages (in nsISupportsArray message, in nsIMsgWindow msgWindow, in boolean deleteStorage, in boolean isMove, in nsIMsgCopyServiceListener listener, in boolean allowUndo); */
  NS_IMETHOD DeleteMessages(nsISupportsArray *message, nsIMsgWindow *msgWindow, PRBool deleteStorage, PRBool isMove, nsIMsgCopyServiceListener *listener, PRBool allowUndo) = 0;

  /* void copyMessages (in nsIMsgFolder srcFolder, in nsISupportsArray messages, in boolean isMove, in nsIMsgWindow msgWindow, in nsIMsgCopyServiceListener listener, in boolean isFolder, in boolean allowUndo); */
  NS_IMETHOD CopyMessages(nsIMsgFolder *srcFolder, nsISupportsArray *messages, PRBool isMove, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener, PRBool isFolder, PRBool allowUndo) = 0;

  /* void copyFolder (in nsIMsgFolder srcFolder, in boolean isMoveFolder, in nsIMsgWindow msgWindow, in nsIMsgCopyServiceListener listener); */
  NS_IMETHOD CopyFolder(nsIMsgFolder *srcFolder, PRBool isMoveFolder, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener) = 0;

  /* void copyFileMessage (in nsIFileSpec fileSpec, in nsIMsgDBHdr msgToReplace, in boolean isDraft, in nsIMsgWindow msgWindow, in nsIMsgCopyServiceListener listener); */
  NS_IMETHOD CopyFileMessage(nsIFileSpec *fileSpec, nsIMsgDBHdr *msgToReplace, PRBool isDraft, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener) = 0;

  /* void acquireSemaphore (in nsISupports semHolder); */
  NS_IMETHOD AcquireSemaphore(nsISupports *semHolder) = 0;

  /* void releaseSemaphore (in nsISupports semHolder); */
  NS_IMETHOD ReleaseSemaphore(nsISupports *semHolder) = 0;

  /* boolean testSemaphore (in nsISupports semHolder); */
  NS_IMETHOD TestSemaphore(nsISupports *semHolder, PRBool *_retval) = 0;

  /* readonly attribute boolean locked; */
  NS_IMETHOD GetLocked(PRBool *aLocked) = 0;

  /* void getNewMessages (in nsIMsgWindow aWindow); */
  NS_IMETHOD GetNewMessages(nsIMsgWindow *aWindow) = 0;

  /**
   * write out summary data for this folder
   * to the given folder cache (i.e. panacea.dat)
   */
  /* void writeToFolderCache (in nsIMsgFolderCache folderCache, in boolean deep); */
  NS_IMETHOD WriteToFolderCache(nsIMsgFolderCache *folderCache, PRBool deep) = 0;

  /**
   * the charset of this folder
   */
  /* attribute wstring charset; */
  NS_IMETHOD GetCharset(PRUnichar * *aCharset) = 0;
  NS_IMETHOD SetCharset(const PRUnichar * aCharset) = 0;

  /* attribute boolean charsetOverride; */
  NS_IMETHOD GetCharsetOverride(PRBool *aCharsetOverride) = 0;
  NS_IMETHOD SetCharsetOverride(PRBool aCharsetOverride) = 0;

  /* attribute unsigned long biffState; */
  NS_IMETHOD GetBiffState(PRUint32 *aBiffState) = 0;
  NS_IMETHOD SetBiffState(PRUint32 aBiffState) = 0;

  /**
   * the number of new messages since this folder was last visited
   */
  /* attribute long numNewMessages; */
  NS_IMETHOD GetNumNewMessages(PRInt32 *aNumNewMessages) = 0;
  NS_IMETHOD SetNumNewMessages(PRInt32 aNumNewMessages) = 0;

  /**
   * verbose description of the new messages in this folder
   */
  /* readonly attribute wstring newMessagesNotificationDescription; */
  NS_IMETHOD GetNewMessagesNotificationDescription(PRUnichar * *aNewMessagesNotificationDescription) = 0;

  /* attribute boolean gettingNewMessages; */
  NS_IMETHOD GetGettingNewMessages(PRBool *aGettingNewMessages) = 0;
  NS_IMETHOD SetGettingNewMessages(PRBool aGettingNewMessages) = 0;

  /**
   * local path of this folder
   */
  /* attribute nsIFileSpec path; */
  NS_IMETHOD GetPath(nsIFileSpec * *aPath) = 0;
  NS_IMETHOD SetPath(nsIFileSpec * aPath) = 0;

  /* readonly attribute string baseMessageURI; */
  NS_IMETHOD GetBaseMessageURI(char * *aBaseMessageURI) = 0;

  /* string generateMessageURI (in nsMsgKey msgKey); */
  NS_IMETHOD GenerateMessageURI(nsMsgKey msgKey, char **_retval) = 0;

  enum { nsMsgDispositionState_Replied = 0 };

  enum { nsMsgDispositionState_Forwarded = 1 };

  /* void addMessageDispositionState (in nsIMsgDBHdr aMessage, in nsMsgDispositionState aDispositionFlag); */
  NS_IMETHOD AddMessageDispositionState(nsIMsgDBHdr *aMessage, nsMsgDispositionState aDispositionFlag) = 0;

  /* void markMessagesRead (in nsISupportsArray messages, in boolean markRead); */
  NS_IMETHOD MarkMessagesRead(nsISupportsArray *messages, PRBool markRead) = 0;

  /* void markAllMessagesRead (); */
  NS_IMETHOD MarkAllMessagesRead(void) = 0;

  /* void markMessagesFlagged (in nsISupportsArray messages, in boolean markFlagged); */
  NS_IMETHOD MarkMessagesFlagged(nsISupportsArray *messages, PRBool markFlagged) = 0;

  /* void markThreadRead (in nsIMsgThread thread); */
  NS_IMETHOD MarkThreadRead(nsIMsgThread *thread) = 0;

  /* nsIMsgDatabase getMsgDatabase (in nsIMsgWindow msgWindow); */
  NS_IMETHOD GetMsgDatabase(nsIMsgWindow *msgWindow, nsIMsgDatabase **_retval) = 0;

  /* nsIMsgDatabase getDBFolderInfoAndDB (out nsIDBFolderInfo folderInfo); */
  NS_IMETHOD GetDBFolderInfoAndDB(nsIDBFolderInfo **folderInfo, nsIMsgDatabase **_retval) = 0;

  /* nsIMsgDBHdr GetMessageHeader (in nsMsgKey msgKey); */
  NS_IMETHOD GetMessageHeader(nsMsgKey msgKey, nsIMsgDBHdr **_retval) = 0;

  /* boolean shouldStoreMsgOffline (in nsMsgKey msgKey); */
  NS_IMETHOD ShouldStoreMsgOffline(nsMsgKey msgKey, PRBool *_retval) = 0;

  /* boolean hasMsgOffline (in nsMsgKey msgKey); */
  NS_IMETHOD HasMsgOffline(nsMsgKey msgKey, PRBool *_retval) = 0;

  /* nsITransport getOfflineFileTransport (in nsMsgKey msgKey, out PRUint32 offset, out PRUint32 size); */
  NS_IMETHOD GetOfflineFileTransport(nsMsgKey msgKey, PRUint32 *offset, PRUint32 *size, nsITransport **_retval) = 0;

  /* void DownloadMessagesForOffline (in nsISupportsArray messages, in nsIMsgWindow window); */
  NS_IMETHOD DownloadMessagesForOffline(nsISupportsArray *messages, nsIMsgWindow *window) = 0;

  /* nsIMsgFolder getChildWithURI (in string uri, in boolean deep); */
  NS_IMETHOD GetChildWithURI(const char *uri, PRBool deep, nsIMsgFolder **_retval) = 0;

  /* void downloadAllForOffline (in nsIUrlListener listener, in nsIMsgWindow window); */
  NS_IMETHOD DownloadAllForOffline(nsIUrlListener *listener, nsIMsgWindow *window) = 0;

  /**
   *	Turn notifications on/off for various notification types. Currently only supporting
   *  allMessageCountNotifications which refers to both total and unread message counts.
   */
  enum { allMessageCountNotifications = 0U };

  /* void enableNotifications (in long notificationType, in boolean enable); */
  NS_IMETHOD EnableNotifications(PRInt32 notificationType, PRBool enable) = 0;

  /* attribute nsIMsgRetentionSettings retentionSettings; */
  NS_IMETHOD GetRetentionSettings(nsIMsgRetentionSettings * *aRetentionSettings) = 0;
  NS_IMETHOD SetRetentionSettings(nsIMsgRetentionSettings * aRetentionSettings) = 0;

  /* attribute nsIMsgDownloadSettings downloadSettings; */
  NS_IMETHOD GetDownloadSettings(nsIMsgDownloadSettings * *aDownloadSettings) = 0;
  NS_IMETHOD SetDownloadSettings(nsIMsgDownloadSettings * aDownloadSettings) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGFOLDER \
  NS_IMETHOD AddUnique(nsISupports *element); \
  NS_IMETHOD ReplaceElement(nsISupports *element, nsISupports *newElement); \
  NS_IMETHOD GetMessages(nsIMsgWindow *aMsgWindow, nsISimpleEnumerator **_retval); \
  NS_IMETHOD StartFolderLoading(void); \
  NS_IMETHOD EndFolderLoading(void); \
  NS_IMETHOD UpdateFolder(nsIMsgWindow *aWindow); \
  NS_IMETHOD GetVisibleSubFolders(nsIEnumerator **_retval); \
  NS_IMETHOD GetPrettiestName(PRUnichar * *aPrettiestName); \
  NS_IMETHOD GetFolderURL(char * *aFolderURL); \
  NS_IMETHOD GetDeleteIsMoveToTrash(PRBool *aDeleteIsMoveToTrash); \
  NS_IMETHOD SetDeleteIsMoveToTrash(PRBool aDeleteIsMoveToTrash); \
  NS_IMETHOD GetShowDeletedMessages(PRBool *aShowDeletedMessages); \
  NS_IMETHOD GetServer(nsIMsgIncomingServer * *aServer); \
  NS_IMETHOD GetIsServer(PRBool *aIsServer); \
  NS_IMETHOD GetCanSubscribe(PRBool *aCanSubscribe); \
  NS_IMETHOD GetCanFileMessages(PRBool *aCanFileMessages); \
  NS_IMETHOD GetNoSelect(PRBool *aNoSelect); \
  NS_IMETHOD GetCanCreateSubfolders(PRBool *aCanCreateSubfolders); \
  NS_IMETHOD GetCanRename(PRBool *aCanRename); \
  NS_IMETHOD GetCanCompact(PRBool *aCanCompact); \
  NS_IMETHOD GetRootFolder(nsIMsgFolder * *aRootFolder); \
  NS_IMETHOD GetFilterList(nsIMsgFilterList * *aFilterList); \
  NS_IMETHOD ForceDBClosed(void); \
  NS_IMETHOD Delete(void); \
  NS_IMETHOD DeleteSubFolders(nsISupportsArray *folders, nsIMsgWindow *msgWindow); \
  NS_IMETHOD PropagateDelete(nsIMsgFolder *folder, PRBool deleteStorage); \
  NS_IMETHOD RecursiveDelete(PRBool deleteStorage); \
  NS_IMETHOD CreateSubfolder(const PRUnichar *folderName, nsIMsgWindow *msgWindow); \
  NS_IMETHOD AddSubfolder(nsAutoString *folderName, nsIMsgFolder **_retval); \
  NS_IMETHOD CreateStorageIfMissing(nsIUrlListener *urlListener); \
  NS_IMETHOD Compact(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow); \
  NS_IMETHOD CompactAll(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow); \
  NS_IMETHOD EmptyTrash(nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener); \
  NS_IMETHOD Rename(const PRUnichar *name, nsIMsgWindow *msgWindow); \
  NS_IMETHOD ContainsChildNamed(const char *name, PRBool *_retval); \
  NS_IMETHOD IsAncestorOf(nsIMsgFolder *folder, PRBool *_retval); \
  NS_IMETHOD GenerateUniqueSubfolderName(const char *prefix, nsIMsgFolder *otherFolder, char **_retval); \
  NS_IMETHOD UpdateSummaryTotals(PRBool force); \
  NS_IMETHOD SummaryChanged(void); \
  NS_IMETHOD GetNumUnread(PRBool deep, PRInt32 *_retval); \
  NS_IMETHOD GetTotalMessages(PRBool deep, PRInt32 *_retval); \
  NS_IMETHOD GetHasNewMessages(PRBool *aHasNewMessages); \
  NS_IMETHOD SetHasNewMessages(PRBool aHasNewMessages); \
  NS_IMETHOD GetFirstNewMessage(nsIMsgDBHdr * *aFirstNewMessage); \
  NS_IMETHOD ClearNewMessages(void); \
  NS_IMETHOD GetExpungedBytes(PRUint32 *aExpungedBytes); \
  NS_IMETHOD GetDeletable(PRBool *aDeletable); \
  NS_IMETHOD GetDisplayRecipients(PRBool *aDisplayRecipients); \
  NS_IMETHOD ManyHeadersToDownload(PRBool *_retval); \
  NS_IMETHOD GetRequiresCleanup(PRBool *aRequiresCleanup); \
  NS_IMETHOD ClearRequiresCleanup(void); \
  NS_IMETHOD GetKnowsSearchNntpExtension(PRBool *aKnowsSearchNntpExtension); \
  NS_IMETHOD GetAllowsPosting(PRBool *aAllowsPosting); \
  NS_IMETHOD GetRelativePathName(char * *aRelativePathName); \
  NS_IMETHOD GetSizeOnDisk(PRUint32 *aSizeOnDisk); \
  NS_IMETHOD RememberPassword(const char *password); \
  NS_IMETHOD GetRememberedPassword(char * *aRememberedPassword); \
  NS_IMETHOD UserNeedsToAuthenticateForFolder(PRBool displayOnly, PRBool *_retval); \
  NS_IMETHOD GetUsername(char * *aUsername); \
  NS_IMETHOD GetHostname(char * *aHostname); \
  NS_IMETHOD SetFlag(PRUint32 flag); \
  NS_IMETHOD ClearFlag(PRUint32 flag); \
  NS_IMETHOD GetFlag(PRUint32 flag, PRBool *_retval); \
  NS_IMETHOD SetPrefFlag(void); \
  NS_IMETHOD ToggleFlag(PRUint32 flag); \
  NS_IMETHOD OnFlagChange(PRUint32 flag); \
  NS_IMETHOD GetFlags(PRUint32 *aFlags); \
  NS_IMETHOD SetFlags(PRUint32 aFlags); \
  NS_IMETHOD RecursiveSetDeleteIsMoveToTrash(PRBool bVal); \
  NS_IMETHOD GetFoldersWithFlag(PRUint32 flags, PRUint32 resultsize, PRUint32 *numFolders, nsIMsgFolder **_retval); \
  NS_IMETHOD GetExpansionArray(nsISupportsArray *expansionArray); \
  NS_IMETHOD GetUriForMsg(nsIMsgDBHdr *msgHdr, char **_retval); \
  NS_IMETHOD DeleteMessages(nsISupportsArray *message, nsIMsgWindow *msgWindow, PRBool deleteStorage, PRBool isMove, nsIMsgCopyServiceListener *listener, PRBool allowUndo); \
  NS_IMETHOD CopyMessages(nsIMsgFolder *srcFolder, nsISupportsArray *messages, PRBool isMove, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener, PRBool isFolder, PRBool allowUndo); \
  NS_IMETHOD CopyFolder(nsIMsgFolder *srcFolder, PRBool isMoveFolder, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener); \
  NS_IMETHOD CopyFileMessage(nsIFileSpec *fileSpec, nsIMsgDBHdr *msgToReplace, PRBool isDraft, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener); \
  NS_IMETHOD AcquireSemaphore(nsISupports *semHolder); \
  NS_IMETHOD ReleaseSemaphore(nsISupports *semHolder); \
  NS_IMETHOD TestSemaphore(nsISupports *semHolder, PRBool *_retval); \
  NS_IMETHOD GetLocked(PRBool *aLocked); \
  NS_IMETHOD GetNewMessages(nsIMsgWindow *aWindow); \
  NS_IMETHOD WriteToFolderCache(nsIMsgFolderCache *folderCache, PRBool deep); \
  NS_IMETHOD GetCharset(PRUnichar * *aCharset); \
  NS_IMETHOD SetCharset(const PRUnichar * aCharset); \
  NS_IMETHOD GetCharsetOverride(PRBool *aCharsetOverride); \
  NS_IMETHOD SetCharsetOverride(PRBool aCharsetOverride); \
  NS_IMETHOD GetBiffState(PRUint32 *aBiffState); \
  NS_IMETHOD SetBiffState(PRUint32 aBiffState); \
  NS_IMETHOD GetNumNewMessages(PRInt32 *aNumNewMessages); \
  NS_IMETHOD SetNumNewMessages(PRInt32 aNumNewMessages); \
  NS_IMETHOD GetNewMessagesNotificationDescription(PRUnichar * *aNewMessagesNotificationDescription); \
  NS_IMETHOD GetGettingNewMessages(PRBool *aGettingNewMessages); \
  NS_IMETHOD SetGettingNewMessages(PRBool aGettingNewMessages); \
  NS_IMETHOD GetPath(nsIFileSpec * *aPath); \
  NS_IMETHOD SetPath(nsIFileSpec * aPath); \
  NS_IMETHOD GetBaseMessageURI(char * *aBaseMessageURI); \
  NS_IMETHOD GenerateMessageURI(nsMsgKey msgKey, char **_retval); \
  NS_IMETHOD AddMessageDispositionState(nsIMsgDBHdr *aMessage, nsMsgDispositionState aDispositionFlag); \
  NS_IMETHOD MarkMessagesRead(nsISupportsArray *messages, PRBool markRead); \
  NS_IMETHOD MarkAllMessagesRead(void); \
  NS_IMETHOD MarkMessagesFlagged(nsISupportsArray *messages, PRBool markFlagged); \
  NS_IMETHOD MarkThreadRead(nsIMsgThread *thread); \
  NS_IMETHOD GetMsgDatabase(nsIMsgWindow *msgWindow, nsIMsgDatabase **_retval); \
  NS_IMETHOD GetDBFolderInfoAndDB(nsIDBFolderInfo **folderInfo, nsIMsgDatabase **_retval); \
  NS_IMETHOD GetMessageHeader(nsMsgKey msgKey, nsIMsgDBHdr **_retval); \
  NS_IMETHOD ShouldStoreMsgOffline(nsMsgKey msgKey, PRBool *_retval); \
  NS_IMETHOD HasMsgOffline(nsMsgKey msgKey, PRBool *_retval); \
  NS_IMETHOD GetOfflineFileTransport(nsMsgKey msgKey, PRUint32 *offset, PRUint32 *size, nsITransport **_retval); \
  NS_IMETHOD DownloadMessagesForOffline(nsISupportsArray *messages, nsIMsgWindow *window); \
  NS_IMETHOD GetChildWithURI(const char *uri, PRBool deep, nsIMsgFolder **_retval); \
  NS_IMETHOD DownloadAllForOffline(nsIUrlListener *listener, nsIMsgWindow *window); \
  NS_IMETHOD EnableNotifications(PRInt32 notificationType, PRBool enable); \
  NS_IMETHOD GetRetentionSettings(nsIMsgRetentionSettings * *aRetentionSettings); \
  NS_IMETHOD SetRetentionSettings(nsIMsgRetentionSettings * aRetentionSettings); \
  NS_IMETHOD GetDownloadSettings(nsIMsgDownloadSettings * *aDownloadSettings); \
  NS_IMETHOD SetDownloadSettings(nsIMsgDownloadSettings * aDownloadSettings); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGFOLDER(_to) \
  NS_IMETHOD AddUnique(nsISupports *element) { return _to ## AddUnique(element); } \
  NS_IMETHOD ReplaceElement(nsISupports *element, nsISupports *newElement) { return _to ## ReplaceElement(element, newElement); } \
  NS_IMETHOD GetMessages(nsIMsgWindow *aMsgWindow, nsISimpleEnumerator **_retval) { return _to ## GetMessages(aMsgWindow, _retval); } \
  NS_IMETHOD StartFolderLoading(void) { return _to ## StartFolderLoading(); } \
  NS_IMETHOD EndFolderLoading(void) { return _to ## EndFolderLoading(); } \
  NS_IMETHOD UpdateFolder(nsIMsgWindow *aWindow) { return _to ## UpdateFolder(aWindow); } \
  NS_IMETHOD GetVisibleSubFolders(nsIEnumerator **_retval) { return _to ## GetVisibleSubFolders(_retval); } \
  NS_IMETHOD GetPrettiestName(PRUnichar * *aPrettiestName) { return _to ## GetPrettiestName(aPrettiestName); } \
  NS_IMETHOD GetFolderURL(char * *aFolderURL) { return _to ## GetFolderURL(aFolderURL); } \
  NS_IMETHOD GetDeleteIsMoveToTrash(PRBool *aDeleteIsMoveToTrash) { return _to ## GetDeleteIsMoveToTrash(aDeleteIsMoveToTrash); } \
  NS_IMETHOD SetDeleteIsMoveToTrash(PRBool aDeleteIsMoveToTrash) { return _to ## SetDeleteIsMoveToTrash(aDeleteIsMoveToTrash); } \
  NS_IMETHOD GetShowDeletedMessages(PRBool *aShowDeletedMessages) { return _to ## GetShowDeletedMessages(aShowDeletedMessages); } \
  NS_IMETHOD GetServer(nsIMsgIncomingServer * *aServer) { return _to ## GetServer(aServer); } \
  NS_IMETHOD GetIsServer(PRBool *aIsServer) { return _to ## GetIsServer(aIsServer); } \
  NS_IMETHOD GetCanSubscribe(PRBool *aCanSubscribe) { return _to ## GetCanSubscribe(aCanSubscribe); } \
  NS_IMETHOD GetCanFileMessages(PRBool *aCanFileMessages) { return _to ## GetCanFileMessages(aCanFileMessages); } \
  NS_IMETHOD GetNoSelect(PRBool *aNoSelect) { return _to ## GetNoSelect(aNoSelect); } \
  NS_IMETHOD GetCanCreateSubfolders(PRBool *aCanCreateSubfolders) { return _to ## GetCanCreateSubfolders(aCanCreateSubfolders); } \
  NS_IMETHOD GetCanRename(PRBool *aCanRename) { return _to ## GetCanRename(aCanRename); } \
  NS_IMETHOD GetCanCompact(PRBool *aCanCompact) { return _to ## GetCanCompact(aCanCompact); } \
  NS_IMETHOD GetRootFolder(nsIMsgFolder * *aRootFolder) { return _to ## GetRootFolder(aRootFolder); } \
  NS_IMETHOD GetFilterList(nsIMsgFilterList * *aFilterList) { return _to ## GetFilterList(aFilterList); } \
  NS_IMETHOD ForceDBClosed(void) { return _to ## ForceDBClosed(); } \
  NS_IMETHOD Delete(void) { return _to ## Delete(); } \
  NS_IMETHOD DeleteSubFolders(nsISupportsArray *folders, nsIMsgWindow *msgWindow) { return _to ## DeleteSubFolders(folders, msgWindow); } \
  NS_IMETHOD PropagateDelete(nsIMsgFolder *folder, PRBool deleteStorage) { return _to ## PropagateDelete(folder, deleteStorage); } \
  NS_IMETHOD RecursiveDelete(PRBool deleteStorage) { return _to ## RecursiveDelete(deleteStorage); } \
  NS_IMETHOD CreateSubfolder(const PRUnichar *folderName, nsIMsgWindow *msgWindow) { return _to ## CreateSubfolder(folderName, msgWindow); } \
  NS_IMETHOD AddSubfolder(nsAutoString *folderName, nsIMsgFolder **_retval) { return _to ## AddSubfolder(folderName, _retval); } \
  NS_IMETHOD CreateStorageIfMissing(nsIUrlListener *urlListener) { return _to ## CreateStorageIfMissing(urlListener); } \
  NS_IMETHOD Compact(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow) { return _to ## Compact(aListener, aMsgWindow); } \
  NS_IMETHOD CompactAll(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow) { return _to ## CompactAll(aListener, aMsgWindow); } \
  NS_IMETHOD EmptyTrash(nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener) { return _to ## EmptyTrash(aMsgWindow, aListener); } \
  NS_IMETHOD Rename(const PRUnichar *name, nsIMsgWindow *msgWindow) { return _to ## Rename(name, msgWindow); } \
  NS_IMETHOD ContainsChildNamed(const char *name, PRBool *_retval) { return _to ## ContainsChildNamed(name, _retval); } \
  NS_IMETHOD IsAncestorOf(nsIMsgFolder *folder, PRBool *_retval) { return _to ## IsAncestorOf(folder, _retval); } \
  NS_IMETHOD GenerateUniqueSubfolderName(const char *prefix, nsIMsgFolder *otherFolder, char **_retval) { return _to ## GenerateUniqueSubfolderName(prefix, otherFolder, _retval); } \
  NS_IMETHOD UpdateSummaryTotals(PRBool force) { return _to ## UpdateSummaryTotals(force); } \
  NS_IMETHOD SummaryChanged(void) { return _to ## SummaryChanged(); } \
  NS_IMETHOD GetNumUnread(PRBool deep, PRInt32 *_retval) { return _to ## GetNumUnread(deep, _retval); } \
  NS_IMETHOD GetTotalMessages(PRBool deep, PRInt32 *_retval) { return _to ## GetTotalMessages(deep, _retval); } \
  NS_IMETHOD GetHasNewMessages(PRBool *aHasNewMessages) { return _to ## GetHasNewMessages(aHasNewMessages); } \
  NS_IMETHOD SetHasNewMessages(PRBool aHasNewMessages) { return _to ## SetHasNewMessages(aHasNewMessages); } \
  NS_IMETHOD GetFirstNewMessage(nsIMsgDBHdr * *aFirstNewMessage) { return _to ## GetFirstNewMessage(aFirstNewMessage); } \
  NS_IMETHOD ClearNewMessages(void) { return _to ## ClearNewMessages(); } \
  NS_IMETHOD GetExpungedBytes(PRUint32 *aExpungedBytes) { return _to ## GetExpungedBytes(aExpungedBytes); } \
  NS_IMETHOD GetDeletable(PRBool *aDeletable) { return _to ## GetDeletable(aDeletable); } \
  NS_IMETHOD GetDisplayRecipients(PRBool *aDisplayRecipients) { return _to ## GetDisplayRecipients(aDisplayRecipients); } \
  NS_IMETHOD ManyHeadersToDownload(PRBool *_retval) { return _to ## ManyHeadersToDownload(_retval); } \
  NS_IMETHOD GetRequiresCleanup(PRBool *aRequiresCleanup) { return _to ## GetRequiresCleanup(aRequiresCleanup); } \
  NS_IMETHOD ClearRequiresCleanup(void) { return _to ## ClearRequiresCleanup(); } \
  NS_IMETHOD GetKnowsSearchNntpExtension(PRBool *aKnowsSearchNntpExtension) { return _to ## GetKnowsSearchNntpExtension(aKnowsSearchNntpExtension); } \
  NS_IMETHOD GetAllowsPosting(PRBool *aAllowsPosting) { return _to ## GetAllowsPosting(aAllowsPosting); } \
  NS_IMETHOD GetRelativePathName(char * *aRelativePathName) { return _to ## GetRelativePathName(aRelativePathName); } \
  NS_IMETHOD GetSizeOnDisk(PRUint32 *aSizeOnDisk) { return _to ## GetSizeOnDisk(aSizeOnDisk); } \
  NS_IMETHOD RememberPassword(const char *password) { return _to ## RememberPassword(password); } \
  NS_IMETHOD GetRememberedPassword(char * *aRememberedPassword) { return _to ## GetRememberedPassword(aRememberedPassword); } \
  NS_IMETHOD UserNeedsToAuthenticateForFolder(PRBool displayOnly, PRBool *_retval) { return _to ## UserNeedsToAuthenticateForFolder(displayOnly, _retval); } \
  NS_IMETHOD GetUsername(char * *aUsername) { return _to ## GetUsername(aUsername); } \
  NS_IMETHOD GetHostname(char * *aHostname) { return _to ## GetHostname(aHostname); } \
  NS_IMETHOD SetFlag(PRUint32 flag) { return _to ## SetFlag(flag); } \
  NS_IMETHOD ClearFlag(PRUint32 flag) { return _to ## ClearFlag(flag); } \
  NS_IMETHOD GetFlag(PRUint32 flag, PRBool *_retval) { return _to ## GetFlag(flag, _retval); } \
  NS_IMETHOD SetPrefFlag(void) { return _to ## SetPrefFlag(); } \
  NS_IMETHOD ToggleFlag(PRUint32 flag) { return _to ## ToggleFlag(flag); } \
  NS_IMETHOD OnFlagChange(PRUint32 flag) { return _to ## OnFlagChange(flag); } \
  NS_IMETHOD GetFlags(PRUint32 *aFlags) { return _to ## GetFlags(aFlags); } \
  NS_IMETHOD SetFlags(PRUint32 aFlags) { return _to ## SetFlags(aFlags); } \
  NS_IMETHOD RecursiveSetDeleteIsMoveToTrash(PRBool bVal) { return _to ## RecursiveSetDeleteIsMoveToTrash(bVal); } \
  NS_IMETHOD GetFoldersWithFlag(PRUint32 flags, PRUint32 resultsize, PRUint32 *numFolders, nsIMsgFolder **_retval) { return _to ## GetFoldersWithFlag(flags, resultsize, numFolders, _retval); } \
  NS_IMETHOD GetExpansionArray(nsISupportsArray *expansionArray) { return _to ## GetExpansionArray(expansionArray); } \
  NS_IMETHOD GetUriForMsg(nsIMsgDBHdr *msgHdr, char **_retval) { return _to ## GetUriForMsg(msgHdr, _retval); } \
  NS_IMETHOD DeleteMessages(nsISupportsArray *message, nsIMsgWindow *msgWindow, PRBool deleteStorage, PRBool isMove, nsIMsgCopyServiceListener *listener, PRBool allowUndo) { return _to ## DeleteMessages(message, msgWindow, deleteStorage, isMove, listener, allowUndo); } \
  NS_IMETHOD CopyMessages(nsIMsgFolder *srcFolder, nsISupportsArray *messages, PRBool isMove, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener, PRBool isFolder, PRBool allowUndo) { return _to ## CopyMessages(srcFolder, messages, isMove, msgWindow, listener, isFolder, allowUndo); } \
  NS_IMETHOD CopyFolder(nsIMsgFolder *srcFolder, PRBool isMoveFolder, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener) { return _to ## CopyFolder(srcFolder, isMoveFolder, msgWindow, listener); } \
  NS_IMETHOD CopyFileMessage(nsIFileSpec *fileSpec, nsIMsgDBHdr *msgToReplace, PRBool isDraft, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener) { return _to ## CopyFileMessage(fileSpec, msgToReplace, isDraft, msgWindow, listener); } \
  NS_IMETHOD AcquireSemaphore(nsISupports *semHolder) { return _to ## AcquireSemaphore(semHolder); } \
  NS_IMETHOD ReleaseSemaphore(nsISupports *semHolder) { return _to ## ReleaseSemaphore(semHolder); } \
  NS_IMETHOD TestSemaphore(nsISupports *semHolder, PRBool *_retval) { return _to ## TestSemaphore(semHolder, _retval); } \
  NS_IMETHOD GetLocked(PRBool *aLocked) { return _to ## GetLocked(aLocked); } \
  NS_IMETHOD GetNewMessages(nsIMsgWindow *aWindow) { return _to ## GetNewMessages(aWindow); } \
  NS_IMETHOD WriteToFolderCache(nsIMsgFolderCache *folderCache, PRBool deep) { return _to ## WriteToFolderCache(folderCache, deep); } \
  NS_IMETHOD GetCharset(PRUnichar * *aCharset) { return _to ## GetCharset(aCharset); } \
  NS_IMETHOD SetCharset(const PRUnichar * aCharset) { return _to ## SetCharset(aCharset); } \
  NS_IMETHOD GetCharsetOverride(PRBool *aCharsetOverride) { return _to ## GetCharsetOverride(aCharsetOverride); } \
  NS_IMETHOD SetCharsetOverride(PRBool aCharsetOverride) { return _to ## SetCharsetOverride(aCharsetOverride); } \
  NS_IMETHOD GetBiffState(PRUint32 *aBiffState) { return _to ## GetBiffState(aBiffState); } \
  NS_IMETHOD SetBiffState(PRUint32 aBiffState) { return _to ## SetBiffState(aBiffState); } \
  NS_IMETHOD GetNumNewMessages(PRInt32 *aNumNewMessages) { return _to ## GetNumNewMessages(aNumNewMessages); } \
  NS_IMETHOD SetNumNewMessages(PRInt32 aNumNewMessages) { return _to ## SetNumNewMessages(aNumNewMessages); } \
  NS_IMETHOD GetNewMessagesNotificationDescription(PRUnichar * *aNewMessagesNotificationDescription) { return _to ## GetNewMessagesNotificationDescription(aNewMessagesNotificationDescription); } \
  NS_IMETHOD GetGettingNewMessages(PRBool *aGettingNewMessages) { return _to ## GetGettingNewMessages(aGettingNewMessages); } \
  NS_IMETHOD SetGettingNewMessages(PRBool aGettingNewMessages) { return _to ## SetGettingNewMessages(aGettingNewMessages); } \
  NS_IMETHOD GetPath(nsIFileSpec * *aPath) { return _to ## GetPath(aPath); } \
  NS_IMETHOD SetPath(nsIFileSpec * aPath) { return _to ## SetPath(aPath); } \
  NS_IMETHOD GetBaseMessageURI(char * *aBaseMessageURI) { return _to ## GetBaseMessageURI(aBaseMessageURI); } \
  NS_IMETHOD GenerateMessageURI(nsMsgKey msgKey, char **_retval) { return _to ## GenerateMessageURI(msgKey, _retval); } \
  NS_IMETHOD AddMessageDispositionState(nsIMsgDBHdr *aMessage, nsMsgDispositionState aDispositionFlag) { return _to ## AddMessageDispositionState(aMessage, aDispositionFlag); } \
  NS_IMETHOD MarkMessagesRead(nsISupportsArray *messages, PRBool markRead) { return _to ## MarkMessagesRead(messages, markRead); } \
  NS_IMETHOD MarkAllMessagesRead(void) { return _to ## MarkAllMessagesRead(); } \
  NS_IMETHOD MarkMessagesFlagged(nsISupportsArray *messages, PRBool markFlagged) { return _to ## MarkMessagesFlagged(messages, markFlagged); } \
  NS_IMETHOD MarkThreadRead(nsIMsgThread *thread) { return _to ## MarkThreadRead(thread); } \
  NS_IMETHOD GetMsgDatabase(nsIMsgWindow *msgWindow, nsIMsgDatabase **_retval) { return _to ## GetMsgDatabase(msgWindow, _retval); } \
  NS_IMETHOD GetDBFolderInfoAndDB(nsIDBFolderInfo **folderInfo, nsIMsgDatabase **_retval) { return _to ## GetDBFolderInfoAndDB(folderInfo, _retval); } \
  NS_IMETHOD GetMessageHeader(nsMsgKey msgKey, nsIMsgDBHdr **_retval) { return _to ## GetMessageHeader(msgKey, _retval); } \
  NS_IMETHOD ShouldStoreMsgOffline(nsMsgKey msgKey, PRBool *_retval) { return _to ## ShouldStoreMsgOffline(msgKey, _retval); } \
  NS_IMETHOD HasMsgOffline(nsMsgKey msgKey, PRBool *_retval) { return _to ## HasMsgOffline(msgKey, _retval); } \
  NS_IMETHOD GetOfflineFileTransport(nsMsgKey msgKey, PRUint32 *offset, PRUint32 *size, nsITransport **_retval) { return _to ## GetOfflineFileTransport(msgKey, offset, size, _retval); } \
  NS_IMETHOD DownloadMessagesForOffline(nsISupportsArray *messages, nsIMsgWindow *window) { return _to ## DownloadMessagesForOffline(messages, window); } \
  NS_IMETHOD GetChildWithURI(const char *uri, PRBool deep, nsIMsgFolder **_retval) { return _to ## GetChildWithURI(uri, deep, _retval); } \
  NS_IMETHOD DownloadAllForOffline(nsIUrlListener *listener, nsIMsgWindow *window) { return _to ## DownloadAllForOffline(listener, window); } \
  NS_IMETHOD EnableNotifications(PRInt32 notificationType, PRBool enable) { return _to ## EnableNotifications(notificationType, enable); } \
  NS_IMETHOD GetRetentionSettings(nsIMsgRetentionSettings * *aRetentionSettings) { return _to ## GetRetentionSettings(aRetentionSettings); } \
  NS_IMETHOD SetRetentionSettings(nsIMsgRetentionSettings * aRetentionSettings) { return _to ## SetRetentionSettings(aRetentionSettings); } \
  NS_IMETHOD GetDownloadSettings(nsIMsgDownloadSettings * *aDownloadSettings) { return _to ## GetDownloadSettings(aDownloadSettings); } \
  NS_IMETHOD SetDownloadSettings(nsIMsgDownloadSettings * aDownloadSettings) { return _to ## SetDownloadSettings(aDownloadSettings); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGFOLDER(_to) \
  NS_IMETHOD AddUnique(nsISupports *element) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> AddUnique(element); } \
  NS_IMETHOD ReplaceElement(nsISupports *element, nsISupports *newElement) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ReplaceElement(element, newElement); } \
  NS_IMETHOD GetMessages(nsIMsgWindow *aMsgWindow, nsISimpleEnumerator **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetMessages(aMsgWindow, _retval); } \
  NS_IMETHOD StartFolderLoading(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> StartFolderLoading(); } \
  NS_IMETHOD EndFolderLoading(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> EndFolderLoading(); } \
  NS_IMETHOD UpdateFolder(nsIMsgWindow *aWindow) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> UpdateFolder(aWindow); } \
  NS_IMETHOD GetVisibleSubFolders(nsIEnumerator **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetVisibleSubFolders(_retval); } \
  NS_IMETHOD GetPrettiestName(PRUnichar * *aPrettiestName) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetPrettiestName(aPrettiestName); } \
  NS_IMETHOD GetFolderURL(char * *aFolderURL) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetFolderURL(aFolderURL); } \
  NS_IMETHOD GetDeleteIsMoveToTrash(PRBool *aDeleteIsMoveToTrash) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetDeleteIsMoveToTrash(aDeleteIsMoveToTrash); } \
  NS_IMETHOD SetDeleteIsMoveToTrash(PRBool aDeleteIsMoveToTrash) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetDeleteIsMoveToTrash(aDeleteIsMoveToTrash); } \
  NS_IMETHOD GetShowDeletedMessages(PRBool *aShowDeletedMessages) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetShowDeletedMessages(aShowDeletedMessages); } \
  NS_IMETHOD GetServer(nsIMsgIncomingServer * *aServer) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetServer(aServer); } \
  NS_IMETHOD GetIsServer(PRBool *aIsServer) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetIsServer(aIsServer); } \
  NS_IMETHOD GetCanSubscribe(PRBool *aCanSubscribe) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetCanSubscribe(aCanSubscribe); } \
  NS_IMETHOD GetCanFileMessages(PRBool *aCanFileMessages) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetCanFileMessages(aCanFileMessages); } \
  NS_IMETHOD GetNoSelect(PRBool *aNoSelect) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetNoSelect(aNoSelect); } \
  NS_IMETHOD GetCanCreateSubfolders(PRBool *aCanCreateSubfolders) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetCanCreateSubfolders(aCanCreateSubfolders); } \
  NS_IMETHOD GetCanRename(PRBool *aCanRename) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetCanRename(aCanRename); } \
  NS_IMETHOD GetCanCompact(PRBool *aCanCompact) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetCanCompact(aCanCompact); } \
  NS_IMETHOD GetRootFolder(nsIMsgFolder * *aRootFolder) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetRootFolder(aRootFolder); } \
  NS_IMETHOD GetFilterList(nsIMsgFilterList * *aFilterList) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetFilterList(aFilterList); } \
  NS_IMETHOD ForceDBClosed(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ForceDBClosed(); } \
  NS_IMETHOD Delete(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> Delete(); } \
  NS_IMETHOD DeleteSubFolders(nsISupportsArray *folders, nsIMsgWindow *msgWindow) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> DeleteSubFolders(folders, msgWindow); } \
  NS_IMETHOD PropagateDelete(nsIMsgFolder *folder, PRBool deleteStorage) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> PropagateDelete(folder, deleteStorage); } \
  NS_IMETHOD RecursiveDelete(PRBool deleteStorage) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> RecursiveDelete(deleteStorage); } \
  NS_IMETHOD CreateSubfolder(const PRUnichar *folderName, nsIMsgWindow *msgWindow) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> CreateSubfolder(folderName, msgWindow); } \
  NS_IMETHOD AddSubfolder(nsAutoString *folderName, nsIMsgFolder **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> AddSubfolder(folderName, _retval); } \
  NS_IMETHOD CreateStorageIfMissing(nsIUrlListener *urlListener) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> CreateStorageIfMissing(urlListener); } \
  NS_IMETHOD Compact(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> Compact(aListener, aMsgWindow); } \
  NS_IMETHOD CompactAll(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> CompactAll(aListener, aMsgWindow); } \
  NS_IMETHOD EmptyTrash(nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> EmptyTrash(aMsgWindow, aListener); } \
  NS_IMETHOD Rename(const PRUnichar *name, nsIMsgWindow *msgWindow) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> Rename(name, msgWindow); } \
  NS_IMETHOD ContainsChildNamed(const char *name, PRBool *_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ContainsChildNamed(name, _retval); } \
  NS_IMETHOD IsAncestorOf(nsIMsgFolder *folder, PRBool *_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> IsAncestorOf(folder, _retval); } \
  NS_IMETHOD GenerateUniqueSubfolderName(const char *prefix, nsIMsgFolder *otherFolder, char **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GenerateUniqueSubfolderName(prefix, otherFolder, _retval); } \
  NS_IMETHOD UpdateSummaryTotals(PRBool force) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> UpdateSummaryTotals(force); } \
  NS_IMETHOD SummaryChanged(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> SummaryChanged(); } \
  NS_IMETHOD GetNumUnread(PRBool deep, PRInt32 *_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetNumUnread(deep, _retval); } \
  NS_IMETHOD GetTotalMessages(PRBool deep, PRInt32 *_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetTotalMessages(deep, _retval); } \
  NS_IMETHOD GetHasNewMessages(PRBool *aHasNewMessages) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetHasNewMessages(aHasNewMessages); } \
  NS_IMETHOD SetHasNewMessages(PRBool aHasNewMessages) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetHasNewMessages(aHasNewMessages); } \
  NS_IMETHOD GetFirstNewMessage(nsIMsgDBHdr * *aFirstNewMessage) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetFirstNewMessage(aFirstNewMessage); } \
  NS_IMETHOD ClearNewMessages(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ClearNewMessages(); } \
  NS_IMETHOD GetExpungedBytes(PRUint32 *aExpungedBytes) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetExpungedBytes(aExpungedBytes); } \
  NS_IMETHOD GetDeletable(PRBool *aDeletable) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetDeletable(aDeletable); } \
  NS_IMETHOD GetDisplayRecipients(PRBool *aDisplayRecipients) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetDisplayRecipients(aDisplayRecipients); } \
  NS_IMETHOD ManyHeadersToDownload(PRBool *_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ManyHeadersToDownload(_retval); } \
  NS_IMETHOD GetRequiresCleanup(PRBool *aRequiresCleanup) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetRequiresCleanup(aRequiresCleanup); } \
  NS_IMETHOD ClearRequiresCleanup(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ClearRequiresCleanup(); } \
  NS_IMETHOD GetKnowsSearchNntpExtension(PRBool *aKnowsSearchNntpExtension) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetKnowsSearchNntpExtension(aKnowsSearchNntpExtension); } \
  NS_IMETHOD GetAllowsPosting(PRBool *aAllowsPosting) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetAllowsPosting(aAllowsPosting); } \
  NS_IMETHOD GetRelativePathName(char * *aRelativePathName) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetRelativePathName(aRelativePathName); } \
  NS_IMETHOD GetSizeOnDisk(PRUint32 *aSizeOnDisk) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetSizeOnDisk(aSizeOnDisk); } \
  NS_IMETHOD RememberPassword(const char *password) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> RememberPassword(password); } \
  NS_IMETHOD GetRememberedPassword(char * *aRememberedPassword) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetRememberedPassword(aRememberedPassword); } \
  NS_IMETHOD UserNeedsToAuthenticateForFolder(PRBool displayOnly, PRBool *_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> UserNeedsToAuthenticateForFolder(displayOnly, _retval); } \
  NS_IMETHOD GetUsername(char * *aUsername) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetUsername(aUsername); } \
  NS_IMETHOD GetHostname(char * *aHostname) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetHostname(aHostname); } \
  NS_IMETHOD SetFlag(PRUint32 flag) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> SetFlag(flag); } \
  NS_IMETHOD ClearFlag(PRUint32 flag) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ClearFlag(flag); } \
  NS_IMETHOD GetFlag(PRUint32 flag, PRBool *_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetFlag(flag, _retval); } \
  NS_IMETHOD SetPrefFlag(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> SetPrefFlag(); } \
  NS_IMETHOD ToggleFlag(PRUint32 flag) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ToggleFlag(flag); } \
  NS_IMETHOD OnFlagChange(PRUint32 flag) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> OnFlagChange(flag); } \
  NS_IMETHOD GetFlags(PRUint32 *aFlags) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetFlags(aFlags); } \
  NS_IMETHOD SetFlags(PRUint32 aFlags) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetFlags(aFlags); } \
  NS_IMETHOD RecursiveSetDeleteIsMoveToTrash(PRBool bVal) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> RecursiveSetDeleteIsMoveToTrash(bVal); } \
  NS_IMETHOD GetFoldersWithFlag(PRUint32 flags, PRUint32 resultsize, PRUint32 *numFolders, nsIMsgFolder **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetFoldersWithFlag(flags, resultsize, numFolders, _retval); } \
  NS_IMETHOD GetExpansionArray(nsISupportsArray *expansionArray) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetExpansionArray(expansionArray); } \
  NS_IMETHOD GetUriForMsg(nsIMsgDBHdr *msgHdr, char **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetUriForMsg(msgHdr, _retval); } \
  NS_IMETHOD DeleteMessages(nsISupportsArray *message, nsIMsgWindow *msgWindow, PRBool deleteStorage, PRBool isMove, nsIMsgCopyServiceListener *listener, PRBool allowUndo) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> DeleteMessages(message, msgWindow, deleteStorage, isMove, listener, allowUndo); } \
  NS_IMETHOD CopyMessages(nsIMsgFolder *srcFolder, nsISupportsArray *messages, PRBool isMove, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener, PRBool isFolder, PRBool allowUndo) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> CopyMessages(srcFolder, messages, isMove, msgWindow, listener, isFolder, allowUndo); } \
  NS_IMETHOD CopyFolder(nsIMsgFolder *srcFolder, PRBool isMoveFolder, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> CopyFolder(srcFolder, isMoveFolder, msgWindow, listener); } \
  NS_IMETHOD CopyFileMessage(nsIFileSpec *fileSpec, nsIMsgDBHdr *msgToReplace, PRBool isDraft, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> CopyFileMessage(fileSpec, msgToReplace, isDraft, msgWindow, listener); } \
  NS_IMETHOD AcquireSemaphore(nsISupports *semHolder) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> AcquireSemaphore(semHolder); } \
  NS_IMETHOD ReleaseSemaphore(nsISupports *semHolder) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ReleaseSemaphore(semHolder); } \
  NS_IMETHOD TestSemaphore(nsISupports *semHolder, PRBool *_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> TestSemaphore(semHolder, _retval); } \
  NS_IMETHOD GetLocked(PRBool *aLocked) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetLocked(aLocked); } \
  NS_IMETHOD GetNewMessages(nsIMsgWindow *aWindow) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetNewMessages(aWindow); } \
  NS_IMETHOD WriteToFolderCache(nsIMsgFolderCache *folderCache, PRBool deep) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> WriteToFolderCache(folderCache, deep); } \
  NS_IMETHOD GetCharset(PRUnichar * *aCharset) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetCharset(aCharset); } \
  NS_IMETHOD SetCharset(const PRUnichar * aCharset) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetCharset(aCharset); } \
  NS_IMETHOD GetCharsetOverride(PRBool *aCharsetOverride) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetCharsetOverride(aCharsetOverride); } \
  NS_IMETHOD SetCharsetOverride(PRBool aCharsetOverride) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetCharsetOverride(aCharsetOverride); } \
  NS_IMETHOD GetBiffState(PRUint32 *aBiffState) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetBiffState(aBiffState); } \
  NS_IMETHOD SetBiffState(PRUint32 aBiffState) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetBiffState(aBiffState); } \
  NS_IMETHOD GetNumNewMessages(PRInt32 *aNumNewMessages) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetNumNewMessages(aNumNewMessages); } \
  NS_IMETHOD SetNumNewMessages(PRInt32 aNumNewMessages) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetNumNewMessages(aNumNewMessages); } \
  NS_IMETHOD GetNewMessagesNotificationDescription(PRUnichar * *aNewMessagesNotificationDescription) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetNewMessagesNotificationDescription(aNewMessagesNotificationDescription); } \
  NS_IMETHOD GetGettingNewMessages(PRBool *aGettingNewMessages) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetGettingNewMessages(aGettingNewMessages); } \
  NS_IMETHOD SetGettingNewMessages(PRBool aGettingNewMessages) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetGettingNewMessages(aGettingNewMessages); } \
  NS_IMETHOD GetPath(nsIFileSpec * *aPath) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetPath(aPath); } \
  NS_IMETHOD SetPath(nsIFileSpec * aPath) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetPath(aPath); } \
  NS_IMETHOD GetBaseMessageURI(char * *aBaseMessageURI) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetBaseMessageURI(aBaseMessageURI); } \
  NS_IMETHOD GenerateMessageURI(nsMsgKey msgKey, char **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GenerateMessageURI(msgKey, _retval); } \
  NS_IMETHOD AddMessageDispositionState(nsIMsgDBHdr *aMessage, nsMsgDispositionState aDispositionFlag) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> AddMessageDispositionState(aMessage, aDispositionFlag); } \
  NS_IMETHOD MarkMessagesRead(nsISupportsArray *messages, PRBool markRead) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> MarkMessagesRead(messages, markRead); } \
  NS_IMETHOD MarkAllMessagesRead(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> MarkAllMessagesRead(); } \
  NS_IMETHOD MarkMessagesFlagged(nsISupportsArray *messages, PRBool markFlagged) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> MarkMessagesFlagged(messages, markFlagged); } \
  NS_IMETHOD MarkThreadRead(nsIMsgThread *thread) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> MarkThreadRead(thread); } \
  NS_IMETHOD GetMsgDatabase(nsIMsgWindow *msgWindow, nsIMsgDatabase **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetMsgDatabase(msgWindow, _retval); } \
  NS_IMETHOD GetDBFolderInfoAndDB(nsIDBFolderInfo **folderInfo, nsIMsgDatabase **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetDBFolderInfoAndDB(folderInfo, _retval); } \
  NS_IMETHOD GetMessageHeader(nsMsgKey msgKey, nsIMsgDBHdr **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetMessageHeader(msgKey, _retval); } \
  NS_IMETHOD ShouldStoreMsgOffline(nsMsgKey msgKey, PRBool *_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ShouldStoreMsgOffline(msgKey, _retval); } \
  NS_IMETHOD HasMsgOffline(nsMsgKey msgKey, PRBool *_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> HasMsgOffline(msgKey, _retval); } \
  NS_IMETHOD GetOfflineFileTransport(nsMsgKey msgKey, PRUint32 *offset, PRUint32 *size, nsITransport **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetOfflineFileTransport(msgKey, offset, size, _retval); } \
  NS_IMETHOD DownloadMessagesForOffline(nsISupportsArray *messages, nsIMsgWindow *window) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> DownloadMessagesForOffline(messages, window); } \
  NS_IMETHOD GetChildWithURI(const char *uri, PRBool deep, nsIMsgFolder **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetChildWithURI(uri, deep, _retval); } \
  NS_IMETHOD DownloadAllForOffline(nsIUrlListener *listener, nsIMsgWindow *window) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> DownloadAllForOffline(listener, window); } \
  NS_IMETHOD EnableNotifications(PRInt32 notificationType, PRBool enable) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> EnableNotifications(notificationType, enable); } \
  NS_IMETHOD GetRetentionSettings(nsIMsgRetentionSettings * *aRetentionSettings) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetRetentionSettings(aRetentionSettings); } \
  NS_IMETHOD SetRetentionSettings(nsIMsgRetentionSettings * aRetentionSettings) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetRetentionSettings(aRetentionSettings); } \
  NS_IMETHOD GetDownloadSettings(nsIMsgDownloadSettings * *aDownloadSettings) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetDownloadSettings(aDownloadSettings); } \
  NS_IMETHOD SetDownloadSettings(nsIMsgDownloadSettings * aDownloadSettings) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetDownloadSettings(aDownloadSettings); } 

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

/* Header file */
class nsMsgFolder : public nsIMsgFolder
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGFOLDER

  nsMsgFolder();
  virtual ~nsMsgFolder();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgFolder, nsIMsgFolder)

nsMsgFolder::nsMsgFolder()
{
  NS_INIT_ISUPPORTS();
  /* member initializers and constructor code */
}

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

/* void AddUnique (in nsISupports element); */
NS_IMETHODIMP nsMsgFolder::AddUnique(nsISupports *element)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void ReplaceElement (in nsISupports element, in nsISupports newElement); */
NS_IMETHODIMP nsMsgFolder::ReplaceElement(nsISupports *element, nsISupports *newElement)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getMessages (in nsIMsgWindow aMsgWindow); */
NS_IMETHODIMP nsMsgFolder::GetMessages(nsIMsgWindow *aMsgWindow, nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void startFolderLoading (); */
NS_IMETHODIMP nsMsgFolder::StartFolderLoading()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void endFolderLoading (); */
NS_IMETHODIMP nsMsgFolder::EndFolderLoading()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void updateFolder (in nsIMsgWindow aWindow); */
NS_IMETHODIMP nsMsgFolder::UpdateFolder(nsIMsgWindow *aWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIEnumerator getVisibleSubFolders (); */
NS_IMETHODIMP nsMsgFolder::GetVisibleSubFolders(nsIEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring prettiestName; */
NS_IMETHODIMP nsMsgFolder::GetPrettiestName(PRUnichar * *aPrettiestName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute string folderURL; */
NS_IMETHODIMP nsMsgFolder::GetFolderURL(char * *aFolderURL)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean deleteIsMoveToTrash; */
NS_IMETHODIMP nsMsgFolder::GetDeleteIsMoveToTrash(PRBool *aDeleteIsMoveToTrash)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetDeleteIsMoveToTrash(PRBool aDeleteIsMoveToTrash)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean showDeletedMessages; */
NS_IMETHODIMP nsMsgFolder::GetShowDeletedMessages(PRBool *aShowDeletedMessages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMsgIncomingServer server; */
NS_IMETHODIMP nsMsgFolder::GetServer(nsIMsgIncomingServer * *aServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean isServer; */
NS_IMETHODIMP nsMsgFolder::GetIsServer(PRBool *aIsServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean canSubscribe; */
NS_IMETHODIMP nsMsgFolder::GetCanSubscribe(PRBool *aCanSubscribe)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean canFileMessages; */
NS_IMETHODIMP nsMsgFolder::GetCanFileMessages(PRBool *aCanFileMessages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean noSelect; */
NS_IMETHODIMP nsMsgFolder::GetNoSelect(PRBool *aNoSelect)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean canCreateSubfolders; */
NS_IMETHODIMP nsMsgFolder::GetCanCreateSubfolders(PRBool *aCanCreateSubfolders)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean canRename; */
NS_IMETHODIMP nsMsgFolder::GetCanRename(PRBool *aCanRename)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean canCompact; */
NS_IMETHODIMP nsMsgFolder::GetCanCompact(PRBool *aCanCompact)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMsgFolder rootFolder; */
NS_IMETHODIMP nsMsgFolder::GetRootFolder(nsIMsgFolder * *aRootFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMsgFilterList filterList; */
NS_IMETHODIMP nsMsgFolder::GetFilterList(nsIMsgFilterList * *aFilterList)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void ForceDBClosed (); */
NS_IMETHODIMP nsMsgFolder::ForceDBClosed()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void Delete (); */
NS_IMETHODIMP nsMsgFolder::Delete()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteSubFolders (in nsISupportsArray folders, in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::DeleteSubFolders(nsISupportsArray *folders, nsIMsgWindow *msgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void propagateDelete (in nsIMsgFolder folder, in boolean deleteStorage); */
NS_IMETHODIMP nsMsgFolder::PropagateDelete(nsIMsgFolder *folder, PRBool deleteStorage)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void recursiveDelete (in boolean deleteStorage); */
NS_IMETHODIMP nsMsgFolder::RecursiveDelete(PRBool deleteStorage)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createSubfolder (in wstring folderName, in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::CreateSubfolder(const PRUnichar *folderName, nsIMsgWindow *msgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] nsIMsgFolder addSubfolder (in nsAutoString folderName); */
NS_IMETHODIMP nsMsgFolder::AddSubfolder(nsAutoString *folderName, nsIMsgFolder **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createStorageIfMissing (in nsIUrlListener urlListener); */
NS_IMETHODIMP nsMsgFolder::CreateStorageIfMissing(nsIUrlListener *urlListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void compact (in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow); */
NS_IMETHODIMP nsMsgFolder::Compact(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void compactAll (in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow); */
NS_IMETHODIMP nsMsgFolder::CompactAll(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void emptyTrash (in nsIMsgWindow aMsgWindow, in nsIUrlListener aListener); */
NS_IMETHODIMP nsMsgFolder::EmptyTrash(nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void rename (in wstring name, in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::Rename(const PRUnichar *name, nsIMsgWindow *msgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean containsChildNamed (in string name); */
NS_IMETHODIMP nsMsgFolder::ContainsChildNamed(const char *name, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean isAncestorOf (in nsIMsgFolder folder); */
NS_IMETHODIMP nsMsgFolder::IsAncestorOf(nsIMsgFolder *folder, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string generateUniqueSubfolderName (in string prefix, in nsIMsgFolder otherFolder); */
NS_IMETHODIMP nsMsgFolder::GenerateUniqueSubfolderName(const char *prefix, nsIMsgFolder *otherFolder, char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void updateSummaryTotals (in boolean force); */
NS_IMETHODIMP nsMsgFolder::UpdateSummaryTotals(PRBool force)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void summaryChanged (); */
NS_IMETHODIMP nsMsgFolder::SummaryChanged()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* long getNumUnread (in boolean deep); */
NS_IMETHODIMP nsMsgFolder::GetNumUnread(PRBool deep, PRInt32 *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* long getTotalMessages (in boolean deep); */
NS_IMETHODIMP nsMsgFolder::GetTotalMessages(PRBool deep, PRInt32 *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean hasNewMessages; */
NS_IMETHODIMP nsMsgFolder::GetHasNewMessages(PRBool *aHasNewMessages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetHasNewMessages(PRBool aHasNewMessages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMsgDBHdr firstNewMessage; */
NS_IMETHODIMP nsMsgFolder::GetFirstNewMessage(nsIMsgDBHdr * *aFirstNewMessage)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void clearNewMessages (); */
NS_IMETHODIMP nsMsgFolder::ClearNewMessages()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long expungedBytes; */
NS_IMETHODIMP nsMsgFolder::GetExpungedBytes(PRUint32 *aExpungedBytes)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean deletable; */
NS_IMETHODIMP nsMsgFolder::GetDeletable(PRBool *aDeletable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean displayRecipients; */
NS_IMETHODIMP nsMsgFolder::GetDisplayRecipients(PRBool *aDisplayRecipients)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean manyHeadersToDownload (); */
NS_IMETHODIMP nsMsgFolder::ManyHeadersToDownload(PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean requiresCleanup; */
NS_IMETHODIMP nsMsgFolder::GetRequiresCleanup(PRBool *aRequiresCleanup)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void clearRequiresCleanup (); */
NS_IMETHODIMP nsMsgFolder::ClearRequiresCleanup()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean knowsSearchNntpExtension; */
NS_IMETHODIMP nsMsgFolder::GetKnowsSearchNntpExtension(PRBool *aKnowsSearchNntpExtension)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean allowsPosting; */
NS_IMETHODIMP nsMsgFolder::GetAllowsPosting(PRBool *aAllowsPosting)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute string relativePathName; */
NS_IMETHODIMP nsMsgFolder::GetRelativePathName(char * *aRelativePathName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long sizeOnDisk; */
NS_IMETHODIMP nsMsgFolder::GetSizeOnDisk(PRUint32 *aSizeOnDisk)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void rememberPassword (in string password); */
NS_IMETHODIMP nsMsgFolder::RememberPassword(const char *password)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute string rememberedPassword; */
NS_IMETHODIMP nsMsgFolder::GetRememberedPassword(char * *aRememberedPassword)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean userNeedsToAuthenticateForFolder (in boolean displayOnly); */
NS_IMETHODIMP nsMsgFolder::UserNeedsToAuthenticateForFolder(PRBool displayOnly, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute string username; */
NS_IMETHODIMP nsMsgFolder::GetUsername(char * *aUsername)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute string hostname; */
NS_IMETHODIMP nsMsgFolder::GetHostname(char * *aHostname)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setFlag (in unsigned long flag); */
NS_IMETHODIMP nsMsgFolder::SetFlag(PRUint32 flag)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void clearFlag (in unsigned long flag); */
NS_IMETHODIMP nsMsgFolder::ClearFlag(PRUint32 flag)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean getFlag (in unsigned long flag); */
NS_IMETHODIMP nsMsgFolder::GetFlag(PRUint32 flag, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setPrefFlag (); */
NS_IMETHODIMP nsMsgFolder::SetPrefFlag()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void toggleFlag (in unsigned long flag); */
NS_IMETHODIMP nsMsgFolder::ToggleFlag(PRUint32 flag)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onFlagChange (in unsigned long flag); */
NS_IMETHODIMP nsMsgFolder::OnFlagChange(PRUint32 flag)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long flags; */
NS_IMETHODIMP nsMsgFolder::GetFlags(PRUint32 *aFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetFlags(PRUint32 aFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void RecursiveSetDeleteIsMoveToTrash (in boolean bVal); */
NS_IMETHODIMP nsMsgFolder::RecursiveSetDeleteIsMoveToTrash(PRBool bVal)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgFolder getFoldersWithFlag (in unsigned long flags, in unsigned long resultsize, out unsigned long numFolders); */
NS_IMETHODIMP nsMsgFolder::GetFoldersWithFlag(PRUint32 flags, PRUint32 resultsize, PRUint32 *numFolders, nsIMsgFolder **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getExpansionArray (in nsISupportsArray expansionArray); */
NS_IMETHODIMP nsMsgFolder::GetExpansionArray(nsISupportsArray *expansionArray)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string getUriForMsg (in nsIMsgDBHdr msgHdr); */
NS_IMETHODIMP nsMsgFolder::GetUriForMsg(nsIMsgDBHdr *msgHdr, char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteMessages (in nsISupportsArray message, in nsIMsgWindow msgWindow, in boolean deleteStorage, in boolean isMove, in nsIMsgCopyServiceListener listener, in boolean allowUndo); */
NS_IMETHODIMP nsMsgFolder::DeleteMessages(nsISupportsArray *message, nsIMsgWindow *msgWindow, PRBool deleteStorage, PRBool isMove, nsIMsgCopyServiceListener *listener, PRBool allowUndo)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void copyMessages (in nsIMsgFolder srcFolder, in nsISupportsArray messages, in boolean isMove, in nsIMsgWindow msgWindow, in nsIMsgCopyServiceListener listener, in boolean isFolder, in boolean allowUndo); */
NS_IMETHODIMP nsMsgFolder::CopyMessages(nsIMsgFolder *srcFolder, nsISupportsArray *messages, PRBool isMove, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener, PRBool isFolder, PRBool allowUndo)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void copyFolder (in nsIMsgFolder srcFolder, in boolean isMoveFolder, in nsIMsgWindow msgWindow, in nsIMsgCopyServiceListener listener); */
NS_IMETHODIMP nsMsgFolder::CopyFolder(nsIMsgFolder *srcFolder, PRBool isMoveFolder, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void copyFileMessage (in nsIFileSpec fileSpec, in nsIMsgDBHdr msgToReplace, in boolean isDraft, in nsIMsgWindow msgWindow, in nsIMsgCopyServiceListener listener); */
NS_IMETHODIMP nsMsgFolder::CopyFileMessage(nsIFileSpec *fileSpec, nsIMsgDBHdr *msgToReplace, PRBool isDraft, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void acquireSemaphore (in nsISupports semHolder); */
NS_IMETHODIMP nsMsgFolder::AcquireSemaphore(nsISupports *semHolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void releaseSemaphore (in nsISupports semHolder); */
NS_IMETHODIMP nsMsgFolder::ReleaseSemaphore(nsISupports *semHolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean testSemaphore (in nsISupports semHolder); */
NS_IMETHODIMP nsMsgFolder::TestSemaphore(nsISupports *semHolder, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean locked; */
NS_IMETHODIMP nsMsgFolder::GetLocked(PRBool *aLocked)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getNewMessages (in nsIMsgWindow aWindow); */
NS_IMETHODIMP nsMsgFolder::GetNewMessages(nsIMsgWindow *aWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void writeToFolderCache (in nsIMsgFolderCache folderCache, in boolean deep); */
NS_IMETHODIMP nsMsgFolder::WriteToFolderCache(nsIMsgFolderCache *folderCache, PRBool deep)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring charset; */
NS_IMETHODIMP nsMsgFolder::GetCharset(PRUnichar * *aCharset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetCharset(const PRUnichar * aCharset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean charsetOverride; */
NS_IMETHODIMP nsMsgFolder::GetCharsetOverride(PRBool *aCharsetOverride)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetCharsetOverride(PRBool aCharsetOverride)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long biffState; */
NS_IMETHODIMP nsMsgFolder::GetBiffState(PRUint32 *aBiffState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetBiffState(PRUint32 aBiffState)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute long numNewMessages; */
NS_IMETHODIMP nsMsgFolder::GetNumNewMessages(PRInt32 *aNumNewMessages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetNumNewMessages(PRInt32 aNumNewMessages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring newMessagesNotificationDescription; */
NS_IMETHODIMP nsMsgFolder::GetNewMessagesNotificationDescription(PRUnichar * *aNewMessagesNotificationDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean gettingNewMessages; */
NS_IMETHODIMP nsMsgFolder::GetGettingNewMessages(PRBool *aGettingNewMessages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetGettingNewMessages(PRBool aGettingNewMessages)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIFileSpec path; */
NS_IMETHODIMP nsMsgFolder::GetPath(nsIFileSpec * *aPath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetPath(nsIFileSpec * aPath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute string baseMessageURI; */
NS_IMETHODIMP nsMsgFolder::GetBaseMessageURI(char * *aBaseMessageURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string generateMessageURI (in nsMsgKey msgKey); */
NS_IMETHODIMP nsMsgFolder::GenerateMessageURI(nsMsgKey msgKey, char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addMessageDispositionState (in nsIMsgDBHdr aMessage, in nsMsgDispositionState aDispositionFlag); */
NS_IMETHODIMP nsMsgFolder::AddMessageDispositionState(nsIMsgDBHdr *aMessage, nsMsgDispositionState aDispositionFlag)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void markMessagesRead (in nsISupportsArray messages, in boolean markRead); */
NS_IMETHODIMP nsMsgFolder::MarkMessagesRead(nsISupportsArray *messages, PRBool markRead)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void markAllMessagesRead (); */
NS_IMETHODIMP nsMsgFolder::MarkAllMessagesRead()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void markMessagesFlagged (in nsISupportsArray messages, in boolean markFlagged); */
NS_IMETHODIMP nsMsgFolder::MarkMessagesFlagged(nsISupportsArray *messages, PRBool markFlagged)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void markThreadRead (in nsIMsgThread thread); */
NS_IMETHODIMP nsMsgFolder::MarkThreadRead(nsIMsgThread *thread)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgDatabase getMsgDatabase (in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::GetMsgDatabase(nsIMsgWindow *msgWindow, nsIMsgDatabase **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgDatabase getDBFolderInfoAndDB (out nsIDBFolderInfo folderInfo); */
NS_IMETHODIMP nsMsgFolder::GetDBFolderInfoAndDB(nsIDBFolderInfo **folderInfo, nsIMsgDatabase **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgDBHdr GetMessageHeader (in nsMsgKey msgKey); */
NS_IMETHODIMP nsMsgFolder::GetMessageHeader(nsMsgKey msgKey, nsIMsgDBHdr **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean shouldStoreMsgOffline (in nsMsgKey msgKey); */
NS_IMETHODIMP nsMsgFolder::ShouldStoreMsgOffline(nsMsgKey msgKey, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean hasMsgOffline (in nsMsgKey msgKey); */
NS_IMETHODIMP nsMsgFolder::HasMsgOffline(nsMsgKey msgKey, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsITransport getOfflineFileTransport (in nsMsgKey msgKey, out PRUint32 offset, out PRUint32 size); */
NS_IMETHODIMP nsMsgFolder::GetOfflineFileTransport(nsMsgKey msgKey, PRUint32 *offset, PRUint32 *size, nsITransport **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void DownloadMessagesForOffline (in nsISupportsArray messages, in nsIMsgWindow window); */
NS_IMETHODIMP nsMsgFolder::DownloadMessagesForOffline(nsISupportsArray *messages, nsIMsgWindow *window)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgFolder getChildWithURI (in string uri, in boolean deep); */
NS_IMETHODIMP nsMsgFolder::GetChildWithURI(const char *uri, PRBool deep, nsIMsgFolder **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void downloadAllForOffline (in nsIUrlListener listener, in nsIMsgWindow window); */
NS_IMETHODIMP nsMsgFolder::DownloadAllForOffline(nsIUrlListener *listener, nsIMsgWindow *window)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void enableNotifications (in long notificationType, in boolean enable); */
NS_IMETHODIMP nsMsgFolder::EnableNotifications(PRInt32 notificationType, PRBool enable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIMsgRetentionSettings retentionSettings; */
NS_IMETHODIMP nsMsgFolder::GetRetentionSettings(nsIMsgRetentionSettings * *aRetentionSettings)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetRetentionSettings(nsIMsgRetentionSettings * aRetentionSettings)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIMsgDownloadSettings downloadSettings; */
NS_IMETHODIMP nsMsgFolder::GetDownloadSettings(nsIMsgDownloadSettings * *aDownloadSettings)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetDownloadSettings(nsIMsgDownloadSettings * aDownloadSettings)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIMsgFolder_h__ */
