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

#ifndef __gen_nsIMsgFilterService_h__
#define __gen_nsIMsgFilterService_h__


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

#ifndef __gen_nsMsgFilterCore_h__
#include "nsMsgFilterCore.h"
#endif

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

class nsIMsgWindow; /* forward declaration */

class nsIMsgFilterCustomAction; /* forward declaration */

class nsISimpleEnumerator; /* forward declaration */

class nsIFile; /* forward declaration */

class nsIMsgFolder; /* forward declaration */

class nsIMsgSearchCustomTerm; /* forward declaration */

class nsIArray; /* forward declaration */

class nsIMsgOperationListener; /* forward declaration */


/* starting interface:    nsIMsgFilterService */
#define NS_IMSGFILTERSERVICE_IID_STR "78a74023-1692-4567-8d72-9ca58fbbd427"

#define NS_IMSGFILTERSERVICE_IID \
  {0x78a74023, 0x1692, 0x4567, \
    { 0x8d, 0x72, 0x9c, 0xa5, 0x8f, 0xbb, 0xd4, 0x27 }}

class NS_NO_VTABLE nsIMsgFilterService : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGFILTERSERVICE_IID)

  /* nsIMsgFilterList OpenFilterList (in nsIFile filterFile, in nsIMsgFolder rootFolder, in nsIMsgWindow msgWindow); */
  NS_IMETHOD OpenFilterList(nsIFile *filterFile, nsIMsgFolder *rootFolder, nsIMsgWindow *msgWindow, nsIMsgFilterList * *_retval) = 0;

  /* void CloseFilterList (in nsIMsgFilterList filterList); */
  NS_IMETHOD CloseFilterList(nsIMsgFilterList *filterList) = 0;

  /* void SaveFilterList (in nsIMsgFilterList filterList, in nsIFile filterFile); */
  NS_IMETHOD SaveFilterList(nsIMsgFilterList *filterList, nsIFile *filterFile) = 0;

  /* void CancelFilterList (in nsIMsgFilterList filterList); */
  NS_IMETHOD CancelFilterList(nsIMsgFilterList *filterList) = 0;

  /* nsIMsgFilterList getTempFilterList (in nsIMsgFolder aFolder); */
  NS_IMETHOD GetTempFilterList(nsIMsgFolder *aFolder, nsIMsgFilterList * *_retval) = 0;

  /* void applyFiltersToFolders (in nsIMsgFilterList aFilterList, in nsIArray aFolders, in nsIMsgWindow aMsgWindow, [optional] in nsIMsgOperationListener aCallback); */
  NS_IMETHOD ApplyFiltersToFolders(nsIMsgFilterList *aFilterList, nsIArray *aFolders, nsIMsgWindow *aMsgWindow, nsIMsgOperationListener *aCallback) = 0;

  /* void applyFilters (in nsMsgFilterTypeType aFilterType, in nsIArray aMsgHdrList, in nsIMsgFolder aFolder, in nsIMsgWindow aMsgWindow, [optional] in nsIMsgOperationListener aCallback); */
  NS_IMETHOD ApplyFilters(nsMsgFilterTypeType aFilterType, nsIArray *aMsgHdrList, nsIMsgFolder *aFolder, nsIMsgWindow *aMsgWindow, nsIMsgOperationListener *aCallback) = 0;

  /* void addCustomAction (in nsIMsgFilterCustomAction aAction); */
  NS_IMETHOD AddCustomAction(nsIMsgFilterCustomAction *aAction) = 0;

  /* nsISimpleEnumerator getCustomActions (); */
  NS_IMETHOD GetCustomActions(nsISimpleEnumerator * *_retval) = 0;

  /* nsIMsgFilterCustomAction getCustomAction (in ACString id); */
  NS_IMETHOD GetCustomAction(const nsACString & id, nsIMsgFilterCustomAction * *_retval) = 0;

  /* void addCustomTerm (in nsIMsgSearchCustomTerm aTerm); */
  NS_IMETHOD AddCustomTerm(nsIMsgSearchCustomTerm *aTerm) = 0;

  /* nsISimpleEnumerator getCustomTerms (); */
  NS_IMETHOD GetCustomTerms(nsISimpleEnumerator * *_retval) = 0;

  /* nsIMsgSearchCustomTerm getCustomTerm (in ACString id); */
  NS_IMETHOD GetCustomTerm(const nsACString & id, nsIMsgSearchCustomTerm * *_retval) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgFilterService, NS_IMSGFILTERSERVICE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGFILTERSERVICE \
  NS_IMETHOD OpenFilterList(nsIFile *filterFile, nsIMsgFolder *rootFolder, nsIMsgWindow *msgWindow, nsIMsgFilterList * *_retval) override; \
  NS_IMETHOD CloseFilterList(nsIMsgFilterList *filterList) override; \
  NS_IMETHOD SaveFilterList(nsIMsgFilterList *filterList, nsIFile *filterFile) override; \
  NS_IMETHOD CancelFilterList(nsIMsgFilterList *filterList) override; \
  NS_IMETHOD GetTempFilterList(nsIMsgFolder *aFolder, nsIMsgFilterList * *_retval) override; \
  NS_IMETHOD ApplyFiltersToFolders(nsIMsgFilterList *aFilterList, nsIArray *aFolders, nsIMsgWindow *aMsgWindow, nsIMsgOperationListener *aCallback) override; \
  NS_IMETHOD ApplyFilters(nsMsgFilterTypeType aFilterType, nsIArray *aMsgHdrList, nsIMsgFolder *aFolder, nsIMsgWindow *aMsgWindow, nsIMsgOperationListener *aCallback) override; \
  NS_IMETHOD AddCustomAction(nsIMsgFilterCustomAction *aAction) override; \
  NS_IMETHOD GetCustomActions(nsISimpleEnumerator * *_retval) override; \
  NS_IMETHOD GetCustomAction(const nsACString & id, nsIMsgFilterCustomAction * *_retval) override; \
  NS_IMETHOD AddCustomTerm(nsIMsgSearchCustomTerm *aTerm) override; \
  NS_IMETHOD GetCustomTerms(nsISimpleEnumerator * *_retval) override; \
  NS_IMETHOD GetCustomTerm(const nsACString & id, nsIMsgSearchCustomTerm * *_retval) 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_NSIMSGFILTERSERVICE \
  NS_METHOD OpenFilterList(nsIFile *filterFile, nsIMsgFolder *rootFolder, nsIMsgWindow *msgWindow, nsIMsgFilterList * *_retval); \
  NS_METHOD CloseFilterList(nsIMsgFilterList *filterList); \
  NS_METHOD SaveFilterList(nsIMsgFilterList *filterList, nsIFile *filterFile); \
  NS_METHOD CancelFilterList(nsIMsgFilterList *filterList); \
  NS_METHOD GetTempFilterList(nsIMsgFolder *aFolder, nsIMsgFilterList * *_retval); \
  NS_METHOD ApplyFiltersToFolders(nsIMsgFilterList *aFilterList, nsIArray *aFolders, nsIMsgWindow *aMsgWindow, nsIMsgOperationListener *aCallback); \
  NS_METHOD ApplyFilters(nsMsgFilterTypeType aFilterType, nsIArray *aMsgHdrList, nsIMsgFolder *aFolder, nsIMsgWindow *aMsgWindow, nsIMsgOperationListener *aCallback); \
  NS_METHOD AddCustomAction(nsIMsgFilterCustomAction *aAction); \
  NS_METHOD GetCustomActions(nsISimpleEnumerator * *_retval); \
  NS_METHOD GetCustomAction(const nsACString & id, nsIMsgFilterCustomAction * *_retval); \
  NS_METHOD AddCustomTerm(nsIMsgSearchCustomTerm *aTerm); \
  NS_METHOD GetCustomTerms(nsISimpleEnumerator * *_retval); \
  NS_METHOD GetCustomTerm(const nsACString & id, nsIMsgSearchCustomTerm * *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGFILTERSERVICE(_to) \
  NS_IMETHOD OpenFilterList(nsIFile *filterFile, nsIMsgFolder *rootFolder, nsIMsgWindow *msgWindow, nsIMsgFilterList * *_retval) override { return _to OpenFilterList(filterFile, rootFolder, msgWindow, _retval); } \
  NS_IMETHOD CloseFilterList(nsIMsgFilterList *filterList) override { return _to CloseFilterList(filterList); } \
  NS_IMETHOD SaveFilterList(nsIMsgFilterList *filterList, nsIFile *filterFile) override { return _to SaveFilterList(filterList, filterFile); } \
  NS_IMETHOD CancelFilterList(nsIMsgFilterList *filterList) override { return _to CancelFilterList(filterList); } \
  NS_IMETHOD GetTempFilterList(nsIMsgFolder *aFolder, nsIMsgFilterList * *_retval) override { return _to GetTempFilterList(aFolder, _retval); } \
  NS_IMETHOD ApplyFiltersToFolders(nsIMsgFilterList *aFilterList, nsIArray *aFolders, nsIMsgWindow *aMsgWindow, nsIMsgOperationListener *aCallback) override { return _to ApplyFiltersToFolders(aFilterList, aFolders, aMsgWindow, aCallback); } \
  NS_IMETHOD ApplyFilters(nsMsgFilterTypeType aFilterType, nsIArray *aMsgHdrList, nsIMsgFolder *aFolder, nsIMsgWindow *aMsgWindow, nsIMsgOperationListener *aCallback) override { return _to ApplyFilters(aFilterType, aMsgHdrList, aFolder, aMsgWindow, aCallback); } \
  NS_IMETHOD AddCustomAction(nsIMsgFilterCustomAction *aAction) override { return _to AddCustomAction(aAction); } \
  NS_IMETHOD GetCustomActions(nsISimpleEnumerator * *_retval) override { return _to GetCustomActions(_retval); } \
  NS_IMETHOD GetCustomAction(const nsACString & id, nsIMsgFilterCustomAction * *_retval) override { return _to GetCustomAction(id, _retval); } \
  NS_IMETHOD AddCustomTerm(nsIMsgSearchCustomTerm *aTerm) override { return _to AddCustomTerm(aTerm); } \
  NS_IMETHOD GetCustomTerms(nsISimpleEnumerator * *_retval) override { return _to GetCustomTerms(_retval); } \
  NS_IMETHOD GetCustomTerm(const nsACString & id, nsIMsgSearchCustomTerm * *_retval) override { return _to GetCustomTerm(id, _retval); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGFILTERSERVICE(_to) \
  NS_IMETHOD OpenFilterList(nsIFile *filterFile, nsIMsgFolder *rootFolder, nsIMsgWindow *msgWindow, nsIMsgFilterList * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenFilterList(filterFile, rootFolder, msgWindow, _retval); } \
  NS_IMETHOD CloseFilterList(nsIMsgFilterList *filterList) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CloseFilterList(filterList); } \
  NS_IMETHOD SaveFilterList(nsIMsgFilterList *filterList, nsIFile *filterFile) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SaveFilterList(filterList, filterFile); } \
  NS_IMETHOD CancelFilterList(nsIMsgFilterList *filterList) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CancelFilterList(filterList); } \
  NS_IMETHOD GetTempFilterList(nsIMsgFolder *aFolder, nsIMsgFilterList * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTempFilterList(aFolder, _retval); } \
  NS_IMETHOD ApplyFiltersToFolders(nsIMsgFilterList *aFilterList, nsIArray *aFolders, nsIMsgWindow *aMsgWindow, nsIMsgOperationListener *aCallback) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ApplyFiltersToFolders(aFilterList, aFolders, aMsgWindow, aCallback); } \
  NS_IMETHOD ApplyFilters(nsMsgFilterTypeType aFilterType, nsIArray *aMsgHdrList, nsIMsgFolder *aFolder, nsIMsgWindow *aMsgWindow, nsIMsgOperationListener *aCallback) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ApplyFilters(aFilterType, aMsgHdrList, aFolder, aMsgWindow, aCallback); } \
  NS_IMETHOD AddCustomAction(nsIMsgFilterCustomAction *aAction) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddCustomAction(aAction); } \
  NS_IMETHOD GetCustomActions(nsISimpleEnumerator * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCustomActions(_retval); } \
  NS_IMETHOD GetCustomAction(const nsACString & id, nsIMsgFilterCustomAction * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCustomAction(id, _retval); } \
  NS_IMETHOD AddCustomTerm(nsIMsgSearchCustomTerm *aTerm) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddCustomTerm(aTerm); } \
  NS_IMETHOD GetCustomTerms(nsISimpleEnumerator * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCustomTerms(_retval); } \
  NS_IMETHOD GetCustomTerm(const nsACString & id, nsIMsgSearchCustomTerm * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCustomTerm(id, _retval); } 

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

/* Header file */
class nsMsgFilterService : public nsIMsgFilterService
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGFILTERSERVICE

  nsMsgFilterService();

private:
  ~nsMsgFilterService();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsMsgFilterService, nsIMsgFilterService)

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

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

/* nsIMsgFilterList OpenFilterList (in nsIFile filterFile, in nsIMsgFolder rootFolder, in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFilterService::OpenFilterList(nsIFile *filterFile, nsIMsgFolder *rootFolder, nsIMsgWindow *msgWindow, nsIMsgFilterList * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void CloseFilterList (in nsIMsgFilterList filterList); */
NS_IMETHODIMP nsMsgFilterService::CloseFilterList(nsIMsgFilterList *filterList)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void SaveFilterList (in nsIMsgFilterList filterList, in nsIFile filterFile); */
NS_IMETHODIMP nsMsgFilterService::SaveFilterList(nsIMsgFilterList *filterList, nsIFile *filterFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void CancelFilterList (in nsIMsgFilterList filterList); */
NS_IMETHODIMP nsMsgFilterService::CancelFilterList(nsIMsgFilterList *filterList)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgFilterList getTempFilterList (in nsIMsgFolder aFolder); */
NS_IMETHODIMP nsMsgFilterService::GetTempFilterList(nsIMsgFolder *aFolder, nsIMsgFilterList * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void applyFiltersToFolders (in nsIMsgFilterList aFilterList, in nsIArray aFolders, in nsIMsgWindow aMsgWindow, [optional] in nsIMsgOperationListener aCallback); */
NS_IMETHODIMP nsMsgFilterService::ApplyFiltersToFolders(nsIMsgFilterList *aFilterList, nsIArray *aFolders, nsIMsgWindow *aMsgWindow, nsIMsgOperationListener *aCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void applyFilters (in nsMsgFilterTypeType aFilterType, in nsIArray aMsgHdrList, in nsIMsgFolder aFolder, in nsIMsgWindow aMsgWindow, [optional] in nsIMsgOperationListener aCallback); */
NS_IMETHODIMP nsMsgFilterService::ApplyFilters(nsMsgFilterTypeType aFilterType, nsIArray *aMsgHdrList, nsIMsgFolder *aFolder, nsIMsgWindow *aMsgWindow, nsIMsgOperationListener *aCallback)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addCustomAction (in nsIMsgFilterCustomAction aAction); */
NS_IMETHODIMP nsMsgFilterService::AddCustomAction(nsIMsgFilterCustomAction *aAction)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getCustomActions (); */
NS_IMETHODIMP nsMsgFilterService::GetCustomActions(nsISimpleEnumerator * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgFilterCustomAction getCustomAction (in ACString id); */
NS_IMETHODIMP nsMsgFilterService::GetCustomAction(const nsACString & id, nsIMsgFilterCustomAction * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addCustomTerm (in nsIMsgSearchCustomTerm aTerm); */
NS_IMETHODIMP nsMsgFilterService::AddCustomTerm(nsIMsgSearchCustomTerm *aTerm)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getCustomTerms (); */
NS_IMETHODIMP nsMsgFilterService::GetCustomTerms(nsISimpleEnumerator * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgSearchCustomTerm getCustomTerm (in ACString id); */
NS_IMETHODIMP nsMsgFilterService::GetCustomTerm(const nsACString & id, nsIMsgSearchCustomTerm * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIMsgFilterService_h__ */
