/*
 * 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_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

#ifndef __gen_nsISimpleEnumerator_h__
#include "nsISimpleEnumerator.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 */

class nsIFileSpec; /* forward declaration */

class nsIOutputStream; /* forward declaration */

class nsIInputStream; /* 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;

  /* readonly attribute boolean imapShared; */
  NS_IMETHOD GetImapShared(PRBool *aImapShared) = 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;

  /* nsIMsgFilterList getFilterList (in nsIMsgWindow msgWindow); */
  NS_IMETHOD GetFilterList(nsIMsgWindow *msgWindow, nsIMsgFilterList **_retval) = 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, in nsIMsgWindow msgWindow); */
  NS_IMETHOD PropagateDelete(nsIMsgFolder *folder, PRBool deleteStorage, nsIMsgWindow *msgWindow) = 0;

  /* void recursiveDelete (in boolean deleteStorage, in nsIMsgWindow msgWindow); */
  NS_IMETHOD RecursiveDelete(PRBool deleteStorage, nsIMsgWindow *msgWindow) = 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, in nsISupportsArray aFolderArray, in boolean aCompactOfflineAlso, in nsISupportsArray aOfflineFolderArray); */
  NS_IMETHOD CompactAll(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow, nsISupportsArray *aFolderArray, PRBool aCompactOfflineAlso, nsISupportsArray *aOfflineFolderArray) = 0;

  /* void compactAllOfflineStores (in nsIMsgWindow aMsgWindow, in nsISupportsArray aOfflineFolderArray); */
  NS_IMETHOD CompactAllOfflineStores(nsIMsgWindow *aMsgWindow, nsISupportsArray *aOfflineFolderArray) = 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;

  /* void renameSubFolders (in nsIMsgWindow msgWindow, in nsIMsgFolder oldFolder); */
  NS_IMETHOD RenameSubFolders(nsIMsgWindow *msgWindow, nsIMsgFolder *oldFolder) = 0;

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

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

  /* wstring generateUniqueSubfolderName (in wstring prefix, in nsIMsgFolder otherFolder); */
  NS_IMETHOD GenerateUniqueSubfolderName(const PRUnichar *prefix, nsIMsgFolder *otherFolder, PRUnichar **_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
   */
  /* readonly attribute boolean manyHeadersToDownload; */
  NS_IMETHOD GetManyHeadersToDownload(PRBool *aManyHeadersToDownload) = 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, in nsIUrlListener aListener); */
  NS_IMETHOD GetNewMessages(nsIMsgWindow *aWindow, nsIUrlListener *aListener) = 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
   * @param deep if true, descends into all subfolders and gets a grand total
   */
  /* long getNumNewMessages (in boolean deep); */
  NS_IMETHOD GetNumNewMessages(PRBool deep, PRInt32 *_retval) = 0;

  /* void setNumNewMessages (in long numNewMessages); */
  NS_IMETHOD SetNumNewMessages(PRInt32 numNewMessages) = 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;

  /* void setMsgDatabase (in nsIMsgDatabase msgDatabase); */
  NS_IMETHOD SetMsgDatabase(nsIMsgDatabase *msgDatabase) = 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;

  /* readonly attribute boolean supportsOffline; */
  NS_IMETHOD GetSupportsOffline(PRBool *aSupportsOffline) = 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;

  /* readonly attribute nsIOutputStream offlineStoreOutputStream; */
  NS_IMETHOD GetOfflineStoreOutputStream(nsIOutputStream * *aOfflineStoreOutputStream) = 0;

  /* readonly attribute nsIInputStream offlineStoreInputStream; */
  NS_IMETHOD GetOfflineStoreInputStream(nsIInputStream * *aOfflineStoreInputStream) = 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, in boolean caseInsensitive); */
  NS_IMETHOD GetChildWithURI(const char *uri, PRBool deep, PRBool caseInsensitive, 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;

  /* boolean isCommandEnabled (in string command); */
  NS_IMETHOD IsCommandEnabled(const char *command, PRBool *_retval) = 0;

  /* boolean matchOrChangeFilterDestination (in nsIMsgFolder folder, in boolean caseInsensitive); */
  NS_IMETHOD MatchOrChangeFilterDestination(nsIMsgFolder *folder, PRBool caseInsensitive, PRBool *_retval) = 0;

  /* boolean confirmFolderDeletionForFilter (in nsIMsgWindow msgWindow); */
  NS_IMETHOD ConfirmFolderDeletionForFilter(nsIMsgWindow *msgWindow, PRBool *_retval) = 0;

  /* void alertFilterChanged (in nsIMsgWindow msgWindow); */
  NS_IMETHOD AlertFilterChanged(nsIMsgWindow *msgWindow) = 0;

  /* void throwAlertMsg (in string msgName, in nsIMsgWindow msgWindow); */
  NS_IMETHOD ThrowAlertMsg(const char *msgName, nsIMsgWindow *msgWindow) = 0;

  /* wstring getStringWithFolderNameFromBundle (in string msgName); */
  NS_IMETHOD GetStringWithFolderNameFromBundle(const char *msgName, PRUnichar **_retval) = 0;

  /* void notifyCompactCompleted (); */
  NS_IMETHOD NotifyCompactCompleted(void) = 0;

  /* long compareSortKeys (in nsIMsgFolder msgFolder); */
  NS_IMETHOD CompareSortKeys(nsIMsgFolder *msgFolder, PRInt32 *_retval) = 0;

  /* [noscript] void getSortKey (out octet_ptr key, out unsigned long length); */
  NS_IMETHOD GetSortKey(PRUint8 * *key, PRUint32 *length) = 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;

  /**
   * used for order in the folder pane, folder pickers, etc.
   */
  /* attribute long sortOrder; */
  NS_IMETHOD GetSortOrder(PRInt32 *aSortOrder) = 0;
  NS_IMETHOD SetSortOrder(PRInt32 aSortOrder) = 0;

  /** 
   * used to determine if we persist the close / open state of this folder or not
   */
  /* [noscript] readonly attribute boolean persistElided; */
  NS_IMETHOD GetPersistElided(PRBool *aPersistElided) = 0;

  /* readonly attribute nsIMsgFolder parentMsgFolder; */
  NS_IMETHOD GetParentMsgFolder(nsIMsgFolder * *aParentMsgFolder) = 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 GetImapShared(PRBool *aImapShared); \
  NS_IMETHOD GetCanCreateSubfolders(PRBool *aCanCreateSubfolders); \
  NS_IMETHOD GetCanRename(PRBool *aCanRename); \
  NS_IMETHOD GetCanCompact(PRBool *aCanCompact); \
  NS_IMETHOD GetRootFolder(nsIMsgFolder * *aRootFolder); \
  NS_IMETHOD GetFilterList(nsIMsgWindow *msgWindow, nsIMsgFilterList **_retval); \
  NS_IMETHOD ForceDBClosed(void); \
  NS_IMETHOD Delete(void); \
  NS_IMETHOD DeleteSubFolders(nsISupportsArray *folders, nsIMsgWindow *msgWindow); \
  NS_IMETHOD PropagateDelete(nsIMsgFolder *folder, PRBool deleteStorage, nsIMsgWindow *msgWindow); \
  NS_IMETHOD RecursiveDelete(PRBool deleteStorage, nsIMsgWindow *msgWindow); \
  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, nsISupportsArray *aFolderArray, PRBool aCompactOfflineAlso, nsISupportsArray *aOfflineFolderArray); \
  NS_IMETHOD CompactAllOfflineStores(nsIMsgWindow *aMsgWindow, nsISupportsArray *aOfflineFolderArray); \
  NS_IMETHOD EmptyTrash(nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener); \
  NS_IMETHOD Rename(const PRUnichar *name, nsIMsgWindow *msgWindow); \
  NS_IMETHOD RenameSubFolders(nsIMsgWindow *msgWindow, nsIMsgFolder *oldFolder); \
  NS_IMETHOD ContainsChildNamed(const PRUnichar *name, PRBool *_retval); \
  NS_IMETHOD IsAncestorOf(nsIMsgFolder *folder, PRBool *_retval); \
  NS_IMETHOD GenerateUniqueSubfolderName(const PRUnichar *prefix, nsIMsgFolder *otherFolder, PRUnichar **_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 GetManyHeadersToDownload(PRBool *aManyHeadersToDownload); \
  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, nsIUrlListener *aListener); \
  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(PRBool deep, PRInt32 *_retval); \
  NS_IMETHOD SetNumNewMessages(PRInt32 numNewMessages); \
  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 SetMsgDatabase(nsIMsgDatabase *msgDatabase); \
  NS_IMETHOD GetDBFolderInfoAndDB(nsIDBFolderInfo **folderInfo, nsIMsgDatabase **_retval); \
  NS_IMETHOD GetMessageHeader(nsMsgKey msgKey, nsIMsgDBHdr **_retval); \
  NS_IMETHOD GetSupportsOffline(PRBool *aSupportsOffline); \
  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 GetOfflineStoreOutputStream(nsIOutputStream * *aOfflineStoreOutputStream); \
  NS_IMETHOD GetOfflineStoreInputStream(nsIInputStream * *aOfflineStoreInputStream); \
  NS_IMETHOD DownloadMessagesForOffline(nsISupportsArray *messages, nsIMsgWindow *window); \
  NS_IMETHOD GetChildWithURI(const char *uri, PRBool deep, PRBool caseInsensitive, nsIMsgFolder **_retval); \
  NS_IMETHOD DownloadAllForOffline(nsIUrlListener *listener, nsIMsgWindow *window); \
  NS_IMETHOD EnableNotifications(PRInt32 notificationType, PRBool enable); \
  NS_IMETHOD IsCommandEnabled(const char *command, PRBool *_retval); \
  NS_IMETHOD MatchOrChangeFilterDestination(nsIMsgFolder *folder, PRBool caseInsensitive, PRBool *_retval); \
  NS_IMETHOD ConfirmFolderDeletionForFilter(nsIMsgWindow *msgWindow, PRBool *_retval); \
  NS_IMETHOD AlertFilterChanged(nsIMsgWindow *msgWindow); \
  NS_IMETHOD ThrowAlertMsg(const char *msgName, nsIMsgWindow *msgWindow); \
  NS_IMETHOD GetStringWithFolderNameFromBundle(const char *msgName, PRUnichar **_retval); \
  NS_IMETHOD NotifyCompactCompleted(void); \
  NS_IMETHOD CompareSortKeys(nsIMsgFolder *msgFolder, PRInt32 *_retval); \
  NS_IMETHOD GetSortKey(PRUint8 * *key, PRUint32 *length); \
  NS_IMETHOD GetRetentionSettings(nsIMsgRetentionSettings * *aRetentionSettings); \
  NS_IMETHOD SetRetentionSettings(nsIMsgRetentionSettings * aRetentionSettings); \
  NS_IMETHOD GetDownloadSettings(nsIMsgDownloadSettings * *aDownloadSettings); \
  NS_IMETHOD SetDownloadSettings(nsIMsgDownloadSettings * aDownloadSettings); \
  NS_IMETHOD GetSortOrder(PRInt32 *aSortOrder); \
  NS_IMETHOD SetSortOrder(PRInt32 aSortOrder); \
  NS_IMETHOD GetPersistElided(PRBool *aPersistElided); \
  NS_IMETHOD GetParentMsgFolder(nsIMsgFolder * *aParentMsgFolder); 

/* 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 GetImapShared(PRBool *aImapShared) { return _to GetImapShared(aImapShared); } \
  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(nsIMsgWindow *msgWindow, nsIMsgFilterList **_retval) { return _to GetFilterList(msgWindow, _retval); } \
  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, nsIMsgWindow *msgWindow) { return _to PropagateDelete(folder, deleteStorage, msgWindow); } \
  NS_IMETHOD RecursiveDelete(PRBool deleteStorage, nsIMsgWindow *msgWindow) { return _to RecursiveDelete(deleteStorage, msgWindow); } \
  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, nsISupportsArray *aFolderArray, PRBool aCompactOfflineAlso, nsISupportsArray *aOfflineFolderArray) { return _to CompactAll(aListener, aMsgWindow, aFolderArray, aCompactOfflineAlso, aOfflineFolderArray); } \
  NS_IMETHOD CompactAllOfflineStores(nsIMsgWindow *aMsgWindow, nsISupportsArray *aOfflineFolderArray) { return _to CompactAllOfflineStores(aMsgWindow, aOfflineFolderArray); } \
  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 RenameSubFolders(nsIMsgWindow *msgWindow, nsIMsgFolder *oldFolder) { return _to RenameSubFolders(msgWindow, oldFolder); } \
  NS_IMETHOD ContainsChildNamed(const PRUnichar *name, PRBool *_retval) { return _to ContainsChildNamed(name, _retval); } \
  NS_IMETHOD IsAncestorOf(nsIMsgFolder *folder, PRBool *_retval) { return _to IsAncestorOf(folder, _retval); } \
  NS_IMETHOD GenerateUniqueSubfolderName(const PRUnichar *prefix, nsIMsgFolder *otherFolder, PRUnichar **_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 GetManyHeadersToDownload(PRBool *aManyHeadersToDownload) { return _to GetManyHeadersToDownload(aManyHeadersToDownload); } \
  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, nsIUrlListener *aListener) { return _to GetNewMessages(aWindow, aListener); } \
  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(PRBool deep, PRInt32 *_retval) { return _to GetNumNewMessages(deep, _retval); } \
  NS_IMETHOD SetNumNewMessages(PRInt32 numNewMessages) { return _to SetNumNewMessages(numNewMessages); } \
  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 SetMsgDatabase(nsIMsgDatabase *msgDatabase) { return _to SetMsgDatabase(msgDatabase); } \
  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 GetSupportsOffline(PRBool *aSupportsOffline) { return _to GetSupportsOffline(aSupportsOffline); } \
  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 GetOfflineStoreOutputStream(nsIOutputStream * *aOfflineStoreOutputStream) { return _to GetOfflineStoreOutputStream(aOfflineStoreOutputStream); } \
  NS_IMETHOD GetOfflineStoreInputStream(nsIInputStream * *aOfflineStoreInputStream) { return _to GetOfflineStoreInputStream(aOfflineStoreInputStream); } \
  NS_IMETHOD DownloadMessagesForOffline(nsISupportsArray *messages, nsIMsgWindow *window) { return _to DownloadMessagesForOffline(messages, window); } \
  NS_IMETHOD GetChildWithURI(const char *uri, PRBool deep, PRBool caseInsensitive, nsIMsgFolder **_retval) { return _to GetChildWithURI(uri, deep, caseInsensitive, _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 IsCommandEnabled(const char *command, PRBool *_retval) { return _to IsCommandEnabled(command, _retval); } \
  NS_IMETHOD MatchOrChangeFilterDestination(nsIMsgFolder *folder, PRBool caseInsensitive, PRBool *_retval) { return _to MatchOrChangeFilterDestination(folder, caseInsensitive, _retval); } \
  NS_IMETHOD ConfirmFolderDeletionForFilter(nsIMsgWindow *msgWindow, PRBool *_retval) { return _to ConfirmFolderDeletionForFilter(msgWindow, _retval); } \
  NS_IMETHOD AlertFilterChanged(nsIMsgWindow *msgWindow) { return _to AlertFilterChanged(msgWindow); } \
  NS_IMETHOD ThrowAlertMsg(const char *msgName, nsIMsgWindow *msgWindow) { return _to ThrowAlertMsg(msgName, msgWindow); } \
  NS_IMETHOD GetStringWithFolderNameFromBundle(const char *msgName, PRUnichar **_retval) { return _to GetStringWithFolderNameFromBundle(msgName, _retval); } \
  NS_IMETHOD NotifyCompactCompleted(void) { return _to NotifyCompactCompleted(); } \
  NS_IMETHOD CompareSortKeys(nsIMsgFolder *msgFolder, PRInt32 *_retval) { return _to CompareSortKeys(msgFolder, _retval); } \
  NS_IMETHOD GetSortKey(PRUint8 * *key, PRUint32 *length) { return _to GetSortKey(key, length); } \
  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); } \
  NS_IMETHOD GetSortOrder(PRInt32 *aSortOrder) { return _to GetSortOrder(aSortOrder); } \
  NS_IMETHOD SetSortOrder(PRInt32 aSortOrder) { return _to SetSortOrder(aSortOrder); } \
  NS_IMETHOD GetPersistElided(PRBool *aPersistElided) { return _to GetPersistElided(aPersistElided); } \
  NS_IMETHOD GetParentMsgFolder(nsIMsgFolder * *aParentMsgFolder) { return _to GetParentMsgFolder(aParentMsgFolder); } 

/* 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 GetImapShared(PRBool *aImapShared) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetImapShared(aImapShared); } \
  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(nsIMsgWindow *msgWindow, nsIMsgFilterList **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilterList(msgWindow, _retval); } \
  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, nsIMsgWindow *msgWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->PropagateDelete(folder, deleteStorage, msgWindow); } \
  NS_IMETHOD RecursiveDelete(PRBool deleteStorage, nsIMsgWindow *msgWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->RecursiveDelete(deleteStorage, msgWindow); } \
  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, nsISupportsArray *aFolderArray, PRBool aCompactOfflineAlso, nsISupportsArray *aOfflineFolderArray) { return !_to ? NS_ERROR_NULL_POINTER : _to->CompactAll(aListener, aMsgWindow, aFolderArray, aCompactOfflineAlso, aOfflineFolderArray); } \
  NS_IMETHOD CompactAllOfflineStores(nsIMsgWindow *aMsgWindow, nsISupportsArray *aOfflineFolderArray) { return !_to ? NS_ERROR_NULL_POINTER : _to->CompactAllOfflineStores(aMsgWindow, aOfflineFolderArray); } \
  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 RenameSubFolders(nsIMsgWindow *msgWindow, nsIMsgFolder *oldFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->RenameSubFolders(msgWindow, oldFolder); } \
  NS_IMETHOD ContainsChildNamed(const PRUnichar *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 PRUnichar *prefix, nsIMsgFolder *otherFolder, PRUnichar **_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 GetManyHeadersToDownload(PRBool *aManyHeadersToDownload) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetManyHeadersToDownload(aManyHeadersToDownload); } \
  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, nsIUrlListener *aListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNewMessages(aWindow, aListener); } \
  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(PRBool deep, PRInt32 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNumNewMessages(deep, _retval); } \
  NS_IMETHOD SetNumNewMessages(PRInt32 numNewMessages) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNumNewMessages(numNewMessages); } \
  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 SetMsgDatabase(nsIMsgDatabase *msgDatabase) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMsgDatabase(msgDatabase); } \
  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 GetSupportsOffline(PRBool *aSupportsOffline) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSupportsOffline(aSupportsOffline); } \
  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 GetOfflineStoreOutputStream(nsIOutputStream * *aOfflineStoreOutputStream) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOfflineStoreOutputStream(aOfflineStoreOutputStream); } \
  NS_IMETHOD GetOfflineStoreInputStream(nsIInputStream * *aOfflineStoreInputStream) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOfflineStoreInputStream(aOfflineStoreInputStream); } \
  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, PRBool caseInsensitive, nsIMsgFolder **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChildWithURI(uri, deep, caseInsensitive, _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 IsCommandEnabled(const char *command, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsCommandEnabled(command, _retval); } \
  NS_IMETHOD MatchOrChangeFilterDestination(nsIMsgFolder *folder, PRBool caseInsensitive, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->MatchOrChangeFilterDestination(folder, caseInsensitive, _retval); } \
  NS_IMETHOD ConfirmFolderDeletionForFilter(nsIMsgWindow *msgWindow, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->ConfirmFolderDeletionForFilter(msgWindow, _retval); } \
  NS_IMETHOD AlertFilterChanged(nsIMsgWindow *msgWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->AlertFilterChanged(msgWindow); } \
  NS_IMETHOD ThrowAlertMsg(const char *msgName, nsIMsgWindow *msgWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->ThrowAlertMsg(msgName, msgWindow); } \
  NS_IMETHOD GetStringWithFolderNameFromBundle(const char *msgName, PRUnichar **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStringWithFolderNameFromBundle(msgName, _retval); } \
  NS_IMETHOD NotifyCompactCompleted(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyCompactCompleted(); } \
  NS_IMETHOD CompareSortKeys(nsIMsgFolder *msgFolder, PRInt32 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->CompareSortKeys(msgFolder, _retval); } \
  NS_IMETHOD GetSortKey(PRUint8 * *key, PRUint32 *length) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSortKey(key, length); } \
  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); } \
  NS_IMETHOD GetSortOrder(PRInt32 *aSortOrder) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSortOrder(aSortOrder); } \
  NS_IMETHOD SetSortOrder(PRInt32 aSortOrder) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSortOrder(aSortOrder); } \
  NS_IMETHOD GetPersistElided(PRBool *aPersistElided) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPersistElided(aPersistElided); } \
  NS_IMETHOD GetParentMsgFolder(nsIMsgFolder * *aParentMsgFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParentMsgFolder(aParentMsgFolder); } 

#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 imapShared; */
NS_IMETHODIMP nsMsgFolder::GetImapShared(PRBool *aImapShared)
{
    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;
}

/* nsIMsgFilterList getFilterList (in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::GetFilterList(nsIMsgWindow *msgWindow, nsIMsgFilterList **_retval)
{
    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, in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::PropagateDelete(nsIMsgFolder *folder, PRBool deleteStorage, nsIMsgWindow *msgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void recursiveDelete (in boolean deleteStorage, in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::RecursiveDelete(PRBool deleteStorage, nsIMsgWindow *msgWindow)
{
    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, in nsISupportsArray aFolderArray, in boolean aCompactOfflineAlso, in nsISupportsArray aOfflineFolderArray); */
NS_IMETHODIMP nsMsgFolder::CompactAll(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow, nsISupportsArray *aFolderArray, PRBool aCompactOfflineAlso, nsISupportsArray *aOfflineFolderArray)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void compactAllOfflineStores (in nsIMsgWindow aMsgWindow, in nsISupportsArray aOfflineFolderArray); */
NS_IMETHODIMP nsMsgFolder::CompactAllOfflineStores(nsIMsgWindow *aMsgWindow, nsISupportsArray *aOfflineFolderArray)
{
    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;
}

/* void renameSubFolders (in nsIMsgWindow msgWindow, in nsIMsgFolder oldFolder); */
NS_IMETHODIMP nsMsgFolder::RenameSubFolders(nsIMsgWindow *msgWindow, nsIMsgFolder *oldFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean containsChildNamed (in wstring name); */
NS_IMETHODIMP nsMsgFolder::ContainsChildNamed(const PRUnichar *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;
}

/* wstring generateUniqueSubfolderName (in wstring prefix, in nsIMsgFolder otherFolder); */
NS_IMETHODIMP nsMsgFolder::GenerateUniqueSubfolderName(const PRUnichar *prefix, nsIMsgFolder *otherFolder, PRUnichar **_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;
}

/* readonly attribute boolean manyHeadersToDownload; */
NS_IMETHODIMP nsMsgFolder::GetManyHeadersToDownload(PRBool *aManyHeadersToDownload)
{
    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, in nsIUrlListener aListener); */
NS_IMETHODIMP nsMsgFolder::GetNewMessages(nsIMsgWindow *aWindow, nsIUrlListener *aListener)
{
    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;
}

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

/* void setNumNewMessages (in long numNewMessages); */
NS_IMETHODIMP nsMsgFolder::SetNumNewMessages(PRInt32 numNewMessages)
{
    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;
}

/* void setMsgDatabase (in nsIMsgDatabase msgDatabase); */
NS_IMETHODIMP nsMsgFolder::SetMsgDatabase(nsIMsgDatabase *msgDatabase)
{
    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;
}

/* readonly attribute boolean supportsOffline; */
NS_IMETHODIMP nsMsgFolder::GetSupportsOffline(PRBool *aSupportsOffline)
{
    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;
}

/* readonly attribute nsIOutputStream offlineStoreOutputStream; */
NS_IMETHODIMP nsMsgFolder::GetOfflineStoreOutputStream(nsIOutputStream * *aOfflineStoreOutputStream)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIInputStream offlineStoreInputStream; */
NS_IMETHODIMP nsMsgFolder::GetOfflineStoreInputStream(nsIInputStream * *aOfflineStoreInputStream)
{
    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, in boolean caseInsensitive); */
NS_IMETHODIMP nsMsgFolder::GetChildWithURI(const char *uri, PRBool deep, PRBool caseInsensitive, 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;
}

/* boolean isCommandEnabled (in string command); */
NS_IMETHODIMP nsMsgFolder::IsCommandEnabled(const char *command, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean matchOrChangeFilterDestination (in nsIMsgFolder folder, in boolean caseInsensitive); */
NS_IMETHODIMP nsMsgFolder::MatchOrChangeFilterDestination(nsIMsgFolder *folder, PRBool caseInsensitive, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean confirmFolderDeletionForFilter (in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::ConfirmFolderDeletionForFilter(nsIMsgWindow *msgWindow, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void alertFilterChanged (in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::AlertFilterChanged(nsIMsgWindow *msgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void throwAlertMsg (in string msgName, in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFolder::ThrowAlertMsg(const char *msgName, nsIMsgWindow *msgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* wstring getStringWithFolderNameFromBundle (in string msgName); */
NS_IMETHODIMP nsMsgFolder::GetStringWithFolderNameFromBundle(const char *msgName, PRUnichar **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* long compareSortKeys (in nsIMsgFolder msgFolder); */
NS_IMETHODIMP nsMsgFolder::CompareSortKeys(nsIMsgFolder *msgFolder, PRInt32 *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void getSortKey (out octet_ptr key, out unsigned long length); */
NS_IMETHODIMP nsMsgFolder::GetSortKey(PRUint8 * *key, PRUint32 *length)
{
    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;
}

/* attribute long sortOrder; */
NS_IMETHODIMP nsMsgFolder::GetSortOrder(PRInt32 *aSortOrder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFolder::SetSortOrder(PRInt32 aSortOrder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] readonly attribute boolean persistElided; */
NS_IMETHODIMP nsMsgFolder::GetPersistElided(PRBool *aPersistElided)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMsgFolder parentMsgFolder; */
NS_IMETHODIMP nsMsgFolder::GetParentMsgFolder(nsIMsgFolder * *aParentMsgFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIMsgFolder_h__ */
