/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM /tmp/comm-release/mailnews/mime/public/nsIMimeConverter.idl
 */

#ifndef __gen_nsIMimeConverter_h__
#define __gen_nsIMimeConverter_h__


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

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif

/* Opaque objects used by the encoder/decoder to store state. */
typedef struct MimeDecoderData MimeDecoderData;
typedef struct MimeEncoderData MimeEncoderData;
typedef int (*PR_CALLBACK MimeConverterOutputCallback)
    (const char *buf, int32_t size, void *closure);

/* starting interface:    nsIMimeConverter */
#define NS_IMIMECONVERTER_IID_STR "879f3aeb-b48a-40c1-ae94-ed8f6ecdbc90"

#define NS_IMIMECONVERTER_IID \
  {0x879f3aeb, 0xb48a, 0x40c1, \
    { 0xae, 0x94, 0xed, 0x8f, 0x6e, 0xcd, 0xbc, 0x90 }}

class NS_NO_VTABLE nsIMimeConverter : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMIMECONVERTER_IID)

  enum {
    MIME_ENCODED_WORD_SIZE = 72,
    MAX_CHARSET_NAME_LENGTH = 64
  };

  /* string encodeMimePartIIStr (in string header, in boolean structured, in string mailCharset, in long fieldnamelen, in long encodedWordSize); */
  NS_IMETHOD EncodeMimePartIIStr(const char * header, bool structured, const char * mailCharset, int32_t fieldnamelen, int32_t encodedWordSize, char * *_retval) = 0;

  /* string encodeMimePartIIStr_UTF8 (in AUTF8String header, in boolean structured, in string mailCharset, in long fieldnamelen, in long encodedWordSize); */
  NS_IMETHOD EncodeMimePartIIStr_UTF8(const nsACString & header, bool structured, const char * mailCharset, int32_t fieldnamelen, int32_t encodedWordSize, char * *_retval) = 0;

  /* [noscript] string decodeMimeHeaderToCharPtr (in string header, in string default_charset, in boolean override_charset, in boolean eatContinuations); */
  NS_IMETHOD DecodeMimeHeaderToCharPtr(const char * header, const char * default_charset, bool override_charset, bool eatContinuations, char * *_retval) = 0;

  /* AString decodeMimeHeader (in string header, in string default_charset, in boolean override_charset, in boolean eatContinuations); */
  NS_IMETHOD DecodeMimeHeader(const char * header, const char * default_charset, bool override_charset, bool eatContinuations, nsAString & _retval) = 0;

  /* [noscript] MimeEncoderDataPtr B64EncoderInit (in MimeConverterOutputCallback output_fn, in voidPtr closure); */
  NS_IMETHOD B64EncoderInit(MimeConverterOutputCallback output_fn, void *closure, MimeEncoderData **_retval) = 0;

  /* [noscript] MimeEncoderDataPtr QPEncoderInit (in MimeConverterOutputCallback output_fn, in voidPtr closure); */
  NS_IMETHOD QPEncoderInit(MimeConverterOutputCallback output_fn, void *closure, MimeEncoderData **_retval) = 0;

  /* [noscript] void EncoderDestroy (in MimeEncoderDataPtr data, in boolean abort_p); */
  NS_IMETHOD EncoderDestroy(MimeEncoderData *data, bool abort_p) = 0;

  /* [noscript] long EncoderWrite (in MimeEncoderDataPtr data, in string buffer, in long size); */
  NS_IMETHOD EncoderWrite(MimeEncoderData *data, const char * buffer, int32_t size, int32_t *_retval) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMimeConverter, NS_IMIMECONVERTER_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMIMECONVERTER \
  NS_IMETHOD EncodeMimePartIIStr(const char * header, bool structured, const char * mailCharset, int32_t fieldnamelen, int32_t encodedWordSize, char * *_retval); \
  NS_IMETHOD EncodeMimePartIIStr_UTF8(const nsACString & header, bool structured, const char * mailCharset, int32_t fieldnamelen, int32_t encodedWordSize, char * *_retval); \
  NS_IMETHOD DecodeMimeHeaderToCharPtr(const char * header, const char * default_charset, bool override_charset, bool eatContinuations, char * *_retval); \
  NS_IMETHOD DecodeMimeHeader(const char * header, const char * default_charset, bool override_charset, bool eatContinuations, nsAString & _retval); \
  NS_IMETHOD B64EncoderInit(MimeConverterOutputCallback output_fn, void *closure, MimeEncoderData **_retval); \
  NS_IMETHOD QPEncoderInit(MimeConverterOutputCallback output_fn, void *closure, MimeEncoderData **_retval); \
  NS_IMETHOD EncoderDestroy(MimeEncoderData *data, bool abort_p); \
  NS_IMETHOD EncoderWrite(MimeEncoderData *data, const char * buffer, int32_t size, int32_t *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMIMECONVERTER(_to) \
  NS_IMETHOD EncodeMimePartIIStr(const char * header, bool structured, const char * mailCharset, int32_t fieldnamelen, int32_t encodedWordSize, char * *_retval) { return _to EncodeMimePartIIStr(header, structured, mailCharset, fieldnamelen, encodedWordSize, _retval); } \
  NS_IMETHOD EncodeMimePartIIStr_UTF8(const nsACString & header, bool structured, const char * mailCharset, int32_t fieldnamelen, int32_t encodedWordSize, char * *_retval) { return _to EncodeMimePartIIStr_UTF8(header, structured, mailCharset, fieldnamelen, encodedWordSize, _retval); } \
  NS_IMETHOD DecodeMimeHeaderToCharPtr(const char * header, const char * default_charset, bool override_charset, bool eatContinuations, char * *_retval) { return _to DecodeMimeHeaderToCharPtr(header, default_charset, override_charset, eatContinuations, _retval); } \
  NS_IMETHOD DecodeMimeHeader(const char * header, const char * default_charset, bool override_charset, bool eatContinuations, nsAString & _retval) { return _to DecodeMimeHeader(header, default_charset, override_charset, eatContinuations, _retval); } \
  NS_IMETHOD B64EncoderInit(MimeConverterOutputCallback output_fn, void *closure, MimeEncoderData **_retval) { return _to B64EncoderInit(output_fn, closure, _retval); } \
  NS_IMETHOD QPEncoderInit(MimeConverterOutputCallback output_fn, void *closure, MimeEncoderData **_retval) { return _to QPEncoderInit(output_fn, closure, _retval); } \
  NS_IMETHOD EncoderDestroy(MimeEncoderData *data, bool abort_p) { return _to EncoderDestroy(data, abort_p); } \
  NS_IMETHOD EncoderWrite(MimeEncoderData *data, const char * buffer, int32_t size, int32_t *_retval) { return _to EncoderWrite(data, buffer, size, _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_NSIMIMECONVERTER(_to) \
  NS_IMETHOD EncodeMimePartIIStr(const char * header, bool structured, const char * mailCharset, int32_t fieldnamelen, int32_t encodedWordSize, char * *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->EncodeMimePartIIStr(header, structured, mailCharset, fieldnamelen, encodedWordSize, _retval); } \
  NS_IMETHOD EncodeMimePartIIStr_UTF8(const nsACString & header, bool structured, const char * mailCharset, int32_t fieldnamelen, int32_t encodedWordSize, char * *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->EncodeMimePartIIStr_UTF8(header, structured, mailCharset, fieldnamelen, encodedWordSize, _retval); } \
  NS_IMETHOD DecodeMimeHeaderToCharPtr(const char * header, const char * default_charset, bool override_charset, bool eatContinuations, char * *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->DecodeMimeHeaderToCharPtr(header, default_charset, override_charset, eatContinuations, _retval); } \
  NS_IMETHOD DecodeMimeHeader(const char * header, const char * default_charset, bool override_charset, bool eatContinuations, nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->DecodeMimeHeader(header, default_charset, override_charset, eatContinuations, _retval); } \
  NS_IMETHOD B64EncoderInit(MimeConverterOutputCallback output_fn, void *closure, MimeEncoderData **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->B64EncoderInit(output_fn, closure, _retval); } \
  NS_IMETHOD QPEncoderInit(MimeConverterOutputCallback output_fn, void *closure, MimeEncoderData **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->QPEncoderInit(output_fn, closure, _retval); } \
  NS_IMETHOD EncoderDestroy(MimeEncoderData *data, bool abort_p) { return !_to ? NS_ERROR_NULL_POINTER : _to->EncoderDestroy(data, abort_p); } \
  NS_IMETHOD EncoderWrite(MimeEncoderData *data, const char * buffer, int32_t size, int32_t *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->EncoderWrite(data, buffer, size, _retval); } 

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

/* Header file */
class nsMimeConverter : public nsIMimeConverter
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMIMECONVERTER

  nsMimeConverter();

private:
  ~nsMimeConverter();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMimeConverter, nsIMimeConverter)

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

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

/* string encodeMimePartIIStr (in string header, in boolean structured, in string mailCharset, in long fieldnamelen, in long encodedWordSize); */
NS_IMETHODIMP nsMimeConverter::EncodeMimePartIIStr(const char * header, bool structured, const char * mailCharset, int32_t fieldnamelen, int32_t encodedWordSize, char * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string encodeMimePartIIStr_UTF8 (in AUTF8String header, in boolean structured, in string mailCharset, in long fieldnamelen, in long encodedWordSize); */
NS_IMETHODIMP nsMimeConverter::EncodeMimePartIIStr_UTF8(const nsACString & header, bool structured, const char * mailCharset, int32_t fieldnamelen, int32_t encodedWordSize, char * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] string decodeMimeHeaderToCharPtr (in string header, in string default_charset, in boolean override_charset, in boolean eatContinuations); */
NS_IMETHODIMP nsMimeConverter::DecodeMimeHeaderToCharPtr(const char * header, const char * default_charset, bool override_charset, bool eatContinuations, char * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString decodeMimeHeader (in string header, in string default_charset, in boolean override_charset, in boolean eatContinuations); */
NS_IMETHODIMP nsMimeConverter::DecodeMimeHeader(const char * header, const char * default_charset, bool override_charset, bool eatContinuations, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] MimeEncoderDataPtr B64EncoderInit (in MimeConverterOutputCallback output_fn, in voidPtr closure); */
NS_IMETHODIMP nsMimeConverter::B64EncoderInit(MimeConverterOutputCallback output_fn, void *closure, MimeEncoderData **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] MimeEncoderDataPtr QPEncoderInit (in MimeConverterOutputCallback output_fn, in voidPtr closure); */
NS_IMETHODIMP nsMimeConverter::QPEncoderInit(MimeConverterOutputCallback output_fn, void *closure, MimeEncoderData **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void EncoderDestroy (in MimeEncoderDataPtr data, in boolean abort_p); */
NS_IMETHODIMP nsMimeConverter::EncoderDestroy(MimeEncoderData *data, bool abort_p)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] long EncoderWrite (in MimeEncoderDataPtr data, in string buffer, in long size); */
NS_IMETHODIMP nsMimeConverter::EncoderWrite(MimeEncoderData *data, const char * buffer, int32_t size, int32_t *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIMimeConverter_h__ */
