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

#ifndef __gen_nsIMsgAccountManager_h__
#define __gen_nsIMsgAccountManager_h__


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

#ifndef __gen_nsIMsgAccount_h__
#include "nsIMsgAccount.h"
#endif

#ifndef __gen_nsIMsgIdentity_h__
#include "nsIMsgIdentity.h"
#endif

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

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

#ifndef __gen_nsIIncomingServerListener_h__
#include "nsIIncomingServerListener.h"
#endif

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

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

class nsIFolderListener; /* forward declaration */


/* starting interface:    nsIMsgAccountManager */
#define NS_IMSGACCOUNTMANAGER_IID_STR "6ed2cc00-e623-11d2-b7fc-00805f05ffa5"

#define NS_IMSGACCOUNTMANAGER_IID \
  {0x6ed2cc00, 0xe623, 0x11d2, \
    { 0xb7, 0xfc, 0x00, 0x80, 0x5f, 0x05, 0xff, 0xa5 }}

class NS_NO_VTABLE nsIMsgAccountManager : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMSGACCOUNTMANAGER_IID)

  /* nsIMsgAccount createAccount (); */
  NS_IMETHOD CreateAccount(nsIMsgAccount **_retval) = 0;

  /* nsIMsgAccount getAccount (in string key); */
  NS_IMETHOD GetAccount(const char *key, nsIMsgAccount **_retval) = 0;

  /* void removeAccount (in nsIMsgAccount account); */
  NS_IMETHOD RemoveAccount(nsIMsgAccount *account) = 0;

  /* void removeIdentity (in nsIMsgIdentity identity); */
  NS_IMETHOD RemoveIdentity(nsIMsgIdentity *identity) = 0;

  /* void duplicateAccount (in nsIMsgAccount account); */
  NS_IMETHOD DuplicateAccount(nsIMsgAccount *account) = 0;

  /* nsIMsgIdentity createIdentity (); */
  NS_IMETHOD CreateIdentity(nsIMsgIdentity **_retval) = 0;

  /* nsIMsgIncomingServer createIncomingServer (in string username, in string hostname, in string type); */
  NS_IMETHOD CreateIncomingServer(const char *username, const char *hostname, const char *type, nsIMsgIncomingServer **_retval) = 0;

  /* nsIMsgIdentity getIdentity (in string key); */
  NS_IMETHOD GetIdentity(const char *key, nsIMsgIdentity **_retval) = 0;

  /* nsIMsgIncomingServer getIncomingServer (in string key); */
  NS_IMETHOD GetIncomingServer(const char *key, nsIMsgIncomingServer **_retval) = 0;

  /* attribute nsIMsgAccount defaultAccount; */
  NS_IMETHOD GetDefaultAccount(nsIMsgAccount * *aDefaultAccount) = 0;
  NS_IMETHOD SetDefaultAccount(nsIMsgAccount * aDefaultAccount) = 0;

  /**
   * ordered list of all accounts, by the order they are in the prefs
   * array of nsIMsgAccount
   */
  /* readonly attribute nsISupportsArray accounts; */
  NS_IMETHOD GetAccounts(nsISupportsArray * *aAccounts) = 0;

  /* readonly attribute nsISupportsArray allIdentities; */
  NS_IMETHOD GetAllIdentities(nsISupportsArray * *aAllIdentities) = 0;

  /* readonly attribute nsISupportsArray allServers; */
  NS_IMETHOD GetAllServers(nsISupportsArray * *aAllServers) = 0;

  /* readonly attribute nsIMsgFolderCache folderCache; */
  NS_IMETHOD GetFolderCache(nsIMsgFolderCache * *aFolderCache) = 0;

  /* readonly attribute boolean shutdownInProgress; */
  NS_IMETHOD GetShutdownInProgress(PRBool *aShutdownInProgress) = 0;

  /* nsIMsgIncomingServer FindServer (in string userName, in string hostname, in string type); */
  NS_IMETHOD FindServer(const char *userName, const char *hostname, const char *type, nsIMsgIncomingServer **_retval) = 0;

  /**
   * find the index of this server in the (ordered) list of accounts
   */
  /* long FindServerIndex (in nsIMsgIncomingServer server); */
  NS_IMETHOD FindServerIndex(nsIMsgIncomingServer *server, PRInt32 *_retval) = 0;

  /* nsIMsgAccount FindAccountForServer (in nsIMsgIncomingServer server); */
  NS_IMETHOD FindAccountForServer(nsIMsgIncomingServer *server, nsIMsgAccount **_retval) = 0;

  /* nsISupportsArray GetIdentitiesForServer (in nsIMsgIncomingServer server); */
  NS_IMETHOD GetIdentitiesForServer(nsIMsgIncomingServer *server, nsISupportsArray **_retval) = 0;

  /* nsISupportsArray GetServersForIdentity (in nsIMsgIdentity identity); */
  NS_IMETHOD GetServersForIdentity(nsIMsgIdentity *identity, nsISupportsArray **_retval) = 0;

  /* attribute nsIMsgIncomingServer localFoldersServer; */
  NS_IMETHOD GetLocalFoldersServer(nsIMsgIncomingServer * *aLocalFoldersServer) = 0;
  NS_IMETHOD SetLocalFoldersServer(nsIMsgIncomingServer * aLocalFoldersServer) = 0;

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

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

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

  /* void WriteToFolderCache (in nsIMsgFolderCache folderCache); */
  NS_IMETHOD WriteToFolderCache(nsIMsgFolderCache *folderCache) = 0;

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

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

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

  /* boolean GetEmptyTrashInProgress (); */
  NS_IMETHOD GetEmptyTrashInProgress(PRBool *_retval) = 0;

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

  /* boolean GetCleanupInboxInProgress (); */
  NS_IMETHOD GetCleanupInboxInProgress(PRBool *_retval) = 0;

  /* void addRootFolderListener (in nsIFolderListener listener); */
  NS_IMETHOD AddRootFolderListener(nsIFolderListener *listener) = 0;

  /* void removeRootFolderListener (in nsIFolderListener listener); */
  NS_IMETHOD RemoveRootFolderListener(nsIFolderListener *listener) = 0;

  /* void AddIncomingServerListener (in nsIIncomingServerListener serverListener); */
  NS_IMETHOD AddIncomingServerListener(nsIIncomingServerListener *serverListener) = 0;

  /* void RemoveIncomingServerListener (in nsIIncomingServerListener serverListener); */
  NS_IMETHOD RemoveIncomingServerListener(nsIIncomingServerListener *serverListener) = 0;

  /* void NotifyServerLoaded (in nsIMsgIncomingServer server); */
  NS_IMETHOD NotifyServerLoaded(nsIMsgIncomingServer *server) = 0;

  /* void NotifyServerUnloaded (in nsIMsgIncomingServer server); */
  NS_IMETHOD NotifyServerUnloaded(nsIMsgIncomingServer *server) = 0;

  /* void saveAccountInfo (); */
  NS_IMETHOD SaveAccountInfo(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGACCOUNTMANAGER \
  NS_IMETHOD CreateAccount(nsIMsgAccount **_retval); \
  NS_IMETHOD GetAccount(const char *key, nsIMsgAccount **_retval); \
  NS_IMETHOD RemoveAccount(nsIMsgAccount *account); \
  NS_IMETHOD RemoveIdentity(nsIMsgIdentity *identity); \
  NS_IMETHOD DuplicateAccount(nsIMsgAccount *account); \
  NS_IMETHOD CreateIdentity(nsIMsgIdentity **_retval); \
  NS_IMETHOD CreateIncomingServer(const char *username, const char *hostname, const char *type, nsIMsgIncomingServer **_retval); \
  NS_IMETHOD GetIdentity(const char *key, nsIMsgIdentity **_retval); \
  NS_IMETHOD GetIncomingServer(const char *key, nsIMsgIncomingServer **_retval); \
  NS_IMETHOD GetDefaultAccount(nsIMsgAccount * *aDefaultAccount); \
  NS_IMETHOD SetDefaultAccount(nsIMsgAccount * aDefaultAccount); \
  NS_IMETHOD GetAccounts(nsISupportsArray * *aAccounts); \
  NS_IMETHOD GetAllIdentities(nsISupportsArray * *aAllIdentities); \
  NS_IMETHOD GetAllServers(nsISupportsArray * *aAllServers); \
  NS_IMETHOD GetFolderCache(nsIMsgFolderCache * *aFolderCache); \
  NS_IMETHOD GetShutdownInProgress(PRBool *aShutdownInProgress); \
  NS_IMETHOD FindServer(const char *userName, const char *hostname, const char *type, nsIMsgIncomingServer **_retval); \
  NS_IMETHOD FindServerIndex(nsIMsgIncomingServer *server, PRInt32 *_retval); \
  NS_IMETHOD FindAccountForServer(nsIMsgIncomingServer *server, nsIMsgAccount **_retval); \
  NS_IMETHOD GetIdentitiesForServer(nsIMsgIncomingServer *server, nsISupportsArray **_retval); \
  NS_IMETHOD GetServersForIdentity(nsIMsgIdentity *identity, nsISupportsArray **_retval); \
  NS_IMETHOD GetLocalFoldersServer(nsIMsgIncomingServer * *aLocalFoldersServer); \
  NS_IMETHOD SetLocalFoldersServer(nsIMsgIncomingServer * aLocalFoldersServer); \
  NS_IMETHOD LoadAccounts(void); \
  NS_IMETHOD SetSpecialFoldersForIdentities(void); \
  NS_IMETHOD UnloadAccounts(void); \
  NS_IMETHOD WriteToFolderCache(nsIMsgFolderCache *folderCache); \
  NS_IMETHOD CloseCachedConnections(void); \
  NS_IMETHOD CleanupOnExit(void); \
  NS_IMETHOD SetFolderDoingEmptyTrash(nsIMsgFolder *folder); \
  NS_IMETHOD GetEmptyTrashInProgress(PRBool *_retval); \
  NS_IMETHOD SetFolderDoingCleanupInbox(nsIMsgFolder *folder); \
  NS_IMETHOD GetCleanupInboxInProgress(PRBool *_retval); \
  NS_IMETHOD AddRootFolderListener(nsIFolderListener *listener); \
  NS_IMETHOD RemoveRootFolderListener(nsIFolderListener *listener); \
  NS_IMETHOD AddIncomingServerListener(nsIIncomingServerListener *serverListener); \
  NS_IMETHOD RemoveIncomingServerListener(nsIIncomingServerListener *serverListener); \
  NS_IMETHOD NotifyServerLoaded(nsIMsgIncomingServer *server); \
  NS_IMETHOD NotifyServerUnloaded(nsIMsgIncomingServer *server); \
  NS_IMETHOD SaveAccountInfo(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGACCOUNTMANAGER(_to) \
  NS_IMETHOD CreateAccount(nsIMsgAccount **_retval) { return _to ## CreateAccount(_retval); } \
  NS_IMETHOD GetAccount(const char *key, nsIMsgAccount **_retval) { return _to ## GetAccount(key, _retval); } \
  NS_IMETHOD RemoveAccount(nsIMsgAccount *account) { return _to ## RemoveAccount(account); } \
  NS_IMETHOD RemoveIdentity(nsIMsgIdentity *identity) { return _to ## RemoveIdentity(identity); } \
  NS_IMETHOD DuplicateAccount(nsIMsgAccount *account) { return _to ## DuplicateAccount(account); } \
  NS_IMETHOD CreateIdentity(nsIMsgIdentity **_retval) { return _to ## CreateIdentity(_retval); } \
  NS_IMETHOD CreateIncomingServer(const char *username, const char *hostname, const char *type, nsIMsgIncomingServer **_retval) { return _to ## CreateIncomingServer(username, hostname, type, _retval); } \
  NS_IMETHOD GetIdentity(const char *key, nsIMsgIdentity **_retval) { return _to ## GetIdentity(key, _retval); } \
  NS_IMETHOD GetIncomingServer(const char *key, nsIMsgIncomingServer **_retval) { return _to ## GetIncomingServer(key, _retval); } \
  NS_IMETHOD GetDefaultAccount(nsIMsgAccount * *aDefaultAccount) { return _to ## GetDefaultAccount(aDefaultAccount); } \
  NS_IMETHOD SetDefaultAccount(nsIMsgAccount * aDefaultAccount) { return _to ## SetDefaultAccount(aDefaultAccount); } \
  NS_IMETHOD GetAccounts(nsISupportsArray * *aAccounts) { return _to ## GetAccounts(aAccounts); } \
  NS_IMETHOD GetAllIdentities(nsISupportsArray * *aAllIdentities) { return _to ## GetAllIdentities(aAllIdentities); } \
  NS_IMETHOD GetAllServers(nsISupportsArray * *aAllServers) { return _to ## GetAllServers(aAllServers); } \
  NS_IMETHOD GetFolderCache(nsIMsgFolderCache * *aFolderCache) { return _to ## GetFolderCache(aFolderCache); } \
  NS_IMETHOD GetShutdownInProgress(PRBool *aShutdownInProgress) { return _to ## GetShutdownInProgress(aShutdownInProgress); } \
  NS_IMETHOD FindServer(const char *userName, const char *hostname, const char *type, nsIMsgIncomingServer **_retval) { return _to ## FindServer(userName, hostname, type, _retval); } \
  NS_IMETHOD FindServerIndex(nsIMsgIncomingServer *server, PRInt32 *_retval) { return _to ## FindServerIndex(server, _retval); } \
  NS_IMETHOD FindAccountForServer(nsIMsgIncomingServer *server, nsIMsgAccount **_retval) { return _to ## FindAccountForServer(server, _retval); } \
  NS_IMETHOD GetIdentitiesForServer(nsIMsgIncomingServer *server, nsISupportsArray **_retval) { return _to ## GetIdentitiesForServer(server, _retval); } \
  NS_IMETHOD GetServersForIdentity(nsIMsgIdentity *identity, nsISupportsArray **_retval) { return _to ## GetServersForIdentity(identity, _retval); } \
  NS_IMETHOD GetLocalFoldersServer(nsIMsgIncomingServer * *aLocalFoldersServer) { return _to ## GetLocalFoldersServer(aLocalFoldersServer); } \
  NS_IMETHOD SetLocalFoldersServer(nsIMsgIncomingServer * aLocalFoldersServer) { return _to ## SetLocalFoldersServer(aLocalFoldersServer); } \
  NS_IMETHOD LoadAccounts(void) { return _to ## LoadAccounts(); } \
  NS_IMETHOD SetSpecialFoldersForIdentities(void) { return _to ## SetSpecialFoldersForIdentities(); } \
  NS_IMETHOD UnloadAccounts(void) { return _to ## UnloadAccounts(); } \
  NS_IMETHOD WriteToFolderCache(nsIMsgFolderCache *folderCache) { return _to ## WriteToFolderCache(folderCache); } \
  NS_IMETHOD CloseCachedConnections(void) { return _to ## CloseCachedConnections(); } \
  NS_IMETHOD CleanupOnExit(void) { return _to ## CleanupOnExit(); } \
  NS_IMETHOD SetFolderDoingEmptyTrash(nsIMsgFolder *folder) { return _to ## SetFolderDoingEmptyTrash(folder); } \
  NS_IMETHOD GetEmptyTrashInProgress(PRBool *_retval) { return _to ## GetEmptyTrashInProgress(_retval); } \
  NS_IMETHOD SetFolderDoingCleanupInbox(nsIMsgFolder *folder) { return _to ## SetFolderDoingCleanupInbox(folder); } \
  NS_IMETHOD GetCleanupInboxInProgress(PRBool *_retval) { return _to ## GetCleanupInboxInProgress(_retval); } \
  NS_IMETHOD AddRootFolderListener(nsIFolderListener *listener) { return _to ## AddRootFolderListener(listener); } \
  NS_IMETHOD RemoveRootFolderListener(nsIFolderListener *listener) { return _to ## RemoveRootFolderListener(listener); } \
  NS_IMETHOD AddIncomingServerListener(nsIIncomingServerListener *serverListener) { return _to ## AddIncomingServerListener(serverListener); } \
  NS_IMETHOD RemoveIncomingServerListener(nsIIncomingServerListener *serverListener) { return _to ## RemoveIncomingServerListener(serverListener); } \
  NS_IMETHOD NotifyServerLoaded(nsIMsgIncomingServer *server) { return _to ## NotifyServerLoaded(server); } \
  NS_IMETHOD NotifyServerUnloaded(nsIMsgIncomingServer *server) { return _to ## NotifyServerUnloaded(server); } \
  NS_IMETHOD SaveAccountInfo(void) { return _to ## SaveAccountInfo(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGACCOUNTMANAGER(_to) \
  NS_IMETHOD CreateAccount(nsIMsgAccount **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> CreateAccount(_retval); } \
  NS_IMETHOD GetAccount(const char *key, nsIMsgAccount **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetAccount(key, _retval); } \
  NS_IMETHOD RemoveAccount(nsIMsgAccount *account) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> RemoveAccount(account); } \
  NS_IMETHOD RemoveIdentity(nsIMsgIdentity *identity) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> RemoveIdentity(identity); } \
  NS_IMETHOD DuplicateAccount(nsIMsgAccount *account) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> DuplicateAccount(account); } \
  NS_IMETHOD CreateIdentity(nsIMsgIdentity **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> CreateIdentity(_retval); } \
  NS_IMETHOD CreateIncomingServer(const char *username, const char *hostname, const char *type, nsIMsgIncomingServer **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> CreateIncomingServer(username, hostname, type, _retval); } \
  NS_IMETHOD GetIdentity(const char *key, nsIMsgIdentity **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetIdentity(key, _retval); } \
  NS_IMETHOD GetIncomingServer(const char *key, nsIMsgIncomingServer **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetIncomingServer(key, _retval); } \
  NS_IMETHOD GetDefaultAccount(nsIMsgAccount * *aDefaultAccount) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetDefaultAccount(aDefaultAccount); } \
  NS_IMETHOD SetDefaultAccount(nsIMsgAccount * aDefaultAccount) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetDefaultAccount(aDefaultAccount); } \
  NS_IMETHOD GetAccounts(nsISupportsArray * *aAccounts) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetAccounts(aAccounts); } \
  NS_IMETHOD GetAllIdentities(nsISupportsArray * *aAllIdentities) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetAllIdentities(aAllIdentities); } \
  NS_IMETHOD GetAllServers(nsISupportsArray * *aAllServers) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetAllServers(aAllServers); } \
  NS_IMETHOD GetFolderCache(nsIMsgFolderCache * *aFolderCache) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetFolderCache(aFolderCache); } \
  NS_IMETHOD GetShutdownInProgress(PRBool *aShutdownInProgress) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetShutdownInProgress(aShutdownInProgress); } \
  NS_IMETHOD FindServer(const char *userName, const char *hostname, const char *type, nsIMsgIncomingServer **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> FindServer(userName, hostname, type, _retval); } \
  NS_IMETHOD FindServerIndex(nsIMsgIncomingServer *server, PRInt32 *_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> FindServerIndex(server, _retval); } \
  NS_IMETHOD FindAccountForServer(nsIMsgIncomingServer *server, nsIMsgAccount **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> FindAccountForServer(server, _retval); } \
  NS_IMETHOD GetIdentitiesForServer(nsIMsgIncomingServer *server, nsISupportsArray **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetIdentitiesForServer(server, _retval); } \
  NS_IMETHOD GetServersForIdentity(nsIMsgIdentity *identity, nsISupportsArray **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetServersForIdentity(identity, _retval); } \
  NS_IMETHOD GetLocalFoldersServer(nsIMsgIncomingServer * *aLocalFoldersServer) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetLocalFoldersServer(aLocalFoldersServer); } \
  NS_IMETHOD SetLocalFoldersServer(nsIMsgIncomingServer * aLocalFoldersServer) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetLocalFoldersServer(aLocalFoldersServer); } \
  NS_IMETHOD LoadAccounts(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> LoadAccounts(); } \
  NS_IMETHOD SetSpecialFoldersForIdentities(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> SetSpecialFoldersForIdentities(); } \
  NS_IMETHOD UnloadAccounts(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> UnloadAccounts(); } \
  NS_IMETHOD WriteToFolderCache(nsIMsgFolderCache *folderCache) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> WriteToFolderCache(folderCache); } \
  NS_IMETHOD CloseCachedConnections(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> CloseCachedConnections(); } \
  NS_IMETHOD CleanupOnExit(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> CleanupOnExit(); } \
  NS_IMETHOD SetFolderDoingEmptyTrash(nsIMsgFolder *folder) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> SetFolderDoingEmptyTrash(folder); } \
  NS_IMETHOD GetEmptyTrashInProgress(PRBool *_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetEmptyTrashInProgress(_retval); } \
  NS_IMETHOD SetFolderDoingCleanupInbox(nsIMsgFolder *folder) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> SetFolderDoingCleanupInbox(folder); } \
  NS_IMETHOD GetCleanupInboxInProgress(PRBool *_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetCleanupInboxInProgress(_retval); } \
  NS_IMETHOD AddRootFolderListener(nsIFolderListener *listener) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> AddRootFolderListener(listener); } \
  NS_IMETHOD RemoveRootFolderListener(nsIFolderListener *listener) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> RemoveRootFolderListener(listener); } \
  NS_IMETHOD AddIncomingServerListener(nsIIncomingServerListener *serverListener) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> AddIncomingServerListener(serverListener); } \
  NS_IMETHOD RemoveIncomingServerListener(nsIIncomingServerListener *serverListener) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> RemoveIncomingServerListener(serverListener); } \
  NS_IMETHOD NotifyServerLoaded(nsIMsgIncomingServer *server) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> NotifyServerLoaded(server); } \
  NS_IMETHOD NotifyServerUnloaded(nsIMsgIncomingServer *server) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> NotifyServerUnloaded(server); } \
  NS_IMETHOD SaveAccountInfo(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> SaveAccountInfo(); } 

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

/* Header file */
class nsMsgAccountManager : public nsIMsgAccountManager
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGACCOUNTMANAGER

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgAccountManager, nsIMsgAccountManager)

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

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

/* nsIMsgAccount createAccount (); */
NS_IMETHODIMP nsMsgAccountManager::CreateAccount(nsIMsgAccount **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgAccount getAccount (in string key); */
NS_IMETHODIMP nsMsgAccountManager::GetAccount(const char *key, nsIMsgAccount **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeAccount (in nsIMsgAccount account); */
NS_IMETHODIMP nsMsgAccountManager::RemoveAccount(nsIMsgAccount *account)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeIdentity (in nsIMsgIdentity identity); */
NS_IMETHODIMP nsMsgAccountManager::RemoveIdentity(nsIMsgIdentity *identity)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void duplicateAccount (in nsIMsgAccount account); */
NS_IMETHODIMP nsMsgAccountManager::DuplicateAccount(nsIMsgAccount *account)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgIdentity createIdentity (); */
NS_IMETHODIMP nsMsgAccountManager::CreateIdentity(nsIMsgIdentity **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgIncomingServer createIncomingServer (in string username, in string hostname, in string type); */
NS_IMETHODIMP nsMsgAccountManager::CreateIncomingServer(const char *username, const char *hostname, const char *type, nsIMsgIncomingServer **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgIdentity getIdentity (in string key); */
NS_IMETHODIMP nsMsgAccountManager::GetIdentity(const char *key, nsIMsgIdentity **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgIncomingServer getIncomingServer (in string key); */
NS_IMETHODIMP nsMsgAccountManager::GetIncomingServer(const char *key, nsIMsgIncomingServer **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIMsgAccount defaultAccount; */
NS_IMETHODIMP nsMsgAccountManager::GetDefaultAccount(nsIMsgAccount * *aDefaultAccount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAccountManager::SetDefaultAccount(nsIMsgAccount * aDefaultAccount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsISupportsArray accounts; */
NS_IMETHODIMP nsMsgAccountManager::GetAccounts(nsISupportsArray * *aAccounts)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsISupportsArray allIdentities; */
NS_IMETHODIMP nsMsgAccountManager::GetAllIdentities(nsISupportsArray * *aAllIdentities)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsISupportsArray allServers; */
NS_IMETHODIMP nsMsgAccountManager::GetAllServers(nsISupportsArray * *aAllServers)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMsgFolderCache folderCache; */
NS_IMETHODIMP nsMsgAccountManager::GetFolderCache(nsIMsgFolderCache * *aFolderCache)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean shutdownInProgress; */
NS_IMETHODIMP nsMsgAccountManager::GetShutdownInProgress(PRBool *aShutdownInProgress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgIncomingServer FindServer (in string userName, in string hostname, in string type); */
NS_IMETHODIMP nsMsgAccountManager::FindServer(const char *userName, const char *hostname, const char *type, nsIMsgIncomingServer **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* long FindServerIndex (in nsIMsgIncomingServer server); */
NS_IMETHODIMP nsMsgAccountManager::FindServerIndex(nsIMsgIncomingServer *server, PRInt32 *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgAccount FindAccountForServer (in nsIMsgIncomingServer server); */
NS_IMETHODIMP nsMsgAccountManager::FindAccountForServer(nsIMsgIncomingServer *server, nsIMsgAccount **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISupportsArray GetIdentitiesForServer (in nsIMsgIncomingServer server); */
NS_IMETHODIMP nsMsgAccountManager::GetIdentitiesForServer(nsIMsgIncomingServer *server, nsISupportsArray **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISupportsArray GetServersForIdentity (in nsIMsgIdentity identity); */
NS_IMETHODIMP nsMsgAccountManager::GetServersForIdentity(nsIMsgIdentity *identity, nsISupportsArray **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIMsgIncomingServer localFoldersServer; */
NS_IMETHODIMP nsMsgAccountManager::GetLocalFoldersServer(nsIMsgIncomingServer * *aLocalFoldersServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAccountManager::SetLocalFoldersServer(nsIMsgIncomingServer * aLocalFoldersServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void LoadAccounts (); */
NS_IMETHODIMP nsMsgAccountManager::LoadAccounts()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void SetSpecialFoldersForIdentities (); */
NS_IMETHODIMP nsMsgAccountManager::SetSpecialFoldersForIdentities()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void UnloadAccounts (); */
NS_IMETHODIMP nsMsgAccountManager::UnloadAccounts()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void WriteToFolderCache (in nsIMsgFolderCache folderCache); */
NS_IMETHODIMP nsMsgAccountManager::WriteToFolderCache(nsIMsgFolderCache *folderCache)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void CloseCachedConnections (); */
NS_IMETHODIMP nsMsgAccountManager::CloseCachedConnections()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void CleanupOnExit (); */
NS_IMETHODIMP nsMsgAccountManager::CleanupOnExit()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void SetFolderDoingEmptyTrash (in nsIMsgFolder folder); */
NS_IMETHODIMP nsMsgAccountManager::SetFolderDoingEmptyTrash(nsIMsgFolder *folder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean GetEmptyTrashInProgress (); */
NS_IMETHODIMP nsMsgAccountManager::GetEmptyTrashInProgress(PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void SetFolderDoingCleanupInbox (in nsIMsgFolder folder); */
NS_IMETHODIMP nsMsgAccountManager::SetFolderDoingCleanupInbox(nsIMsgFolder *folder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean GetCleanupInboxInProgress (); */
NS_IMETHODIMP nsMsgAccountManager::GetCleanupInboxInProgress(PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addRootFolderListener (in nsIFolderListener listener); */
NS_IMETHODIMP nsMsgAccountManager::AddRootFolderListener(nsIFolderListener *listener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeRootFolderListener (in nsIFolderListener listener); */
NS_IMETHODIMP nsMsgAccountManager::RemoveRootFolderListener(nsIFolderListener *listener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void AddIncomingServerListener (in nsIIncomingServerListener serverListener); */
NS_IMETHODIMP nsMsgAccountManager::AddIncomingServerListener(nsIIncomingServerListener *serverListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void RemoveIncomingServerListener (in nsIIncomingServerListener serverListener); */
NS_IMETHODIMP nsMsgAccountManager::RemoveIncomingServerListener(nsIIncomingServerListener *serverListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyServerLoaded (in nsIMsgIncomingServer server); */
NS_IMETHODIMP nsMsgAccountManager::NotifyServerLoaded(nsIMsgIncomingServer *server)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyServerUnloaded (in nsIMsgIncomingServer server); */
NS_IMETHODIMP nsMsgAccountManager::NotifyServerUnloaded(nsIMsgIncomingServer *server)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void saveAccountInfo (); */
NS_IMETHODIMP nsMsgAccountManager::SaveAccountInfo()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIMsgAccountManager_h__ */
