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

#ifndef __gen_nsIMsgHdr_h__
#define __gen_nsIMsgHdr_h__


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

#ifndef __gen_MailNewsTypes2_h__
#include "MailNewsTypes2.h"
#endif

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


/* starting interface:    nsIMsgHdr */
#define NS_IMSGHDR_IID_STR "4e994f60-c317-11d2-8cc9-0060b0fc14a3"

#define NS_IMSGHDR_IID \
  {0x4e994f60, 0xc317, 0x11d2, \
    { 0x8c, 0xc9, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3 }}

class NS_NO_VTABLE nsIMsgHdr : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMSGHDR_IID)

  /* [noscript] void getProperty (in string propertyName, in nsStringRef propertyValue); */
  NS_IMETHOD GetProperty(const char *propertyName, nsString & propertyValue) = 0;

  /* [noscript] void setProperty (in string propertyName, in nsStringRef propertyStr); */
  NS_IMETHOD SetProperty(const char *propertyName, nsString & propertyStr) = 0;

  /* unsigned long getUint32Property (in string propertyName); */
  NS_IMETHOD GetUint32Property(const char *propertyName, PRUint32 *_retval) = 0;

  /* void setUint32Property (in string propertyName, in unsigned long propertyVal); */
  NS_IMETHOD SetUint32Property(const char *propertyName, PRUint32 propertyVal) = 0;

  /* readonly attribute boolean isRead; */
  NS_IMETHOD GetIsRead(PRBool *aIsRead) = 0;

  /* readonly attribute boolean isFlagged; */
  NS_IMETHOD GetIsFlagged(PRBool *aIsFlagged) = 0;

  /* void markRead (in boolean read); */
  NS_IMETHOD MarkRead(PRBool read) = 0;

  /* void markFlagged (in boolean flagged); */
  NS_IMETHOD MarkFlagged(PRBool flagged) = 0;

  /* void markHasAttachments (in boolean hasAttachments); */
  NS_IMETHOD MarkHasAttachments(PRBool hasAttachments) = 0;

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

  /* void setPriorityString (in string priority); */
  NS_IMETHOD SetPriorityString(const char *priority) = 0;

  /* attribute unsigned long flags; */
  NS_IMETHOD GetFlags(PRUint32 *aFlags) = 0;
  NS_IMETHOD SetFlags(PRUint32 aFlags) = 0;

  /* unsigned long OrFlags (in unsigned long flags); */
  NS_IMETHOD OrFlags(PRUint32 flags, PRUint32 *_retval) = 0;

  /* unsigned long AndFlags (in unsigned long flags); */
  NS_IMETHOD AndFlags(PRUint32 flags, PRUint32 *_retval) = 0;

  /* attribute nsMsgKey threadId; */
  NS_IMETHOD GetThreadId(nsMsgKey *aThreadId) = 0;
  NS_IMETHOD SetThreadId(nsMsgKey aThreadId) = 0;

  /* attribute nsMsgKey messageKey; */
  NS_IMETHOD GetMessageKey(nsMsgKey *aMessageKey) = 0;
  NS_IMETHOD SetMessageKey(nsMsgKey aMessageKey) = 0;

  /* attribute nsMsgKey threadParent; */
  NS_IMETHOD GetThreadParent(nsMsgKey *aThreadParent) = 0;
  NS_IMETHOD SetThreadParent(nsMsgKey aThreadParent) = 0;

  /* attribute unsigned long messageSize; */
  NS_IMETHOD GetMessageSize(PRUint32 *aMessageSize) = 0;
  NS_IMETHOD SetMessageSize(PRUint32 aMessageSize) = 0;

  /* attribute unsigned long lineCount; */
  NS_IMETHOD GetLineCount(PRUint32 *aLineCount) = 0;
  NS_IMETHOD SetLineCount(PRUint32 aLineCount) = 0;

  /* attribute unsigned long statusOffset; */
  NS_IMETHOD GetStatusOffset(PRUint32 *aStatusOffset) = 0;
  NS_IMETHOD SetStatusOffset(PRUint32 aStatusOffset) = 0;

  /* attribute unsigned long messageOffset; */
  NS_IMETHOD GetMessageOffset(PRUint32 *aMessageOffset) = 0;
  NS_IMETHOD SetMessageOffset(PRUint32 aMessageOffset) = 0;

  /* attribute unsigned long offlineMessageSize; */
  NS_IMETHOD GetOfflineMessageSize(PRUint32 *aOfflineMessageSize) = 0;
  NS_IMETHOD SetOfflineMessageSize(PRUint32 aOfflineMessageSize) = 0;

  /* attribute PRTime date; */
  NS_IMETHOD GetDate(PRTime *aDate) = 0;
  NS_IMETHOD SetDate(PRTime aDate) = 0;

  /* attribute string messageId; */
  NS_IMETHOD GetMessageId(char * *aMessageId) = 0;
  NS_IMETHOD SetMessageId(const char * aMessageId) = 0;

  /* attribute string ccList; */
  NS_IMETHOD GetCcList(char * *aCcList) = 0;
  NS_IMETHOD SetCcList(const char * aCcList) = 0;

  /* attribute string author; */
  NS_IMETHOD GetAuthor(char * *aAuthor) = 0;
  NS_IMETHOD SetAuthor(const char * aAuthor) = 0;

  /* attribute string subject; */
  NS_IMETHOD GetSubject(char * *aSubject) = 0;
  NS_IMETHOD SetSubject(const char * aSubject) = 0;

  /* attribute string recipients; */
  NS_IMETHOD GetRecipients(char * *aRecipients) = 0;
  NS_IMETHOD SetRecipients(const char * aRecipients) = 0;

  /* void setReferences (in string references); */
  NS_IMETHOD SetReferences(const char *references) = 0;

  /* readonly attribute unsigned short numReferences; */
  NS_IMETHOD GetNumReferences(PRUint16 *aNumReferences) = 0;

  /* [noscript] void getStringReference (in long refNum, in nsCStringRef ref); */
  NS_IMETHOD GetStringReference(PRInt32 refNum, nsCString & ref) = 0;

  /* void setRecipientsArray (in string names, in string addresses, in unsigned long numAddresses); */
  NS_IMETHOD SetRecipientsArray(const char *names, const char *addresses, PRUint32 numAddresses) = 0;

  /* void setCCListArray (in string names, in string addresses, in unsigned long numAddresses); */
  NS_IMETHOD SetCCListArray(const char *names, const char *addresses, PRUint32 numAddresses) = 0;

  /* readonly attribute wstring mime2DecodedAuthor; */
  NS_IMETHOD GetMime2DecodedAuthor(PRUnichar * *aMime2DecodedAuthor) = 0;

  /* readonly attribute wstring mime2DecodedSubject; */
  NS_IMETHOD GetMime2DecodedSubject(PRUnichar * *aMime2DecodedSubject) = 0;

  /* readonly attribute wstring mime2DecodedRecipients; */
  NS_IMETHOD GetMime2DecodedRecipients(PRUnichar * *aMime2DecodedRecipients) = 0;

  /* [noscript] void getAuthorCollationKey (out octetPtr key, out unsigned long len); */
  NS_IMETHOD GetAuthorCollationKey(PRUint8 * *key, PRUint32 *len) = 0;

  /* [noscript] void getSubjectCollationKey (out octetPtr key, out unsigned long len); */
  NS_IMETHOD GetSubjectCollationKey(PRUint8 * *key, PRUint32 *len) = 0;

  /* [noscript] void getRecipientsCollationKey (out octetPtr key, out unsigned long len); */
  NS_IMETHOD GetRecipientsCollationKey(PRUint8 * *key, PRUint32 *len) = 0;

  /* attribute string Charset; */
  NS_IMETHOD GetCharset(char * *aCharset) = 0;
  NS_IMETHOD SetCharset(const char * aCharset) = 0;

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

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

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGHDR \
  NS_IMETHOD GetProperty(const char *propertyName, nsString & propertyValue); \
  NS_IMETHOD SetProperty(const char *propertyName, nsString & propertyStr); \
  NS_IMETHOD GetUint32Property(const char *propertyName, PRUint32 *_retval); \
  NS_IMETHOD SetUint32Property(const char *propertyName, PRUint32 propertyVal); \
  NS_IMETHOD GetIsRead(PRBool *aIsRead); \
  NS_IMETHOD GetIsFlagged(PRBool *aIsFlagged); \
  NS_IMETHOD MarkRead(PRBool read); \
  NS_IMETHOD MarkFlagged(PRBool flagged); \
  NS_IMETHOD MarkHasAttachments(PRBool hasAttachments); \
  NS_IMETHOD GetPriority(nsMsgPriorityValue *aPriority); \
  NS_IMETHOD SetPriority(nsMsgPriorityValue aPriority); \
  NS_IMETHOD SetPriorityString(const char *priority); \
  NS_IMETHOD GetFlags(PRUint32 *aFlags); \
  NS_IMETHOD SetFlags(PRUint32 aFlags); \
  NS_IMETHOD OrFlags(PRUint32 flags, PRUint32 *_retval); \
  NS_IMETHOD AndFlags(PRUint32 flags, PRUint32 *_retval); \
  NS_IMETHOD GetThreadId(nsMsgKey *aThreadId); \
  NS_IMETHOD SetThreadId(nsMsgKey aThreadId); \
  NS_IMETHOD GetMessageKey(nsMsgKey *aMessageKey); \
  NS_IMETHOD SetMessageKey(nsMsgKey aMessageKey); \
  NS_IMETHOD GetThreadParent(nsMsgKey *aThreadParent); \
  NS_IMETHOD SetThreadParent(nsMsgKey aThreadParent); \
  NS_IMETHOD GetMessageSize(PRUint32 *aMessageSize); \
  NS_IMETHOD SetMessageSize(PRUint32 aMessageSize); \
  NS_IMETHOD GetLineCount(PRUint32 *aLineCount); \
  NS_IMETHOD SetLineCount(PRUint32 aLineCount); \
  NS_IMETHOD GetStatusOffset(PRUint32 *aStatusOffset); \
  NS_IMETHOD SetStatusOffset(PRUint32 aStatusOffset); \
  NS_IMETHOD GetMessageOffset(PRUint32 *aMessageOffset); \
  NS_IMETHOD SetMessageOffset(PRUint32 aMessageOffset); \
  NS_IMETHOD GetOfflineMessageSize(PRUint32 *aOfflineMessageSize); \
  NS_IMETHOD SetOfflineMessageSize(PRUint32 aOfflineMessageSize); \
  NS_IMETHOD GetDate(PRTime *aDate); \
  NS_IMETHOD SetDate(PRTime aDate); \
  NS_IMETHOD GetMessageId(char * *aMessageId); \
  NS_IMETHOD SetMessageId(const char * aMessageId); \
  NS_IMETHOD GetCcList(char * *aCcList); \
  NS_IMETHOD SetCcList(const char * aCcList); \
  NS_IMETHOD GetAuthor(char * *aAuthor); \
  NS_IMETHOD SetAuthor(const char * aAuthor); \
  NS_IMETHOD GetSubject(char * *aSubject); \
  NS_IMETHOD SetSubject(const char * aSubject); \
  NS_IMETHOD GetRecipients(char * *aRecipients); \
  NS_IMETHOD SetRecipients(const char * aRecipients); \
  NS_IMETHOD SetReferences(const char *references); \
  NS_IMETHOD GetNumReferences(PRUint16 *aNumReferences); \
  NS_IMETHOD GetStringReference(PRInt32 refNum, nsCString & ref); \
  NS_IMETHOD SetRecipientsArray(const char *names, const char *addresses, PRUint32 numAddresses); \
  NS_IMETHOD SetCCListArray(const char *names, const char *addresses, PRUint32 numAddresses); \
  NS_IMETHOD GetMime2DecodedAuthor(PRUnichar * *aMime2DecodedAuthor); \
  NS_IMETHOD GetMime2DecodedSubject(PRUnichar * *aMime2DecodedSubject); \
  NS_IMETHOD GetMime2DecodedRecipients(PRUnichar * *aMime2DecodedRecipients); \
  NS_IMETHOD GetAuthorCollationKey(PRUint8 * *key, PRUint32 *len); \
  NS_IMETHOD GetSubjectCollationKey(PRUint8 * *key, PRUint32 *len); \
  NS_IMETHOD GetRecipientsCollationKey(PRUint8 * *key, PRUint32 *len); \
  NS_IMETHOD GetCharset(char * *aCharset); \
  NS_IMETHOD SetCharset(const char * aCharset); \
  NS_IMETHOD GetLabel(nsMsgLabelValue *aLabel); \
  NS_IMETHOD SetLabel(nsMsgLabelValue aLabel); \
  NS_IMETHOD GetFolder(nsIMsgFolder * *aFolder); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGHDR(_to) \
  NS_IMETHOD GetProperty(const char *propertyName, nsString & propertyValue) { return _to GetProperty(propertyName, propertyValue); } \
  NS_IMETHOD SetProperty(const char *propertyName, nsString & propertyStr) { return _to SetProperty(propertyName, propertyStr); } \
  NS_IMETHOD GetUint32Property(const char *propertyName, PRUint32 *_retval) { return _to GetUint32Property(propertyName, _retval); } \
  NS_IMETHOD SetUint32Property(const char *propertyName, PRUint32 propertyVal) { return _to SetUint32Property(propertyName, propertyVal); } \
  NS_IMETHOD GetIsRead(PRBool *aIsRead) { return _to GetIsRead(aIsRead); } \
  NS_IMETHOD GetIsFlagged(PRBool *aIsFlagged) { return _to GetIsFlagged(aIsFlagged); } \
  NS_IMETHOD MarkRead(PRBool read) { return _to MarkRead(read); } \
  NS_IMETHOD MarkFlagged(PRBool flagged) { return _to MarkFlagged(flagged); } \
  NS_IMETHOD MarkHasAttachments(PRBool hasAttachments) { return _to MarkHasAttachments(hasAttachments); } \
  NS_IMETHOD GetPriority(nsMsgPriorityValue *aPriority) { return _to GetPriority(aPriority); } \
  NS_IMETHOD SetPriority(nsMsgPriorityValue aPriority) { return _to SetPriority(aPriority); } \
  NS_IMETHOD SetPriorityString(const char *priority) { return _to SetPriorityString(priority); } \
  NS_IMETHOD GetFlags(PRUint32 *aFlags) { return _to GetFlags(aFlags); } \
  NS_IMETHOD SetFlags(PRUint32 aFlags) { return _to SetFlags(aFlags); } \
  NS_IMETHOD OrFlags(PRUint32 flags, PRUint32 *_retval) { return _to OrFlags(flags, _retval); } \
  NS_IMETHOD AndFlags(PRUint32 flags, PRUint32 *_retval) { return _to AndFlags(flags, _retval); } \
  NS_IMETHOD GetThreadId(nsMsgKey *aThreadId) { return _to GetThreadId(aThreadId); } \
  NS_IMETHOD SetThreadId(nsMsgKey aThreadId) { return _to SetThreadId(aThreadId); } \
  NS_IMETHOD GetMessageKey(nsMsgKey *aMessageKey) { return _to GetMessageKey(aMessageKey); } \
  NS_IMETHOD SetMessageKey(nsMsgKey aMessageKey) { return _to SetMessageKey(aMessageKey); } \
  NS_IMETHOD GetThreadParent(nsMsgKey *aThreadParent) { return _to GetThreadParent(aThreadParent); } \
  NS_IMETHOD SetThreadParent(nsMsgKey aThreadParent) { return _to SetThreadParent(aThreadParent); } \
  NS_IMETHOD GetMessageSize(PRUint32 *aMessageSize) { return _to GetMessageSize(aMessageSize); } \
  NS_IMETHOD SetMessageSize(PRUint32 aMessageSize) { return _to SetMessageSize(aMessageSize); } \
  NS_IMETHOD GetLineCount(PRUint32 *aLineCount) { return _to GetLineCount(aLineCount); } \
  NS_IMETHOD SetLineCount(PRUint32 aLineCount) { return _to SetLineCount(aLineCount); } \
  NS_IMETHOD GetStatusOffset(PRUint32 *aStatusOffset) { return _to GetStatusOffset(aStatusOffset); } \
  NS_IMETHOD SetStatusOffset(PRUint32 aStatusOffset) { return _to SetStatusOffset(aStatusOffset); } \
  NS_IMETHOD GetMessageOffset(PRUint32 *aMessageOffset) { return _to GetMessageOffset(aMessageOffset); } \
  NS_IMETHOD SetMessageOffset(PRUint32 aMessageOffset) { return _to SetMessageOffset(aMessageOffset); } \
  NS_IMETHOD GetOfflineMessageSize(PRUint32 *aOfflineMessageSize) { return _to GetOfflineMessageSize(aOfflineMessageSize); } \
  NS_IMETHOD SetOfflineMessageSize(PRUint32 aOfflineMessageSize) { return _to SetOfflineMessageSize(aOfflineMessageSize); } \
  NS_IMETHOD GetDate(PRTime *aDate) { return _to GetDate(aDate); } \
  NS_IMETHOD SetDate(PRTime aDate) { return _to SetDate(aDate); } \
  NS_IMETHOD GetMessageId(char * *aMessageId) { return _to GetMessageId(aMessageId); } \
  NS_IMETHOD SetMessageId(const char * aMessageId) { return _to SetMessageId(aMessageId); } \
  NS_IMETHOD GetCcList(char * *aCcList) { return _to GetCcList(aCcList); } \
  NS_IMETHOD SetCcList(const char * aCcList) { return _to SetCcList(aCcList); } \
  NS_IMETHOD GetAuthor(char * *aAuthor) { return _to GetAuthor(aAuthor); } \
  NS_IMETHOD SetAuthor(const char * aAuthor) { return _to SetAuthor(aAuthor); } \
  NS_IMETHOD GetSubject(char * *aSubject) { return _to GetSubject(aSubject); } \
  NS_IMETHOD SetSubject(const char * aSubject) { return _to SetSubject(aSubject); } \
  NS_IMETHOD GetRecipients(char * *aRecipients) { return _to GetRecipients(aRecipients); } \
  NS_IMETHOD SetRecipients(const char * aRecipients) { return _to SetRecipients(aRecipients); } \
  NS_IMETHOD SetReferences(const char *references) { return _to SetReferences(references); } \
  NS_IMETHOD GetNumReferences(PRUint16 *aNumReferences) { return _to GetNumReferences(aNumReferences); } \
  NS_IMETHOD GetStringReference(PRInt32 refNum, nsCString & ref) { return _to GetStringReference(refNum, ref); } \
  NS_IMETHOD SetRecipientsArray(const char *names, const char *addresses, PRUint32 numAddresses) { return _to SetRecipientsArray(names, addresses, numAddresses); } \
  NS_IMETHOD SetCCListArray(const char *names, const char *addresses, PRUint32 numAddresses) { return _to SetCCListArray(names, addresses, numAddresses); } \
  NS_IMETHOD GetMime2DecodedAuthor(PRUnichar * *aMime2DecodedAuthor) { return _to GetMime2DecodedAuthor(aMime2DecodedAuthor); } \
  NS_IMETHOD GetMime2DecodedSubject(PRUnichar * *aMime2DecodedSubject) { return _to GetMime2DecodedSubject(aMime2DecodedSubject); } \
  NS_IMETHOD GetMime2DecodedRecipients(PRUnichar * *aMime2DecodedRecipients) { return _to GetMime2DecodedRecipients(aMime2DecodedRecipients); } \
  NS_IMETHOD GetAuthorCollationKey(PRUint8 * *key, PRUint32 *len) { return _to GetAuthorCollationKey(key, len); } \
  NS_IMETHOD GetSubjectCollationKey(PRUint8 * *key, PRUint32 *len) { return _to GetSubjectCollationKey(key, len); } \
  NS_IMETHOD GetRecipientsCollationKey(PRUint8 * *key, PRUint32 *len) { return _to GetRecipientsCollationKey(key, len); } \
  NS_IMETHOD GetCharset(char * *aCharset) { return _to GetCharset(aCharset); } \
  NS_IMETHOD SetCharset(const char * aCharset) { return _to SetCharset(aCharset); } \
  NS_IMETHOD GetLabel(nsMsgLabelValue *aLabel) { return _to GetLabel(aLabel); } \
  NS_IMETHOD SetLabel(nsMsgLabelValue aLabel) { return _to SetLabel(aLabel); } \
  NS_IMETHOD GetFolder(nsIMsgFolder * *aFolder) { return _to GetFolder(aFolder); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGHDR(_to) \
  NS_IMETHOD GetProperty(const char *propertyName, nsString & propertyValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProperty(propertyName, propertyValue); } \
  NS_IMETHOD SetProperty(const char *propertyName, nsString & propertyStr) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetProperty(propertyName, propertyStr); } \
  NS_IMETHOD GetUint32Property(const char *propertyName, PRUint32 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUint32Property(propertyName, _retval); } \
  NS_IMETHOD SetUint32Property(const char *propertyName, PRUint32 propertyVal) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetUint32Property(propertyName, propertyVal); } \
  NS_IMETHOD GetIsRead(PRBool *aIsRead) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsRead(aIsRead); } \
  NS_IMETHOD GetIsFlagged(PRBool *aIsFlagged) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsFlagged(aIsFlagged); } \
  NS_IMETHOD MarkRead(PRBool read) { return !_to ? NS_ERROR_NULL_POINTER : _to->MarkRead(read); } \
  NS_IMETHOD MarkFlagged(PRBool flagged) { return !_to ? NS_ERROR_NULL_POINTER : _to->MarkFlagged(flagged); } \
  NS_IMETHOD MarkHasAttachments(PRBool hasAttachments) { return !_to ? NS_ERROR_NULL_POINTER : _to->MarkHasAttachments(hasAttachments); } \
  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 SetPriorityString(const char *priority) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPriorityString(priority); } \
  NS_IMETHOD GetFlags(PRUint32 *aFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFlags(aFlags); } \
  NS_IMETHOD SetFlags(PRUint32 aFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFlags(aFlags); } \
  NS_IMETHOD OrFlags(PRUint32 flags, PRUint32 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->OrFlags(flags, _retval); } \
  NS_IMETHOD AndFlags(PRUint32 flags, PRUint32 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->AndFlags(flags, _retval); } \
  NS_IMETHOD GetThreadId(nsMsgKey *aThreadId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetThreadId(aThreadId); } \
  NS_IMETHOD SetThreadId(nsMsgKey aThreadId) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetThreadId(aThreadId); } \
  NS_IMETHOD GetMessageKey(nsMsgKey *aMessageKey) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMessageKey(aMessageKey); } \
  NS_IMETHOD SetMessageKey(nsMsgKey aMessageKey) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMessageKey(aMessageKey); } \
  NS_IMETHOD GetThreadParent(nsMsgKey *aThreadParent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetThreadParent(aThreadParent); } \
  NS_IMETHOD SetThreadParent(nsMsgKey aThreadParent) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetThreadParent(aThreadParent); } \
  NS_IMETHOD GetMessageSize(PRUint32 *aMessageSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMessageSize(aMessageSize); } \
  NS_IMETHOD SetMessageSize(PRUint32 aMessageSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMessageSize(aMessageSize); } \
  NS_IMETHOD GetLineCount(PRUint32 *aLineCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLineCount(aLineCount); } \
  NS_IMETHOD SetLineCount(PRUint32 aLineCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLineCount(aLineCount); } \
  NS_IMETHOD GetStatusOffset(PRUint32 *aStatusOffset) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStatusOffset(aStatusOffset); } \
  NS_IMETHOD SetStatusOffset(PRUint32 aStatusOffset) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetStatusOffset(aStatusOffset); } \
  NS_IMETHOD GetMessageOffset(PRUint32 *aMessageOffset) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMessageOffset(aMessageOffset); } \
  NS_IMETHOD SetMessageOffset(PRUint32 aMessageOffset) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMessageOffset(aMessageOffset); } \
  NS_IMETHOD GetOfflineMessageSize(PRUint32 *aOfflineMessageSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOfflineMessageSize(aOfflineMessageSize); } \
  NS_IMETHOD SetOfflineMessageSize(PRUint32 aOfflineMessageSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetOfflineMessageSize(aOfflineMessageSize); } \
  NS_IMETHOD GetDate(PRTime *aDate) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDate(aDate); } \
  NS_IMETHOD SetDate(PRTime aDate) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDate(aDate); } \
  NS_IMETHOD GetMessageId(char * *aMessageId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMessageId(aMessageId); } \
  NS_IMETHOD SetMessageId(const char * aMessageId) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMessageId(aMessageId); } \
  NS_IMETHOD GetCcList(char * *aCcList) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCcList(aCcList); } \
  NS_IMETHOD SetCcList(const char * aCcList) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCcList(aCcList); } \
  NS_IMETHOD GetAuthor(char * *aAuthor) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAuthor(aAuthor); } \
  NS_IMETHOD SetAuthor(const char * aAuthor) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAuthor(aAuthor); } \
  NS_IMETHOD GetSubject(char * *aSubject) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSubject(aSubject); } \
  NS_IMETHOD SetSubject(const char * aSubject) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSubject(aSubject); } \
  NS_IMETHOD GetRecipients(char * *aRecipients) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecipients(aRecipients); } \
  NS_IMETHOD SetRecipients(const char * aRecipients) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRecipients(aRecipients); } \
  NS_IMETHOD SetReferences(const char *references) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetReferences(references); } \
  NS_IMETHOD GetNumReferences(PRUint16 *aNumReferences) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNumReferences(aNumReferences); } \
  NS_IMETHOD GetStringReference(PRInt32 refNum, nsCString & ref) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStringReference(refNum, ref); } \
  NS_IMETHOD SetRecipientsArray(const char *names, const char *addresses, PRUint32 numAddresses) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRecipientsArray(names, addresses, numAddresses); } \
  NS_IMETHOD SetCCListArray(const char *names, const char *addresses, PRUint32 numAddresses) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCCListArray(names, addresses, numAddresses); } \
  NS_IMETHOD GetMime2DecodedAuthor(PRUnichar * *aMime2DecodedAuthor) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMime2DecodedAuthor(aMime2DecodedAuthor); } \
  NS_IMETHOD GetMime2DecodedSubject(PRUnichar * *aMime2DecodedSubject) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMime2DecodedSubject(aMime2DecodedSubject); } \
  NS_IMETHOD GetMime2DecodedRecipients(PRUnichar * *aMime2DecodedRecipients) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMime2DecodedRecipients(aMime2DecodedRecipients); } \
  NS_IMETHOD GetAuthorCollationKey(PRUint8 * *key, PRUint32 *len) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAuthorCollationKey(key, len); } \
  NS_IMETHOD GetSubjectCollationKey(PRUint8 * *key, PRUint32 *len) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSubjectCollationKey(key, len); } \
  NS_IMETHOD GetRecipientsCollationKey(PRUint8 * *key, PRUint32 *len) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecipientsCollationKey(key, len); } \
  NS_IMETHOD GetCharset(char * *aCharset) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCharset(aCharset); } \
  NS_IMETHOD SetCharset(const char * aCharset) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCharset(aCharset); } \
  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); } \
  NS_IMETHOD GetFolder(nsIMsgFolder * *aFolder) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFolder(aFolder); } 

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

/* Header file */
class nsMsgHdr : public nsIMsgHdr
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGHDR

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgHdr, nsIMsgHdr)

nsMsgHdr::nsMsgHdr()
{
  NS_INIT_ISUPPORTS();
  /* member initializers and constructor code */
}

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

/* [noscript] void getProperty (in string propertyName, in nsStringRef propertyValue); */
NS_IMETHODIMP nsMsgHdr::GetProperty(const char *propertyName, nsString & propertyValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void setProperty (in string propertyName, in nsStringRef propertyStr); */
NS_IMETHODIMP nsMsgHdr::SetProperty(const char *propertyName, nsString & propertyStr)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* unsigned long getUint32Property (in string propertyName); */
NS_IMETHODIMP nsMsgHdr::GetUint32Property(const char *propertyName, PRUint32 *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setUint32Property (in string propertyName, in unsigned long propertyVal); */
NS_IMETHODIMP nsMsgHdr::SetUint32Property(const char *propertyName, PRUint32 propertyVal)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean isRead; */
NS_IMETHODIMP nsMsgHdr::GetIsRead(PRBool *aIsRead)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean isFlagged; */
NS_IMETHODIMP nsMsgHdr::GetIsFlagged(PRBool *aIsFlagged)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void markRead (in boolean read); */
NS_IMETHODIMP nsMsgHdr::MarkRead(PRBool read)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void markFlagged (in boolean flagged); */
NS_IMETHODIMP nsMsgHdr::MarkFlagged(PRBool flagged)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void markHasAttachments (in boolean hasAttachments); */
NS_IMETHODIMP nsMsgHdr::MarkHasAttachments(PRBool hasAttachments)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void setPriorityString (in string priority); */
NS_IMETHODIMP nsMsgHdr::SetPriorityString(const char *priority)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long flags; */
NS_IMETHODIMP nsMsgHdr::GetFlags(PRUint32 *aFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgHdr::SetFlags(PRUint32 aFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* unsigned long OrFlags (in unsigned long flags); */
NS_IMETHODIMP nsMsgHdr::OrFlags(PRUint32 flags, PRUint32 *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* unsigned long AndFlags (in unsigned long flags); */
NS_IMETHODIMP nsMsgHdr::AndFlags(PRUint32 flags, PRUint32 *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsMsgKey threadId; */
NS_IMETHODIMP nsMsgHdr::GetThreadId(nsMsgKey *aThreadId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgHdr::SetThreadId(nsMsgKey aThreadId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsMsgKey messageKey; */
NS_IMETHODIMP nsMsgHdr::GetMessageKey(nsMsgKey *aMessageKey)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgHdr::SetMessageKey(nsMsgKey aMessageKey)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsMsgKey threadParent; */
NS_IMETHODIMP nsMsgHdr::GetThreadParent(nsMsgKey *aThreadParent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgHdr::SetThreadParent(nsMsgKey aThreadParent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long messageSize; */
NS_IMETHODIMP nsMsgHdr::GetMessageSize(PRUint32 *aMessageSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgHdr::SetMessageSize(PRUint32 aMessageSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long lineCount; */
NS_IMETHODIMP nsMsgHdr::GetLineCount(PRUint32 *aLineCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgHdr::SetLineCount(PRUint32 aLineCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long statusOffset; */
NS_IMETHODIMP nsMsgHdr::GetStatusOffset(PRUint32 *aStatusOffset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgHdr::SetStatusOffset(PRUint32 aStatusOffset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long messageOffset; */
NS_IMETHODIMP nsMsgHdr::GetMessageOffset(PRUint32 *aMessageOffset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgHdr::SetMessageOffset(PRUint32 aMessageOffset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long offlineMessageSize; */
NS_IMETHODIMP nsMsgHdr::GetOfflineMessageSize(PRUint32 *aOfflineMessageSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgHdr::SetOfflineMessageSize(PRUint32 aOfflineMessageSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRTime date; */
NS_IMETHODIMP nsMsgHdr::GetDate(PRTime *aDate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgHdr::SetDate(PRTime aDate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string messageId; */
NS_IMETHODIMP nsMsgHdr::GetMessageId(char * *aMessageId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgHdr::SetMessageId(const char * aMessageId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string ccList; */
NS_IMETHODIMP nsMsgHdr::GetCcList(char * *aCcList)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgHdr::SetCcList(const char * aCcList)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string author; */
NS_IMETHODIMP nsMsgHdr::GetAuthor(char * *aAuthor)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgHdr::SetAuthor(const char * aAuthor)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string subject; */
NS_IMETHODIMP nsMsgHdr::GetSubject(char * *aSubject)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgHdr::SetSubject(const char * aSubject)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string recipients; */
NS_IMETHODIMP nsMsgHdr::GetRecipients(char * *aRecipients)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgHdr::SetRecipients(const char * aRecipients)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setReferences (in string references); */
NS_IMETHODIMP nsMsgHdr::SetReferences(const char *references)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned short numReferences; */
NS_IMETHODIMP nsMsgHdr::GetNumReferences(PRUint16 *aNumReferences)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void getStringReference (in long refNum, in nsCStringRef ref); */
NS_IMETHODIMP nsMsgHdr::GetStringReference(PRInt32 refNum, nsCString & ref)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setRecipientsArray (in string names, in string addresses, in unsigned long numAddresses); */
NS_IMETHODIMP nsMsgHdr::SetRecipientsArray(const char *names, const char *addresses, PRUint32 numAddresses)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setCCListArray (in string names, in string addresses, in unsigned long numAddresses); */
NS_IMETHODIMP nsMsgHdr::SetCCListArray(const char *names, const char *addresses, PRUint32 numAddresses)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring mime2DecodedAuthor; */
NS_IMETHODIMP nsMsgHdr::GetMime2DecodedAuthor(PRUnichar * *aMime2DecodedAuthor)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring mime2DecodedSubject; */
NS_IMETHODIMP nsMsgHdr::GetMime2DecodedSubject(PRUnichar * *aMime2DecodedSubject)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring mime2DecodedRecipients; */
NS_IMETHODIMP nsMsgHdr::GetMime2DecodedRecipients(PRUnichar * *aMime2DecodedRecipients)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void getAuthorCollationKey (out octetPtr key, out unsigned long len); */
NS_IMETHODIMP nsMsgHdr::GetAuthorCollationKey(PRUint8 * *key, PRUint32 *len)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void getSubjectCollationKey (out octetPtr key, out unsigned long len); */
NS_IMETHODIMP nsMsgHdr::GetSubjectCollationKey(PRUint8 * *key, PRUint32 *len)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void getRecipientsCollationKey (out octetPtr key, out unsigned long len); */
NS_IMETHODIMP nsMsgHdr::GetRecipientsCollationKey(PRUint8 * *key, PRUint32 *len)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string Charset; */
NS_IMETHODIMP nsMsgHdr::GetCharset(char * *aCharset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgHdr::SetCharset(const char * aCharset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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


/* starting interface:    nsIMsgDBHdr */
#define NS_IMSGDBHDR_IID_STR "b5212a60-f93f-11d2-951c-006097222b83"

#define NS_IMSGDBHDR_IID \
  {0xb5212a60, 0xf93f, 0x11d2, \
    { 0x95, 0x1c, 0x00, 0x60, 0x97, 0x22, 0x2b, 0x83 }}

class NS_NO_VTABLE nsIMsgDBHdr : public nsIMsgHdr {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMSGDBHDR_IID)

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGDBHDR \
  /* no methods! */

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

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

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

/* Header file */
class nsMsgDBHdr : public nsIMsgDBHdr
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGDBHDR

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgDBHdr, nsIMsgDBHdr)

nsMsgDBHdr::nsMsgDBHdr()
{
  NS_INIT_ISUPPORTS();
  /* member initializers and constructor code */
}

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

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


#endif /* __gen_nsIMsgHdr_h__ */
