/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM ../../../dist/idl/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 nsIFile; /* forward declaration */

class nsIMsgFolder; /* forward declaration */

class nsIMsgCopyServiceListener; /* forward declaration */

class nsIMsgDBHdr; /* forward declaration */

class nsIMsgWindow; /* forward declaration */

class nsIOutputStream; /* forward declaration */

class nsIInputStream; /* forward declaration */

class nsIArray; /* forward declaration */

class nsIUrlListener; /* forward declaration */

class nsIMsgDatabase; /* forward declaration */

class nsITransaction; /* forward declaration */


/* starting interface:    nsIMsgPluggableStore */
#define NS_IMSGPLUGGABLESTORE_IID_STR "f732ce58-e540-4dc4-b803-9456056ebefc"

#define NS_IMSGPLUGGABLESTORE_IID \
  {0xf732ce58, 0xe540, 0x4dc4, \
    { 0xb8, 0x03, 0x94, 0x56, 0x05, 0x6e, 0xbe, 0xfc }}

class NS_NO_VTABLE nsIMsgPluggableStore : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGPLUGGABLESTORE_IID)

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

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

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

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

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

  /* void copyFolder (in nsIMsgFolder aSrcFolder, in nsIMsgFolder aDstFolder, in boolean aIsMoveFolder, in nsIMsgWindow aMsgWindow, in nsIMsgCopyServiceListener aListener, in AString aNewName); */
  NS_IMETHOD CopyFolder(nsIMsgFolder *aSrcFolder, nsIMsgFolder *aDstFolder, bool aIsMoveFolder, nsIMsgWindow *aMsgWindow, nsIMsgCopyServiceListener *aListener, const nsAString & aNewName) = 0;

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

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

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

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

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

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

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

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

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

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

  /* void setSummaryFileValid (in nsIMsgFolder aFolder, in nsIMsgDatabase aDB, in boolean aValid); */
  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_IMETHOD RebuildIndex(nsIMsgFolder *aFolder, nsIMsgDatabase *aMsgDB, nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener) = 0;

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

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

  /* readonly attribute ACString storeType; */
  NS_IMETHOD GetStoreType(nsACString & aStoreType) = 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_IMETHOD DiscoverSubFolders(nsIMsgFolder *aParentFolder, bool aDeep) override; \
  NS_IMETHOD CreateFolder(nsIMsgFolder *aParent, const nsAString & aFolderName, nsIMsgFolder * *_retval) override; \
  NS_IMETHOD DeleteFolder(nsIMsgFolder *aFolder) override; \
  NS_IMETHOD RenameFolder(nsIMsgFolder *aFolder, const nsAString & aNewName, nsIMsgFolder * *_retval) override; \
  NS_IMETHOD HasSpaceAvailable(nsIMsgFolder *aFolder, int64_t aSpaceRequested, bool *_retval) override; \
  NS_IMETHOD CopyFolder(nsIMsgFolder *aSrcFolder, nsIMsgFolder *aDstFolder, bool aIsMoveFolder, nsIMsgWindow *aMsgWindow, nsIMsgCopyServiceListener *aListener, const nsAString & aNewName) override; \
  NS_IMETHOD GetNewMsgOutputStream(nsIMsgFolder *aFolder, nsIMsgDBHdr * *aNewHdr, bool *aReusable, nsIOutputStream * *_retval) override; \
  NS_IMETHOD DiscardNewMessage(nsIOutputStream *aOutputStream, nsIMsgDBHdr *aNewHdr) override; \
  NS_IMETHOD FinishNewMessage(nsIOutputStream *aOutputStream, nsIMsgDBHdr *aNewHdr) override; \
  NS_IMETHOD MoveNewlyDownloadedMessage(nsIMsgDBHdr *aNewHdr, nsIMsgFolder *aDestFolder, bool *_retval) override; \
  NS_IMETHOD GetMsgInputStream(nsIMsgFolder *aFolder, const nsACString & aMsgToken, int64_t *aOffset, nsIMsgDBHdr *aHdr, bool *aReusable, nsIInputStream * *_retval) override; \
  NS_IMETHOD DeleteMessages(nsIArray *aHdrArray) override; \
  NS_IMETHOD CopyMessages(bool isMove, nsIArray *aHdrArray, nsIMsgFolder *aDstFolder, nsIMsgCopyServiceListener *aListener, nsIArray * *aDstHdrs, nsITransaction * *aUndoAction, bool *_retval) override; \
  NS_IMETHOD GetSupportsCompaction(bool *aSupportsCompaction) override; \
  NS_IMETHOD CompactFolder(nsIMsgFolder *aFolder, nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow) override; \
  NS_IMETHOD IsSummaryFileValid(nsIMsgFolder *aFolder, nsIMsgDatabase *aDB, bool *_retval) override; \
  NS_IMETHOD SetSummaryFileValid(nsIMsgFolder *aFolder, nsIMsgDatabase *aDB, bool aValid) override; \
  NS_IMETHOD RebuildIndex(nsIMsgFolder *aFolder, nsIMsgDatabase *aMsgDB, nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener) override; \
  NS_IMETHOD ChangeFlags(nsIArray *aHdrArray, uint32_t aFlags, bool aSet) override; \
  NS_IMETHOD ChangeKeywords(nsIArray *aHdrArray, const nsACString & aKeywords, bool aAdd) override; \
  NS_IMETHOD GetStoreType(nsACString & aStoreType) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_NSIMSGPLUGGABLESTORE \
  NS_METHOD DiscoverSubFolders(nsIMsgFolder *aParentFolder, bool aDeep); \
  NS_METHOD CreateFolder(nsIMsgFolder *aParent, const nsAString & aFolderName, nsIMsgFolder * *_retval); \
  NS_METHOD DeleteFolder(nsIMsgFolder *aFolder); \
  NS_METHOD RenameFolder(nsIMsgFolder *aFolder, const nsAString & aNewName, nsIMsgFolder * *_retval); \
  NS_METHOD HasSpaceAvailable(nsIMsgFolder *aFolder, int64_t aSpaceRequested, bool *_retval); \
  NS_METHOD CopyFolder(nsIMsgFolder *aSrcFolder, nsIMsgFolder *aDstFolder, bool aIsMoveFolder, nsIMsgWindow *aMsgWindow, nsIMsgCopyServiceListener *aListener, const nsAString & aNewName); \
  NS_METHOD GetNewMsgOutputStream(nsIMsgFolder *aFolder, nsIMsgDBHdr * *aNewHdr, bool *aReusable, nsIOutputStream * *_retval); \
  NS_METHOD DiscardNewMessage(nsIOutputStream *aOutputStream, nsIMsgDBHdr *aNewHdr); \
  NS_METHOD FinishNewMessage(nsIOutputStream *aOutputStream, nsIMsgDBHdr *aNewHdr); \
  NS_METHOD MoveNewlyDownloadedMessage(nsIMsgDBHdr *aNewHdr, nsIMsgFolder *aDestFolder, bool *_retval); \
  NS_METHOD GetMsgInputStream(nsIMsgFolder *aFolder, const nsACString & aMsgToken, int64_t *aOffset, nsIMsgDBHdr *aHdr, bool *aReusable, nsIInputStream * *_retval); \
  NS_METHOD DeleteMessages(nsIArray *aHdrArray); \
  NS_METHOD CopyMessages(bool isMove, nsIArray *aHdrArray, nsIMsgFolder *aDstFolder, nsIMsgCopyServiceListener *aListener, nsIArray * *aDstHdrs, nsITransaction * *aUndoAction, bool *_retval); \
  NS_METHOD GetSupportsCompaction(bool *aSupportsCompaction); \
  NS_METHOD CompactFolder(nsIMsgFolder *aFolder, nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow); \
  NS_METHOD IsSummaryFileValid(nsIMsgFolder *aFolder, nsIMsgDatabase *aDB, bool *_retval); \
  NS_METHOD SetSummaryFileValid(nsIMsgFolder *aFolder, nsIMsgDatabase *aDB, bool aValid); \
  NS_METHOD RebuildIndex(nsIMsgFolder *aFolder, nsIMsgDatabase *aMsgDB, nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener); \
  NS_METHOD ChangeFlags(nsIArray *aHdrArray, uint32_t aFlags, bool aSet); \
  NS_METHOD ChangeKeywords(nsIArray *aHdrArray, const nsACString & aKeywords, bool aAdd); \
  NS_METHOD GetStoreType(nsACString & aStoreType); 

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

/* 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_IMETHOD DiscoverSubFolders(nsIMsgFolder *aParentFolder, bool aDeep) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DiscoverSubFolders(aParentFolder, aDeep); } \
  NS_IMETHOD CreateFolder(nsIMsgFolder *aParent, const nsAString & aFolderName, nsIMsgFolder * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateFolder(aParent, aFolderName, _retval); } \
  NS_IMETHOD DeleteFolder(nsIMsgFolder *aFolder) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteFolder(aFolder); } \
  NS_IMETHOD RenameFolder(nsIMsgFolder *aFolder, const nsAString & aNewName, nsIMsgFolder * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RenameFolder(aFolder, aNewName, _retval); } \
  NS_IMETHOD HasSpaceAvailable(nsIMsgFolder *aFolder, int64_t aSpaceRequested, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->HasSpaceAvailable(aFolder, aSpaceRequested, _retval); } \
  NS_IMETHOD CopyFolder(nsIMsgFolder *aSrcFolder, nsIMsgFolder *aDstFolder, bool aIsMoveFolder, nsIMsgWindow *aMsgWindow, nsIMsgCopyServiceListener *aListener, const nsAString & aNewName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyFolder(aSrcFolder, aDstFolder, aIsMoveFolder, aMsgWindow, aListener, aNewName); } \
  NS_IMETHOD GetNewMsgOutputStream(nsIMsgFolder *aFolder, nsIMsgDBHdr * *aNewHdr, bool *aReusable, nsIOutputStream * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNewMsgOutputStream(aFolder, aNewHdr, aReusable, _retval); } \
  NS_IMETHOD DiscardNewMessage(nsIOutputStream *aOutputStream, nsIMsgDBHdr *aNewHdr) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DiscardNewMessage(aOutputStream, aNewHdr); } \
  NS_IMETHOD FinishNewMessage(nsIOutputStream *aOutputStream, nsIMsgDBHdr *aNewHdr) override { return !_to ? NS_ERROR_NULL_POINTER : _to->FinishNewMessage(aOutputStream, aNewHdr); } \
  NS_IMETHOD MoveNewlyDownloadedMessage(nsIMsgDBHdr *aNewHdr, nsIMsgFolder *aDestFolder, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->MoveNewlyDownloadedMessage(aNewHdr, aDestFolder, _retval); } \
  NS_IMETHOD GetMsgInputStream(nsIMsgFolder *aFolder, const nsACString & aMsgToken, int64_t *aOffset, nsIMsgDBHdr *aHdr, bool *aReusable, nsIInputStream * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMsgInputStream(aFolder, aMsgToken, aOffset, aHdr, aReusable, _retval); } \
  NS_IMETHOD DeleteMessages(nsIArray *aHdrArray) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteMessages(aHdrArray); } \
  NS_IMETHOD CopyMessages(bool isMove, nsIArray *aHdrArray, nsIMsgFolder *aDstFolder, nsIMsgCopyServiceListener *aListener, nsIArray * *aDstHdrs, nsITransaction * *aUndoAction, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyMessages(isMove, aHdrArray, aDstFolder, aListener, aDstHdrs, aUndoAction, _retval); } \
  NS_IMETHOD GetSupportsCompaction(bool *aSupportsCompaction) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSupportsCompaction(aSupportsCompaction); } \
  NS_IMETHOD CompactFolder(nsIMsgFolder *aFolder, nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CompactFolder(aFolder, aListener, aMsgWindow); } \
  NS_IMETHOD IsSummaryFileValid(nsIMsgFolder *aFolder, nsIMsgDatabase *aDB, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->IsSummaryFileValid(aFolder, aDB, _retval); } \
  NS_IMETHOD SetSummaryFileValid(nsIMsgFolder *aFolder, nsIMsgDatabase *aDB, bool aValid) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSummaryFileValid(aFolder, aDB, aValid); } \
  NS_IMETHOD RebuildIndex(nsIMsgFolder *aFolder, nsIMsgDatabase *aMsgDB, nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RebuildIndex(aFolder, aMsgDB, aMsgWindow, aListener); } \
  NS_IMETHOD ChangeFlags(nsIArray *aHdrArray, uint32_t aFlags, bool aSet) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ChangeFlags(aHdrArray, aFlags, aSet); } \
  NS_IMETHOD ChangeKeywords(nsIArray *aHdrArray, const nsACString & aKeywords, bool aAdd) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ChangeKeywords(aHdrArray, aKeywords, aAdd); } \
  NS_IMETHOD GetStoreType(nsACString & aStoreType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStoreType(aStoreType); } 

#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_ISUPPORTS(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)
{
    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)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

/* nsIOutputStream getNewMsgOutputStream (in nsIMsgFolder aFolder, inout nsIMsgDBHdr aNewHdr, out boolean aReusable); */
NS_IMETHODIMP nsMsgPluggableStore::GetNewMsgOutputStream(nsIMsgFolder *aFolder, nsIMsgDBHdr * *aNewHdr, bool *aReusable, nsIOutputStream * *_retval)
{
    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)
{
    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, int64_t *aOffset, nsIMsgDBHdr *aHdr, bool *aReusable, nsIInputStream * *_retval)
{
    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 nsIArray aDstHdrs, out nsITransaction aUndoAction); */
NS_IMETHODIMP nsMsgPluggableStore::CopyMessages(bool isMove, nsIArray *aHdrArray, nsIMsgFolder *aDstFolder, nsIMsgCopyServiceListener *aListener, nsIArray * *aDstHdrs, nsITransaction * *aUndoAction, bool *_retval)
{
    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)
{
    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, uint32_t 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;
}

/* readonly attribute ACString storeType; */
NS_IMETHODIMP nsMsgPluggableStore::GetStoreType(nsACString & aStoreType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIMsgPluggableStore_h__ */
