/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM c:/OOo_Build/OOD680_m5/moz/wntmsci10.pro/misc/build/mozilla/mailnews/mime/public/nsIMimeEmitter.idl
 */

#ifndef __gen_nsIMimeEmitter_h__
#define __gen_nsIMimeEmitter_h__


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

#ifndef __gen_nsrootidl_h__
#include "nsrootidl.h"
#endif

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

class nsIInputStream; /* forward declaration */

class nsIURI; /* forward declaration */

class nsIStreamListener; /* forward declaration */

class nsIChannel; /* forward declaration */


/* starting interface:    nsMimeHeaderDisplayTypes */
#define NS_MIMEHEADERDISPLAYTYPES_IID_STR "39e329e2-357f-11d3-8efd-00a024a7d144"

#define NS_MIMEHEADERDISPLAYTYPES_IID \
  {0x39e329e2, 0x357f, 0x11d3, \
    { 0x8e, 0xfd, 0x00, 0xa0, 0x24, 0xa7, 0xd1, 0x44 }}

class NS_NO_VTABLE nsMimeHeaderDisplayTypes {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_MIMEHEADERDISPLAYTYPES_IID)

  enum { MicroHeaders = 0 };

  enum { NormalHeaders = 1 };

  enum { AllHeaders = 2 };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSMIMEHEADERDISPLAYTYPES \

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

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

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

/* Header file */
class _MYCLASS_ : public nsMimeHeaderDisplayTypes
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSMIMEHEADERDISPLAYTYPES

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, nsMimeHeaderDisplayTypes)

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

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

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

//#define NS_IMIME_MISC_STATUS_KEY       "@mozilla.org/messenger/mimestatus;1?"
#define NS_IMIME_MISC_STATUS_KEY       "@mozilla.org/MimeMiscStatus;1?type="

/* starting interface:    nsIMimeEmitter */
#define NS_IMIMEEMITTER_IID_STR "d01d7b59-dccd-11d2-a411-00805f613c79"

#define NS_IMIMEEMITTER_IID \
  {0xd01d7b59, 0xdccd, 0x11d2, \
    { 0xa4, 0x11, 0x00, 0x80, 0x5f, 0x61, 0x3c, 0x79 }}

class NS_NO_VTABLE nsIMimeEmitter : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMIMEEMITTER_IID)

  /* void Initialize (in nsIURI url, in nsIChannel aChannel, in long aFormat); */
  NS_IMETHOD Initialize(nsIURI *url, nsIChannel *aChannel, PRInt32 aFormat) = 0;

  /* void Complete (); */
  NS_IMETHOD Complete(void) = 0;

  /* void SetPipe (in nsIInputStream inputStream, in nsIOutputStream outStream); */
  NS_IMETHOD SetPipe(nsIInputStream *inputStream, nsIOutputStream *outStream) = 0;

  /* void SetOutputListener (in nsIStreamListener listener); */
  NS_IMETHOD SetOutputListener(nsIStreamListener *listener) = 0;

  /* nsIStreamListener GetOutputListener (); */
  NS_IMETHOD GetOutputListener(nsIStreamListener **_retval) = 0;

  /* void StartHeader (in PRBool rootMailHeader, in PRBool headerOnly, [const] in string msgID, [const] in string outCharset); */
  NS_IMETHOD StartHeader(PRBool rootMailHeader, PRBool headerOnly, const char *msgID, const char *outCharset) = 0;

  /* void AddHeaderField ([const] in string field, [const] in string value); */
  NS_IMETHOD AddHeaderField(const char *field, const char *value) = 0;

  /* void addAllHeaders ([const] in string allheaders, [const] in long allheadersize); */
  NS_IMETHOD AddAllHeaders(const char *allheaders, const PRInt32 allheadersize) = 0;

  /* void WriteHTMLHeaders (); */
  NS_IMETHOD WriteHTMLHeaders(void) = 0;

  /* void EndHeader (); */
  NS_IMETHOD EndHeader(void) = 0;

  /* void UpdateCharacterSet ([const] in string aCharset); */
  NS_IMETHOD UpdateCharacterSet(const char *aCharset) = 0;

  /* void StartAttachment ([const] in string name, [const] in string contentType, [const] in string url, in PRBool aNotDownloaded); */
  NS_IMETHOD StartAttachment(const char *name, const char *contentType, const char *url, PRBool aNotDownloaded) = 0;

  /* void AddAttachmentField ([const] in string field, [const] in string value); */
  NS_IMETHOD AddAttachmentField(const char *field, const char *value) = 0;

  /* void EndAttachment (); */
  NS_IMETHOD EndAttachment(void) = 0;

  /* void EndAllAttachments (); */
  NS_IMETHOD EndAllAttachments(void) = 0;

  /* void StartBody (in PRBool bodyOnly, [const] in string msgID, [const] in string outCharset); */
  NS_IMETHOD StartBody(PRBool bodyOnly, const char *msgID, const char *outCharset) = 0;

  /* void WriteBody ([const] in string buf, in PRUint32 size, out PRUint32 amountWritten); */
  NS_IMETHOD WriteBody(const char *buf, PRUint32 size, PRUint32 *amountWritten) = 0;

  /* void EndBody (); */
  NS_IMETHOD EndBody(void) = 0;

  /* void Write ([const] in string buf, in PRUint32 size, out PRUint32 amountWritten); */
  NS_IMETHOD Write(const char *buf, PRUint32 size, PRUint32 *amountWritten) = 0;

  /* void UtilityWrite ([const] in string buf); */
  NS_IMETHOD UtilityWrite(const char *buf) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMIMEEMITTER \
  NS_IMETHOD Initialize(nsIURI *url, nsIChannel *aChannel, PRInt32 aFormat); \
  NS_IMETHOD Complete(void); \
  NS_IMETHOD SetPipe(nsIInputStream *inputStream, nsIOutputStream *outStream); \
  NS_IMETHOD SetOutputListener(nsIStreamListener *listener); \
  NS_IMETHOD GetOutputListener(nsIStreamListener **_retval); \
  NS_IMETHOD StartHeader(PRBool rootMailHeader, PRBool headerOnly, const char *msgID, const char *outCharset); \
  NS_IMETHOD AddHeaderField(const char *field, const char *value); \
  NS_IMETHOD AddAllHeaders(const char *allheaders, const PRInt32 allheadersize); \
  NS_IMETHOD WriteHTMLHeaders(void); \
  NS_IMETHOD EndHeader(void); \
  NS_IMETHOD UpdateCharacterSet(const char *aCharset); \
  NS_IMETHOD StartAttachment(const char *name, const char *contentType, const char *url, PRBool aNotDownloaded); \
  NS_IMETHOD AddAttachmentField(const char *field, const char *value); \
  NS_IMETHOD EndAttachment(void); \
  NS_IMETHOD EndAllAttachments(void); \
  NS_IMETHOD StartBody(PRBool bodyOnly, const char *msgID, const char *outCharset); \
  NS_IMETHOD WriteBody(const char *buf, PRUint32 size, PRUint32 *amountWritten); \
  NS_IMETHOD EndBody(void); \
  NS_IMETHOD Write(const char *buf, PRUint32 size, PRUint32 *amountWritten); \
  NS_IMETHOD UtilityWrite(const char *buf); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMIMEEMITTER(_to) \
  NS_IMETHOD Initialize(nsIURI *url, nsIChannel *aChannel, PRInt32 aFormat) { return _to Initialize(url, aChannel, aFormat); } \
  NS_IMETHOD Complete(void) { return _to Complete(); } \
  NS_IMETHOD SetPipe(nsIInputStream *inputStream, nsIOutputStream *outStream) { return _to SetPipe(inputStream, outStream); } \
  NS_IMETHOD SetOutputListener(nsIStreamListener *listener) { return _to SetOutputListener(listener); } \
  NS_IMETHOD GetOutputListener(nsIStreamListener **_retval) { return _to GetOutputListener(_retval); } \
  NS_IMETHOD StartHeader(PRBool rootMailHeader, PRBool headerOnly, const char *msgID, const char *outCharset) { return _to StartHeader(rootMailHeader, headerOnly, msgID, outCharset); } \
  NS_IMETHOD AddHeaderField(const char *field, const char *value) { return _to AddHeaderField(field, value); } \
  NS_IMETHOD AddAllHeaders(const char *allheaders, const PRInt32 allheadersize) { return _to AddAllHeaders(allheaders, allheadersize); } \
  NS_IMETHOD WriteHTMLHeaders(void) { return _to WriteHTMLHeaders(); } \
  NS_IMETHOD EndHeader(void) { return _to EndHeader(); } \
  NS_IMETHOD UpdateCharacterSet(const char *aCharset) { return _to UpdateCharacterSet(aCharset); } \
  NS_IMETHOD StartAttachment(const char *name, const char *contentType, const char *url, PRBool aNotDownloaded) { return _to StartAttachment(name, contentType, url, aNotDownloaded); } \
  NS_IMETHOD AddAttachmentField(const char *field, const char *value) { return _to AddAttachmentField(field, value); } \
  NS_IMETHOD EndAttachment(void) { return _to EndAttachment(); } \
  NS_IMETHOD EndAllAttachments(void) { return _to EndAllAttachments(); } \
  NS_IMETHOD StartBody(PRBool bodyOnly, const char *msgID, const char *outCharset) { return _to StartBody(bodyOnly, msgID, outCharset); } \
  NS_IMETHOD WriteBody(const char *buf, PRUint32 size, PRUint32 *amountWritten) { return _to WriteBody(buf, size, amountWritten); } \
  NS_IMETHOD EndBody(void) { return _to EndBody(); } \
  NS_IMETHOD Write(const char *buf, PRUint32 size, PRUint32 *amountWritten) { return _to Write(buf, size, amountWritten); } \
  NS_IMETHOD UtilityWrite(const char *buf) { return _to UtilityWrite(buf); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMIMEEMITTER(_to) \
  NS_IMETHOD Initialize(nsIURI *url, nsIChannel *aChannel, PRInt32 aFormat) { return !_to ? NS_ERROR_NULL_POINTER : _to->Initialize(url, aChannel, aFormat); } \
  NS_IMETHOD Complete(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Complete(); } \
  NS_IMETHOD SetPipe(nsIInputStream *inputStream, nsIOutputStream *outStream) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPipe(inputStream, outStream); } \
  NS_IMETHOD SetOutputListener(nsIStreamListener *listener) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetOutputListener(listener); } \
  NS_IMETHOD GetOutputListener(nsIStreamListener **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOutputListener(_retval); } \
  NS_IMETHOD StartHeader(PRBool rootMailHeader, PRBool headerOnly, const char *msgID, const char *outCharset) { return !_to ? NS_ERROR_NULL_POINTER : _to->StartHeader(rootMailHeader, headerOnly, msgID, outCharset); } \
  NS_IMETHOD AddHeaderField(const char *field, const char *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddHeaderField(field, value); } \
  NS_IMETHOD AddAllHeaders(const char *allheaders, const PRInt32 allheadersize) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddAllHeaders(allheaders, allheadersize); } \
  NS_IMETHOD WriteHTMLHeaders(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->WriteHTMLHeaders(); } \
  NS_IMETHOD EndHeader(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->EndHeader(); } \
  NS_IMETHOD UpdateCharacterSet(const char *aCharset) { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateCharacterSet(aCharset); } \
  NS_IMETHOD StartAttachment(const char *name, const char *contentType, const char *url, PRBool aNotDownloaded) { return !_to ? NS_ERROR_NULL_POINTER : _to->StartAttachment(name, contentType, url, aNotDownloaded); } \
  NS_IMETHOD AddAttachmentField(const char *field, const char *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddAttachmentField(field, value); } \
  NS_IMETHOD EndAttachment(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->EndAttachment(); } \
  NS_IMETHOD EndAllAttachments(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->EndAllAttachments(); } \
  NS_IMETHOD StartBody(PRBool bodyOnly, const char *msgID, const char *outCharset) { return !_to ? NS_ERROR_NULL_POINTER : _to->StartBody(bodyOnly, msgID, outCharset); } \
  NS_IMETHOD WriteBody(const char *buf, PRUint32 size, PRUint32 *amountWritten) { return !_to ? NS_ERROR_NULL_POINTER : _to->WriteBody(buf, size, amountWritten); } \
  NS_IMETHOD EndBody(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->EndBody(); } \
  NS_IMETHOD Write(const char *buf, PRUint32 size, PRUint32 *amountWritten) { return !_to ? NS_ERROR_NULL_POINTER : _to->Write(buf, size, amountWritten); } \
  NS_IMETHOD UtilityWrite(const char *buf) { return !_to ? NS_ERROR_NULL_POINTER : _to->UtilityWrite(buf); } 

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

/* Header file */
class nsMimeEmitter : public nsIMimeEmitter
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMIMEEMITTER

  nsMimeEmitter();

private:
  ~nsMimeEmitter();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMimeEmitter, nsIMimeEmitter)

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

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

/* void Initialize (in nsIURI url, in nsIChannel aChannel, in long aFormat); */
NS_IMETHODIMP nsMimeEmitter::Initialize(nsIURI *url, nsIChannel *aChannel, PRInt32 aFormat)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void Complete (); */
NS_IMETHODIMP nsMimeEmitter::Complete()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void SetPipe (in nsIInputStream inputStream, in nsIOutputStream outStream); */
NS_IMETHODIMP nsMimeEmitter::SetPipe(nsIInputStream *inputStream, nsIOutputStream *outStream)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void SetOutputListener (in nsIStreamListener listener); */
NS_IMETHODIMP nsMimeEmitter::SetOutputListener(nsIStreamListener *listener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIStreamListener GetOutputListener (); */
NS_IMETHODIMP nsMimeEmitter::GetOutputListener(nsIStreamListener **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void StartHeader (in PRBool rootMailHeader, in PRBool headerOnly, [const] in string msgID, [const] in string outCharset); */
NS_IMETHODIMP nsMimeEmitter::StartHeader(PRBool rootMailHeader, PRBool headerOnly, const char *msgID, const char *outCharset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void AddHeaderField ([const] in string field, [const] in string value); */
NS_IMETHODIMP nsMimeEmitter::AddHeaderField(const char *field, const char *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addAllHeaders ([const] in string allheaders, [const] in long allheadersize); */
NS_IMETHODIMP nsMimeEmitter::AddAllHeaders(const char *allheaders, const PRInt32 allheadersize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void WriteHTMLHeaders (); */
NS_IMETHODIMP nsMimeEmitter::WriteHTMLHeaders()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void EndHeader (); */
NS_IMETHODIMP nsMimeEmitter::EndHeader()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void UpdateCharacterSet ([const] in string aCharset); */
NS_IMETHODIMP nsMimeEmitter::UpdateCharacterSet(const char *aCharset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void StartAttachment ([const] in string name, [const] in string contentType, [const] in string url, in PRBool aNotDownloaded); */
NS_IMETHODIMP nsMimeEmitter::StartAttachment(const char *name, const char *contentType, const char *url, PRBool aNotDownloaded)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void AddAttachmentField ([const] in string field, [const] in string value); */
NS_IMETHODIMP nsMimeEmitter::AddAttachmentField(const char *field, const char *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void EndAttachment (); */
NS_IMETHODIMP nsMimeEmitter::EndAttachment()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void EndAllAttachments (); */
NS_IMETHODIMP nsMimeEmitter::EndAllAttachments()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void StartBody (in PRBool bodyOnly, [const] in string msgID, [const] in string outCharset); */
NS_IMETHODIMP nsMimeEmitter::StartBody(PRBool bodyOnly, const char *msgID, const char *outCharset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void WriteBody ([const] in string buf, in PRUint32 size, out PRUint32 amountWritten); */
NS_IMETHODIMP nsMimeEmitter::WriteBody(const char *buf, PRUint32 size, PRUint32 *amountWritten)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void EndBody (); */
NS_IMETHODIMP nsMimeEmitter::EndBody()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void Write ([const] in string buf, in PRUint32 size, out PRUint32 amountWritten); */
NS_IMETHODIMP nsMimeEmitter::Write(const char *buf, PRUint32 size, PRUint32 *amountWritten)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void UtilityWrite ([const] in string buf); */
NS_IMETHODIMP nsMimeEmitter::UtilityWrite(const char *buf)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIMimeEmitter_h__ */
