/*
 * 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 nsIOutputStream; /* forward declaration */

typedef PRInt32  nsMsgFilterFileAttribValue;


/* starting interface:    nsIMsgFilterList */
#define NS_IMSGFILTERLIST_IID_STR "84d29635-e6c6-41ca-8b9f-82c9976dad58"

#define NS_IMSGFILTERLIST_IID \
  {0x84d29635, 0xe6c6, 0x41ca, \
    { 0x8b, 0x9f, 0x82, 0xc9, 0x97, 0x6d, 0xad, 0x58 }}

class NS_NO_VTABLE NS_SCRIPTABLE 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_SCRIPTABLE NS_IMETHOD GetFolder(nsIMsgFolder * *aFolder) = 0;
  NS_SCRIPTABLE NS_IMETHOD SetFolder(nsIMsgFolder *aFolder) = 0;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  /* void saveToDefaultFile (); */
  NS_SCRIPTABLE 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, PRUint32 headerSize, nsIMsgFilterHitNotify *listener, nsIMsgWindow *msgWindow) = 0;

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

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

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

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

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

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

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

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

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

  /* void flushLogIfNecessary (); */
  NS_SCRIPTABLE 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_SCRIPTABLE NS_IMETHOD GetFolder(nsIMsgFolder * *aFolder); \
  NS_SCRIPTABLE NS_IMETHOD SetFolder(nsIMsgFolder *aFolder); \
  NS_SCRIPTABLE NS_IMETHOD GetVersion(PRInt16 *aVersion); \
  NS_SCRIPTABLE NS_IMETHOD GetArbitraryHeaders(nsACString & aArbitraryHeaders); \
  NS_SCRIPTABLE NS_IMETHOD GetShouldDownloadAllHeaders(bool *aShouldDownloadAllHeaders); \
  NS_SCRIPTABLE NS_IMETHOD GetFilterCount(PRUint32 *aFilterCount); \
  NS_SCRIPTABLE NS_IMETHOD GetFilterAt(PRUint32 filterIndex, nsIMsgFilter * *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetFilterNamed(const nsAString & filterName, nsIMsgFilter * *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD SetFilterAt(PRUint32 filterIndex, nsIMsgFilter *filter); \
  NS_SCRIPTABLE NS_IMETHOD RemoveFilter(nsIMsgFilter *filter); \
  NS_SCRIPTABLE NS_IMETHOD RemoveFilterAt(PRUint32 filterIndex); \
  NS_SCRIPTABLE NS_IMETHOD MoveFilterAt(PRUint32 filterIndex, nsMsgFilterMotionValue motion); \
  NS_SCRIPTABLE NS_IMETHOD MoveFilter(nsIMsgFilter *filter, nsMsgFilterMotionValue motion); \
  NS_SCRIPTABLE NS_IMETHOD InsertFilterAt(PRUint32 filterIndex, nsIMsgFilter *filter); \
  NS_SCRIPTABLE NS_IMETHOD GetLoggingEnabled(bool *aLoggingEnabled); \
  NS_SCRIPTABLE NS_IMETHOD SetLoggingEnabled(bool aLoggingEnabled); \
  NS_SCRIPTABLE NS_IMETHOD CreateFilter(const nsAString & name, nsIMsgFilter * *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD SaveToFile(nsIOutputStream *stream); \
  NS_SCRIPTABLE NS_IMETHOD ParseCondition(nsIMsgFilter *aFilter, const char * condition); \
  NS_SCRIPTABLE NS_IMETHOD GetDefaultFile(nsILocalFile * *aDefaultFile); \
  NS_SCRIPTABLE NS_IMETHOD SetDefaultFile(nsILocalFile *aDefaultFile); \
  NS_SCRIPTABLE NS_IMETHOD SaveToDefaultFile(void); \
  NS_IMETHOD ApplyFiltersToHdr(nsMsgFilterTypeType filterType, nsIMsgDBHdr *msgHdr, nsIMsgFolder *folder, nsIMsgDatabase *db, const char * headers, PRUint32 headerSize, nsIMsgFilterHitNotify *listener, nsIMsgWindow *msgWindow); \
  NS_SCRIPTABLE NS_IMETHOD WriteIntAttr(nsMsgFilterFileAttribValue attrib, PRInt32 value, nsIOutputStream *stream); \
  NS_SCRIPTABLE NS_IMETHOD WriteStrAttr(nsMsgFilterFileAttribValue attrib, const char * value, nsIOutputStream *stream); \
  NS_SCRIPTABLE NS_IMETHOD WriteWstrAttr(nsMsgFilterFileAttribValue attrib, const PRUnichar * value, nsIOutputStream *stream); \
  NS_SCRIPTABLE NS_IMETHOD WriteBoolAttr(nsMsgFilterFileAttribValue attrib, bool value, nsIOutputStream *stream); \
  NS_SCRIPTABLE NS_IMETHOD MatchOrChangeFilterTarget(const nsACString & oldUri, const nsACString & newUri, bool caseInsensitive, bool *_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD GetLogStream(nsIOutputStream * *aLogStream); \
  NS_SCRIPTABLE NS_IMETHOD SetLogStream(nsIOutputStream *aLogStream); \
  NS_SCRIPTABLE NS_IMETHOD GetLogURL(nsACString & aLogURL); \
  NS_SCRIPTABLE NS_IMETHOD ClearLog(void); \
  NS_SCRIPTABLE NS_IMETHOD EnsureLogFile(void); \
  NS_SCRIPTABLE 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_SCRIPTABLE NS_IMETHOD GetFolder(nsIMsgFolder * *aFolder) { return _to GetFolder(aFolder); } \
  NS_SCRIPTABLE NS_IMETHOD SetFolder(nsIMsgFolder *aFolder) { return _to SetFolder(aFolder); } \
  NS_SCRIPTABLE NS_IMETHOD GetVersion(PRInt16 *aVersion) { return _to GetVersion(aVersion); } \
  NS_SCRIPTABLE NS_IMETHOD GetArbitraryHeaders(nsACString & aArbitraryHeaders) { return _to GetArbitraryHeaders(aArbitraryHeaders); } \
  NS_SCRIPTABLE NS_IMETHOD GetShouldDownloadAllHeaders(bool *aShouldDownloadAllHeaders) { return _to GetShouldDownloadAllHeaders(aShouldDownloadAllHeaders); } \
  NS_SCRIPTABLE NS_IMETHOD GetFilterCount(PRUint32 *aFilterCount) { return _to GetFilterCount(aFilterCount); } \
  NS_SCRIPTABLE NS_IMETHOD GetFilterAt(PRUint32 filterIndex, nsIMsgFilter * *_retval NS_OUTPARAM) { return _to GetFilterAt(filterIndex, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetFilterNamed(const nsAString & filterName, nsIMsgFilter * *_retval NS_OUTPARAM) { return _to GetFilterNamed(filterName, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD SetFilterAt(PRUint32 filterIndex, nsIMsgFilter *filter) { return _to SetFilterAt(filterIndex, filter); } \
  NS_SCRIPTABLE NS_IMETHOD RemoveFilter(nsIMsgFilter *filter) { return _to RemoveFilter(filter); } \
  NS_SCRIPTABLE NS_IMETHOD RemoveFilterAt(PRUint32 filterIndex) { return _to RemoveFilterAt(filterIndex); } \
  NS_SCRIPTABLE NS_IMETHOD MoveFilterAt(PRUint32 filterIndex, nsMsgFilterMotionValue motion) { return _to MoveFilterAt(filterIndex, motion); } \
  NS_SCRIPTABLE NS_IMETHOD MoveFilter(nsIMsgFilter *filter, nsMsgFilterMotionValue motion) { return _to MoveFilter(filter, motion); } \
  NS_SCRIPTABLE NS_IMETHOD InsertFilterAt(PRUint32 filterIndex, nsIMsgFilter *filter) { return _to InsertFilterAt(filterIndex, filter); } \
  NS_SCRIPTABLE NS_IMETHOD GetLoggingEnabled(bool *aLoggingEnabled) { return _to GetLoggingEnabled(aLoggingEnabled); } \
  NS_SCRIPTABLE NS_IMETHOD SetLoggingEnabled(bool aLoggingEnabled) { return _to SetLoggingEnabled(aLoggingEnabled); } \
  NS_SCRIPTABLE NS_IMETHOD CreateFilter(const nsAString & name, nsIMsgFilter * *_retval NS_OUTPARAM) { return _to CreateFilter(name, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD SaveToFile(nsIOutputStream *stream) { return _to SaveToFile(stream); } \
  NS_SCRIPTABLE NS_IMETHOD ParseCondition(nsIMsgFilter *aFilter, const char * condition) { return _to ParseCondition(aFilter, condition); } \
  NS_SCRIPTABLE NS_IMETHOD GetDefaultFile(nsILocalFile * *aDefaultFile) { return _to GetDefaultFile(aDefaultFile); } \
  NS_SCRIPTABLE NS_IMETHOD SetDefaultFile(nsILocalFile *aDefaultFile) { return _to SetDefaultFile(aDefaultFile); } \
  NS_SCRIPTABLE 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) { return _to ApplyFiltersToHdr(filterType, msgHdr, folder, db, headers, headerSize, listener, msgWindow); } \
  NS_SCRIPTABLE NS_IMETHOD WriteIntAttr(nsMsgFilterFileAttribValue attrib, PRInt32 value, nsIOutputStream *stream) { return _to WriteIntAttr(attrib, value, stream); } \
  NS_SCRIPTABLE NS_IMETHOD WriteStrAttr(nsMsgFilterFileAttribValue attrib, const char * value, nsIOutputStream *stream) { return _to WriteStrAttr(attrib, value, stream); } \
  NS_SCRIPTABLE NS_IMETHOD WriteWstrAttr(nsMsgFilterFileAttribValue attrib, const PRUnichar * value, nsIOutputStream *stream) { return _to WriteWstrAttr(attrib, value, stream); } \
  NS_SCRIPTABLE NS_IMETHOD WriteBoolAttr(nsMsgFilterFileAttribValue attrib, bool value, nsIOutputStream *stream) { return _to WriteBoolAttr(attrib, value, stream); } \
  NS_SCRIPTABLE NS_IMETHOD MatchOrChangeFilterTarget(const nsACString & oldUri, const nsACString & newUri, bool caseInsensitive, bool *_retval NS_OUTPARAM) { return _to MatchOrChangeFilterTarget(oldUri, newUri, caseInsensitive, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetLogStream(nsIOutputStream * *aLogStream) { return _to GetLogStream(aLogStream); } \
  NS_SCRIPTABLE NS_IMETHOD SetLogStream(nsIOutputStream *aLogStream) { return _to SetLogStream(aLogStream); } \
  NS_SCRIPTABLE NS_IMETHOD GetLogURL(nsACString & aLogURL) { return _to GetLogURL(aLogURL); } \
  NS_SCRIPTABLE NS_IMETHOD ClearLog(void) { return _to ClearLog(); } \
  NS_SCRIPTABLE NS_IMETHOD EnsureLogFile(void) { return _to EnsureLogFile(); } \
  NS_SCRIPTABLE 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_SCRIPTABLE NS_IMETHOD GetFolder(nsIMsgFolder * *aFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFolder(aFolder); } \
  NS_SCRIPTABLE NS_IMETHOD SetFolder(nsIMsgFolder *aFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFolder(aFolder); } \
  NS_SCRIPTABLE NS_IMETHOD GetVersion(PRInt16 *aVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVersion(aVersion); } \
  NS_SCRIPTABLE NS_IMETHOD GetArbitraryHeaders(nsACString & aArbitraryHeaders) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetArbitraryHeaders(aArbitraryHeaders); } \
  NS_SCRIPTABLE NS_IMETHOD GetShouldDownloadAllHeaders(bool *aShouldDownloadAllHeaders) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetShouldDownloadAllHeaders(aShouldDownloadAllHeaders); } \
  NS_SCRIPTABLE NS_IMETHOD GetFilterCount(PRUint32 *aFilterCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilterCount(aFilterCount); } \
  NS_SCRIPTABLE NS_IMETHOD GetFilterAt(PRUint32 filterIndex, nsIMsgFilter * *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilterAt(filterIndex, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetFilterNamed(const nsAString & filterName, nsIMsgFilter * *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilterNamed(filterName, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD SetFilterAt(PRUint32 filterIndex, nsIMsgFilter *filter) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFilterAt(filterIndex, filter); } \
  NS_SCRIPTABLE NS_IMETHOD RemoveFilter(nsIMsgFilter *filter) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveFilter(filter); } \
  NS_SCRIPTABLE NS_IMETHOD RemoveFilterAt(PRUint32 filterIndex) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveFilterAt(filterIndex); } \
  NS_SCRIPTABLE NS_IMETHOD MoveFilterAt(PRUint32 filterIndex, nsMsgFilterMotionValue motion) { return !_to ? NS_ERROR_NULL_POINTER : _to->MoveFilterAt(filterIndex, motion); } \
  NS_SCRIPTABLE NS_IMETHOD MoveFilter(nsIMsgFilter *filter, nsMsgFilterMotionValue motion) { return !_to ? NS_ERROR_NULL_POINTER : _to->MoveFilter(filter, motion); } \
  NS_SCRIPTABLE NS_IMETHOD InsertFilterAt(PRUint32 filterIndex, nsIMsgFilter *filter) { return !_to ? NS_ERROR_NULL_POINTER : _to->InsertFilterAt(filterIndex, filter); } \
  NS_SCRIPTABLE NS_IMETHOD GetLoggingEnabled(bool *aLoggingEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLoggingEnabled(aLoggingEnabled); } \
  NS_SCRIPTABLE NS_IMETHOD SetLoggingEnabled(bool aLoggingEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLoggingEnabled(aLoggingEnabled); } \
  NS_SCRIPTABLE NS_IMETHOD CreateFilter(const nsAString & name, nsIMsgFilter * *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateFilter(name, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD SaveToFile(nsIOutputStream *stream) { return !_to ? NS_ERROR_NULL_POINTER : _to->SaveToFile(stream); } \
  NS_SCRIPTABLE NS_IMETHOD ParseCondition(nsIMsgFilter *aFilter, const char * condition) { return !_to ? NS_ERROR_NULL_POINTER : _to->ParseCondition(aFilter, condition); } \
  NS_SCRIPTABLE NS_IMETHOD GetDefaultFile(nsILocalFile * *aDefaultFile) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDefaultFile(aDefaultFile); } \
  NS_SCRIPTABLE NS_IMETHOD SetDefaultFile(nsILocalFile *aDefaultFile) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDefaultFile(aDefaultFile); } \
  NS_SCRIPTABLE 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) { return !_to ? NS_ERROR_NULL_POINTER : _to->ApplyFiltersToHdr(filterType, msgHdr, folder, db, headers, headerSize, listener, msgWindow); } \
  NS_SCRIPTABLE NS_IMETHOD WriteIntAttr(nsMsgFilterFileAttribValue attrib, PRInt32 value, nsIOutputStream *stream) { return !_to ? NS_ERROR_NULL_POINTER : _to->WriteIntAttr(attrib, value, stream); } \
  NS_SCRIPTABLE NS_IMETHOD WriteStrAttr(nsMsgFilterFileAttribValue attrib, const char * value, nsIOutputStream *stream) { return !_to ? NS_ERROR_NULL_POINTER : _to->WriteStrAttr(attrib, value, stream); } \
  NS_SCRIPTABLE NS_IMETHOD WriteWstrAttr(nsMsgFilterFileAttribValue attrib, const PRUnichar * value, nsIOutputStream *stream) { return !_to ? NS_ERROR_NULL_POINTER : _to->WriteWstrAttr(attrib, value, stream); } \
  NS_SCRIPTABLE NS_IMETHOD WriteBoolAttr(nsMsgFilterFileAttribValue attrib, bool value, nsIOutputStream *stream) { return !_to ? NS_ERROR_NULL_POINTER : _to->WriteBoolAttr(attrib, value, stream); } \
  NS_SCRIPTABLE NS_IMETHOD MatchOrChangeFilterTarget(const nsACString & oldUri, const nsACString & newUri, bool caseInsensitive, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->MatchOrChangeFilterTarget(oldUri, newUri, caseInsensitive, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD GetLogStream(nsIOutputStream * *aLogStream) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogStream(aLogStream); } \
  NS_SCRIPTABLE NS_IMETHOD SetLogStream(nsIOutputStream *aLogStream) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLogStream(aLogStream); } \
  NS_SCRIPTABLE NS_IMETHOD GetLogURL(nsACString & aLogURL) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLogURL(aLogURL); } \
  NS_SCRIPTABLE NS_IMETHOD ClearLog(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearLog(); } \
  NS_SCRIPTABLE NS_IMETHOD EnsureLogFile(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnsureLogFile(); } \
  NS_SCRIPTABLE 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 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(PRUint32 *aFilterCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* nsIMsgFilter getFilterNamed (in AString filterName); */
NS_IMETHODIMP nsMsgFilterList::GetFilterNamed(const nsAString & filterName, nsIMsgFilter * *_retval NS_OUTPARAM)
{
    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(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 NS_OUTPARAM)
{
    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 nsILocalFile defaultFile; */
NS_IMETHODIMP nsMsgFilterList::GetDefaultFile(nsILocalFile * *aDefaultFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFilterList::SetDefaultFile(nsILocalFile *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, PRUint32 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, PRInt32 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 PRUnichar * 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 NS_OUTPARAM)
{
    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 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 NS_SCRIPTABLE 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 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__ */
