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

/* 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:    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)

  /* readonly attribute nsMsgFilterTypeType filterType; */
  NS_IMETHOD GetFilterType(nsMsgFilterTypeType *aFilterType) = 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;

  /* 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;

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

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

  /* attribute nsMsgRuleActionType action; */
  NS_IMETHOD GetAction(nsMsgRuleActionType *aAction) = 0;
  NS_IMETHOD SetAction(nsMsgRuleActionType aAction) = 0;

  /* attribute nsMsgPriorityValue actionPriority; */
  NS_IMETHOD GetActionPriority(nsMsgPriorityValue *aActionPriority) = 0;
  NS_IMETHOD SetActionPriority(nsMsgPriorityValue aActionPriority) = 0;

  /* attribute string actionTargetFolderUri; */
  NS_IMETHOD GetActionTargetFolderUri(char * *aActionTargetFolderUri) = 0;
  NS_IMETHOD SetActionTargetFolderUri(const char * aActionTargetFolderUri) = 0;

  /* attribute nsMsgLabelValue actionLabel; */
  NS_IMETHOD GetActionLabel(nsMsgLabelValue *aActionLabel) = 0;
  NS_IMETHOD SetActionLabel(nsMsgLabelValue aActionLabel) = 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 nsOutputStream stream, in nsIMsgDBHdr header); */
  NS_IMETHOD LogRuleHit(nsOutputStream *stream, nsIMsgDBHdr *header) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGFILTER \
  NS_IMETHOD GetFilterType(nsMsgFilterTypeType *aFilterType); \
  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 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 GetScope(nsIMsgSearchScopeTerm * *aScope); \
  NS_IMETHOD SetScope(nsIMsgSearchScopeTerm * aScope); \
  NS_IMETHOD GetAction(nsMsgRuleActionType *aAction); \
  NS_IMETHOD SetAction(nsMsgRuleActionType aAction); \
  NS_IMETHOD GetActionPriority(nsMsgPriorityValue *aActionPriority); \
  NS_IMETHOD SetActionPriority(nsMsgPriorityValue aActionPriority); \
  NS_IMETHOD GetActionTargetFolderUri(char * *aActionTargetFolderUri); \
  NS_IMETHOD SetActionTargetFolderUri(const char * aActionTargetFolderUri); \
  NS_IMETHOD GetActionLabel(nsMsgLabelValue *aActionLabel); \
  NS_IMETHOD SetActionLabel(nsMsgLabelValue aActionLabel); \
  NS_IMETHOD MatchHdr(nsIMsgDBHdr *msgHdr, nsIMsgFolder *folder, nsIMsgDatabase *db, const char *headers, PRUint32 headerSize, PRBool *result); \
  NS_IMETHOD LogRuleHit(nsOutputStream *stream, nsIMsgDBHdr *header); 

/* 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 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 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 GetScope(nsIMsgSearchScopeTerm * *aScope) { return _to GetScope(aScope); } \
  NS_IMETHOD SetScope(nsIMsgSearchScopeTerm * aScope) { return _to SetScope(aScope); } \
  NS_IMETHOD GetAction(nsMsgRuleActionType *aAction) { return _to GetAction(aAction); } \
  NS_IMETHOD SetAction(nsMsgRuleActionType aAction) { return _to SetAction(aAction); } \
  NS_IMETHOD GetActionPriority(nsMsgPriorityValue *aActionPriority) { return _to GetActionPriority(aActionPriority); } \
  NS_IMETHOD SetActionPriority(nsMsgPriorityValue aActionPriority) { return _to SetActionPriority(aActionPriority); } \
  NS_IMETHOD GetActionTargetFolderUri(char * *aActionTargetFolderUri) { return _to GetActionTargetFolderUri(aActionTargetFolderUri); } \
  NS_IMETHOD SetActionTargetFolderUri(const char * aActionTargetFolderUri) { return _to SetActionTargetFolderUri(aActionTargetFolderUri); } \
  NS_IMETHOD GetActionLabel(nsMsgLabelValue *aActionLabel) { return _to GetActionLabel(aActionLabel); } \
  NS_IMETHOD SetActionLabel(nsMsgLabelValue aActionLabel) { return _to SetActionLabel(aActionLabel); } \
  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(nsOutputStream *stream, nsIMsgDBHdr *header) { return _to LogRuleHit(stream, header); } 

/* 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 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 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 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 GetAction(nsMsgRuleActionType *aAction) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAction(aAction); } \
  NS_IMETHOD SetAction(nsMsgRuleActionType aAction) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAction(aAction); } \
  NS_IMETHOD GetActionPriority(nsMsgPriorityValue *aActionPriority) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetActionPriority(aActionPriority); } \
  NS_IMETHOD SetActionPriority(nsMsgPriorityValue aActionPriority) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetActionPriority(aActionPriority); } \
  NS_IMETHOD GetActionTargetFolderUri(char * *aActionTargetFolderUri) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetActionTargetFolderUri(aActionTargetFolderUri); } \
  NS_IMETHOD SetActionTargetFolderUri(const char * aActionTargetFolderUri) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetActionTargetFolderUri(aActionTargetFolderUri); } \
  NS_IMETHOD GetActionLabel(nsMsgLabelValue *aActionLabel) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetActionLabel(aActionLabel); } \
  NS_IMETHOD SetActionLabel(nsMsgLabelValue aActionLabel) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetActionLabel(aActionLabel); } \
  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(nsOutputStream *stream, nsIMsgDBHdr *header) { return !_to ? NS_ERROR_NULL_POINTER : _to->LogRuleHit(stream, header); } 

#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()
{
  NS_INIT_ISUPPORTS();
  /* member initializers and constructor code */
}

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

/* readonly attribute nsMsgFilterTypeType filterType; */
NS_IMETHODIMP nsMsgFilter::GetFilterType(nsMsgFilterTypeType *aFilterType)
{
    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;
}

/* 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;
}

/* readonly attribute nsISupportsArray searchTerms; */
NS_IMETHODIMP nsMsgFilter::GetSearchTerms(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;
}

/* attribute nsMsgRuleActionType action; */
NS_IMETHODIMP nsMsgFilter::GetAction(nsMsgRuleActionType *aAction)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFilter::SetAction(nsMsgRuleActionType aAction)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsMsgPriorityValue actionPriority; */
NS_IMETHODIMP nsMsgFilter::GetActionPriority(nsMsgPriorityValue *aActionPriority)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFilter::SetActionPriority(nsMsgPriorityValue aActionPriority)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string actionTargetFolderUri; */
NS_IMETHODIMP nsMsgFilter::GetActionTargetFolderUri(char * *aActionTargetFolderUri)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFilter::SetActionTargetFolderUri(const char * aActionTargetFolderUri)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsMsgLabelValue actionLabel; */
NS_IMETHODIMP nsMsgFilter::GetActionLabel(nsMsgLabelValue *aActionLabel)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgFilter::SetActionLabel(nsMsgLabelValue aActionLabel)
{
    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 nsOutputStream stream, in nsIMsgDBHdr header); */
NS_IMETHODIMP nsMsgFilter::LogRuleHit(nsOutputStream *stream, nsIMsgDBHdr *header)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIMsgFilter_h__ */
