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

#ifndef __gen_nsIMsgFilterList_h__
#define __gen_nsIMsgFilterList_h__


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

#ifndef __gen_nsIMsgFilterHitNotify_h__
#include "nsIMsgFilterHitNotify.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 nsIFile; /* forward declaration */

class nsIOutputStream; /* forward declaration */

class nsIMsgFilter; /* forward declaration */

class nsIMsgFolder; /* forward declaration */

typedef int32_t  nsMsgFilterFileAttribValue;


/* starting interface:    nsIMsgFilterList */
#define NS_IMSGFILTERLIST_IID_STR "5d0ec03e-7e2f-49e9-b58a-b274c85f279e"

#define NS_IMSGFILTERLIST_IID \
  {0x5d0ec03e, 0x7e2f, 0x49e9, \
    { 0xb5, 0x8a, 0xb2, 0x74, 0xc8, 0x5f, 0x27, 0x9e }}

class NS_NO_VTABLE nsIMsgFilterList : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGFILTERLIST_IID)

  enum {
    attribNone = 0,
    attribVersion = 1,
    attribLogging = 2,
    attribName = 3,
    attribEnabled = 4,
    attribDescription = 5,
    attribType = 6,
    attribScriptFile = 7,
    attribAction = 8,
    attribActionValue = 9,
    attribCondition = 10,
    attribCustomId = 11
  };

  /* attribute nsIMsgFolder folder; */
  NS_IMETHOD GetFolder(nsIMsgFolder * *aFolder) = 0;
  NS_IMETHOD SetFolder(nsIMsgFolder *aFolder) = 0;

  /* readonly attribute short version; */
  NS_IMETHOD GetVersion(int16_t *aVersion) = 0;

  /* readonly attribute ACString arbitraryHeaders; */
  NS_IMETHOD GetArbitraryHeaders(nsACString & aArbitraryHeaders) = 0;

  /* readonly attribute boolean shouldDownloadAllHeaders; */
  NS_IMETHOD GetShouldDownloadAllHeaders(bool *aShouldDownloadAllHeaders) = 0;

  /* readonly attribute unsigned long filterCount; */
  NS_IMETHOD GetFilterCount(uint32_t *aFilterCount) = 0;

  /* nsIMsgFilter getFilterAt (in unsigned long filterIndex); */
  NS_IMETHOD GetFilterAt(uint32_t filterIndex, nsIMsgFilter * *_retval) = 0;

  /* nsIMsgFilter getFilterNamed (in AString filterName); */
  NS_IMETHOD GetFilterNamed(const nsAString & filterName, nsIMsgFilter * *_retval) = 0;

  /* void setFilterAt (in unsigned long filterIndex, in nsIMsgFilter filter); */
  NS_IMETHOD SetFilterAt(uint32_t filterIndex, nsIMsgFilter *filter) = 0;

  /* void removeFilter (in nsIMsgFilter filter); */
  NS_IMETHOD RemoveFilter(nsIMsgFilter *filter) = 0;

  /* void removeFilterAt (in unsigned long filterIndex); */
  NS_IMETHOD RemoveFilterAt(uint32_t filterIndex) = 0;

  /* void moveFilterAt (in unsigned long filterIndex, in nsMsgFilterMotionValue motion); */
  NS_IMETHOD MoveFilterAt(uint32_t filterIndex, nsMsgFilterMotionValue motion) = 0;

  /* void moveFilter (in nsIMsgFilter filter, in nsMsgFilterMotionValue motion); */
  NS_IMETHOD MoveFilter(nsIMsgFilter *filter, nsMsgFilterMotionValue motion) = 0;

  /* void insertFilterAt (in unsigned long filterIndex, in nsIMsgFilter filter); */
  NS_IMETHOD InsertFilterAt(uint32_t filterIndex, nsIMsgFilter *filter) = 0;

  /* attribute boolean loggingEnabled; */
  NS_IMETHOD GetLoggingEnabled(bool *aLoggingEnabled) = 0;
  NS_IMETHOD SetLoggingEnabled(bool aLoggingEnabled) = 0;

  /* nsIMsgFilter createFilter (in AString name); */
  NS_IMETHOD CreateFilter(const nsAString & name, nsIMsgFilter * *_retval) = 0;

  /* void saveToFile (in nsIOutputStream stream); */
  NS_IMETHOD SaveToFile(nsIOutputStream *stream) = 0;

  /* void parseCondition (in nsIMsgFilter aFilter, in string condition); */
  NS_IMETHOD ParseCondition(nsIMsgFilter *aFilter, const char * condition) = 0;

  /* attribute nsIFile defaultFile; */
  NS_IMETHOD GetDefaultFile(nsIFile * *aDefaultFile) = 0;
  NS_IMETHOD SetDefaultFile(nsIFile *aDefaultFile) = 0;

  /* void saveToDefaultFile (); */
  NS_IMETHOD SaveToDefaultFile(void) = 0;

  /* [noscript] void applyFiltersToHdr (in nsMsgFilterTypeType filterType, in nsIMsgDBHdr msgHdr, in nsIMsgFolder folder, in nsIMsgDatabase db, in string headers, in unsigned long headerSize, in nsIMsgFilterHitNotify listener, in nsIMsgWindow msgWindow); */
  NS_IMETHOD ApplyFiltersToHdr(nsMsgFilterTypeType filterType, nsIMsgDBHdr *msgHdr, nsIMsgFolder *folder, nsIMsgDatabase *db, const char * headers, uint32_t headerSize, nsIMsgFilterHitNotify *listener, nsIMsgWindow *msgWindow) = 0;

  /* void writeIntAttr (in nsMsgFilterFileAttribValue attrib, in long value, in nsIOutputStream stream); */
  NS_IMETHOD WriteIntAttr(nsMsgFilterFileAttribValue attrib, int32_t value, nsIOutputStream *stream) = 0;

  /* void writeStrAttr (in nsMsgFilterFileAttribValue attrib, in string value, in nsIOutputStream stream); */
  NS_IMETHOD WriteStrAttr(nsMsgFilterFileAttribValue attrib, const char * value, nsIOutputStream *stream) = 0;

  /* void writeWstrAttr (in nsMsgFilterFileAttribValue attrib, in wstring value, in nsIOutputStream stream); */
  NS_IMETHOD WriteWstrAttr(nsMsgFilterFileAttribValue attrib, const char16_t * value, nsIOutputStream *stream) = 0;

  /* void writeBoolAttr (in nsMsgFilterFileAttribValue attrib, in boolean value, in nsIOutputStream stream); */
  NS_IMETHOD WriteBoolAttr(nsMsgFilterFileAttribValue attrib, bool value, nsIOutputStream *stream) = 0;

  /* boolean matchOrChangeFilterTarget (in ACString oldUri, in ACString newUri, in boolean caseInsensitive); */
  NS_IMETHOD MatchOrChangeFilterTarget(const nsACString & oldUri, const nsACString & newUri, bool caseInsensitive, bool *_retval) = 0;

  /* attribute nsIOutputStream logStream; */
  NS_IMETHOD GetLogStream(nsIOutputStream * *aLogStream) = 0;
  NS_IMETHOD SetLogStream(nsIOutputStream *aLogStream) = 0;

  /* readonly attribute ACString logURL; */
  NS_IMETHOD GetLogURL(nsACString & aLogURL) = 0;

  /* void clearLog (); */
  NS_IMETHOD ClearLog(void) = 0;

  /* void flushLogIfNecessary (); */
  NS_IMETHOD FlushLogIfNecessary(void) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgFilterList, NS_IMSGFILTERLIST_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGFILTERLIST \
  NS_IMETHOD GetFolder(nsIMsgFolder * *aFolder) override; \
  NS_IMETHOD SetFolder(nsIMsgFolder *aFolder) override; \
  NS_IMETHOD GetVersion(int16_t *aVersion) override; \
  NS_IMETHOD GetArbitraryHeaders(nsACString & aArbitraryHeaders) override; \
  NS_IMETHOD GetShouldDownloadAllHeaders(bool *aShouldDownloadAllHeaders) override; \
  NS_IMETHOD GetFilterCount(uint32_t *aFilterCount) override; \
  NS_IMETHOD GetFilterAt(uint32_t filterIndex, nsIMsgFilter * *_retval) override; \
  NS_IMETHOD GetFilterNamed(const nsAString & filterName, nsIMsgFilter * *_retval) override; \
  NS_IMETHOD SetFilterAt(uint32_t filterIndex, nsIMsgFilter *filter) override; \
  NS_IMETHOD RemoveFilter(nsIMsgFilter *filter) override; \
  NS_IMETHOD RemoveFilterAt(uint32_t filterIndex) override; \
  NS_IMETHOD MoveFilterAt(uint32_t filterIndex, nsMsgFilterMotionValue motion) override; \
  NS_IMETHOD MoveFilter(nsIMsgFilter *filter, nsMsgFilterMotionValue motion) override; \
  NS_IMETHOD InsertFilterAt(uint32_t filterIndex, nsIMsgFilter *filter) override; \
  NS_IMETHOD GetLoggingEnabled(bool *aLoggingEnabled) override; \
  NS_IMETHOD SetLoggingEnabled(bool aLoggingEnabled) override; \
  NS_IMETHOD CreateFilter(const nsAString & name, nsIMsgFilter * *_retval) override; \
  NS_IMETHOD SaveToFile(nsIOutputStream *stream) override; \
  NS_IMETHOD ParseCondition(nsIMsgFilter *aFilter, const char * condition) override; \
  NS_IMETHOD GetDefaultFile(nsIFile * *aDefaultFile) override; \
  NS_IMETHOD SetDefaultFile(nsIFile *aDefaultFile) override; \
  NS_IMETHOD SaveToDefaultFile(void) override; \
  NS_IMETHOD ApplyFiltersToHdr(nsMsgFilterTypeType filterType, nsIMsgDBHdr *msgHdr, nsIMsgFolder *folder, nsIMsgDatabase *db, const char * headers, uint32_t headerSize, nsIMsgFilterHitNotify *listener, nsIMsgWindow *msgWindow) override; \
  NS_IMETHOD WriteIntAttr(nsMsgFilterFileAttribValue attrib, int32_t value, nsIOutputStream *stream) override; \
  NS_IMETHOD WriteStrAttr(nsMsgFilterFileAttribValue attrib, const char * value, nsIOutputStream *stream) override; \
  NS_IMETHOD WriteWstrAttr(nsMsgFilterFileAttribValue attrib, const char16_t * value, nsIOutputStream *stream) override; \
  NS_IMETHOD WriteBoolAttr(nsMsgFilterFileAttribValue attrib, bool value, nsIOutputStream *stream) override; \
  NS_IMETHOD MatchOrChangeFilterTarget(const nsACString & oldUri, const nsACString & newUri, bool caseInsensitive, bool *_retval) override; \
  NS_IMETHOD GetLogStream(nsIOutputStream * *aLogStream) override; \
  NS_IMETHOD SetLogStream(nsIOutputStream *aLogStream) override; \
  NS_IMETHOD GetLogURL(nsACString & aLogURL) override; \
  NS_IMETHOD ClearLog(void) override; \
  NS_IMETHOD FlushLogIfNecessary(void) 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_NSIMSGFILTERLIST \
  NS_METHOD GetFolder(nsIMsgFolder * *aFolder); \
  NS_METHOD SetFolder(nsIMsgFolder *aFolder); \
  NS_METHOD GetVersion(int16_t *aVersion); \
  NS_METHOD GetArbitraryHeaders(nsACString & aArbitraryHeaders); \
  NS_METHOD GetShouldDownloadAllHeaders(bool *aShouldDownloadAllHeaders); \
  NS_METHOD GetFilterCount(uint32_t *aFilterCount); \
  NS_METHOD GetFilterAt(uint32_t filterIndex, nsIMsgFilter * *_retval); \
  NS_METHOD GetFilterNamed(const nsAString & filterName, nsIMsgFilter * *_retval); \
  NS_METHOD SetFilterAt(uint32_t filterIndex, nsIMsgFilter *filter); \
  NS_METHOD RemoveFilter(nsIMsgFilter *filter); \
  NS_METHOD RemoveFilterAt(uint32_t filterIndex); \
  NS_METHOD MoveFilterAt(uint32_t filterIndex, nsMsgFilterMotionValue motion); \
  NS_METHOD MoveFilter(nsIMsgFilter *filter, nsMsgFilterMotionValue motion); \
  NS_METHOD InsertFilterAt(uint32_t filterIndex, nsIMsgFilter *filter); \
  NS_METHOD GetLoggingEnabled(bool *aLoggingEnabled); \
  NS_METHOD SetLoggingEnabled(bool aLoggingEnabled); \
  NS_METHOD CreateFilter(const nsAString & name, nsIMsgFilter * *_retval); \
  NS_METHOD SaveToFile(nsIOutputStream *stream); \
  NS_METHOD ParseCondition(nsIMsgFilter *aFilter, const char * condition); \
  NS_METHOD GetDefaultFile(nsIFile * *aDefaultFile); \
  NS_METHOD SetDefaultFile(nsIFile *aDefaultFile); \
  NS_METHOD SaveToDefaultFile(void); \
  NS_METHOD ApplyFiltersToHdr(nsMsgFilterTypeType filterType, nsIMsgDBHdr *msgHdr, nsIMsgFolder *folder, nsIMsgDatabase *db, const char * headers, uint32_t headerSize, nsIMsgFilterHitNotify *listener, nsIMsgWindow *msgWindow); \
  NS_METHOD WriteIntAttr(nsMsgFilterFileAttribValue attrib, int32_t value, nsIOutputStream *stream); \
  NS_METHOD WriteStrAttr(nsMsgFilterFileAttribValue attrib, const char * value, nsIOutputStream *stream); \
  NS_METHOD WriteWstrAttr(nsMsgFilterFileAttribValue attrib, const char16_t * value, nsIOutputStream *stream); \
  NS_METHOD WriteBoolAttr(nsMsgFilterFileAttribValue attrib, bool value, nsIOutputStream *stream); \
  NS_METHOD MatchOrChangeFilterTarget(const nsACString & oldUri, const nsACString & newUri, bool caseInsensitive, bool *_retval); \
  NS_METHOD GetLogStream(nsIOutputStream * *aLogStream); \
  NS_METHOD SetLogStream(nsIOutputStream *aLogStream); \
  NS_METHOD GetLogURL(nsACString & aLogURL); \
  NS_METHOD ClearLog(void); \
  NS_METHOD FlushLogIfNecessary(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGFILTERLIST(_to) \
  NS_IMETHOD GetFolder(nsIMsgFolder * *aFolder) override { return _to GetFolder(aFolder); } \
  NS_IMETHOD SetFolder(nsIMsgFolder *aFolder) override { return _to SetFolder(aFolder); } \
  NS_IMETHOD GetVersion(int16_t *aVersion) override { return _to GetVersion(aVersion); } \
  NS_IMETHOD GetArbitraryHeaders(nsACString & aArbitraryHeaders) override { return _to GetArbitraryHeaders(aArbitraryHeaders); } \
  NS_IMETHOD GetShouldDownloadAllHeaders(bool *aShouldDownloadAllHeaders) override { return _to GetShouldDownloadAllHeaders(aShouldDownloadAllHeaders); } \
  NS_IMETHOD GetFilterCount(uint32_t *aFilterCount) override { return _to GetFilterCount(aFilterCount); } \
  NS_IMETHOD GetFilterAt(uint32_t filterIndex, nsIMsgFilter * *_retval) override { return _to GetFilterAt(filterIndex, _retval); } \
  NS_IMETHOD GetFilterNamed(const nsAString & filterName, nsIMsgFilter * *_retval) override { return _to GetFilterNamed(filterName, _retval); } \
  NS_IMETHOD SetFilterAt(uint32_t filterIndex, nsIMsgFilter *filter) override { return _to SetFilterAt(filterIndex, filter); } \
  NS_IMETHOD RemoveFilter(nsIMsgFilter *filter) override { return _to RemoveFilter(filter); } \
  NS_IMETHOD RemoveFilterAt(uint32_t filterIndex) override { return _to RemoveFilterAt(filterIndex); } \
  NS_IMETHOD MoveFilterAt(uint32_t filterIndex, nsMsgFilterMotionValue motion) override { return _to MoveFilterAt(filterIndex, motion); } \
  NS_IMETHOD MoveFilter(nsIMsgFilter *filter, nsMsgFilterMotionValue motion) override { return _to MoveFilter(filter, motion); } \
  NS_IMETHOD InsertFilterAt(uint32_t filterIndex, nsIMsgFilter *filter) override { return _to InsertFilterAt(filterIndex, filter); } \
  NS_IMETHOD GetLoggingEnabled(bool *aLoggingEnabled) override { return _to GetLoggingEnabled(aLoggingEnabled); } \
  NS_IMETHOD SetLoggingEnabled(bool aLoggingEnabled) override { return _to SetLoggingEnabled(aLoggingEnabled); } \
  NS_IMETHOD CreateFilter(const nsAString & name, nsIMsgFilter * *_retval) override { return _to CreateFilter(name, _retval); } \
  NS_IMETHOD SaveToFile(nsIOutputStream *stream) override { return _to SaveToFile(stream); } \
  NS_IMETHOD ParseCondition(nsIMsgFilter *aFilter, const char * condition) override { return _to ParseCondition(aFilter, condition); } \
  NS_IMETHOD GetDefaultFile(nsIFile * *aDefaultFile) override { return _to GetDefaultFile(aDefaultFile); } \
  NS_IMETHOD SetDefaultFile(nsIFile *aDefaultFile) override { return _to SetDefaultFile(aDefaultFile); } \
  NS_IMETHOD SaveToDefaultFile(void) override { return _to SaveToDefaultFile(); } \
  NS_IMETHOD ApplyFiltersToHdr(nsMsgFilterTypeType filterType, nsIMsgDBHdr *msgHdr, nsIMsgFolder *folder, nsIMsgDatabase *db, const char * headers, uint32_t headerSize, nsIMsgFilterHitNotify *listener, nsIMsgWindow *msgWindow) override { return _to ApplyFiltersToHdr(filterType, msgHdr, folder, db, headers, headerSize, listener, msgWindow); } \
  NS_IMETHOD WriteIntAttr(nsMsgFilterFileAttribValue attrib, int32_t value, nsIOutputStream *stream) override { return _to WriteIntAttr(attrib, value, stream); } \
  NS_IMETHOD WriteStrAttr(nsMsgFilterFileAttribValue attrib, const char * value, nsIOutputStream *stream) override { return _to WriteStrAttr(attrib, value, stream); } \
  NS_IMETHOD WriteWstrAttr(nsMsgFilterFileAttribValue attrib, const char16_t * value, nsIOutputStream *stream) override { return _to WriteWstrAttr(attrib, value, stream); } \
  NS_IMETHOD WriteBoolAttr(nsMsgFilterFileAttribValue attrib, bool value, nsIOutputStream *stream) override { return _to WriteBoolAttr(attrib, value, stream); } \
  NS_IMETHOD MatchOrChangeFilterTarget(const nsACString & oldUri, const nsACString & newUri, bool caseInsensitive, bool *_retval) override { return _to MatchOrChangeFilterTarget(oldUri, newUri, caseInsensitive, _retval); } \
  NS_IMETHOD GetLogStream(nsIOutputStream * *aLogStream) override { return _to GetLogStream(aLogStream); } \
  NS_IMETHOD SetLogStream(nsIOutputStream *aLogStream) override { return _to SetLogStream(aLogStream); } \
  NS_IMETHOD GetLogURL(nsACString & aLogURL) override { return _to GetLogURL(aLogURL); } \
  NS_IMETHOD ClearLog(void) override { return _to ClearLog(); } \
  NS_IMETHOD FlushLogIfNecessary(void) override { return _to FlushLogIfNecessary(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGFILTERLIST(_to) \
  NS_IMETHOD GetFolder(nsIMsgFolder * *aFolder) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFolder(aFolder); } \
  NS_IMETHOD SetFolder(nsIMsgFolder *aFolder) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFolder(aFolder); } \
  NS_IMETHOD GetVersion(int16_t *aVersion) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVersion(aVersion); } \
  NS_IMETHOD GetArbitraryHeaders(nsACString & aArbitraryHeaders) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetArbitraryHeaders(aArbitraryHeaders); } \
  NS_IMETHOD GetShouldDownloadAllHeaders(bool *aShouldDownloadAllHeaders) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetShouldDownloadAllHeaders(aShouldDownloadAllHeaders); } \
  NS_IMETHOD GetFilterCount(uint32_t *aFilterCount) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilterCount(aFilterCount); } \
  NS_IMETHOD GetFilterAt(uint32_t filterIndex, nsIMsgFilter * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilterAt(filterIndex, _retval); } \
  NS_IMETHOD GetFilterNamed(const nsAString & filterName, nsIMsgFilter * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilterNamed(filterName, _retval); } \
  NS_IMETHOD SetFilterAt(uint32_t filterIndex, nsIMsgFilter *filter) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFilterAt(filterIndex, filter); } \
  NS_IMETHOD RemoveFilter(nsIMsgFilter *filter) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveFilter(filter); } \
  NS_IMETHOD RemoveFilterAt(uint32_t filterIndex) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveFilterAt(filterIndex); } \
  NS_IMETHOD MoveFilterAt(uint32_t filterIndex, nsMsgFilterMotionValue motion) override { return !_to ? NS_ERROR_NULL_POINTER : _to->MoveFilterAt(filterIndex, motion); } \
  NS_IMETHOD MoveFilter(nsIMsgFilter *filter, nsMsgFilterMotionValue motion) override { return !_to ? NS_ERROR_NULL_POINTER : _to->MoveFilter(filter, motion); } \
  NS_IMETHOD InsertFilterAt(uint32_t filterIndex, nsIMsgFilter *filter) override { return !_to ? NS_ERROR_NULL_POINTER : _to->InsertFilterAt(filterIndex, filter); } \
  NS_IMETHOD GetLoggingEnabled(bool *aLoggingEnabled) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLoggingEnabled(aLoggingEnabled); } \
  NS_IMETHOD SetLoggingEnabled(bool aLoggingEnabled) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLoggingEnabled(aLoggingEnabled); } \
  NS_IMETHOD CreateFilter(const nsAString & name, nsIMsgFilter * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateFilter(name, _retval); } \
  NS_IMETHOD SaveToFile(nsIOutputStream *stream) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SaveToFile(stream); } \
  NS_IMETHOD ParseCondition(nsIMsgFilter *aFilter, const char * condition) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ParseCondition(aFilter, condition); } \
  NS_IMETHOD GetDefaultFile(nsIFile * *aDefaultFile) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDefaultFile(aDefaultFile); } \
  NS_IMETHOD SetDefaultFile(nsIFile *aDefaultFile) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDefaultFile(aDefaultFile); } \
  NS_IMETHOD SaveToDefaultFile(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SaveToDefaultFile(); } \
  NS_IMETHOD ApplyFiltersToHdr(nsMsgFilterTypeType filterType, nsIMsgDBHdr *msgHdr, nsIMsgFolder *folder, nsIMsgDatabase *db, const char * headers, uint32_t headerSize, nsIMsgFilterHitNotify *listener, nsIMsgWindow *msgWindow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ApplyFiltersToHdr(filterType, msgHdr, folder, db, headers, headerSize, listener, msgWindow); } \
  NS_IMETHOD WriteIntAttr(nsMsgFilterFileAttribValue attrib, int32_t value, nsIOutputStream *stream) override { return !_to ? NS_ERROR_NULL_POINTER : _to->WriteIntAttr(attrib, value, stream); } \
  NS_IMETHOD WriteStrAttr(nsMsgFilterFileAttribValue attrib, const char * value, nsIOutputStream *stream) override { return !_to ? NS_ERROR_NULL_POINTER : _to->WriteStrAttr(attrib, value, stream); } \
  NS_IMETHOD WriteWstrAttr(nsMsgFilterFileAttribValue attrib, const char16_t * value, nsIOutputStream *stream) override { return !_to ? NS_ERROR_NULL_POINTER : _to->WriteWstrAttr(attrib, value, stream); } \
  NS_IMETHOD WriteBoolAttr(nsMsgFilterFileAttribValue attrib, bool value, nsIOutputStream *stream) override { return !_to ? NS_ERROR_NULL_POINTER : _to->WriteBoolAttr(attrib, value, stream); } \
  NS_IMETHOD MatchOrChangeFilterTarget(const nsACString & oldUri, const nsACString & newUri, bool caseInsensitive, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->MatchOrChangeFilterTarget(oldUri, newUri, caseInsensitive, _retval); } \
  NS_IMETHOD GetLogStream(nsIOutputStream * *aLogStream) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogStream(aLogStream); } \
  NS_IMETHOD SetLogStream(nsIOutputStream *aLogStream) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLogStream(aLogStream); } \
  NS_IMETHOD GetLogURL(nsACString & aLogURL) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogURL(aLogURL); } \
  NS_IMETHOD ClearLog(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearLog(); } \
  NS_IMETHOD FlushLogIfNecessary(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->FlushLogIfNecessary(); } 

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

/* Header file */
class nsMsgFilterList : public nsIMsgFilterList
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGFILTERLIST

  nsMsgFilterList();

private:
  ~nsMsgFilterList();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsMsgFilterList, nsIMsgFilterList)

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

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

/* attribute nsIMsgFolder folder; */
NS_IMETHODIMP nsMsgFilterList::GetFolder(nsIMsgFolder * *aFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFilterList::SetFolder(nsIMsgFolder *aFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute short version; */
NS_IMETHODIMP nsMsgFilterList::GetVersion(int16_t *aVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute ACString arbitraryHeaders; */
NS_IMETHODIMP nsMsgFilterList::GetArbitraryHeaders(nsACString & aArbitraryHeaders)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean shouldDownloadAllHeaders; */
NS_IMETHODIMP nsMsgFilterList::GetShouldDownloadAllHeaders(bool *aShouldDownloadAllHeaders)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long filterCount; */
NS_IMETHODIMP nsMsgFilterList::GetFilterCount(uint32_t *aFilterCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgFilter getFilterAt (in unsigned long filterIndex); */
NS_IMETHODIMP nsMsgFilterList::GetFilterAt(uint32_t filterIndex, nsIMsgFilter * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgFilter getFilterNamed (in AString filterName); */
NS_IMETHODIMP nsMsgFilterList::GetFilterNamed(const nsAString & filterName, nsIMsgFilter * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setFilterAt (in unsigned long filterIndex, in nsIMsgFilter filter); */
NS_IMETHODIMP nsMsgFilterList::SetFilterAt(uint32_t filterIndex, nsIMsgFilter *filter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeFilter (in nsIMsgFilter filter); */
NS_IMETHODIMP nsMsgFilterList::RemoveFilter(nsIMsgFilter *filter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeFilterAt (in unsigned long filterIndex); */
NS_IMETHODIMP nsMsgFilterList::RemoveFilterAt(uint32_t filterIndex)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void moveFilterAt (in unsigned long filterIndex, in nsMsgFilterMotionValue motion); */
NS_IMETHODIMP nsMsgFilterList::MoveFilterAt(uint32_t filterIndex, nsMsgFilterMotionValue motion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void moveFilter (in nsIMsgFilter filter, in nsMsgFilterMotionValue motion); */
NS_IMETHODIMP nsMsgFilterList::MoveFilter(nsIMsgFilter *filter, nsMsgFilterMotionValue motion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void insertFilterAt (in unsigned long filterIndex, in nsIMsgFilter filter); */
NS_IMETHODIMP nsMsgFilterList::InsertFilterAt(uint32_t filterIndex, nsIMsgFilter *filter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean loggingEnabled; */
NS_IMETHODIMP nsMsgFilterList::GetLoggingEnabled(bool *aLoggingEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFilterList::SetLoggingEnabled(bool aLoggingEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgFilter createFilter (in AString name); */
NS_IMETHODIMP nsMsgFilterList::CreateFilter(const nsAString & name, nsIMsgFilter * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void saveToFile (in nsIOutputStream stream); */
NS_IMETHODIMP nsMsgFilterList::SaveToFile(nsIOutputStream *stream)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void parseCondition (in nsIMsgFilter aFilter, in string condition); */
NS_IMETHODIMP nsMsgFilterList::ParseCondition(nsIMsgFilter *aFilter, const char * condition)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIFile defaultFile; */
NS_IMETHODIMP nsMsgFilterList::GetDefaultFile(nsIFile * *aDefaultFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFilterList::SetDefaultFile(nsIFile *aDefaultFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void saveToDefaultFile (); */
NS_IMETHODIMP nsMsgFilterList::SaveToDefaultFile()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void applyFiltersToHdr (in nsMsgFilterTypeType filterType, in nsIMsgDBHdr msgHdr, in nsIMsgFolder folder, in nsIMsgDatabase db, in string headers, in unsigned long headerSize, in nsIMsgFilterHitNotify listener, in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgFilterList::ApplyFiltersToHdr(nsMsgFilterTypeType filterType, nsIMsgDBHdr *msgHdr, nsIMsgFolder *folder, nsIMsgDatabase *db, const char * headers, uint32_t headerSize, nsIMsgFilterHitNotify *listener, nsIMsgWindow *msgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void writeIntAttr (in nsMsgFilterFileAttribValue attrib, in long value, in nsIOutputStream stream); */
NS_IMETHODIMP nsMsgFilterList::WriteIntAttr(nsMsgFilterFileAttribValue attrib, int32_t value, nsIOutputStream *stream)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void writeStrAttr (in nsMsgFilterFileAttribValue attrib, in string value, in nsIOutputStream stream); */
NS_IMETHODIMP nsMsgFilterList::WriteStrAttr(nsMsgFilterFileAttribValue attrib, const char * value, nsIOutputStream *stream)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void writeWstrAttr (in nsMsgFilterFileAttribValue attrib, in wstring value, in nsIOutputStream stream); */
NS_IMETHODIMP nsMsgFilterList::WriteWstrAttr(nsMsgFilterFileAttribValue attrib, const char16_t * value, nsIOutputStream *stream)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void writeBoolAttr (in nsMsgFilterFileAttribValue attrib, in boolean value, in nsIOutputStream stream); */
NS_IMETHODIMP nsMsgFilterList::WriteBoolAttr(nsMsgFilterFileAttribValue attrib, bool value, nsIOutputStream *stream)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean matchOrChangeFilterTarget (in ACString oldUri, in ACString newUri, in boolean caseInsensitive); */
NS_IMETHODIMP nsMsgFilterList::MatchOrChangeFilterTarget(const nsACString & oldUri, const nsACString & newUri, bool caseInsensitive, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIOutputStream logStream; */
NS_IMETHODIMP nsMsgFilterList::GetLogStream(nsIOutputStream * *aLogStream)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFilterList::SetLogStream(nsIOutputStream *aLogStream)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute ACString logURL; */
NS_IMETHODIMP nsMsgFilterList::GetLogURL(nsACString & aLogURL)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void clearLog (); */
NS_IMETHODIMP nsMsgFilterList::ClearLog()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void flushLogIfNecessary (); */
NS_IMETHODIMP nsMsgFilterList::FlushLogIfNecessary()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsMsgFilterMotion */
#define NS_MSGFILTERMOTION_IID_STR "d067b528-304e-11d3-a0e1-00a0c900d445"

#define NS_MSGFILTERMOTION_IID \
  {0xd067b528, 0x304e, 0x11d3, \
    { 0xa0, 0xe1, 0x00, 0xa0, 0xc9, 0x00, 0xd4, 0x45 }}

class NS_NO_VTABLE nsMsgFilterMotion {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_MSGFILTERMOTION_IID)

  enum {
    up = 0,
    down = 1
  };

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsMsgFilterMotion, NS_MSGFILTERMOTION_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSMSGFILTERMOTION \

/* 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_NSMSGFILTERMOTION \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSMSGFILTERMOTION(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSMSGFILTERMOTION(_to) \

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

/* Header file */
class _MYCLASS_ : public nsMsgFilterMotion
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSMSGFILTERMOTION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(_MYCLASS_, nsMsgFilterMotion)

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

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

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


#endif /* __gen_nsIMsgFilterList_h__ */
