/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM /root/tmp/build-seamonkey/comm-release/mailnews/base/public/nsIMsgThread.idl
 */

#ifndef __gen_nsIMsgThread_h__
#define __gen_nsIMsgThread_h__


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

#ifndef __gen_nsISimpleEnumerator_h__
#include "nsISimpleEnumerator.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
class nsIMsgDBHdr; /* forward declaration */

class nsIDBChangeAnnouncer; /* forward declaration */


/* starting interface:    nsIMsgThread */
#define NS_IMSGTHREAD_IID_STR "873a1a47-d8ba-47cc-b1ef-355654d00000"

#define NS_IMSGTHREAD_IID \
  {0x873a1a47, 0xd8ba, 0x47cc, \
    { 0xb1, 0xef, 0x35, 0x56, 0x54, 0xd0, 0x00, 0x00 }}

class NS_NO_VTABLE nsIMsgThread : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGTHREAD_IID)

  /* attribute nsMsgKey threadKey; */
  NS_IMETHOD GetThreadKey(nsMsgKey *aThreadKey) = 0;
  NS_IMETHOD SetThreadKey(nsMsgKey aThreadKey) = 0;

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

  /* attribute ACString subject; */
  NS_IMETHOD GetSubject(nsACString & aSubject) = 0;
  NS_IMETHOD SetSubject(const nsACString & aSubject) = 0;

  /* attribute unsigned long newestMsgDate; */
  NS_IMETHOD GetNewestMsgDate(uint32_t *aNewestMsgDate) = 0;
  NS_IMETHOD SetNewestMsgDate(uint32_t aNewestMsgDate) = 0;

  /* readonly attribute unsigned long numChildren; */
  NS_IMETHOD GetNumChildren(uint32_t *aNumChildren) = 0;

  /* readonly attribute unsigned long numUnreadChildren; */
  NS_IMETHOD GetNumUnreadChildren(uint32_t *aNumUnreadChildren) = 0;

  /* void addChild (in nsIMsgDBHdr child, in nsIMsgDBHdr inReplyTo, in boolean threadInThread, in nsIDBChangeAnnouncer announcer); */
  NS_IMETHOD AddChild(nsIMsgDBHdr *child, nsIMsgDBHdr *inReplyTo, bool threadInThread, nsIDBChangeAnnouncer *announcer) = 0;

  /* nsMsgKey getChildKeyAt (in long index); */
  NS_IMETHOD GetChildKeyAt(int32_t index, nsMsgKey *_retval) = 0;

  /* nsIMsgDBHdr getChild (in nsMsgKey msgKey); */
  NS_IMETHOD GetChild(nsMsgKey msgKey, nsIMsgDBHdr * *_retval) = 0;

  /* nsIMsgDBHdr getChildHdrAt (in long index); */
  NS_IMETHOD GetChildHdrAt(int32_t index, nsIMsgDBHdr * *_retval) = 0;

  /* nsIMsgDBHdr getRootHdr (out long index); */
  NS_IMETHOD GetRootHdr(int32_t *index, nsIMsgDBHdr * *_retval) = 0;

  /* void removeChildAt (in long index); */
  NS_IMETHOD RemoveChildAt(int32_t index) = 0;

  /* void removeChildHdr (in nsIMsgDBHdr child, in nsIDBChangeAnnouncer announcer); */
  NS_IMETHOD RemoveChildHdr(nsIMsgDBHdr *child, nsIDBChangeAnnouncer *announcer) = 0;

  /* void markChildRead (in boolean bRead); */
  NS_IMETHOD MarkChildRead(bool bRead) = 0;

  /* nsIMsgDBHdr getFirstUnreadChild (); */
  NS_IMETHOD GetFirstUnreadChild(nsIMsgDBHdr * *_retval) = 0;

  /* nsISimpleEnumerator enumerateMessages (in nsMsgKey parent); */
  NS_IMETHOD EnumerateMessages(nsMsgKey parent, nsISimpleEnumerator * *_retval) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgThread, NS_IMSGTHREAD_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGTHREAD \
  NS_IMETHOD GetThreadKey(nsMsgKey *aThreadKey); \
  NS_IMETHOD SetThreadKey(nsMsgKey aThreadKey); \
  NS_IMETHOD GetFlags(uint32_t *aFlags); \
  NS_IMETHOD SetFlags(uint32_t aFlags); \
  NS_IMETHOD GetSubject(nsACString & aSubject); \
  NS_IMETHOD SetSubject(const nsACString & aSubject); \
  NS_IMETHOD GetNewestMsgDate(uint32_t *aNewestMsgDate); \
  NS_IMETHOD SetNewestMsgDate(uint32_t aNewestMsgDate); \
  NS_IMETHOD GetNumChildren(uint32_t *aNumChildren); \
  NS_IMETHOD GetNumUnreadChildren(uint32_t *aNumUnreadChildren); \
  NS_IMETHOD AddChild(nsIMsgDBHdr *child, nsIMsgDBHdr *inReplyTo, bool threadInThread, nsIDBChangeAnnouncer *announcer); \
  NS_IMETHOD GetChildKeyAt(int32_t index, nsMsgKey *_retval); \
  NS_IMETHOD GetChild(nsMsgKey msgKey, nsIMsgDBHdr * *_retval); \
  NS_IMETHOD GetChildHdrAt(int32_t index, nsIMsgDBHdr * *_retval); \
  NS_IMETHOD GetRootHdr(int32_t *index, nsIMsgDBHdr * *_retval); \
  NS_IMETHOD RemoveChildAt(int32_t index); \
  NS_IMETHOD RemoveChildHdr(nsIMsgDBHdr *child, nsIDBChangeAnnouncer *announcer); \
  NS_IMETHOD MarkChildRead(bool bRead); \
  NS_IMETHOD GetFirstUnreadChild(nsIMsgDBHdr * *_retval); \
  NS_IMETHOD EnumerateMessages(nsMsgKey parent, nsISimpleEnumerator * *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGTHREAD(_to) \
  NS_IMETHOD GetThreadKey(nsMsgKey *aThreadKey) { return _to GetThreadKey(aThreadKey); } \
  NS_IMETHOD SetThreadKey(nsMsgKey aThreadKey) { return _to SetThreadKey(aThreadKey); } \
  NS_IMETHOD GetFlags(uint32_t *aFlags) { return _to GetFlags(aFlags); } \
  NS_IMETHOD SetFlags(uint32_t aFlags) { return _to SetFlags(aFlags); } \
  NS_IMETHOD GetSubject(nsACString & aSubject) { return _to GetSubject(aSubject); } \
  NS_IMETHOD SetSubject(const nsACString & aSubject) { return _to SetSubject(aSubject); } \
  NS_IMETHOD GetNewestMsgDate(uint32_t *aNewestMsgDate) { return _to GetNewestMsgDate(aNewestMsgDate); } \
  NS_IMETHOD SetNewestMsgDate(uint32_t aNewestMsgDate) { return _to SetNewestMsgDate(aNewestMsgDate); } \
  NS_IMETHOD GetNumChildren(uint32_t *aNumChildren) { return _to GetNumChildren(aNumChildren); } \
  NS_IMETHOD GetNumUnreadChildren(uint32_t *aNumUnreadChildren) { return _to GetNumUnreadChildren(aNumUnreadChildren); } \
  NS_IMETHOD AddChild(nsIMsgDBHdr *child, nsIMsgDBHdr *inReplyTo, bool threadInThread, nsIDBChangeAnnouncer *announcer) { return _to AddChild(child, inReplyTo, threadInThread, announcer); } \
  NS_IMETHOD GetChildKeyAt(int32_t index, nsMsgKey *_retval) { return _to GetChildKeyAt(index, _retval); } \
  NS_IMETHOD GetChild(nsMsgKey msgKey, nsIMsgDBHdr * *_retval) { return _to GetChild(msgKey, _retval); } \
  NS_IMETHOD GetChildHdrAt(int32_t index, nsIMsgDBHdr * *_retval) { return _to GetChildHdrAt(index, _retval); } \
  NS_IMETHOD GetRootHdr(int32_t *index, nsIMsgDBHdr * *_retval) { return _to GetRootHdr(index, _retval); } \
  NS_IMETHOD RemoveChildAt(int32_t index) { return _to RemoveChildAt(index); } \
  NS_IMETHOD RemoveChildHdr(nsIMsgDBHdr *child, nsIDBChangeAnnouncer *announcer) { return _to RemoveChildHdr(child, announcer); } \
  NS_IMETHOD MarkChildRead(bool bRead) { return _to MarkChildRead(bRead); } \
  NS_IMETHOD GetFirstUnreadChild(nsIMsgDBHdr * *_retval) { return _to GetFirstUnreadChild(_retval); } \
  NS_IMETHOD EnumerateMessages(nsMsgKey parent, nsISimpleEnumerator * *_retval) { return _to EnumerateMessages(parent, _retval); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGTHREAD(_to) \
  NS_IMETHOD GetThreadKey(nsMsgKey *aThreadKey) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetThreadKey(aThreadKey); } \
  NS_IMETHOD SetThreadKey(nsMsgKey aThreadKey) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetThreadKey(aThreadKey); } \
  NS_IMETHOD GetFlags(uint32_t *aFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFlags(aFlags); } \
  NS_IMETHOD SetFlags(uint32_t aFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFlags(aFlags); } \
  NS_IMETHOD GetSubject(nsACString & aSubject) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSubject(aSubject); } \
  NS_IMETHOD SetSubject(const nsACString & aSubject) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSubject(aSubject); } \
  NS_IMETHOD GetNewestMsgDate(uint32_t *aNewestMsgDate) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNewestMsgDate(aNewestMsgDate); } \
  NS_IMETHOD SetNewestMsgDate(uint32_t aNewestMsgDate) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNewestMsgDate(aNewestMsgDate); } \
  NS_IMETHOD GetNumChildren(uint32_t *aNumChildren) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNumChildren(aNumChildren); } \
  NS_IMETHOD GetNumUnreadChildren(uint32_t *aNumUnreadChildren) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNumUnreadChildren(aNumUnreadChildren); } \
  NS_IMETHOD AddChild(nsIMsgDBHdr *child, nsIMsgDBHdr *inReplyTo, bool threadInThread, nsIDBChangeAnnouncer *announcer) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddChild(child, inReplyTo, threadInThread, announcer); } \
  NS_IMETHOD GetChildKeyAt(int32_t index, nsMsgKey *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChildKeyAt(index, _retval); } \
  NS_IMETHOD GetChild(nsMsgKey msgKey, nsIMsgDBHdr * *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChild(msgKey, _retval); } \
  NS_IMETHOD GetChildHdrAt(int32_t index, nsIMsgDBHdr * *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChildHdrAt(index, _retval); } \
  NS_IMETHOD GetRootHdr(int32_t *index, nsIMsgDBHdr * *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRootHdr(index, _retval); } \
  NS_IMETHOD RemoveChildAt(int32_t index) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveChildAt(index); } \
  NS_IMETHOD RemoveChildHdr(nsIMsgDBHdr *child, nsIDBChangeAnnouncer *announcer) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveChildHdr(child, announcer); } \
  NS_IMETHOD MarkChildRead(bool bRead) { return !_to ? NS_ERROR_NULL_POINTER : _to->MarkChildRead(bRead); } \
  NS_IMETHOD GetFirstUnreadChild(nsIMsgDBHdr * *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFirstUnreadChild(_retval); } \
  NS_IMETHOD EnumerateMessages(nsMsgKey parent, nsISimpleEnumerator * *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->EnumerateMessages(parent, _retval); } 

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

/* Header file */
class nsMsgThread : public nsIMsgThread
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGTHREAD

  nsMsgThread();

private:
  ~nsMsgThread();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgThread, nsIMsgThread)

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

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

/* attribute nsMsgKey threadKey; */
NS_IMETHODIMP nsMsgThread::GetThreadKey(nsMsgKey *aThreadKey)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgThread::SetThreadKey(nsMsgKey aThreadKey)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* attribute ACString subject; */
NS_IMETHODIMP nsMsgThread::GetSubject(nsACString & aSubject)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgThread::SetSubject(const nsACString & aSubject)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long newestMsgDate; */
NS_IMETHODIMP nsMsgThread::GetNewestMsgDate(uint32_t *aNewestMsgDate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgThread::SetNewestMsgDate(uint32_t aNewestMsgDate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long numChildren; */
NS_IMETHODIMP nsMsgThread::GetNumChildren(uint32_t *aNumChildren)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long numUnreadChildren; */
NS_IMETHODIMP nsMsgThread::GetNumUnreadChildren(uint32_t *aNumUnreadChildren)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addChild (in nsIMsgDBHdr child, in nsIMsgDBHdr inReplyTo, in boolean threadInThread, in nsIDBChangeAnnouncer announcer); */
NS_IMETHODIMP nsMsgThread::AddChild(nsIMsgDBHdr *child, nsIMsgDBHdr *inReplyTo, bool threadInThread, nsIDBChangeAnnouncer *announcer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsMsgKey getChildKeyAt (in long index); */
NS_IMETHODIMP nsMsgThread::GetChildKeyAt(int32_t index, nsMsgKey *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgDBHdr getChild (in nsMsgKey msgKey); */
NS_IMETHODIMP nsMsgThread::GetChild(nsMsgKey msgKey, nsIMsgDBHdr * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgDBHdr getChildHdrAt (in long index); */
NS_IMETHODIMP nsMsgThread::GetChildHdrAt(int32_t index, nsIMsgDBHdr * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgDBHdr getRootHdr (out long index); */
NS_IMETHODIMP nsMsgThread::GetRootHdr(int32_t *index, nsIMsgDBHdr * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeChildAt (in long index); */
NS_IMETHODIMP nsMsgThread::RemoveChildAt(int32_t index)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeChildHdr (in nsIMsgDBHdr child, in nsIDBChangeAnnouncer announcer); */
NS_IMETHODIMP nsMsgThread::RemoveChildHdr(nsIMsgDBHdr *child, nsIDBChangeAnnouncer *announcer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void markChildRead (in boolean bRead); */
NS_IMETHODIMP nsMsgThread::MarkChildRead(bool bRead)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgDBHdr getFirstUnreadChild (); */
NS_IMETHODIMP nsMsgThread::GetFirstUnreadChild(nsIMsgDBHdr * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator enumerateMessages (in nsMsgKey parent); */
NS_IMETHODIMP nsMsgThread::EnumerateMessages(nsMsgKey parent, nsISimpleEnumerator * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIMsgThread_h__ */
