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

#ifndef __gen_nsIMessage_h__
#define __gen_nsIMessage_h__

#include "nsIMsgHdr.h"

class nsIMsgFolder; /* forward declaration */


/* starting interface:    nsIMessage */
#define NS_IMESSAGE_IID_STR "5b926bb4-f839-11d2-8a5f-0060b0fc04d2"

#define NS_IMESSAGE_IID \
  {0x5b926bb4, 0xf839, 0x11d2, \
    { 0x8a, 0x5f, 0x00, 0x60, 0xb0, 0xfc, 0x04, 0xd2 }}

class NS_NO_VTABLE nsIMessage : public nsIMsgHdr {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMESSAGE_IID)

  /* readonly attribute nsMsgKey msgKey; */
  NS_IMETHOD GetMsgKey(nsMsgKey *aMsgKey) = 0;

  /* attribute nsIMsgFolder msgFolder; */
  NS_IMETHOD GetMsgFolder(nsIMsgFolder * *aMsgFolder) = 0;
  NS_IMETHOD SetMsgFolder(nsIMsgFolder * aMsgFolder) = 0;

  enum { MailMessage = 0U };

  enum { NewsMessage = 1U };

  /* attribute unsigned long messageType; */
  NS_IMETHOD GetMessageType(PRUint32 *aMessageType) = 0;
  NS_IMETHOD SetMessageType(PRUint32 aMessageType) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMESSAGE \
  NS_IMETHOD GetMsgKey(nsMsgKey *aMsgKey); \
  NS_IMETHOD GetMsgFolder(nsIMsgFolder * *aMsgFolder); \
  NS_IMETHOD SetMsgFolder(nsIMsgFolder * aMsgFolder); \
  NS_IMETHOD GetMessageType(PRUint32 *aMessageType); \
  NS_IMETHOD SetMessageType(PRUint32 aMessageType); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMESSAGE(_to) \
  NS_IMETHOD GetMsgKey(nsMsgKey *aMsgKey) { return _to ## GetMsgKey(aMsgKey); } \
  NS_IMETHOD GetMsgFolder(nsIMsgFolder * *aMsgFolder) { return _to ## GetMsgFolder(aMsgFolder); } \
  NS_IMETHOD SetMsgFolder(nsIMsgFolder * aMsgFolder) { return _to ## SetMsgFolder(aMsgFolder); } \
  NS_IMETHOD GetMessageType(PRUint32 *aMessageType) { return _to ## GetMessageType(aMessageType); } \
  NS_IMETHOD SetMessageType(PRUint32 aMessageType) { return _to ## SetMessageType(aMessageType); } 

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

/* Header file */
class nsMessage : public nsIMessage
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMESSAGE

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMessage, nsIMessage)

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

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

/* readonly attribute nsMsgKey msgKey; */
NS_IMETHODIMP nsMessage::GetMsgKey(nsMsgKey *aMsgKey)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIMsgFolder msgFolder; */
NS_IMETHODIMP nsMessage::GetMsgFolder(nsIMsgFolder * *aMsgFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMessage::SetMsgFolder(nsIMsgFolder * aMsgFolder)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long messageType; */
NS_IMETHODIMP nsMessage::GetMessageType(PRUint32 *aMessageType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMessage::SetMessageType(PRUint32 aMessageType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIDBMessage */
#define NS_IDBMESSAGE_IID_STR "82702556-01a2-11d3-8a69-0060b0fc04d2"

#define NS_IDBMESSAGE_IID \
  {0x82702556, 0x01a2, 0x11d3, \
    { 0x8a, 0x69, 0x00, 0x60, 0xb0, 0xfc, 0x04, 0xd2 }}

class NS_NO_VTABLE nsIDBMessage : public nsIMessage {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IDBMESSAGE_IID)

  /* attribute nsIMsgDBHdr msgDBHdr; */
  NS_IMETHOD GetMsgDBHdr(nsIMsgDBHdr * *aMsgDBHdr) = 0;
  NS_IMETHOD SetMsgDBHdr(nsIMsgDBHdr * aMsgDBHdr) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIDBMESSAGE \
  NS_IMETHOD GetMsgDBHdr(nsIMsgDBHdr * *aMsgDBHdr); \
  NS_IMETHOD SetMsgDBHdr(nsIMsgDBHdr * aMsgDBHdr); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIDBMESSAGE(_to) \
  NS_IMETHOD GetMsgDBHdr(nsIMsgDBHdr * *aMsgDBHdr) { return _to ## GetMsgDBHdr(aMsgDBHdr); } \
  NS_IMETHOD SetMsgDBHdr(nsIMsgDBHdr * aMsgDBHdr) { return _to ## SetMsgDBHdr(aMsgDBHdr); } 

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

/* Header file */
class nsDBMessage : public nsIDBMessage
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIDBMESSAGE

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsDBMessage, nsIDBMessage)

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

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

/* attribute nsIMsgDBHdr msgDBHdr; */
NS_IMETHODIMP nsDBMessage::GetMsgDBHdr(nsIMsgDBHdr * *aMsgDBHdr)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsDBMessage::SetMsgDBHdr(nsIMsgDBHdr * aMsgDBHdr)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIMessage_h__ */
