/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM /tmp/comm-release/mailnews/base/search/public/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 nsILocalFile; /* forward declaration */

class nsIMsgFolder; /* forward declaration */

class nsISupportsArray; /* forward declaration */

class nsIMsgSearchCustomTerm; /* forward declaration */


/* starting interface:    nsIMsgFilterService */
#define NS_IMSGFILTERSERVICE_IID_STR "c1a5f1bb-4d6c-447a-b70f-a12be767dc0a"

#define NS_IMSGFILTERSERVICE_IID \
  {0xc1a5f1bb, 0x4d6c, 0x447a, \
    { 0xb7, 0x0f, 0xa1, 0x2b, 0xe7, 0x67, 0xdc, 0x0a }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIMsgFilterService : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGFILTERSERVICE_IID)

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

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

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

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

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

  /* void applyFiltersToFolders (in nsIMsgFilterList aFilterList, in nsISupportsArray aFolders, in nsIMsgWindow aMsgWindow); */
  NS_SCRIPTABLE NS_IMETHOD ApplyFiltersToFolders(nsIMsgFilterList *aFilterList, nsISupportsArray *aFolders, nsIMsgWindow *aMsgWindow) = 0;

  /* void applyFilters (in nsMsgFilterTypeType aFilterType, in nsIArray aMsgHdrList, in nsIMsgFolder aFolder, in nsIMsgWindow aMsgWindow); */
  NS_SCRIPTABLE NS_IMETHOD ApplyFilters(nsMsgFilterTypeType aFilterType, nsIArray *aMsgHdrList, nsIMsgFolder *aFolder, nsIMsgWindow *aMsgWindow) = 0;

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

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

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

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

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

  /* nsIMsgSearchCustomTerm getCustomTerm (in ACString id); */
  NS_SCRIPTABLE NS_IMETHOD GetCustomTerm(const nsACString & id, nsIMsgSearchCustomTerm * *_retval NS_OUTPARAM) = 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_SCRIPTABLE NS_IMETHOD OpenFilterList(nsILocalFile *filterFile, nsIMsgFolder *rootFolder, nsIMsgWindow *msgWindow, nsIMsgFilterList * *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD CloseFilterList(nsIMsgFilterList *filterList); \
  NS_SCRIPTABLE NS_IMETHOD SaveFilterList(nsIMsgFilterList *filterList, nsILocalFile *filterFile); \
  NS_SCRIPTABLE NS_IMETHOD CancelFilterList(nsIMsgFilterList *filterList); \
  NS_SCRIPTABLE NS_IMETHOD GetTempFilterList(nsIMsgFolder *aFolder, nsIMsgFilterList * *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD ApplyFiltersToFolders(nsIMsgFilterList *aFilterList, nsISupportsArray *aFolders, nsIMsgWindow *aMsgWindow); \
  NS_SCRIPTABLE NS_IMETHOD ApplyFilters(nsMsgFilterTypeType aFilterType, nsIArray *aMsgHdrList, nsIMsgFolder *aFolder, nsIMsgWindow *aMsgWindow); \
  NS_SCRIPTABLE NS_IMETHOD AddCustomAction(nsIMsgFilterCustomAction *aAction); \
  NS_SCRIPTABLE NS_IMETHOD GetCustomActions(nsISimpleEnumerator * *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetCustomAction(const nsACString & id, nsIMsgFilterCustomAction * *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD AddCustomTerm(nsIMsgSearchCustomTerm *aTerm); \
  NS_SCRIPTABLE NS_IMETHOD GetCustomTerms(nsISimpleEnumerator * *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetCustomTerm(const nsACString & id, nsIMsgSearchCustomTerm * *_retval NS_OUTPARAM); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGFILTERSERVICE(_to) \
  NS_SCRIPTABLE NS_IMETHOD OpenFilterList(nsILocalFile *filterFile, nsIMsgFolder *rootFolder, nsIMsgWindow *msgWindow, nsIMsgFilterList * *_retval NS_OUTPARAM) { return _to OpenFilterList(filterFile, rootFolder, msgWindow, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD CloseFilterList(nsIMsgFilterList *filterList) { return _to CloseFilterList(filterList); } \
  NS_SCRIPTABLE NS_IMETHOD SaveFilterList(nsIMsgFilterList *filterList, nsILocalFile *filterFile) { return _to SaveFilterList(filterList, filterFile); } \
  NS_SCRIPTABLE NS_IMETHOD CancelFilterList(nsIMsgFilterList *filterList) { return _to CancelFilterList(filterList); } \
  NS_SCRIPTABLE NS_IMETHOD GetTempFilterList(nsIMsgFolder *aFolder, nsIMsgFilterList * *_retval NS_OUTPARAM) { return _to GetTempFilterList(aFolder, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD ApplyFiltersToFolders(nsIMsgFilterList *aFilterList, nsISupportsArray *aFolders, nsIMsgWindow *aMsgWindow) { return _to ApplyFiltersToFolders(aFilterList, aFolders, aMsgWindow); } \
  NS_SCRIPTABLE NS_IMETHOD ApplyFilters(nsMsgFilterTypeType aFilterType, nsIArray *aMsgHdrList, nsIMsgFolder *aFolder, nsIMsgWindow *aMsgWindow) { return _to ApplyFilters(aFilterType, aMsgHdrList, aFolder, aMsgWindow); } \
  NS_SCRIPTABLE NS_IMETHOD AddCustomAction(nsIMsgFilterCustomAction *aAction) { return _to AddCustomAction(aAction); } \
  NS_SCRIPTABLE NS_IMETHOD GetCustomActions(nsISimpleEnumerator * *_retval NS_OUTPARAM) { return _to GetCustomActions(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetCustomAction(const nsACString & id, nsIMsgFilterCustomAction * *_retval NS_OUTPARAM) { return _to GetCustomAction(id, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD AddCustomTerm(nsIMsgSearchCustomTerm *aTerm) { return _to AddCustomTerm(aTerm); } \
  NS_SCRIPTABLE NS_IMETHOD GetCustomTerms(nsISimpleEnumerator * *_retval NS_OUTPARAM) { return _to GetCustomTerms(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetCustomTerm(const nsACString & id, nsIMsgSearchCustomTerm * *_retval NS_OUTPARAM) { 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_SCRIPTABLE NS_IMETHOD OpenFilterList(nsILocalFile *filterFile, nsIMsgFolder *rootFolder, nsIMsgWindow *msgWindow, nsIMsgFilterList * *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenFilterList(filterFile, rootFolder, msgWindow, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD CloseFilterList(nsIMsgFilterList *filterList) { return !_to ? NS_ERROR_NULL_POINTER : _to->CloseFilterList(filterList); } \
  NS_SCRIPTABLE NS_IMETHOD SaveFilterList(nsIMsgFilterList *filterList, nsILocalFile *filterFile) { return !_to ? NS_ERROR_NULL_POINTER : _to->SaveFilterList(filterList, filterFile); } \
  NS_SCRIPTABLE NS_IMETHOD CancelFilterList(nsIMsgFilterList *filterList) { return !_to ? NS_ERROR_NULL_POINTER : _to->CancelFilterList(filterList); } \
  NS_SCRIPTABLE NS_IMETHOD GetTempFilterList(nsIMsgFolder *aFolder, nsIMsgFilterList * *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTempFilterList(aFolder, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD ApplyFiltersToFolders(nsIMsgFilterList *aFilterList, nsISupportsArray *aFolders, nsIMsgWindow *aMsgWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->ApplyFiltersToFolders(aFilterList, aFolders, aMsgWindow); } \
  NS_SCRIPTABLE NS_IMETHOD ApplyFilters(nsMsgFilterTypeType aFilterType, nsIArray *aMsgHdrList, nsIMsgFolder *aFolder, nsIMsgWindow *aMsgWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->ApplyFilters(aFilterType, aMsgHdrList, aFolder, aMsgWindow); } \
  NS_SCRIPTABLE NS_IMETHOD AddCustomAction(nsIMsgFilterCustomAction *aAction) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddCustomAction(aAction); } \
  NS_SCRIPTABLE NS_IMETHOD GetCustomActions(nsISimpleEnumerator * *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCustomActions(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetCustomAction(const nsACString & id, nsIMsgFilterCustomAction * *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCustomAction(id, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD AddCustomTerm(nsIMsgSearchCustomTerm *aTerm) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddCustomTerm(aTerm); } \
  NS_SCRIPTABLE NS_IMETHOD GetCustomTerms(nsISimpleEnumerator * *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCustomTerms(_retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetCustomTerm(const nsACString & id, nsIMsgSearchCustomTerm * *_retval NS_OUTPARAM) { 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_ISUPPORTS1(nsMsgFilterService, nsIMsgFilterService)

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

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

/* nsIMsgFilterList OpenFilterList (in nsILocalFile filterFile, in nsIMsgFolder rootFolder, in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFilterService::OpenFilterList(nsILocalFile *filterFile, nsIMsgFolder *rootFolder, nsIMsgWindow *msgWindow, nsIMsgFilterList * *_retval NS_OUTPARAM)
{
    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 nsILocalFile filterFile); */
NS_IMETHODIMP nsMsgFilterService::SaveFilterList(nsIMsgFilterList *filterList, nsILocalFile *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 NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void applyFiltersToFolders (in nsIMsgFilterList aFilterList, in nsISupportsArray aFolders, in nsIMsgWindow aMsgWindow); */
NS_IMETHODIMP nsMsgFilterService::ApplyFiltersToFolders(nsIMsgFilterList *aFilterList, nsISupportsArray *aFolders, nsIMsgWindow *aMsgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void applyFilters (in nsMsgFilterTypeType aFilterType, in nsIArray aMsgHdrList, in nsIMsgFolder aFolder, in nsIMsgWindow aMsgWindow); */
NS_IMETHODIMP nsMsgFilterService::ApplyFilters(nsMsgFilterTypeType aFilterType, nsIArray *aMsgHdrList, nsIMsgFolder *aFolder, nsIMsgWindow *aMsgWindow)
{
    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 NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgFilterCustomAction getCustomAction (in ACString id); */
NS_IMETHODIMP nsMsgFilterService::GetCustomAction(const nsACString & id, nsIMsgFilterCustomAction * *_retval NS_OUTPARAM)
{
    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 NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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


#endif /* __gen_nsIMsgFilterService_h__ */
