/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM ../../../dist/idl/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 "84052876-90e9-4e21-ad38-13e2bb751d8f"

#define NS_IMSGTHREAD_IID \
  {0x84052876, 0x90e9, 0x4e21, \
    { 0xad, 0x38, 0x13, 0xe2, 0xbb, 0x75, 0x1d, 0x8f }}

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 unsigned long index); */
  NS_IMETHOD GetChildKeyAt(uint32_t index, nsMsgKey *_retval) = 0;

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

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

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

  /* void removeChildAt (in unsigned long index); */
  NS_IMETHOD RemoveChildAt(uint32_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) override; \
  NS_IMETHOD SetThreadKey(nsMsgKey aThreadKey) override; \
  NS_IMETHOD GetFlags(uint32_t *aFlags) override; \
  NS_IMETHOD SetFlags(uint32_t aFlags) override; \
  NS_IMETHOD GetSubject(nsACString & aSubject) override; \
  NS_IMETHOD SetSubject(const nsACString & aSubject) override; \
  NS_IMETHOD GetNewestMsgDate(uint32_t *aNewestMsgDate) override; \
  NS_IMETHOD SetNewestMsgDate(uint32_t aNewestMsgDate) override; \
  NS_IMETHOD GetNumChildren(uint32_t *aNumChildren) override; \
  NS_IMETHOD GetNumUnreadChildren(uint32_t *aNumUnreadChildren) override; \
  NS_IMETHOD AddChild(nsIMsgDBHdr *child, nsIMsgDBHdr *inReplyTo, bool threadInThread, nsIDBChangeAnnouncer *announcer) override; \
  NS_IMETHOD GetChildKeyAt(uint32_t index, nsMsgKey *_retval) override; \
  NS_IMETHOD GetChild(nsMsgKey msgKey, nsIMsgDBHdr * *_retval) override; \
  NS_IMETHOD GetChildHdrAt(uint32_t index, nsIMsgDBHdr * *_retval) override; \
  NS_IMETHOD GetRootHdr(int32_t *index, nsIMsgDBHdr * *_retval) override; \
  NS_IMETHOD RemoveChildAt(uint32_t index) override; \
  NS_IMETHOD RemoveChildHdr(nsIMsgDBHdr *child, nsIDBChangeAnnouncer *announcer) override; \
  NS_IMETHOD MarkChildRead(bool bRead) override; \
  NS_IMETHOD GetFirstUnreadChild(nsIMsgDBHdr * *_retval) override; \
  NS_IMETHOD EnumerateMessages(nsMsgKey parent, nsISimpleEnumerator * *_retval) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_NSIMSGTHREAD \
  NS_METHOD GetThreadKey(nsMsgKey *aThreadKey); \
  NS_METHOD SetThreadKey(nsMsgKey aThreadKey); \
  NS_METHOD GetFlags(uint32_t *aFlags); \
  NS_METHOD SetFlags(uint32_t aFlags); \
  NS_METHOD GetSubject(nsACString & aSubject); \
  NS_METHOD SetSubject(const nsACString & aSubject); \
  NS_METHOD GetNewestMsgDate(uint32_t *aNewestMsgDate); \
  NS_METHOD SetNewestMsgDate(uint32_t aNewestMsgDate); \
  NS_METHOD GetNumChildren(uint32_t *aNumChildren); \
  NS_METHOD GetNumUnreadChildren(uint32_t *aNumUnreadChildren); \
  NS_METHOD AddChild(nsIMsgDBHdr *child, nsIMsgDBHdr *inReplyTo, bool threadInThread, nsIDBChangeAnnouncer *announcer); \
  NS_METHOD GetChildKeyAt(uint32_t index, nsMsgKey *_retval); \
  NS_METHOD GetChild(nsMsgKey msgKey, nsIMsgDBHdr * *_retval); \
  NS_METHOD GetChildHdrAt(uint32_t index, nsIMsgDBHdr * *_retval); \
  NS_METHOD GetRootHdr(int32_t *index, nsIMsgDBHdr * *_retval); \
  NS_METHOD RemoveChildAt(uint32_t index); \
  NS_METHOD RemoveChildHdr(nsIMsgDBHdr *child, nsIDBChangeAnnouncer *announcer); \
  NS_METHOD MarkChildRead(bool bRead); \
  NS_METHOD GetFirstUnreadChild(nsIMsgDBHdr * *_retval); \
  NS_METHOD 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) override { return _to GetThreadKey(aThreadKey); } \
  NS_IMETHOD SetThreadKey(nsMsgKey aThreadKey) override { return _to SetThreadKey(aThreadKey); } \
  NS_IMETHOD GetFlags(uint32_t *aFlags) override { return _to GetFlags(aFlags); } \
  NS_IMETHOD SetFlags(uint32_t aFlags) override { return _to SetFlags(aFlags); } \
  NS_IMETHOD GetSubject(nsACString & aSubject) override { return _to GetSubject(aSubject); } \
  NS_IMETHOD SetSubject(const nsACString & aSubject) override { return _to SetSubject(aSubject); } \
  NS_IMETHOD GetNewestMsgDate(uint32_t *aNewestMsgDate) override { return _to GetNewestMsgDate(aNewestMsgDate); } \
  NS_IMETHOD SetNewestMsgDate(uint32_t aNewestMsgDate) override { return _to SetNewestMsgDate(aNewestMsgDate); } \
  NS_IMETHOD GetNumChildren(uint32_t *aNumChildren) override { return _to GetNumChildren(aNumChildren); } \
  NS_IMETHOD GetNumUnreadChildren(uint32_t *aNumUnreadChildren) override { return _to GetNumUnreadChildren(aNumUnreadChildren); } \
  NS_IMETHOD AddChild(nsIMsgDBHdr *child, nsIMsgDBHdr *inReplyTo, bool threadInThread, nsIDBChangeAnnouncer *announcer) override { return _to AddChild(child, inReplyTo, threadInThread, announcer); } \
  NS_IMETHOD GetChildKeyAt(uint32_t index, nsMsgKey *_retval) override { return _to GetChildKeyAt(index, _retval); } \
  NS_IMETHOD GetChild(nsMsgKey msgKey, nsIMsgDBHdr * *_retval) override { return _to GetChild(msgKey, _retval); } \
  NS_IMETHOD GetChildHdrAt(uint32_t index, nsIMsgDBHdr * *_retval) override { return _to GetChildHdrAt(index, _retval); } \
  NS_IMETHOD GetRootHdr(int32_t *index, nsIMsgDBHdr * *_retval) override { return _to GetRootHdr(index, _retval); } \
  NS_IMETHOD RemoveChildAt(uint32_t index) override { return _to RemoveChildAt(index); } \
  NS_IMETHOD RemoveChildHdr(nsIMsgDBHdr *child, nsIDBChangeAnnouncer *announcer) override { return _to RemoveChildHdr(child, announcer); } \
  NS_IMETHOD MarkChildRead(bool bRead) override { return _to MarkChildRead(bRead); } \
  NS_IMETHOD GetFirstUnreadChild(nsIMsgDBHdr * *_retval) override { return _to GetFirstUnreadChild(_retval); } \
  NS_IMETHOD EnumerateMessages(nsMsgKey parent, nsISimpleEnumerator * *_retval) override { 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) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetThreadKey(aThreadKey); } \
  NS_IMETHOD SetThreadKey(nsMsgKey aThreadKey) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetThreadKey(aThreadKey); } \
  NS_IMETHOD GetFlags(uint32_t *aFlags) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFlags(aFlags); } \
  NS_IMETHOD SetFlags(uint32_t aFlags) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFlags(aFlags); } \
  NS_IMETHOD GetSubject(nsACString & aSubject) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSubject(aSubject); } \
  NS_IMETHOD SetSubject(const nsACString & aSubject) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSubject(aSubject); } \
  NS_IMETHOD GetNewestMsgDate(uint32_t *aNewestMsgDate) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNewestMsgDate(aNewestMsgDate); } \
  NS_IMETHOD SetNewestMsgDate(uint32_t aNewestMsgDate) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNewestMsgDate(aNewestMsgDate); } \
  NS_IMETHOD GetNumChildren(uint32_t *aNumChildren) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNumChildren(aNumChildren); } \
  NS_IMETHOD GetNumUnreadChildren(uint32_t *aNumUnreadChildren) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNumUnreadChildren(aNumUnreadChildren); } \
  NS_IMETHOD AddChild(nsIMsgDBHdr *child, nsIMsgDBHdr *inReplyTo, bool threadInThread, nsIDBChangeAnnouncer *announcer) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddChild(child, inReplyTo, threadInThread, announcer); } \
  NS_IMETHOD GetChildKeyAt(uint32_t index, nsMsgKey *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChildKeyAt(index, _retval); } \
  NS_IMETHOD GetChild(nsMsgKey msgKey, nsIMsgDBHdr * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChild(msgKey, _retval); } \
  NS_IMETHOD GetChildHdrAt(uint32_t index, nsIMsgDBHdr * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetChildHdrAt(index, _retval); } \
  NS_IMETHOD GetRootHdr(int32_t *index, nsIMsgDBHdr * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRootHdr(index, _retval); } \
  NS_IMETHOD RemoveChildAt(uint32_t index) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveChildAt(index); } \
  NS_IMETHOD RemoveChildHdr(nsIMsgDBHdr *child, nsIDBChangeAnnouncer *announcer) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveChildHdr(child, announcer); } \
  NS_IMETHOD MarkChildRead(bool bRead) override { return !_to ? NS_ERROR_NULL_POINTER : _to->MarkChildRead(bRead); } \
  NS_IMETHOD GetFirstUnreadChild(nsIMsgDBHdr * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFirstUnreadChild(_retval); } \
  NS_IMETHOD EnumerateMessages(nsMsgKey parent, nsISimpleEnumerator * *_retval) override { 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_ISUPPORTS(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 unsigned long index); */
NS_IMETHODIMP nsMsgThread::GetChildKeyAt(uint32_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 unsigned long index); */
NS_IMETHODIMP nsMsgThread::GetChildHdrAt(uint32_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 unsigned long index); */
NS_IMETHODIMP nsMsgThread::RemoveChildAt(uint32_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__ */
