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

#ifndef __gen_nsIMsgFilter_h__
#define __gen_nsIMsgFilter_h__


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

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

#ifndef __gen_nsIMsgSearchScopeTerm_h__
#include "nsIMsgSearchScopeTerm.h"
#endif

#ifndef __gen_nsIMsgSearchValue_h__
#include "nsIMsgSearchValue.h"
#endif

#ifndef __gen_nsIMsgSearchTerm_h__
#include "nsIMsgSearchTerm.h"
#endif

#ifndef __gen_nsISupportsArray_h__
#include "nsISupportsArray.h"
#endif

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


/* starting interface:    nsIMsgRuleAction */
#define NS_IMSGRULEACTION_IID_STR "09aa663b-ab04-457d-9557-319e4cc7884e"

#define NS_IMSGRULEACTION_IID \
  {0x09aa663b, 0xab04, 0x457d, \
    { 0x95, 0x57, 0x31, 0x9e, 0x4c, 0xc7, 0x88, 0x4e }}

class NS_NO_VTABLE nsIMsgRuleAction : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMSGRULEACTION_IID)

  /* attribute nsMsgRuleActionType type; */
  NS_IMETHOD GetType(nsMsgRuleActionType *aType) = 0;
  NS_IMETHOD SetType(nsMsgRuleActionType aType) = 0;

  /* attribute nsMsgPriorityValue priority; */
  NS_IMETHOD GetPriority(nsMsgPriorityValue *aPriority) = 0;
  NS_IMETHOD SetPriority(nsMsgPriorityValue aPriority) = 0;

  /* attribute string targetFolderUri; */
  NS_IMETHOD GetTargetFolderUri(char * *aTargetFolderUri) = 0;
  NS_IMETHOD SetTargetFolderUri(const char * aTargetFolderUri) = 0;

  /* attribute nsMsgLabelValue label; */
  NS_IMETHOD GetLabel(nsMsgLabelValue *aLabel) = 0;
  NS_IMETHOD SetLabel(nsMsgLabelValue aLabel) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGRULEACTION \
  NS_IMETHOD GetType(nsMsgRuleActionType *aType); \
  NS_IMETHOD SetType(nsMsgRuleActionType aType); \
  NS_IMETHOD GetPriority(nsMsgPriorityValue *aPriority); \
  NS_IMETHOD SetPriority(nsMsgPriorityValue aPriority); \
  NS_IMETHOD GetTargetFolderUri(char * *aTargetFolderUri); \
  NS_IMETHOD SetTargetFolderUri(const char * aTargetFolderUri); \
  NS_IMETHOD GetLabel(nsMsgLabelValue *aLabel); \
  NS_IMETHOD SetLabel(nsMsgLabelValue aLabel); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGRULEACTION(_to) \
  NS_IMETHOD GetType(nsMsgRuleActionType *aType) { return _to GetType(aType); } \
  NS_IMETHOD SetType(nsMsgRuleActionType aType) { return _to SetType(aType); } \
  NS_IMETHOD GetPriority(nsMsgPriorityValue *aPriority) { return _to GetPriority(aPriority); } \
  NS_IMETHOD SetPriority(nsMsgPriorityValue aPriority) { return _to SetPriority(aPriority); } \
  NS_IMETHOD GetTargetFolderUri(char * *aTargetFolderUri) { return _to GetTargetFolderUri(aTargetFolderUri); } \
  NS_IMETHOD SetTargetFolderUri(const char * aTargetFolderUri) { return _to SetTargetFolderUri(aTargetFolderUri); } \
  NS_IMETHOD GetLabel(nsMsgLabelValue *aLabel) { return _to GetLabel(aLabel); } \
  NS_IMETHOD SetLabel(nsMsgLabelValue aLabel) { return _to SetLabel(aLabel); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGRULEACTION(_to) \
  NS_IMETHOD GetType(nsMsgRuleActionType *aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetType(aType); } \
  NS_IMETHOD SetType(nsMsgRuleActionType aType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetType(aType); } \
  NS_IMETHOD GetPriority(nsMsgPriorityValue *aPriority) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPriority(aPriority); } \
  NS_IMETHOD SetPriority(nsMsgPriorityValue aPriority) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPriority(aPriority); } \
  NS_IMETHOD GetTargetFolderUri(char * *aTargetFolderUri) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTargetFolderUri(aTargetFolderUri); } \
  NS_IMETHOD SetTargetFolderUri(const char * aTargetFolderUri) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTargetFolderUri(aTargetFolderUri); } \
  NS_IMETHOD GetLabel(nsMsgLabelValue *aLabel) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLabel(aLabel); } \
  NS_IMETHOD SetLabel(nsMsgLabelValue aLabel) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLabel(aLabel); } 

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

/* Header file */
class nsMsgRuleAction : public nsIMsgRuleAction
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGRULEACTION

  nsMsgRuleAction();
  virtual ~nsMsgRuleAction();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgRuleAction, nsIMsgRuleAction)

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

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

/* attribute nsMsgRuleActionType type; */
NS_IMETHODIMP nsMsgRuleAction::GetType(nsMsgRuleActionType *aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgRuleAction::SetType(nsMsgRuleActionType aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsMsgPriorityValue priority; */
NS_IMETHODIMP nsMsgRuleAction::GetPriority(nsMsgPriorityValue *aPriority)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgRuleAction::SetPriority(nsMsgPriorityValue aPriority)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string targetFolderUri; */
NS_IMETHODIMP nsMsgRuleAction::GetTargetFolderUri(char * *aTargetFolderUri)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgRuleAction::SetTargetFolderUri(const char * aTargetFolderUri)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsMsgLabelValue label; */
NS_IMETHODIMP nsMsgRuleAction::GetLabel(nsMsgLabelValue *aLabel)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgRuleAction::SetLabel(nsMsgLabelValue aLabel)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIMsgFilter */
#define NS_IMSGFILTER_IID_STR "605db0f8-04a1-11d3-a50a-0060b0fc04b7"

#define NS_IMSGFILTER_IID \
  {0x605db0f8, 0x04a1, 0x11d3, \
    { 0xa5, 0x0a, 0x00, 0x60, 0xb0, 0xfc, 0x04, 0xb7 }}

class NS_NO_VTABLE nsIMsgFilter : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMSGFILTER_IID)

  /* attribute nsMsgFilterTypeType filterType; */
  NS_IMETHOD GetFilterType(nsMsgFilterTypeType *aFilterType) = 0;
  NS_IMETHOD SetFilterType(nsMsgFilterTypeType aFilterType) = 0;

  /**
     * some filters are "temporary".  For example, the filters we create when the user
     * filters return receipts to the Sent folder.
     * we don't show temporary filters in the UI
     * and we don't write them to disk.
     */
  /* attribute boolean temporary; */
  NS_IMETHOD GetTemporary(PRBool *aTemporary) = 0;
  NS_IMETHOD SetTemporary(PRBool aTemporary) = 0;

  /* attribute boolean enabled; */
  NS_IMETHOD GetEnabled(PRBool *aEnabled) = 0;
  NS_IMETHOD SetEnabled(PRBool aEnabled) = 0;

  /* attribute wstring filterName; */
  NS_IMETHOD GetFilterName(PRUnichar * *aFilterName) = 0;
  NS_IMETHOD SetFilterName(const PRUnichar * aFilterName) = 0;

  /* attribute string filterDesc; */
  NS_IMETHOD GetFilterDesc(char * *aFilterDesc) = 0;
  NS_IMETHOD SetFilterDesc(const char * aFilterDesc) = 0;

  /* attribute string unparsedBuffer; */
  NS_IMETHOD GetUnparsedBuffer(char * *aUnparsedBuffer) = 0;
  NS_IMETHOD SetUnparsedBuffer(const char * aUnparsedBuffer) = 0;

  /* attribute boolean unparseable; */
  NS_IMETHOD GetUnparseable(PRBool *aUnparseable) = 0;
  NS_IMETHOD SetUnparseable(PRBool aUnparseable) = 0;

  /* readonly attribute nsIMsgFilterList filterList; */
  NS_IMETHOD GetFilterList(nsIMsgFilterList * *aFilterList) = 0;

  /* void AddTerm (in nsMsgSearchAttribValue attrib, in nsMsgSearchOpValue op, in nsIMsgSearchValue value, in boolean BooleanAND, in string arbitraryHeader); */
  NS_IMETHOD AddTerm(nsMsgSearchAttribValue attrib, nsMsgSearchOpValue op, nsIMsgSearchValue *value, PRBool BooleanAND, const char *arbitraryHeader) = 0;

  /* void GetTerm (in long termIndex, out nsMsgSearchAttribValue attrib, out nsMsgSearchOpValue op, out nsIMsgSearchValue value, out boolean BooleanAND, out string arbitraryHeader); */
  NS_IMETHOD GetTerm(PRInt32 termIndex, nsMsgSearchAttribValue *attrib, nsMsgSearchOpValue *op, nsIMsgSearchValue **value, PRBool *BooleanAND, char **arbitraryHeader) = 0;

  /* void appendTerm (in nsIMsgSearchTerm term); */
  NS_IMETHOD AppendTerm(nsIMsgSearchTerm *term) = 0;

  /* nsIMsgSearchTerm createTerm (); */
  NS_IMETHOD CreateTerm(nsIMsgSearchTerm **_retval) = 0;

  /* attribute nsISupportsArray searchTerms; */
  NS_IMETHOD GetSearchTerms(nsISupportsArray * *aSearchTerms) = 0;
  NS_IMETHOD SetSearchTerms(nsISupportsArray * aSearchTerms) = 0;

  /* attribute nsIMsgSearchScopeTerm scope; */
  NS_IMETHOD GetScope(nsIMsgSearchScopeTerm * *aScope) = 0;
  NS_IMETHOD SetScope(nsIMsgSearchScopeTerm * aScope) = 0;

  /* [noscript] void MatchHdr (in nsIMsgDBHdr msgHdr, in nsIMsgFolder folder, in nsIMsgDatabase db, in string headers, in unsigned long headerSize, out boolean result); */
  NS_IMETHOD MatchHdr(nsIMsgDBHdr *msgHdr, nsIMsgFolder *folder, nsIMsgDatabase *db, const char *headers, PRUint32 headerSize, PRBool *result) = 0;

  /* void logRuleHit (in nsIMsgRuleAction aFilterAction, in nsIMsgDBHdr aHeader); */
  NS_IMETHOD LogRuleHit(nsIMsgRuleAction *aFilterAction, nsIMsgDBHdr *aHeader) = 0;

  /* nsIMsgRuleAction createAction (); */
  NS_IMETHOD CreateAction(nsIMsgRuleAction **_retval) = 0;

  /* nsIMsgRuleAction getActionAt (in long aIndex); */
  NS_IMETHOD GetActionAt(PRInt32 aIndex, nsIMsgRuleAction **_retval) = 0;

  /* void appendAction (in nsIMsgRuleAction action); */
  NS_IMETHOD AppendAction(nsIMsgRuleAction *action) = 0;

  /* void clearActionList (); */
  NS_IMETHOD ClearActionList(void) = 0;

  /* void getSortedActionList (in nsISupportsArray actionList); */
  NS_IMETHOD GetSortedActionList(nsISupportsArray *actionList) = 0;

  /* readonly attribute nsISupportsArray actionList; */
  NS_IMETHOD GetActionList(nsISupportsArray * *aActionList) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGFILTER \
  NS_IMETHOD GetFilterType(nsMsgFilterTypeType *aFilterType); \
  NS_IMETHOD SetFilterType(nsMsgFilterTypeType aFilterType); \
  NS_IMETHOD GetTemporary(PRBool *aTemporary); \
  NS_IMETHOD SetTemporary(PRBool aTemporary); \
  NS_IMETHOD GetEnabled(PRBool *aEnabled); \
  NS_IMETHOD SetEnabled(PRBool aEnabled); \
  NS_IMETHOD GetFilterName(PRUnichar * *aFilterName); \
  NS_IMETHOD SetFilterName(const PRUnichar * aFilterName); \
  NS_IMETHOD GetFilterDesc(char * *aFilterDesc); \
  NS_IMETHOD SetFilterDesc(const char * aFilterDesc); \
  NS_IMETHOD GetUnparsedBuffer(char * *aUnparsedBuffer); \
  NS_IMETHOD SetUnparsedBuffer(const char * aUnparsedBuffer); \
  NS_IMETHOD GetUnparseable(PRBool *aUnparseable); \
  NS_IMETHOD SetUnparseable(PRBool aUnparseable); \
  NS_IMETHOD GetFilterList(nsIMsgFilterList * *aFilterList); \
  NS_IMETHOD AddTerm(nsMsgSearchAttribValue attrib, nsMsgSearchOpValue op, nsIMsgSearchValue *value, PRBool BooleanAND, const char *arbitraryHeader); \
  NS_IMETHOD GetTerm(PRInt32 termIndex, nsMsgSearchAttribValue *attrib, nsMsgSearchOpValue *op, nsIMsgSearchValue **value, PRBool *BooleanAND, char **arbitraryHeader); \
  NS_IMETHOD AppendTerm(nsIMsgSearchTerm *term); \
  NS_IMETHOD CreateTerm(nsIMsgSearchTerm **_retval); \
  NS_IMETHOD GetSearchTerms(nsISupportsArray * *aSearchTerms); \
  NS_IMETHOD SetSearchTerms(nsISupportsArray * aSearchTerms); \
  NS_IMETHOD GetScope(nsIMsgSearchScopeTerm * *aScope); \
  NS_IMETHOD SetScope(nsIMsgSearchScopeTerm * aScope); \
  NS_IMETHOD MatchHdr(nsIMsgDBHdr *msgHdr, nsIMsgFolder *folder, nsIMsgDatabase *db, const char *headers, PRUint32 headerSize, PRBool *result); \
  NS_IMETHOD LogRuleHit(nsIMsgRuleAction *aFilterAction, nsIMsgDBHdr *aHeader); \
  NS_IMETHOD CreateAction(nsIMsgRuleAction **_retval); \
  NS_IMETHOD GetActionAt(PRInt32 aIndex, nsIMsgRuleAction **_retval); \
  NS_IMETHOD AppendAction(nsIMsgRuleAction *action); \
  NS_IMETHOD ClearActionList(void); \
  NS_IMETHOD GetSortedActionList(nsISupportsArray *actionList); \
  NS_IMETHOD GetActionList(nsISupportsArray * *aActionList); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGFILTER(_to) \
  NS_IMETHOD GetFilterType(nsMsgFilterTypeType *aFilterType) { return _to GetFilterType(aFilterType); } \
  NS_IMETHOD SetFilterType(nsMsgFilterTypeType aFilterType) { return _to SetFilterType(aFilterType); } \
  NS_IMETHOD GetTemporary(PRBool *aTemporary) { return _to GetTemporary(aTemporary); } \
  NS_IMETHOD SetTemporary(PRBool aTemporary) { return _to SetTemporary(aTemporary); } \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return _to GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return _to SetEnabled(aEnabled); } \
  NS_IMETHOD GetFilterName(PRUnichar * *aFilterName) { return _to GetFilterName(aFilterName); } \
  NS_IMETHOD SetFilterName(const PRUnichar * aFilterName) { return _to SetFilterName(aFilterName); } \
  NS_IMETHOD GetFilterDesc(char * *aFilterDesc) { return _to GetFilterDesc(aFilterDesc); } \
  NS_IMETHOD SetFilterDesc(const char * aFilterDesc) { return _to SetFilterDesc(aFilterDesc); } \
  NS_IMETHOD GetUnparsedBuffer(char * *aUnparsedBuffer) { return _to GetUnparsedBuffer(aUnparsedBuffer); } \
  NS_IMETHOD SetUnparsedBuffer(const char * aUnparsedBuffer) { return _to SetUnparsedBuffer(aUnparsedBuffer); } \
  NS_IMETHOD GetUnparseable(PRBool *aUnparseable) { return _to GetUnparseable(aUnparseable); } \
  NS_IMETHOD SetUnparseable(PRBool aUnparseable) { return _to SetUnparseable(aUnparseable); } \
  NS_IMETHOD GetFilterList(nsIMsgFilterList * *aFilterList) { return _to GetFilterList(aFilterList); } \
  NS_IMETHOD AddTerm(nsMsgSearchAttribValue attrib, nsMsgSearchOpValue op, nsIMsgSearchValue *value, PRBool BooleanAND, const char *arbitraryHeader) { return _to AddTerm(attrib, op, value, BooleanAND, arbitraryHeader); } \
  NS_IMETHOD GetTerm(PRInt32 termIndex, nsMsgSearchAttribValue *attrib, nsMsgSearchOpValue *op, nsIMsgSearchValue **value, PRBool *BooleanAND, char **arbitraryHeader) { return _to GetTerm(termIndex, attrib, op, value, BooleanAND, arbitraryHeader); } \
  NS_IMETHOD AppendTerm(nsIMsgSearchTerm *term) { return _to AppendTerm(term); } \
  NS_IMETHOD CreateTerm(nsIMsgSearchTerm **_retval) { return _to CreateTerm(_retval); } \
  NS_IMETHOD GetSearchTerms(nsISupportsArray * *aSearchTerms) { return _to GetSearchTerms(aSearchTerms); } \
  NS_IMETHOD SetSearchTerms(nsISupportsArray * aSearchTerms) { return _to SetSearchTerms(aSearchTerms); } \
  NS_IMETHOD GetScope(nsIMsgSearchScopeTerm * *aScope) { return _to GetScope(aScope); } \
  NS_IMETHOD SetScope(nsIMsgSearchScopeTerm * aScope) { return _to SetScope(aScope); } \
  NS_IMETHOD MatchHdr(nsIMsgDBHdr *msgHdr, nsIMsgFolder *folder, nsIMsgDatabase *db, const char *headers, PRUint32 headerSize, PRBool *result) { return _to MatchHdr(msgHdr, folder, db, headers, headerSize, result); } \
  NS_IMETHOD LogRuleHit(nsIMsgRuleAction *aFilterAction, nsIMsgDBHdr *aHeader) { return _to LogRuleHit(aFilterAction, aHeader); } \
  NS_IMETHOD CreateAction(nsIMsgRuleAction **_retval) { return _to CreateAction(_retval); } \
  NS_IMETHOD GetActionAt(PRInt32 aIndex, nsIMsgRuleAction **_retval) { return _to GetActionAt(aIndex, _retval); } \
  NS_IMETHOD AppendAction(nsIMsgRuleAction *action) { return _to AppendAction(action); } \
  NS_IMETHOD ClearActionList(void) { return _to ClearActionList(); } \
  NS_IMETHOD GetSortedActionList(nsISupportsArray *actionList) { return _to GetSortedActionList(actionList); } \
  NS_IMETHOD GetActionList(nsISupportsArray * *aActionList) { return _to GetActionList(aActionList); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGFILTER(_to) \
  NS_IMETHOD GetFilterType(nsMsgFilterTypeType *aFilterType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilterType(aFilterType); } \
  NS_IMETHOD SetFilterType(nsMsgFilterTypeType aFilterType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFilterType(aFilterType); } \
  NS_IMETHOD GetTemporary(PRBool *aTemporary) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTemporary(aTemporary); } \
  NS_IMETHOD SetTemporary(PRBool aTemporary) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTemporary(aTemporary); } \
  NS_IMETHOD GetEnabled(PRBool *aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnabled(aEnabled); } \
  NS_IMETHOD SetEnabled(PRBool aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEnabled(aEnabled); } \
  NS_IMETHOD GetFilterName(PRUnichar * *aFilterName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilterName(aFilterName); } \
  NS_IMETHOD SetFilterName(const PRUnichar * aFilterName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFilterName(aFilterName); } \
  NS_IMETHOD GetFilterDesc(char * *aFilterDesc) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilterDesc(aFilterDesc); } \
  NS_IMETHOD SetFilterDesc(const char * aFilterDesc) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFilterDesc(aFilterDesc); } \
  NS_IMETHOD GetUnparsedBuffer(char * *aUnparsedBuffer) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUnparsedBuffer(aUnparsedBuffer); } \
  NS_IMETHOD SetUnparsedBuffer(const char * aUnparsedBuffer) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetUnparsedBuffer(aUnparsedBuffer); } \
  NS_IMETHOD GetUnparseable(PRBool *aUnparseable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUnparseable(aUnparseable); } \
  NS_IMETHOD SetUnparseable(PRBool aUnparseable) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetUnparseable(aUnparseable); } \
  NS_IMETHOD GetFilterList(nsIMsgFilterList * *aFilterList) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilterList(aFilterList); } \
  NS_IMETHOD AddTerm(nsMsgSearchAttribValue attrib, nsMsgSearchOpValue op, nsIMsgSearchValue *value, PRBool BooleanAND, const char *arbitraryHeader) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddTerm(attrib, op, value, BooleanAND, arbitraryHeader); } \
  NS_IMETHOD GetTerm(PRInt32 termIndex, nsMsgSearchAttribValue *attrib, nsMsgSearchOpValue *op, nsIMsgSearchValue **value, PRBool *BooleanAND, char **arbitraryHeader) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTerm(termIndex, attrib, op, value, BooleanAND, arbitraryHeader); } \
  NS_IMETHOD AppendTerm(nsIMsgSearchTerm *term) { return !_to ? NS_ERROR_NULL_POINTER : _to->AppendTerm(term); } \
  NS_IMETHOD CreateTerm(nsIMsgSearchTerm **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateTerm(_retval); } \
  NS_IMETHOD GetSearchTerms(nsISupportsArray * *aSearchTerms) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSearchTerms(aSearchTerms); } \
  NS_IMETHOD SetSearchTerms(nsISupportsArray * aSearchTerms) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSearchTerms(aSearchTerms); } \
  NS_IMETHOD GetScope(nsIMsgSearchScopeTerm * *aScope) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetScope(aScope); } \
  NS_IMETHOD SetScope(nsIMsgSearchScopeTerm * aScope) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetScope(aScope); } \
  NS_IMETHOD MatchHdr(nsIMsgDBHdr *msgHdr, nsIMsgFolder *folder, nsIMsgDatabase *db, const char *headers, PRUint32 headerSize, PRBool *result) { return !_to ? NS_ERROR_NULL_POINTER : _to->MatchHdr(msgHdr, folder, db, headers, headerSize, result); } \
  NS_IMETHOD LogRuleHit(nsIMsgRuleAction *aFilterAction, nsIMsgDBHdr *aHeader) { return !_to ? NS_ERROR_NULL_POINTER : _to->LogRuleHit(aFilterAction, aHeader); } \
  NS_IMETHOD CreateAction(nsIMsgRuleAction **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateAction(_retval); } \
  NS_IMETHOD GetActionAt(PRInt32 aIndex, nsIMsgRuleAction **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetActionAt(aIndex, _retval); } \
  NS_IMETHOD AppendAction(nsIMsgRuleAction *action) { return !_to ? NS_ERROR_NULL_POINTER : _to->AppendAction(action); } \
  NS_IMETHOD ClearActionList(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearActionList(); } \
  NS_IMETHOD GetSortedActionList(nsISupportsArray *actionList) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSortedActionList(actionList); } \
  NS_IMETHOD GetActionList(nsISupportsArray * *aActionList) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetActionList(aActionList); } 

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

/* Header file */
class nsMsgFilter : public nsIMsgFilter
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGFILTER

  nsMsgFilter();
  virtual ~nsMsgFilter();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgFilter, nsIMsgFilter)

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

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

/* attribute nsMsgFilterTypeType filterType; */
NS_IMETHODIMP nsMsgFilter::GetFilterType(nsMsgFilterTypeType *aFilterType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFilter::SetFilterType(nsMsgFilterTypeType aFilterType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean temporary; */
NS_IMETHODIMP nsMsgFilter::GetTemporary(PRBool *aTemporary)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFilter::SetTemporary(PRBool aTemporary)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean enabled; */
NS_IMETHODIMP nsMsgFilter::GetEnabled(PRBool *aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFilter::SetEnabled(PRBool aEnabled)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring filterName; */
NS_IMETHODIMP nsMsgFilter::GetFilterName(PRUnichar * *aFilterName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFilter::SetFilterName(const PRUnichar * aFilterName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string filterDesc; */
NS_IMETHODIMP nsMsgFilter::GetFilterDesc(char * *aFilterDesc)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFilter::SetFilterDesc(const char * aFilterDesc)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string unparsedBuffer; */
NS_IMETHODIMP nsMsgFilter::GetUnparsedBuffer(char * *aUnparsedBuffer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFilter::SetUnparsedBuffer(const char * aUnparsedBuffer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean unparseable; */
NS_IMETHODIMP nsMsgFilter::GetUnparseable(PRBool *aUnparseable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFilter::SetUnparseable(PRBool aUnparseable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMsgFilterList filterList; */
NS_IMETHODIMP nsMsgFilter::GetFilterList(nsIMsgFilterList * *aFilterList)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void AddTerm (in nsMsgSearchAttribValue attrib, in nsMsgSearchOpValue op, in nsIMsgSearchValue value, in boolean BooleanAND, in string arbitraryHeader); */
NS_IMETHODIMP nsMsgFilter::AddTerm(nsMsgSearchAttribValue attrib, nsMsgSearchOpValue op, nsIMsgSearchValue *value, PRBool BooleanAND, const char *arbitraryHeader)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void GetTerm (in long termIndex, out nsMsgSearchAttribValue attrib, out nsMsgSearchOpValue op, out nsIMsgSearchValue value, out boolean BooleanAND, out string arbitraryHeader); */
NS_IMETHODIMP nsMsgFilter::GetTerm(PRInt32 termIndex, nsMsgSearchAttribValue *attrib, nsMsgSearchOpValue *op, nsIMsgSearchValue **value, PRBool *BooleanAND, char **arbitraryHeader)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void appendTerm (in nsIMsgSearchTerm term); */
NS_IMETHODIMP nsMsgFilter::AppendTerm(nsIMsgSearchTerm *term)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgSearchTerm createTerm (); */
NS_IMETHODIMP nsMsgFilter::CreateTerm(nsIMsgSearchTerm **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsISupportsArray searchTerms; */
NS_IMETHODIMP nsMsgFilter::GetSearchTerms(nsISupportsArray * *aSearchTerms)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFilter::SetSearchTerms(nsISupportsArray * aSearchTerms)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIMsgSearchScopeTerm scope; */
NS_IMETHODIMP nsMsgFilter::GetScope(nsIMsgSearchScopeTerm * *aScope)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFilter::SetScope(nsIMsgSearchScopeTerm * aScope)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void MatchHdr (in nsIMsgDBHdr msgHdr, in nsIMsgFolder folder, in nsIMsgDatabase db, in string headers, in unsigned long headerSize, out boolean result); */
NS_IMETHODIMP nsMsgFilter::MatchHdr(nsIMsgDBHdr *msgHdr, nsIMsgFolder *folder, nsIMsgDatabase *db, const char *headers, PRUint32 headerSize, PRBool *result)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void logRuleHit (in nsIMsgRuleAction aFilterAction, in nsIMsgDBHdr aHeader); */
NS_IMETHODIMP nsMsgFilter::LogRuleHit(nsIMsgRuleAction *aFilterAction, nsIMsgDBHdr *aHeader)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgRuleAction createAction (); */
NS_IMETHODIMP nsMsgFilter::CreateAction(nsIMsgRuleAction **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgRuleAction getActionAt (in long aIndex); */
NS_IMETHODIMP nsMsgFilter::GetActionAt(PRInt32 aIndex, nsIMsgRuleAction **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void appendAction (in nsIMsgRuleAction action); */
NS_IMETHODIMP nsMsgFilter::AppendAction(nsIMsgRuleAction *action)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void clearActionList (); */
NS_IMETHODIMP nsMsgFilter::ClearActionList()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getSortedActionList (in nsISupportsArray actionList); */
NS_IMETHODIMP nsMsgFilter::GetSortedActionList(nsISupportsArray *actionList)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsISupportsArray actionList; */
NS_IMETHODIMP nsMsgFilter::GetActionList(nsISupportsArray * *aActionList)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIMsgFilter_h__ */
