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

#ifndef __gen_nsIMsgFilterList_h__
#define __gen_nsIMsgFilterList_h__


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

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

#ifndef __gen_nsIMsgFilter_h__
#include "nsIMsgFilter.h"
#endif

#ifndef __gen_nsIMsgFilterHitNotify_h__
#include "nsIMsgFilterHitNotify.h"
#endif

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

class nsIOutputStream; /* forward declaration */

typedef PRInt32 nsMsgFilterFileAttribValue;


/* starting interface:    nsIMsgFilterList */
#define NS_IMSGFILTERLIST_IID_STR "ab0105ad-86bf-4862-9adb-84f4e266577c"

#define NS_IMSGFILTERLIST_IID \
  {0xab0105ad, 0x86bf, 0x4862, \
    { 0x9a, 0xdb, 0x84, 0xf4, 0xe2, 0x66, 0x57, 0x7c }}

class NS_NO_VTABLE nsIMsgFilterList : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMSGFILTERLIST_IID)

  enum { attribNone = 0 };

  enum { attribVersion = 1 };

  enum { attribLogging = 2 };

  enum { attribName = 3 };

  enum { attribEnabled = 4 };

  enum { attribDescription = 5 };

  enum { attribType = 6 };

  enum { attribScriptFile = 7 };

  enum { attribAction = 8 };

  enum { attribActionValue = 9 };

  enum { attribCondition = 10 };

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

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

  /* readonly attribute string arbitraryHeaders; */
  NS_IMETHOD GetArbitraryHeaders(char * *aArbitraryHeaders) = 0;

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

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

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

  /* nsIMsgFilter getFilterNamed (in wstring filterName); */
  NS_IMETHOD GetFilterNamed(const PRUnichar *filterName, nsIMsgFilter **_retval) = 0;

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

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

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

  /* void moveFilterAt (in unsigned long filterIndex, in nsMsgFilterMotionValue motion); */
  NS_IMETHOD MoveFilterAt(PRUint32 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(PRUint32 filterIndex, nsIMsgFilter *filter) = 0;

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

  /* nsIMsgFilter createFilter (in wstring name); */
  NS_IMETHOD CreateFilter(const PRUnichar *name, nsIMsgFilter **_retval) = 0;

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

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

  /* attribute nsIFileSpec defaultFile; */
  NS_IMETHOD GetDefaultFile(nsIFileSpec * *aDefaultFile) = 0;
  NS_IMETHOD SetDefaultFile(nsIFileSpec * 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, in nsILocalFile aMessageFile); */
  NS_IMETHOD ApplyFiltersToHdr(nsMsgFilterTypeType filterType, nsIMsgDBHdr *msgHdr, nsIMsgFolder *folder, nsIMsgDatabase *db, const char *headers, PRUint32 headerSize, nsIMsgFilterHitNotify *listener, nsIMsgWindow *msgWindow, nsILocalFile *aMessageFile) = 0;

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

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

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

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

  /* boolean matchOrChangeFilterTarget (in string oldUri, in string newUri, in boolean caseInsensitive); */
  NS_IMETHOD MatchOrChangeFilterTarget(const char *oldUri, const char *newUri, PRBool caseInsensitive, PRBool *_retval) = 0;

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

  /* readonly attribute string logURL; */
  NS_IMETHOD GetLogURL(char * *aLogURL) = 0;

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

  /* void ensureLogFile (); */
  NS_IMETHOD EnsureLogFile(void) = 0;

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

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGFILTERLIST \
  NS_IMETHOD GetFolder(nsIMsgFolder * *aFolder); \
  NS_IMETHOD SetFolder(nsIMsgFolder * aFolder); \
  NS_IMETHOD GetVersion(PRInt16 *aVersion); \
  NS_IMETHOD GetArbitraryHeaders(char * *aArbitraryHeaders); \
  NS_IMETHOD GetShouldDownloadAllHeaders(PRBool *aShouldDownloadAllHeaders); \
  NS_IMETHOD GetFilterCount(PRUint32 *aFilterCount); \
  NS_IMETHOD GetFilterAt(PRUint32 filterIndex, nsIMsgFilter **_retval); \
  NS_IMETHOD GetFilterNamed(const PRUnichar *filterName, nsIMsgFilter **_retval); \
  NS_IMETHOD SetFilterAt(PRUint32 filterIndex, nsIMsgFilter *filter); \
  NS_IMETHOD RemoveFilter(nsIMsgFilter *filter); \
  NS_IMETHOD RemoveFilterAt(PRUint32 filterIndex); \
  NS_IMETHOD MoveFilterAt(PRUint32 filterIndex, nsMsgFilterMotionValue motion); \
  NS_IMETHOD MoveFilter(nsIMsgFilter *filter, nsMsgFilterMotionValue motion); \
  NS_IMETHOD InsertFilterAt(PRUint32 filterIndex, nsIMsgFilter *filter); \
  NS_IMETHOD GetLoggingEnabled(PRBool *aLoggingEnabled); \
  NS_IMETHOD SetLoggingEnabled(PRBool aLoggingEnabled); \
  NS_IMETHOD CreateFilter(const PRUnichar *name, nsIMsgFilter **_retval); \
  NS_IMETHOD SaveToFile(nsIOFileStream *stream); \
  NS_IMETHOD ParseCondition(nsIMsgFilter *aFilter, const char *condition); \
  NS_IMETHOD GetDefaultFile(nsIFileSpec * *aDefaultFile); \
  NS_IMETHOD SetDefaultFile(nsIFileSpec * aDefaultFile); \
  NS_IMETHOD SaveToDefaultFile(void); \
  NS_IMETHOD ApplyFiltersToHdr(nsMsgFilterTypeType filterType, nsIMsgDBHdr *msgHdr, nsIMsgFolder *folder, nsIMsgDatabase *db, const char *headers, PRUint32 headerSize, nsIMsgFilterHitNotify *listener, nsIMsgWindow *msgWindow, nsILocalFile *aMessageFile); \
  NS_IMETHOD WriteIntAttr(nsMsgFilterFileAttribValue attrib, PRInt32 value, nsIOFileStream *stream); \
  NS_IMETHOD WriteStrAttr(nsMsgFilterFileAttribValue attrib, const char *value, nsIOFileStream *stream); \
  NS_IMETHOD WriteWstrAttr(nsMsgFilterFileAttribValue attrib, const PRUnichar *value, nsIOFileStream *stream); \
  NS_IMETHOD WriteBoolAttr(nsMsgFilterFileAttribValue attrib, PRBool value, nsIOFileStream *stream); \
  NS_IMETHOD MatchOrChangeFilterTarget(const char *oldUri, const char *newUri, PRBool caseInsensitive, PRBool *_retval); \
  NS_IMETHOD GetLogStream(nsIOutputStream * *aLogStream); \
  NS_IMETHOD SetLogStream(nsIOutputStream * aLogStream); \
  NS_IMETHOD GetLogURL(char * *aLogURL); \
  NS_IMETHOD ClearLog(void); \
  NS_IMETHOD EnsureLogFile(void); \
  NS_IMETHOD 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) { return _to GetFolder(aFolder); } \
  NS_IMETHOD SetFolder(nsIMsgFolder * aFolder) { return _to SetFolder(aFolder); } \
  NS_IMETHOD GetVersion(PRInt16 *aVersion) { return _to GetVersion(aVersion); } \
  NS_IMETHOD GetArbitraryHeaders(char * *aArbitraryHeaders) { return _to GetArbitraryHeaders(aArbitraryHeaders); } \
  NS_IMETHOD GetShouldDownloadAllHeaders(PRBool *aShouldDownloadAllHeaders) { return _to GetShouldDownloadAllHeaders(aShouldDownloadAllHeaders); } \
  NS_IMETHOD GetFilterCount(PRUint32 *aFilterCount) { return _to GetFilterCount(aFilterCount); } \
  NS_IMETHOD GetFilterAt(PRUint32 filterIndex, nsIMsgFilter **_retval) { return _to GetFilterAt(filterIndex, _retval); } \
  NS_IMETHOD GetFilterNamed(const PRUnichar *filterName, nsIMsgFilter **_retval) { return _to GetFilterNamed(filterName, _retval); } \
  NS_IMETHOD SetFilterAt(PRUint32 filterIndex, nsIMsgFilter *filter) { return _to SetFilterAt(filterIndex, filter); } \
  NS_IMETHOD RemoveFilter(nsIMsgFilter *filter) { return _to RemoveFilter(filter); } \
  NS_IMETHOD RemoveFilterAt(PRUint32 filterIndex) { return _to RemoveFilterAt(filterIndex); } \
  NS_IMETHOD MoveFilterAt(PRUint32 filterIndex, nsMsgFilterMotionValue motion) { return _to MoveFilterAt(filterIndex, motion); } \
  NS_IMETHOD MoveFilter(nsIMsgFilter *filter, nsMsgFilterMotionValue motion) { return _to MoveFilter(filter, motion); } \
  NS_IMETHOD InsertFilterAt(PRUint32 filterIndex, nsIMsgFilter *filter) { return _to InsertFilterAt(filterIndex, filter); } \
  NS_IMETHOD GetLoggingEnabled(PRBool *aLoggingEnabled) { return _to GetLoggingEnabled(aLoggingEnabled); } \
  NS_IMETHOD SetLoggingEnabled(PRBool aLoggingEnabled) { return _to SetLoggingEnabled(aLoggingEnabled); } \
  NS_IMETHOD CreateFilter(const PRUnichar *name, nsIMsgFilter **_retval) { return _to CreateFilter(name, _retval); } \
  NS_IMETHOD SaveToFile(nsIOFileStream *stream) { return _to SaveToFile(stream); } \
  NS_IMETHOD ParseCondition(nsIMsgFilter *aFilter, const char *condition) { return _to ParseCondition(aFilter, condition); } \
  NS_IMETHOD GetDefaultFile(nsIFileSpec * *aDefaultFile) { return _to GetDefaultFile(aDefaultFile); } \
  NS_IMETHOD SetDefaultFile(nsIFileSpec * aDefaultFile) { return _to SetDefaultFile(aDefaultFile); } \
  NS_IMETHOD SaveToDefaultFile(void) { return _to SaveToDefaultFile(); } \
  NS_IMETHOD ApplyFiltersToHdr(nsMsgFilterTypeType filterType, nsIMsgDBHdr *msgHdr, nsIMsgFolder *folder, nsIMsgDatabase *db, const char *headers, PRUint32 headerSize, nsIMsgFilterHitNotify *listener, nsIMsgWindow *msgWindow, nsILocalFile *aMessageFile) { return _to ApplyFiltersToHdr(filterType, msgHdr, folder, db, headers, headerSize, listener, msgWindow, aMessageFile); } \
  NS_IMETHOD WriteIntAttr(nsMsgFilterFileAttribValue attrib, PRInt32 value, nsIOFileStream *stream) { return _to WriteIntAttr(attrib, value, stream); } \
  NS_IMETHOD WriteStrAttr(nsMsgFilterFileAttribValue attrib, const char *value, nsIOFileStream *stream) { return _to WriteStrAttr(attrib, value, stream); } \
  NS_IMETHOD WriteWstrAttr(nsMsgFilterFileAttribValue attrib, const PRUnichar *value, nsIOFileStream *stream) { return _to WriteWstrAttr(attrib, value, stream); } \
  NS_IMETHOD WriteBoolAttr(nsMsgFilterFileAttribValue attrib, PRBool value, nsIOFileStream *stream) { return _to WriteBoolAttr(attrib, value, stream); } \
  NS_IMETHOD MatchOrChangeFilterTarget(const char *oldUri, const char *newUri, PRBool caseInsensitive, PRBool *_retval) { return _to MatchOrChangeFilterTarget(oldUri, newUri, caseInsensitive, _retval); } \
  NS_IMETHOD GetLogStream(nsIOutputStream * *aLogStream) { return _to GetLogStream(aLogStream); } \
  NS_IMETHOD SetLogStream(nsIOutputStream * aLogStream) { return _to SetLogStream(aLogStream); } \
  NS_IMETHOD GetLogURL(char * *aLogURL) { return _to GetLogURL(aLogURL); } \
  NS_IMETHOD ClearLog(void) { return _to ClearLog(); } \
  NS_IMETHOD EnsureLogFile(void) { return _to EnsureLogFile(); } \
  NS_IMETHOD FlushLogIfNecessary(void) { 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) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFolder(aFolder); } \
  NS_IMETHOD SetFolder(nsIMsgFolder * aFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFolder(aFolder); } \
  NS_IMETHOD GetVersion(PRInt16 *aVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVersion(aVersion); } \
  NS_IMETHOD GetArbitraryHeaders(char * *aArbitraryHeaders) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetArbitraryHeaders(aArbitraryHeaders); } \
  NS_IMETHOD GetShouldDownloadAllHeaders(PRBool *aShouldDownloadAllHeaders) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetShouldDownloadAllHeaders(aShouldDownloadAllHeaders); } \
  NS_IMETHOD GetFilterCount(PRUint32 *aFilterCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilterCount(aFilterCount); } \
  NS_IMETHOD GetFilterAt(PRUint32 filterIndex, nsIMsgFilter **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilterAt(filterIndex, _retval); } \
  NS_IMETHOD GetFilterNamed(const PRUnichar *filterName, nsIMsgFilter **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilterNamed(filterName, _retval); } \
  NS_IMETHOD SetFilterAt(PRUint32 filterIndex, nsIMsgFilter *filter) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFilterAt(filterIndex, filter); } \
  NS_IMETHOD RemoveFilter(nsIMsgFilter *filter) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveFilter(filter); } \
  NS_IMETHOD RemoveFilterAt(PRUint32 filterIndex) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveFilterAt(filterIndex); } \
  NS_IMETHOD MoveFilterAt(PRUint32 filterIndex, nsMsgFilterMotionValue motion) { return !_to ? NS_ERROR_NULL_POINTER : _to->MoveFilterAt(filterIndex, motion); } \
  NS_IMETHOD MoveFilter(nsIMsgFilter *filter, nsMsgFilterMotionValue motion) { return !_to ? NS_ERROR_NULL_POINTER : _to->MoveFilter(filter, motion); } \
  NS_IMETHOD InsertFilterAt(PRUint32 filterIndex, nsIMsgFilter *filter) { return !_to ? NS_ERROR_NULL_POINTER : _to->InsertFilterAt(filterIndex, filter); } \
  NS_IMETHOD GetLoggingEnabled(PRBool *aLoggingEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLoggingEnabled(aLoggingEnabled); } \
  NS_IMETHOD SetLoggingEnabled(PRBool aLoggingEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLoggingEnabled(aLoggingEnabled); } \
  NS_IMETHOD CreateFilter(const PRUnichar *name, nsIMsgFilter **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateFilter(name, _retval); } \
  NS_IMETHOD SaveToFile(nsIOFileStream *stream) { return !_to ? NS_ERROR_NULL_POINTER : _to->SaveToFile(stream); } \
  NS_IMETHOD ParseCondition(nsIMsgFilter *aFilter, const char *condition) { return !_to ? NS_ERROR_NULL_POINTER : _to->ParseCondition(aFilter, condition); } \
  NS_IMETHOD GetDefaultFile(nsIFileSpec * *aDefaultFile) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDefaultFile(aDefaultFile); } \
  NS_IMETHOD SetDefaultFile(nsIFileSpec * aDefaultFile) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDefaultFile(aDefaultFile); } \
  NS_IMETHOD SaveToDefaultFile(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->SaveToDefaultFile(); } \
  NS_IMETHOD ApplyFiltersToHdr(nsMsgFilterTypeType filterType, nsIMsgDBHdr *msgHdr, nsIMsgFolder *folder, nsIMsgDatabase *db, const char *headers, PRUint32 headerSize, nsIMsgFilterHitNotify *listener, nsIMsgWindow *msgWindow, nsILocalFile *aMessageFile) { return !_to ? NS_ERROR_NULL_POINTER : _to->ApplyFiltersToHdr(filterType, msgHdr, folder, db, headers, headerSize, listener, msgWindow, aMessageFile); } \
  NS_IMETHOD WriteIntAttr(nsMsgFilterFileAttribValue attrib, PRInt32 value, nsIOFileStream *stream) { return !_to ? NS_ERROR_NULL_POINTER : _to->WriteIntAttr(attrib, value, stream); } \
  NS_IMETHOD WriteStrAttr(nsMsgFilterFileAttribValue attrib, const char *value, nsIOFileStream *stream) { return !_to ? NS_ERROR_NULL_POINTER : _to->WriteStrAttr(attrib, value, stream); } \
  NS_IMETHOD WriteWstrAttr(nsMsgFilterFileAttribValue attrib, const PRUnichar *value, nsIOFileStream *stream) { return !_to ? NS_ERROR_NULL_POINTER : _to->WriteWstrAttr(attrib, value, stream); } \
  NS_IMETHOD WriteBoolAttr(nsMsgFilterFileAttribValue attrib, PRBool value, nsIOFileStream *stream) { return !_to ? NS_ERROR_NULL_POINTER : _to->WriteBoolAttr(attrib, value, stream); } \
  NS_IMETHOD MatchOrChangeFilterTarget(const char *oldUri, const char *newUri, PRBool caseInsensitive, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->MatchOrChangeFilterTarget(oldUri, newUri, caseInsensitive, _retval); } \
  NS_IMETHOD GetLogStream(nsIOutputStream * *aLogStream) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogStream(aLogStream); } \
  NS_IMETHOD SetLogStream(nsIOutputStream * aLogStream) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLogStream(aLogStream); } \
  NS_IMETHOD GetLogURL(char * *aLogURL) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogURL(aLogURL); } \
  NS_IMETHOD ClearLog(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearLog(); } \
  NS_IMETHOD EnsureLogFile(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnsureLogFile(); } \
  NS_IMETHOD FlushLogIfNecessary(void) { 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_ISUPPORTS1(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(PRInt16 *aVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute string arbitraryHeaders; */
NS_IMETHODIMP nsMsgFilterList::GetArbitraryHeaders(char * *aArbitraryHeaders)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

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

/* void setFilterAt (in unsigned long filterIndex, in nsIMsgFilter filter); */
NS_IMETHODIMP nsMsgFilterList::SetFilterAt(PRUint32 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(PRUint32 filterIndex)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void moveFilterAt (in unsigned long filterIndex, in nsMsgFilterMotionValue motion); */
NS_IMETHODIMP nsMsgFilterList::MoveFilterAt(PRUint32 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(PRUint32 filterIndex, nsIMsgFilter *filter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

/* void saveToFile (in nsIOFileStream stream); */
NS_IMETHODIMP nsMsgFilterList::SaveToFile(nsIOFileStream *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 nsIFileSpec defaultFile; */
NS_IMETHODIMP nsMsgFilterList::GetDefaultFile(nsIFileSpec * *aDefaultFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFilterList::SetDefaultFile(nsIFileSpec * 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, in nsILocalFile aMessageFile); */
NS_IMETHODIMP nsMsgFilterList::ApplyFiltersToHdr(nsMsgFilterTypeType filterType, nsIMsgDBHdr *msgHdr, nsIMsgFolder *folder, nsIMsgDatabase *db, const char *headers, PRUint32 headerSize, nsIMsgFilterHitNotify *listener, nsIMsgWindow *msgWindow, nsILocalFile *aMessageFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

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

/* boolean matchOrChangeFilterTarget (in string oldUri, in string newUri, in boolean caseInsensitive); */
NS_IMETHODIMP nsMsgFilterList::MatchOrChangeFilterTarget(const char *oldUri, const char *newUri, PRBool caseInsensitive, PRBool *_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 string logURL; */
NS_IMETHODIMP nsMsgFilterList::GetLogURL(char * *aLogURL)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void ensureLogFile (); */
NS_IMETHODIMP nsMsgFilterList::EnsureLogFile()
{
    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_DEFINE_STATIC_IID_ACCESSOR(NS_MSGFILTERMOTION_IID)

  enum { up = 0 };

  enum { down = 1 };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_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_ISUPPORTS1(_MYCLASS_, nsMsgFilterMotion)

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

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

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


#endif /* __gen_nsIMsgFilterList_h__ */
