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

#ifndef __gen_nsIMsgFolder_h__
#define __gen_nsIMsgFolder_h__

#include "nsISupports.h"
#include "nsIFolder.h"
#include "nsIMsgThread.h"
#include "nsIMsgIncomingServer.h"
#include "nsIFileSpec.h"
#include "nsISupportsArray.h"
#include "nsIMsgCopyServiceListener.h"
#include "nsIUrlListener.h"
#include "nsIEnumerator.h"

#include "nsIMsgDatabase.h"
#include "nsMsgKeyArray.h"
class nsIMessage; /* 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 */

typedef PRInt32 nsMsgBiffState;


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

  /* nsISimpleEnumerator getThreads (in nsIMsgWindow aMsgWindow); */
  NS_IMETHOD GetThreads(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;

  /* nsIMsgThread getThreadForMessage (in nsIMessage message); */
  NS_IMETHOD GetThreadForMessage(nsIMessage *message, nsIMsgThread **_retval) = 0;

  /* boolean hasMessage (in nsIMessage message); */
  NS_IMETHOD HasMessage(nsIMessage *message, PRBool *_retval) = 0;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  /* void createSubfolder (in wstring folderName); */
  NS_IMETHOD CreateSubfolder(const PRUnichar *folderName) = 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 (); */
  NS_IMETHOD Compact(void) = 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); */
  NS_IMETHOD Rename(const PRUnichar *name) = 0;

  /* void adopt (in nsIMsgFolder srcFolder, out unsigned long outPos); */
  NS_IMETHOD Adopt(nsIMsgFolder *srcFolder, PRUint32 *outPos) = 0;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  /* void copyFileMessage (in nsIFileSpec fileSpec, in nsIMessage msgToReplace, in boolean isDraft, in nsIMsgWindow msgWindow, in nsIMsgCopyServiceListener listener); */
  NS_IMETHOD CopyFileMessage(nsIFileSpec *fileSpec, nsIMessage *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;

  /* nsIMessage createMessageFromMsgDBHdr (in nsIMsgDBHdr msgDBHdr); */
  NS_IMETHOD CreateMessageFromMsgDBHdr(nsIMsgDBHdr *msgDBHdr, nsIMessage **_retval) = 0;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  /* nsIMsgFolder getChildWithURI (in string uri, in boolean deep); */
  NS_IMETHOD GetChildWithURI(const char *uri, PRBool deep, nsIMsgFolder **_retval) = 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;

};

/* 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 GetThreads(nsIMsgWindow *aMsgWindow, nsISimpleEnumerator **_retval); \
  NS_IMETHOD StartFolderLoading(void); \
  NS_IMETHOD EndFolderLoading(void); \
  NS_IMETHOD UpdateFolder(nsIMsgWindow *aWindow); \
  NS_IMETHOD GetThreadForMessage(nsIMessage *message, nsIMsgThread **_retval); \
  NS_IMETHOD HasMessage(nsIMessage *message, PRBool *_retval); \
  NS_IMETHOD GetVisibleSubFolders(nsIEnumerator **_retval); \
  NS_IMETHOD GetPrettiestName(PRUnichar * *aPrettiestName); \
  NS_IMETHOD GetFolderURL(char * *aFolderURL); \
  NS_IMETHOD GetDeleteIsMoveToTrash(PRBool *aDeleteIsMoveToTrash); \
  NS_IMETHOD SetDeleteIsMoveToTrash(PRBool aDeleteIsMoveToTrash); \
  NS_IMETHOD GetShowDeletedMessages(PRBool *aShowDeletedMessages); \
  NS_IMETHOD GetServer(nsIMsgIncomingServer * *aServer); \
  NS_IMETHOD GetIsServer(PRBool *aIsServer); \
  NS_IMETHOD GetCanSubscribe(PRBool *aCanSubscribe); \
  NS_IMETHOD GetCanFileMessages(PRBool *aCanFileMessages); \
  NS_IMETHOD GetNoSelect(PRBool *aNoSelect); \
  NS_IMETHOD GetCanCreateSubfolders(PRBool *aCanCreateSubfolders); \
  NS_IMETHOD GetCanRename(PRBool *aCanRename); \
  NS_IMETHOD GetRootFolder(nsIMsgFolder * *aRootFolder); \
  NS_IMETHOD GetFilterList(nsIMsgFilterList * *aFilterList); \
  NS_IMETHOD ForceDBClosed(void); \
  NS_IMETHOD Delete(void); \
  NS_IMETHOD DeleteSubFolders(nsISupportsArray *folders, nsIMsgWindow *msgWindow); \
  NS_IMETHOD PropagateDelete(nsIMsgFolder *folder, PRBool deleteStorage); \
  NS_IMETHOD RecursiveDelete(PRBool deleteStorage); \
  NS_IMETHOD CreateSubfolder(const PRUnichar *folderName); \
  NS_IMETHOD AddSubfolder(nsAutoString *folderName, nsIMsgFolder **_retval); \
  NS_IMETHOD CreateStorageIfMissing(nsIUrlListener *urlListener); \
  NS_IMETHOD Compact(void); \
  NS_IMETHOD EmptyTrash(nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener); \
  NS_IMETHOD Rename(const PRUnichar *name); \
  NS_IMETHOD Adopt(nsIMsgFolder *srcFolder, PRUint32 *outPos); \
  NS_IMETHOD ContainsChildNamed(const char *name, PRBool *_retval); \
  NS_IMETHOD IsAncestorOf(nsIMsgFolder *folder, PRBool *_retval); \
  NS_IMETHOD GenerateUniqueSubfolderName(const char *prefix, nsIMsgFolder *otherFolder, char **_retval); \
  NS_IMETHOD UpdateSummaryTotals(PRBool force); \
  NS_IMETHOD SummaryChanged(void); \
  NS_IMETHOD GetNumUnread(PRBool deep, PRInt32 *_retval); \
  NS_IMETHOD GetTotalMessages(PRBool deep, PRInt32 *_retval); \
  NS_IMETHOD GetHasNewMessages(PRBool *aHasNewMessages); \
  NS_IMETHOD SetHasNewMessages(PRBool aHasNewMessages); \
  NS_IMETHOD GetFirstNewMessage(nsIMessage * *aFirstNewMessage); \
  NS_IMETHOD ClearNewMessages(void); \
  NS_IMETHOD GetExpungedBytes(PRUint32 *aExpungedBytes); \
  NS_IMETHOD GetDeletable(PRBool *aDeletable); \
  NS_IMETHOD GetDisplayRecipients(PRBool *aDisplayRecipients); \
  NS_IMETHOD ManyHeadersToDownload(PRBool *_retval); \
  NS_IMETHOD GetRequiresCleanup(PRBool *aRequiresCleanup); \
  NS_IMETHOD ClearRequiresCleanup(void); \
  NS_IMETHOD GetKnowsSearchNntpExtension(PRBool *aKnowsSearchNntpExtension); \
  NS_IMETHOD GetAllowsPosting(PRBool *aAllowsPosting); \
  NS_IMETHOD GetRelativePathName(char * *aRelativePathName); \
  NS_IMETHOD GetSizeOnDisk(PRUint32 *aSizeOnDisk); \
  NS_IMETHOD RememberPassword(const char *password); \
  NS_IMETHOD GetRememberedPassword(char * *aRememberedPassword); \
  NS_IMETHOD UserNeedsToAuthenticateForFolder(PRBool displayOnly, PRBool *_retval); \
  NS_IMETHOD GetUsername(char * *aUsername); \
  NS_IMETHOD GetHostname(char * *aHostname); \
  NS_IMETHOD SetFlag(PRUint32 flag); \
  NS_IMETHOD ClearFlag(PRUint32 flag); \
  NS_IMETHOD GetFlag(PRUint32 flag, PRBool *_retval); \
  NS_IMETHOD SetPrefFlag(void); \
  NS_IMETHOD ToggleFlag(PRUint32 flag); \
  NS_IMETHOD OnFlagChange(PRUint32 flag); \
  NS_IMETHOD GetFlags(PRUint32 *aFlags); \
  NS_IMETHOD SetFlags(PRUint32 aFlags); \
  NS_IMETHOD RecursiveSetDeleteIsMoveToTrash(PRBool bVal); \
  NS_IMETHOD GetFoldersWithFlag(PRUint32 flags, PRUint32 resultsize, PRUint32 *numFolders, nsIMsgFolder **_retval); \
  NS_IMETHOD GetExpansionArray(nsISupportsArray *expansionArray); \
  NS_IMETHOD DeleteMessages(nsISupportsArray *message, nsIMsgWindow *msgWindow, PRBool deleteStorage, PRBool isMove); \
  NS_IMETHOD CopyMessages(nsIMsgFolder *srcFolder, nsISupportsArray *messages, PRBool isMove, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener); \
  NS_IMETHOD CopyFileMessage(nsIFileSpec *fileSpec, nsIMessage *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 CreateMessageFromMsgDBHdr(nsIMsgDBHdr *msgDBHdr, nsIMessage **_retval); \
  NS_IMETHOD GetNewMessages(nsIMsgWindow *aWindow); \
  NS_IMETHOD WriteToFolderCache(nsIMsgFolderCache *folderCache, PRBool deep); \
  NS_IMETHOD GetCharset(PRUnichar * *aCharset); \
  NS_IMETHOD SetCharset(const PRUnichar * aCharset); \
  NS_IMETHOD GetBiffState(PRUint32 *aBiffState); \
  NS_IMETHOD SetBiffState(PRUint32 aBiffState); \
  NS_IMETHOD GetNumNewMessages(PRInt32 *aNumNewMessages); \
  NS_IMETHOD SetNumNewMessages(PRInt32 aNumNewMessages); \
  NS_IMETHOD GetNewMessagesNotificationDescription(PRUnichar * *aNewMessagesNotificationDescription); \
  NS_IMETHOD GetGettingNewMessages(PRBool *aGettingNewMessages); \
  NS_IMETHOD SetGettingNewMessages(PRBool aGettingNewMessages); \
  NS_IMETHOD GetPath(nsIFileSpec * *aPath); \
  NS_IMETHOD SetPath(nsIFileSpec * aPath); \
  NS_IMETHOD MarkMessagesRead(nsISupportsArray *messages, PRBool markRead); \
  NS_IMETHOD MarkAllMessagesRead(void); \
  NS_IMETHOD MarkMessagesFlagged(nsISupportsArray *messages, PRBool markFlagged); \
  NS_IMETHOD MarkThreadRead(nsIMsgThread *thread); \
  NS_IMETHOD GetMsgDatabase(nsIMsgWindow *msgWindow, nsIMsgDatabase **_retval); \
  NS_IMETHOD GetDBFolderInfoAndDB(nsIDBFolderInfo **folderInfo, nsIMsgDatabase **_retval); \
  NS_IMETHOD GetChildWithURI(const char *uri, PRBool deep, nsIMsgFolder **_retval); \
  NS_IMETHOD EnableNotifications(PRInt32 notificationType, PRBool enable); 

/* 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 GetThreads(nsIMsgWindow *aMsgWindow, nsISimpleEnumerator **_retval) { return _to ## GetThreads(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 GetThreadForMessage(nsIMessage *message, nsIMsgThread **_retval) { return _to ## GetThreadForMessage(message, _retval); } \
  NS_IMETHOD HasMessage(nsIMessage *message, PRBool *_retval) { return _to ## HasMessage(message, _retval); } \
  NS_IMETHOD GetVisibleSubFolders(nsIEnumerator **_retval) { return _to ## GetVisibleSubFolders(_retval); } \
  NS_IMETHOD GetPrettiestName(PRUnichar * *aPrettiestName) { return _to ## GetPrettiestName(aPrettiestName); } \
  NS_IMETHOD GetFolderURL(char * *aFolderURL) { return _to ## GetFolderURL(aFolderURL); } \
  NS_IMETHOD GetDeleteIsMoveToTrash(PRBool *aDeleteIsMoveToTrash) { return _to ## GetDeleteIsMoveToTrash(aDeleteIsMoveToTrash); } \
  NS_IMETHOD SetDeleteIsMoveToTrash(PRBool aDeleteIsMoveToTrash) { return _to ## SetDeleteIsMoveToTrash(aDeleteIsMoveToTrash); } \
  NS_IMETHOD GetShowDeletedMessages(PRBool *aShowDeletedMessages) { return _to ## GetShowDeletedMessages(aShowDeletedMessages); } \
  NS_IMETHOD GetServer(nsIMsgIncomingServer * *aServer) { return _to ## GetServer(aServer); } \
  NS_IMETHOD GetIsServer(PRBool *aIsServer) { return _to ## GetIsServer(aIsServer); } \
  NS_IMETHOD GetCanSubscribe(PRBool *aCanSubscribe) { return _to ## GetCanSubscribe(aCanSubscribe); } \
  NS_IMETHOD GetCanFileMessages(PRBool *aCanFileMessages) { return _to ## GetCanFileMessages(aCanFileMessages); } \
  NS_IMETHOD GetNoSelect(PRBool *aNoSelect) { return _to ## GetNoSelect(aNoSelect); } \
  NS_IMETHOD GetCanCreateSubfolders(PRBool *aCanCreateSubfolders) { return _to ## GetCanCreateSubfolders(aCanCreateSubfolders); } \
  NS_IMETHOD GetCanRename(PRBool *aCanRename) { return _to ## GetCanRename(aCanRename); } \
  NS_IMETHOD GetRootFolder(nsIMsgFolder * *aRootFolder) { return _to ## GetRootFolder(aRootFolder); } \
  NS_IMETHOD GetFilterList(nsIMsgFilterList * *aFilterList) { return _to ## GetFilterList(aFilterList); } \
  NS_IMETHOD ForceDBClosed(void) { return _to ## ForceDBClosed(); } \
  NS_IMETHOD Delete(void) { return _to ## Delete(); } \
  NS_IMETHOD DeleteSubFolders(nsISupportsArray *folders, nsIMsgWindow *msgWindow) { return _to ## DeleteSubFolders(folders, msgWindow); } \
  NS_IMETHOD PropagateDelete(nsIMsgFolder *folder, PRBool deleteStorage) { return _to ## PropagateDelete(folder, deleteStorage); } \
  NS_IMETHOD RecursiveDelete(PRBool deleteStorage) { return _to ## RecursiveDelete(deleteStorage); } \
  NS_IMETHOD CreateSubfolder(const PRUnichar *folderName) { return _to ## CreateSubfolder(folderName); } \
  NS_IMETHOD AddSubfolder(nsAutoString *folderName, nsIMsgFolder **_retval) { return _to ## AddSubfolder(folderName, _retval); } \
  NS_IMETHOD CreateStorageIfMissing(nsIUrlListener *urlListener) { return _to ## CreateStorageIfMissing(urlListener); } \
  NS_IMETHOD Compact(void) { return _to ## Compact(); } \
  NS_IMETHOD EmptyTrash(nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener) { return _to ## EmptyTrash(aMsgWindow, aListener); } \
  NS_IMETHOD Rename(const PRUnichar *name) { return _to ## Rename(name); } \
  NS_IMETHOD Adopt(nsIMsgFolder *srcFolder, PRUint32 *outPos) { return _to ## Adopt(srcFolder, outPos); } \
  NS_IMETHOD ContainsChildNamed(const char *name, PRBool *_retval) { return _to ## ContainsChildNamed(name, _retval); } \
  NS_IMETHOD IsAncestorOf(nsIMsgFolder *folder, PRBool *_retval) { return _to ## IsAncestorOf(folder, _retval); } \
  NS_IMETHOD GenerateUniqueSubfolderName(const char *prefix, nsIMsgFolder *otherFolder, char **_retval) { return _to ## GenerateUniqueSubfolderName(prefix, otherFolder, _retval); } \
  NS_IMETHOD UpdateSummaryTotals(PRBool force) { return _to ## UpdateSummaryTotals(force); } \
  NS_IMETHOD SummaryChanged(void) { return _to ## SummaryChanged(); } \
  NS_IMETHOD GetNumUnread(PRBool deep, PRInt32 *_retval) { return _to ## GetNumUnread(deep, _retval); } \
  NS_IMETHOD GetTotalMessages(PRBool deep, PRInt32 *_retval) { return _to ## GetTotalMessages(deep, _retval); } \
  NS_IMETHOD GetHasNewMessages(PRBool *aHasNewMessages) { return _to ## GetHasNewMessages(aHasNewMessages); } \
  NS_IMETHOD SetHasNewMessages(PRBool aHasNewMessages) { return _to ## SetHasNewMessages(aHasNewMessages); } \
  NS_IMETHOD GetFirstNewMessage(nsIMessage * *aFirstNewMessage) { return _to ## GetFirstNewMessage(aFirstNewMessage); } \
  NS_IMETHOD ClearNewMessages(void) { return _to ## ClearNewMessages(); } \
  NS_IMETHOD GetExpungedBytes(PRUint32 *aExpungedBytes) { return _to ## GetExpungedBytes(aExpungedBytes); } \
  NS_IMETHOD GetDeletable(PRBool *aDeletable) { return _to ## GetDeletable(aDeletable); } \
  NS_IMETHOD GetDisplayRecipients(PRBool *aDisplayRecipients) { return _to ## GetDisplayRecipients(aDisplayRecipients); } \
  NS_IMETHOD ManyHeadersToDownload(PRBool *_retval) { return _to ## ManyHeadersToDownload(_retval); } \
  NS_IMETHOD GetRequiresCleanup(PRBool *aRequiresCleanup) { return _to ## GetRequiresCleanup(aRequiresCleanup); } \
  NS_IMETHOD ClearRequiresCleanup(void) { return _to ## ClearRequiresCleanup(); } \
  NS_IMETHOD GetKnowsSearchNntpExtension(PRBool *aKnowsSearchNntpExtension) { return _to ## GetKnowsSearchNntpExtension(aKnowsSearchNntpExtension); } \
  NS_IMETHOD GetAllowsPosting(PRBool *aAllowsPosting) { return _to ## GetAllowsPosting(aAllowsPosting); } \
  NS_IMETHOD GetRelativePathName(char * *aRelativePathName) { return _to ## GetRelativePathName(aRelativePathName); } \
  NS_IMETHOD GetSizeOnDisk(PRUint32 *aSizeOnDisk) { return _to ## GetSizeOnDisk(aSizeOnDisk); } \
  NS_IMETHOD RememberPassword(const char *password) { return _to ## RememberPassword(password); } \
  NS_IMETHOD GetRememberedPassword(char * *aRememberedPassword) { return _to ## GetRememberedPassword(aRememberedPassword); } \
  NS_IMETHOD UserNeedsToAuthenticateForFolder(PRBool displayOnly, PRBool *_retval) { return _to ## UserNeedsToAuthenticateForFolder(displayOnly, _retval); } \
  NS_IMETHOD GetUsername(char * *aUsername) { return _to ## GetUsername(aUsername); } \
  NS_IMETHOD GetHostname(char * *aHostname) { return _to ## GetHostname(aHostname); } \
  NS_IMETHOD SetFlag(PRUint32 flag) { return _to ## SetFlag(flag); } \
  NS_IMETHOD ClearFlag(PRUint32 flag) { return _to ## ClearFlag(flag); } \
  NS_IMETHOD GetFlag(PRUint32 flag, PRBool *_retval) { return _to ## GetFlag(flag, _retval); } \
  NS_IMETHOD SetPrefFlag(void) { return _to ## SetPrefFlag(); } \
  NS_IMETHOD ToggleFlag(PRUint32 flag) { return _to ## ToggleFlag(flag); } \
  NS_IMETHOD OnFlagChange(PRUint32 flag) { return _to ## OnFlagChange(flag); } \
  NS_IMETHOD GetFlags(PRUint32 *aFlags) { return _to ## GetFlags(aFlags); } \
  NS_IMETHOD SetFlags(PRUint32 aFlags) { return _to ## SetFlags(aFlags); } \
  NS_IMETHOD RecursiveSetDeleteIsMoveToTrash(PRBool bVal) { return _to ## RecursiveSetDeleteIsMoveToTrash(bVal); } \
  NS_IMETHOD GetFoldersWithFlag(PRUint32 flags, PRUint32 resultsize, PRUint32 *numFolders, nsIMsgFolder **_retval) { return _to ## GetFoldersWithFlag(flags, resultsize, numFolders, _retval); } \
  NS_IMETHOD GetExpansionArray(nsISupportsArray *expansionArray) { return _to ## GetExpansionArray(expansionArray); } \
  NS_IMETHOD DeleteMessages(nsISupportsArray *message, nsIMsgWindow *msgWindow, PRBool deleteStorage, PRBool isMove) { return _to ## DeleteMessages(message, msgWindow, deleteStorage, isMove); } \
  NS_IMETHOD CopyMessages(nsIMsgFolder *srcFolder, nsISupportsArray *messages, PRBool isMove, nsIMsgWindow *msgWindow, nsIMsgCopyServiceListener *listener) { return _to ## CopyMessages(srcFolder, messages, isMove, msgWindow, listener); } \
  NS_IMETHOD CopyFileMessage(nsIFileSpec *fileSpec, nsIMessage *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 CreateMessageFromMsgDBHdr(nsIMsgDBHdr *msgDBHdr, nsIMessage **_retval) { return _to ## CreateMessageFromMsgDBHdr(msgDBHdr, _retval); } \
  NS_IMETHOD GetNewMessages(nsIMsgWindow *aWindow) { return _to ## GetNewMessages(aWindow); } \
  NS_IMETHOD WriteToFolderCache(nsIMsgFolderCache *folderCache, PRBool deep) { return _to ## WriteToFolderCache(folderCache, deep); } \
  NS_IMETHOD GetCharset(PRUnichar * *aCharset) { return _to ## GetCharset(aCharset); } \
  NS_IMETHOD SetCharset(const PRUnichar * aCharset) { return _to ## SetCharset(aCharset); } \
  NS_IMETHOD GetBiffState(PRUint32 *aBiffState) { return _to ## GetBiffState(aBiffState); } \
  NS_IMETHOD SetBiffState(PRUint32 aBiffState) { return _to ## SetBiffState(aBiffState); } \
  NS_IMETHOD GetNumNewMessages(PRInt32 *aNumNewMessages) { return _to ## GetNumNewMessages(aNumNewMessages); } \
  NS_IMETHOD SetNumNewMessages(PRInt32 aNumNewMessages) { return _to ## SetNumNewMessages(aNumNewMessages); } \
  NS_IMETHOD GetNewMessagesNotificationDescription(PRUnichar * *aNewMessagesNotificationDescription) { return _to ## GetNewMessagesNotificationDescription(aNewMessagesNotificationDescription); } \
  NS_IMETHOD GetGettingNewMessages(PRBool *aGettingNewMessages) { return _to ## GetGettingNewMessages(aGettingNewMessages); } \
  NS_IMETHOD SetGettingNewMessages(PRBool aGettingNewMessages) { return _to ## SetGettingNewMessages(aGettingNewMessages); } \
  NS_IMETHOD GetPath(nsIFileSpec * *aPath) { return _to ## GetPath(aPath); } \
  NS_IMETHOD SetPath(nsIFileSpec * aPath) { return _to ## SetPath(aPath); } \
  NS_IMETHOD MarkMessagesRead(nsISupportsArray *messages, PRBool markRead) { return _to ## MarkMessagesRead(messages, markRead); } \
  NS_IMETHOD MarkAllMessagesRead(void) { return _to ## MarkAllMessagesRead(); } \
  NS_IMETHOD MarkMessagesFlagged(nsISupportsArray *messages, PRBool markFlagged) { return _to ## MarkMessagesFlagged(messages, markFlagged); } \
  NS_IMETHOD MarkThreadRead(nsIMsgThread *thread) { return _to ## MarkThreadRead(thread); } \
  NS_IMETHOD GetMsgDatabase(nsIMsgWindow *msgWindow, nsIMsgDatabase **_retval) { return _to ## GetMsgDatabase(msgWindow, _retval); } \
  NS_IMETHOD GetDBFolderInfoAndDB(nsIDBFolderInfo **folderInfo, nsIMsgDatabase **_retval) { return _to ## GetDBFolderInfoAndDB(folderInfo, _retval); } \
  NS_IMETHOD GetChildWithURI(const char *uri, PRBool deep, nsIMsgFolder **_retval) { return _to ## GetChildWithURI(uri, deep, _retval); } \
  NS_IMETHOD EnableNotifications(PRInt32 notificationType, PRBool enable) { return _to ## EnableNotifications(notificationType, enable); } 

#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;
}

/* nsISimpleEnumerator getThreads (in nsIMsgWindow aMsgWindow); */
NS_IMETHODIMP nsMsgFolder::GetThreads(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;
}

/* nsIMsgThread getThreadForMessage (in nsIMessage message); */
NS_IMETHODIMP nsMsgFolder::GetThreadForMessage(nsIMessage *message, nsIMsgThread **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean hasMessage (in nsIMessage message); */
NS_IMETHODIMP nsMsgFolder::HasMessage(nsIMessage *message, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/* void createSubfolder (in wstring folderName); */
NS_IMETHODIMP nsMsgFolder::CreateSubfolder(const PRUnichar *folderName)
{
    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 (); */
NS_IMETHODIMP nsMsgFolder::Compact()
{
    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); */
NS_IMETHODIMP nsMsgFolder::Rename(const PRUnichar *name)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void adopt (in nsIMsgFolder srcFolder, out unsigned long outPos); */
NS_IMETHODIMP nsMsgFolder::Adopt(nsIMsgFolder *srcFolder, PRUint32 *outPos)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/* void copyFileMessage (in nsIFileSpec fileSpec, in nsIMessage msgToReplace, in boolean isDraft, in nsIMsgWindow msgWindow, in nsIMsgCopyServiceListener listener); */
NS_IMETHODIMP nsMsgFolder::CopyFileMessage(nsIFileSpec *fileSpec, nsIMessage *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;
}

/* nsIMessage createMessageFromMsgDBHdr (in nsIMsgDBHdr msgDBHdr); */
NS_IMETHODIMP nsMsgFolder::CreateMessageFromMsgDBHdr(nsIMsgDBHdr *msgDBHdr, nsIMessage **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


#endif /* __gen_nsIMsgFolder_h__ */
