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

#ifndef __gen_nsIMsgPluggableStore_h__
#define __gen_nsIMsgPluggableStore_h__


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

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

class nsIMsgFolder; /* forward declaration */

class nsIMsgCopyServiceListener; /* forward declaration */

class nsIMsgDBHdr; /* forward declaration */

class nsIMsgWindow; /* forward declaration */

class nsISimpleEnumerator; /* forward declaration */

class nsIOutputStream; /* forward declaration */

class nsIInputStream; /* forward declaration */

class nsIArray; /* forward declaration */

class nsIUrlListener; /* forward declaration */

class nsIMsgIncomingServer; /* forward declaration */

class nsIMsgDatabase; /* forward declaration */

class nsITransaction; /* forward declaration */


/* starting interface:    nsIMsgPluggableStore */
#define NS_IMSGPLUGGABLESTORE_IID_STR "7c1f7385-ecec-45c5-b194-0a63af6690fd"

#define NS_IMSGPLUGGABLESTORE_IID \
  {0x7c1f7385, 0xecec, 0x45c5, \
    { 0xb1, 0x94, 0x0a, 0x63, 0xaf, 0x66, 0x90, 0xfd }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIMsgPluggableStore : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGPLUGGABLESTORE_IID)

  /* void discoverSubFolders (in nsIMsgFolder aParentFolder, in boolean aDeep); */
  NS_SCRIPTABLE NS_IMETHOD DiscoverSubFolders(nsIMsgFolder *aParentFolder, bool aDeep) = 0;

  /* nsIMsgFolder createFolder (in nsIMsgFolder aParent, in AString aFolderName); */
  NS_SCRIPTABLE NS_IMETHOD CreateFolder(nsIMsgFolder *aParent, const nsAString & aFolderName, nsIMsgFolder * *_retval NS_OUTPARAM) = 0;

  /* nsILocalFile getSummaryFile (in nsIMsgFolder aFolder); */
  NS_SCRIPTABLE NS_IMETHOD GetSummaryFile(nsIMsgFolder *aFolder, nsILocalFile * *_retval NS_OUTPARAM) = 0;

  /* void deleteFolder (in nsIMsgFolder aFolder); */
  NS_SCRIPTABLE NS_IMETHOD DeleteFolder(nsIMsgFolder *aFolder) = 0;

  /* nsIMsgFolder renameFolder (in nsIMsgFolder aFolder, in AString aNewName); */
  NS_SCRIPTABLE NS_IMETHOD RenameFolder(nsIMsgFolder *aFolder, const nsAString & aNewName, nsIMsgFolder * *_retval NS_OUTPARAM) = 0;

  /* boolean hasSpaceAvailable (in nsIMsgFolder aFolder, in long long aSpaceRequested); */
  NS_SCRIPTABLE NS_IMETHOD HasSpaceAvailable(nsIMsgFolder *aFolder, PRInt64 aSpaceRequested, bool *_retval NS_OUTPARAM) = 0;

  /* void copyFolder (in nsIMsgFolder aSrcFolder, in nsIMsgFolder aDstFolder, in boolean aIsMoveFolder, in nsIMsgWindow aMsgWindow, in nsIMsgCopyServiceListener aListener); */
  NS_SCRIPTABLE NS_IMETHOD CopyFolder(nsIMsgFolder *aSrcFolder, nsIMsgFolder *aDstFolder, bool aIsMoveFolder, nsIMsgWindow *aMsgWindow, nsIMsgCopyServiceListener *aListener) = 0;

  /* nsIOutputStream getNewMsgOutputStream (in nsIMsgFolder aFolder, inout nsIMsgDBHdr aNewHdr, out boolean aReusable); */
  NS_SCRIPTABLE NS_IMETHOD GetNewMsgOutputStream(nsIMsgFolder *aFolder, nsIMsgDBHdr * *aNewHdr NS_INOUTPARAM, bool *aReusable NS_OUTPARAM, nsIOutputStream * *_retval NS_OUTPARAM) = 0;

  /* void discardNewMessage (in nsIOutputStream aOutputStream, in nsIMsgDBHdr aNewHdr); */
  NS_SCRIPTABLE NS_IMETHOD DiscardNewMessage(nsIOutputStream *aOutputStream, nsIMsgDBHdr *aNewHdr) = 0;

  /* void finishNewMessage (in nsIOutputStream aOutputStream, in nsIMsgDBHdr aNewHdr); */
  NS_SCRIPTABLE NS_IMETHOD FinishNewMessage(nsIOutputStream *aOutputStream, nsIMsgDBHdr *aNewHdr) = 0;

  /* boolean moveNewlyDownloadedMessage (in nsIMsgDBHdr aNewHdr, in nsIMsgFolder aDestFolder); */
  NS_SCRIPTABLE NS_IMETHOD MoveNewlyDownloadedMessage(nsIMsgDBHdr *aNewHdr, nsIMsgFolder *aDestFolder, bool *_retval NS_OUTPARAM) = 0;

  /* nsIInputStream getMsgInputStream (in nsIMsgFolder aFolder, in ACString aMsgToken, out long long aOffset, [optional] in nsIMsgDBHdr aHdr, [optional] out boolean aReusable); */
  NS_SCRIPTABLE NS_IMETHOD GetMsgInputStream(nsIMsgFolder *aFolder, const nsACString & aMsgToken, PRInt64 *aOffset NS_OUTPARAM, nsIMsgDBHdr *aHdr, bool *aReusable NS_OUTPARAM, nsIInputStream * *_retval NS_OUTPARAM) = 0;

  /* void deleteMessages (in nsIArray aHdrArray); */
  NS_SCRIPTABLE NS_IMETHOD DeleteMessages(nsIArray *aHdrArray) = 0;

  /* boolean copyMessages (in boolean isMove, in nsIArray aHdrArray, in nsIMsgFolder aDstFolder, in nsIMsgCopyServiceListener aListener, out nsITransaction aUndoAction); */
  NS_SCRIPTABLE NS_IMETHOD CopyMessages(bool isMove, nsIArray *aHdrArray, nsIMsgFolder *aDstFolder, nsIMsgCopyServiceListener *aListener, nsITransaction * *aUndoAction NS_OUTPARAM, bool *_retval NS_OUTPARAM) = 0;

  /* readonly attribute boolean supportsCompaction; */
  NS_SCRIPTABLE NS_IMETHOD GetSupportsCompaction(bool *aSupportsCompaction) = 0;

  /* void compactFolder (in nsIMsgFolder aFolder, in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow); */
  NS_SCRIPTABLE NS_IMETHOD CompactFolder(nsIMsgFolder *aFolder, nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow) = 0;

  /* boolean isSummaryFileValid (in nsIMsgFolder aFolder, in nsIMsgDatabase aDB); */
  NS_SCRIPTABLE NS_IMETHOD IsSummaryFileValid(nsIMsgFolder *aFolder, nsIMsgDatabase *aDB, bool *_retval NS_OUTPARAM) = 0;

  /* void setSummaryFileValid (in nsIMsgFolder aFolder, in nsIMsgDatabase aDB, in boolean aValid); */
  NS_SCRIPTABLE NS_IMETHOD SetSummaryFileValid(nsIMsgFolder *aFolder, nsIMsgDatabase *aDB, bool aValid) = 0;

  /* void rebuildIndex (in nsIMsgFolder aFolder, in nsIMsgDatabase aMsgDB, in nsIMsgWindow aMsgWindow, in nsIUrlListener aListener); */
  NS_SCRIPTABLE NS_IMETHOD RebuildIndex(nsIMsgFolder *aFolder, nsIMsgDatabase *aMsgDB, nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener) = 0;

  /* void changeFlags (in nsIArray aHdrArray, in unsigned long aFlags, in boolean aSet); */
  NS_SCRIPTABLE NS_IMETHOD ChangeFlags(nsIArray *aHdrArray, PRUint32 aFlags, bool aSet) = 0;

  /* void changeKeywords (in nsIArray aHdrArray, in ACString aKeywords, in boolean aAdd); */
  NS_SCRIPTABLE NS_IMETHOD ChangeKeywords(nsIArray *aHdrArray, const nsACString & aKeywords, bool aAdd) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgPluggableStore, NS_IMSGPLUGGABLESTORE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGPLUGGABLESTORE \
  NS_SCRIPTABLE NS_IMETHOD DiscoverSubFolders(nsIMsgFolder *aParentFolder, bool aDeep); \
  NS_SCRIPTABLE NS_IMETHOD CreateFolder(nsIMsgFolder *aParent, const nsAString & aFolderName, nsIMsgFolder * *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetSummaryFile(nsIMsgFolder *aFolder, nsILocalFile * *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD DeleteFolder(nsIMsgFolder *aFolder); \
  NS_SCRIPTABLE NS_IMETHOD RenameFolder(nsIMsgFolder *aFolder, const nsAString & aNewName, nsIMsgFolder * *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD HasSpaceAvailable(nsIMsgFolder *aFolder, PRInt64 aSpaceRequested, bool *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD CopyFolder(nsIMsgFolder *aSrcFolder, nsIMsgFolder *aDstFolder, bool aIsMoveFolder, nsIMsgWindow *aMsgWindow, nsIMsgCopyServiceListener *aListener); \
  NS_SCRIPTABLE NS_IMETHOD GetNewMsgOutputStream(nsIMsgFolder *aFolder, nsIMsgDBHdr * *aNewHdr NS_INOUTPARAM, bool *aReusable NS_OUTPARAM, nsIOutputStream * *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD DiscardNewMessage(nsIOutputStream *aOutputStream, nsIMsgDBHdr *aNewHdr); \
  NS_SCRIPTABLE NS_IMETHOD FinishNewMessage(nsIOutputStream *aOutputStream, nsIMsgDBHdr *aNewHdr); \
  NS_SCRIPTABLE NS_IMETHOD MoveNewlyDownloadedMessage(nsIMsgDBHdr *aNewHdr, nsIMsgFolder *aDestFolder, bool *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetMsgInputStream(nsIMsgFolder *aFolder, const nsACString & aMsgToken, PRInt64 *aOffset NS_OUTPARAM, nsIMsgDBHdr *aHdr, bool *aReusable NS_OUTPARAM, nsIInputStream * *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD DeleteMessages(nsIArray *aHdrArray); \
  NS_SCRIPTABLE NS_IMETHOD CopyMessages(bool isMove, nsIArray *aHdrArray, nsIMsgFolder *aDstFolder, nsIMsgCopyServiceListener *aListener, nsITransaction * *aUndoAction NS_OUTPARAM, bool *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetSupportsCompaction(bool *aSupportsCompaction); \
  NS_SCRIPTABLE NS_IMETHOD CompactFolder(nsIMsgFolder *aFolder, nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow); \
  NS_SCRIPTABLE NS_IMETHOD IsSummaryFileValid(nsIMsgFolder *aFolder, nsIMsgDatabase *aDB, bool *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD SetSummaryFileValid(nsIMsgFolder *aFolder, nsIMsgDatabase *aDB, bool aValid); \
  NS_SCRIPTABLE NS_IMETHOD RebuildIndex(nsIMsgFolder *aFolder, nsIMsgDatabase *aMsgDB, nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener); \
  NS_SCRIPTABLE NS_IMETHOD ChangeFlags(nsIArray *aHdrArray, PRUint32 aFlags, bool aSet); \
  NS_SCRIPTABLE NS_IMETHOD ChangeKeywords(nsIArray *aHdrArray, const nsACString & aKeywords, bool aAdd); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGPLUGGABLESTORE(_to) \
  NS_SCRIPTABLE NS_IMETHOD DiscoverSubFolders(nsIMsgFolder *aParentFolder, bool aDeep) { return _to DiscoverSubFolders(aParentFolder, aDeep); } \
  NS_SCRIPTABLE NS_IMETHOD CreateFolder(nsIMsgFolder *aParent, const nsAString & aFolderName, nsIMsgFolder * *_retval NS_OUTPARAM) { return _to CreateFolder(aParent, aFolderName, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetSummaryFile(nsIMsgFolder *aFolder, nsILocalFile * *_retval NS_OUTPARAM) { return _to GetSummaryFile(aFolder, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD DeleteFolder(nsIMsgFolder *aFolder) { return _to DeleteFolder(aFolder); } \
  NS_SCRIPTABLE NS_IMETHOD RenameFolder(nsIMsgFolder *aFolder, const nsAString & aNewName, nsIMsgFolder * *_retval NS_OUTPARAM) { return _to RenameFolder(aFolder, aNewName, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD HasSpaceAvailable(nsIMsgFolder *aFolder, PRInt64 aSpaceRequested, bool *_retval NS_OUTPARAM) { return _to HasSpaceAvailable(aFolder, aSpaceRequested, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD CopyFolder(nsIMsgFolder *aSrcFolder, nsIMsgFolder *aDstFolder, bool aIsMoveFolder, nsIMsgWindow *aMsgWindow, nsIMsgCopyServiceListener *aListener) { return _to CopyFolder(aSrcFolder, aDstFolder, aIsMoveFolder, aMsgWindow, aListener); } \
  NS_SCRIPTABLE NS_IMETHOD GetNewMsgOutputStream(nsIMsgFolder *aFolder, nsIMsgDBHdr * *aNewHdr NS_INOUTPARAM, bool *aReusable NS_OUTPARAM, nsIOutputStream * *_retval NS_OUTPARAM) { return _to GetNewMsgOutputStream(aFolder, aNewHdr, aReusable, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD DiscardNewMessage(nsIOutputStream *aOutputStream, nsIMsgDBHdr *aNewHdr) { return _to DiscardNewMessage(aOutputStream, aNewHdr); } \
  NS_SCRIPTABLE NS_IMETHOD FinishNewMessage(nsIOutputStream *aOutputStream, nsIMsgDBHdr *aNewHdr) { return _to FinishNewMessage(aOutputStream, aNewHdr); } \
  NS_SCRIPTABLE NS_IMETHOD MoveNewlyDownloadedMessage(nsIMsgDBHdr *aNewHdr, nsIMsgFolder *aDestFolder, bool *_retval NS_OUTPARAM) { return _to MoveNewlyDownloadedMessage(aNewHdr, aDestFolder, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetMsgInputStream(nsIMsgFolder *aFolder, const nsACString & aMsgToken, PRInt64 *aOffset NS_OUTPARAM, nsIMsgDBHdr *aHdr, bool *aReusable NS_OUTPARAM, nsIInputStream * *_retval NS_OUTPARAM) { return _to GetMsgInputStream(aFolder, aMsgToken, aOffset, aHdr, aReusable, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD DeleteMessages(nsIArray *aHdrArray) { return _to DeleteMessages(aHdrArray); } \
  NS_SCRIPTABLE NS_IMETHOD CopyMessages(bool isMove, nsIArray *aHdrArray, nsIMsgFolder *aDstFolder, nsIMsgCopyServiceListener *aListener, nsITransaction * *aUndoAction NS_OUTPARAM, bool *_retval NS_OUTPARAM) { return _to CopyMessages(isMove, aHdrArray, aDstFolder, aListener, aUndoAction, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetSupportsCompaction(bool *aSupportsCompaction) { return _to GetSupportsCompaction(aSupportsCompaction); } \
  NS_SCRIPTABLE NS_IMETHOD CompactFolder(nsIMsgFolder *aFolder, nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow) { return _to CompactFolder(aFolder, aListener, aMsgWindow); } \
  NS_SCRIPTABLE NS_IMETHOD IsSummaryFileValid(nsIMsgFolder *aFolder, nsIMsgDatabase *aDB, bool *_retval NS_OUTPARAM) { return _to IsSummaryFileValid(aFolder, aDB, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD SetSummaryFileValid(nsIMsgFolder *aFolder, nsIMsgDatabase *aDB, bool aValid) { return _to SetSummaryFileValid(aFolder, aDB, aValid); } \
  NS_SCRIPTABLE NS_IMETHOD RebuildIndex(nsIMsgFolder *aFolder, nsIMsgDatabase *aMsgDB, nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener) { return _to RebuildIndex(aFolder, aMsgDB, aMsgWindow, aListener); } \
  NS_SCRIPTABLE NS_IMETHOD ChangeFlags(nsIArray *aHdrArray, PRUint32 aFlags, bool aSet) { return _to ChangeFlags(aHdrArray, aFlags, aSet); } \
  NS_SCRIPTABLE NS_IMETHOD ChangeKeywords(nsIArray *aHdrArray, const nsACString & aKeywords, bool aAdd) { return _to ChangeKeywords(aHdrArray, aKeywords, aAdd); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGPLUGGABLESTORE(_to) \
  NS_SCRIPTABLE NS_IMETHOD DiscoverSubFolders(nsIMsgFolder *aParentFolder, bool aDeep) { return !_to ? NS_ERROR_NULL_POINTER : _to->DiscoverSubFolders(aParentFolder, aDeep); } \
  NS_SCRIPTABLE NS_IMETHOD CreateFolder(nsIMsgFolder *aParent, const nsAString & aFolderName, nsIMsgFolder * *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateFolder(aParent, aFolderName, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetSummaryFile(nsIMsgFolder *aFolder, nsILocalFile * *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSummaryFile(aFolder, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD DeleteFolder(nsIMsgFolder *aFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteFolder(aFolder); } \
  NS_SCRIPTABLE NS_IMETHOD RenameFolder(nsIMsgFolder *aFolder, const nsAString & aNewName, nsIMsgFolder * *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->RenameFolder(aFolder, aNewName, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD HasSpaceAvailable(nsIMsgFolder *aFolder, PRInt64 aSpaceRequested, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->HasSpaceAvailable(aFolder, aSpaceRequested, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD CopyFolder(nsIMsgFolder *aSrcFolder, nsIMsgFolder *aDstFolder, bool aIsMoveFolder, nsIMsgWindow *aMsgWindow, nsIMsgCopyServiceListener *aListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyFolder(aSrcFolder, aDstFolder, aIsMoveFolder, aMsgWindow, aListener); } \
  NS_SCRIPTABLE NS_IMETHOD GetNewMsgOutputStream(nsIMsgFolder *aFolder, nsIMsgDBHdr * *aNewHdr NS_INOUTPARAM, bool *aReusable NS_OUTPARAM, nsIOutputStream * *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNewMsgOutputStream(aFolder, aNewHdr, aReusable, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD DiscardNewMessage(nsIOutputStream *aOutputStream, nsIMsgDBHdr *aNewHdr) { return !_to ? NS_ERROR_NULL_POINTER : _to->DiscardNewMessage(aOutputStream, aNewHdr); } \
  NS_SCRIPTABLE NS_IMETHOD FinishNewMessage(nsIOutputStream *aOutputStream, nsIMsgDBHdr *aNewHdr) { return !_to ? NS_ERROR_NULL_POINTER : _to->FinishNewMessage(aOutputStream, aNewHdr); } \
  NS_SCRIPTABLE NS_IMETHOD MoveNewlyDownloadedMessage(nsIMsgDBHdr *aNewHdr, nsIMsgFolder *aDestFolder, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->MoveNewlyDownloadedMessage(aNewHdr, aDestFolder, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetMsgInputStream(nsIMsgFolder *aFolder, const nsACString & aMsgToken, PRInt64 *aOffset NS_OUTPARAM, nsIMsgDBHdr *aHdr, bool *aReusable NS_OUTPARAM, nsIInputStream * *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMsgInputStream(aFolder, aMsgToken, aOffset, aHdr, aReusable, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD DeleteMessages(nsIArray *aHdrArray) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteMessages(aHdrArray); } \
  NS_SCRIPTABLE NS_IMETHOD CopyMessages(bool isMove, nsIArray *aHdrArray, nsIMsgFolder *aDstFolder, nsIMsgCopyServiceListener *aListener, nsITransaction * *aUndoAction NS_OUTPARAM, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyMessages(isMove, aHdrArray, aDstFolder, aListener, aUndoAction, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetSupportsCompaction(bool *aSupportsCompaction) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSupportsCompaction(aSupportsCompaction); } \
  NS_SCRIPTABLE NS_IMETHOD CompactFolder(nsIMsgFolder *aFolder, nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->CompactFolder(aFolder, aListener, aMsgWindow); } \
  NS_SCRIPTABLE NS_IMETHOD IsSummaryFileValid(nsIMsgFolder *aFolder, nsIMsgDatabase *aDB, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsSummaryFileValid(aFolder, aDB, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD SetSummaryFileValid(nsIMsgFolder *aFolder, nsIMsgDatabase *aDB, bool aValid) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSummaryFileValid(aFolder, aDB, aValid); } \
  NS_SCRIPTABLE NS_IMETHOD RebuildIndex(nsIMsgFolder *aFolder, nsIMsgDatabase *aMsgDB, nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener) { return !_to ? NS_ERROR_NULL_POINTER : _to->RebuildIndex(aFolder, aMsgDB, aMsgWindow, aListener); } \
  NS_SCRIPTABLE NS_IMETHOD ChangeFlags(nsIArray *aHdrArray, PRUint32 aFlags, bool aSet) { return !_to ? NS_ERROR_NULL_POINTER : _to->ChangeFlags(aHdrArray, aFlags, aSet); } \
  NS_SCRIPTABLE NS_IMETHOD ChangeKeywords(nsIArray *aHdrArray, const nsACString & aKeywords, bool aAdd) { return !_to ? NS_ERROR_NULL_POINTER : _to->ChangeKeywords(aHdrArray, aKeywords, aAdd); } 

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

/* Header file */
class nsMsgPluggableStore : public nsIMsgPluggableStore
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGPLUGGABLESTORE

  nsMsgPluggableStore();

private:
  ~nsMsgPluggableStore();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgPluggableStore, nsIMsgPluggableStore)

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

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

/* void discoverSubFolders (in nsIMsgFolder aParentFolder, in boolean aDeep); */
NS_IMETHODIMP nsMsgPluggableStore::DiscoverSubFolders(nsIMsgFolder *aParentFolder, bool aDeep)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgFolder createFolder (in nsIMsgFolder aParent, in AString aFolderName); */
NS_IMETHODIMP nsMsgPluggableStore::CreateFolder(nsIMsgFolder *aParent, const nsAString & aFolderName, nsIMsgFolder * *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsILocalFile getSummaryFile (in nsIMsgFolder aFolder); */
NS_IMETHODIMP nsMsgPluggableStore::GetSummaryFile(nsIMsgFolder *aFolder, nsILocalFile * *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteFolder (in nsIMsgFolder aFolder); */
NS_IMETHODIMP nsMsgPluggableStore::DeleteFolder(nsIMsgFolder *aFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgFolder renameFolder (in nsIMsgFolder aFolder, in AString aNewName); */
NS_IMETHODIMP nsMsgPluggableStore::RenameFolder(nsIMsgFolder *aFolder, const nsAString & aNewName, nsIMsgFolder * *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean hasSpaceAvailable (in nsIMsgFolder aFolder, in long long aSpaceRequested); */
NS_IMETHODIMP nsMsgPluggableStore::HasSpaceAvailable(nsIMsgFolder *aFolder, PRInt64 aSpaceRequested, bool *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void copyFolder (in nsIMsgFolder aSrcFolder, in nsIMsgFolder aDstFolder, in boolean aIsMoveFolder, in nsIMsgWindow aMsgWindow, in nsIMsgCopyServiceListener aListener); */
NS_IMETHODIMP nsMsgPluggableStore::CopyFolder(nsIMsgFolder *aSrcFolder, nsIMsgFolder *aDstFolder, bool aIsMoveFolder, nsIMsgWindow *aMsgWindow, nsIMsgCopyServiceListener *aListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIOutputStream getNewMsgOutputStream (in nsIMsgFolder aFolder, inout nsIMsgDBHdr aNewHdr, out boolean aReusable); */
NS_IMETHODIMP nsMsgPluggableStore::GetNewMsgOutputStream(nsIMsgFolder *aFolder, nsIMsgDBHdr * *aNewHdr NS_INOUTPARAM, bool *aReusable NS_OUTPARAM, nsIOutputStream * *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void discardNewMessage (in nsIOutputStream aOutputStream, in nsIMsgDBHdr aNewHdr); */
NS_IMETHODIMP nsMsgPluggableStore::DiscardNewMessage(nsIOutputStream *aOutputStream, nsIMsgDBHdr *aNewHdr)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void finishNewMessage (in nsIOutputStream aOutputStream, in nsIMsgDBHdr aNewHdr); */
NS_IMETHODIMP nsMsgPluggableStore::FinishNewMessage(nsIOutputStream *aOutputStream, nsIMsgDBHdr *aNewHdr)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean moveNewlyDownloadedMessage (in nsIMsgDBHdr aNewHdr, in nsIMsgFolder aDestFolder); */
NS_IMETHODIMP nsMsgPluggableStore::MoveNewlyDownloadedMessage(nsIMsgDBHdr *aNewHdr, nsIMsgFolder *aDestFolder, bool *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIInputStream getMsgInputStream (in nsIMsgFolder aFolder, in ACString aMsgToken, out long long aOffset, [optional] in nsIMsgDBHdr aHdr, [optional] out boolean aReusable); */
NS_IMETHODIMP nsMsgPluggableStore::GetMsgInputStream(nsIMsgFolder *aFolder, const nsACString & aMsgToken, PRInt64 *aOffset NS_OUTPARAM, nsIMsgDBHdr *aHdr, bool *aReusable NS_OUTPARAM, nsIInputStream * *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteMessages (in nsIArray aHdrArray); */
NS_IMETHODIMP nsMsgPluggableStore::DeleteMessages(nsIArray *aHdrArray)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean copyMessages (in boolean isMove, in nsIArray aHdrArray, in nsIMsgFolder aDstFolder, in nsIMsgCopyServiceListener aListener, out nsITransaction aUndoAction); */
NS_IMETHODIMP nsMsgPluggableStore::CopyMessages(bool isMove, nsIArray *aHdrArray, nsIMsgFolder *aDstFolder, nsIMsgCopyServiceListener *aListener, nsITransaction * *aUndoAction NS_OUTPARAM, bool *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean supportsCompaction; */
NS_IMETHODIMP nsMsgPluggableStore::GetSupportsCompaction(bool *aSupportsCompaction)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void compactFolder (in nsIMsgFolder aFolder, in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow); */
NS_IMETHODIMP nsMsgPluggableStore::CompactFolder(nsIMsgFolder *aFolder, nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean isSummaryFileValid (in nsIMsgFolder aFolder, in nsIMsgDatabase aDB); */
NS_IMETHODIMP nsMsgPluggableStore::IsSummaryFileValid(nsIMsgFolder *aFolder, nsIMsgDatabase *aDB, bool *_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setSummaryFileValid (in nsIMsgFolder aFolder, in nsIMsgDatabase aDB, in boolean aValid); */
NS_IMETHODIMP nsMsgPluggableStore::SetSummaryFileValid(nsIMsgFolder *aFolder, nsIMsgDatabase *aDB, bool aValid)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void rebuildIndex (in nsIMsgFolder aFolder, in nsIMsgDatabase aMsgDB, in nsIMsgWindow aMsgWindow, in nsIUrlListener aListener); */
NS_IMETHODIMP nsMsgPluggableStore::RebuildIndex(nsIMsgFolder *aFolder, nsIMsgDatabase *aMsgDB, nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void changeFlags (in nsIArray aHdrArray, in unsigned long aFlags, in boolean aSet); */
NS_IMETHODIMP nsMsgPluggableStore::ChangeFlags(nsIArray *aHdrArray, PRUint32 aFlags, bool aSet)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void changeKeywords (in nsIArray aHdrArray, in ACString aKeywords, in boolean aAdd); */
NS_IMETHODIMP nsMsgPluggableStore::ChangeKeywords(nsIArray *aHdrArray, const nsACString & aKeywords, bool aAdd)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIMsgPluggableStore_h__ */
