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

#ifndef __gen_nsIMsgAttachment_h__
#define __gen_nsIMsgAttachment_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

/* starting interface:    nsIMsgAttachment */
#define NS_IMSGATTACHMENT_IID_STR "5fb62950-9a0b-41b4-8d11-f6888dff835e"

#define NS_IMSGATTACHMENT_IID \
  {0x5fb62950, 0x9a0b, 0x41b4, \
    { 0x8d, 0x11, 0xf6, 0x88, 0x8d, 0xff, 0x83, 0x5e }}

class NS_NO_VTABLE nsIMsgAttachment : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMSGATTACHMENT_IID)

  /**
   * name attribute
   *
   * @Attachment real name, will be sent with the attachment's header.
   * @If no name has been provided, a name will be generated using the url.
   */
  /* attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;
  NS_IMETHOD SetName(const PRUnichar * aName) = 0;

  /**
   * url attribute
   *
   * @specify where the attachment live (localy or remotely)
   */
  /* attribute string url; */
  NS_IMETHOD GetUrl(char * *aUrl) = 0;
  NS_IMETHOD SetUrl(const char * aUrl) = 0;

  /**
   * temporary attribute
   *
   * @If set to true, the file pointed by the url will be destroyed when tis object is destroyed.
   * @This is only for local attachment.
   */
  /* attribute boolean temporary; */
  NS_IMETHOD GetTemporary(PRBool *aTemporary) = 0;
  NS_IMETHOD SetTemporary(PRBool aTemporary) = 0;

  /**
   * contentLocation attribute
   *
   * @Specify the origin url of the attachment, used normaly when attaching a locally saved html document.
   */
  /* attribute string contentLocation; */
  NS_IMETHOD GetContentLocation(char * *aContentLocation) = 0;
  NS_IMETHOD SetContentLocation(const char * aContentLocation) = 0;

  /**
   * contentType attribute
   *
   * @Specify the content-type of the attachment, this not include extra content-type parameters. If
   * @you need to specify extra information, use contentTypeParam, charset, macType or macCreator.
   * @If ommitted, it will be determined base on either the name, the url or the content of the file.
   */
  /* attribute string contentType; */
  NS_IMETHOD GetContentType(char * *aContentType) = 0;
  NS_IMETHOD SetContentType(const char * aContentType) = 0;

  /**
   * contentTypeParam attribute
   *
   * @Specify the any content-type parameter (other than the content-type itself, charset, macType or macCreator).
   * @It will be added to the content-type during the send/save operation.
   */
  /* attribute string contentTypeParam; */
  NS_IMETHOD GetContentTypeParam(char * *aContentTypeParam) = 0;
  NS_IMETHOD SetContentTypeParam(const char * aContentTypeParam) = 0;

  /**
   * charset attribute
   *
   * @Specify the charset of the attachment. It will be added to the content-type during the
   * @send/save operation
   * @If omitted, will be determined automatically (if possible).
   */
  /* attribute string charset; */
  NS_IMETHOD GetCharset(char * *aCharset) = 0;
  NS_IMETHOD SetCharset(const char * aCharset) = 0;

  /**
   * macType attribute
   *
   * @Specify the Mac file type of the attachment. It will be added to the content-type during the
   * @send/save operation
   * @If omitted, will be determined automatically on Macintosh OS.
   */
  /* attribute string macType; */
  NS_IMETHOD GetMacType(char * *aMacType) = 0;
  NS_IMETHOD SetMacType(const char * aMacType) = 0;

  /**
   * macCreator attribute
   *
   * @Specify the Mac file creator of the attachment. It will be added to the content-type during the
   * @send/save operation
   * @If omitted, will be determined automatically on Macintosh OS.
   */
  /* attribute string macCreator; */
  NS_IMETHOD GetMacCreator(char * *aMacCreator) = 0;
  NS_IMETHOD SetMacCreator(const char * aMacCreator) = 0;

  /**
    * equalsUrl
    *
    * @ determines if both attachments have the same url.
    */
  /* boolean equalsUrl (in nsIMsgAttachment attachment); */
  NS_IMETHOD EqualsUrl(nsIMsgAttachment *attachment, PRBool *_retval) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGATTACHMENT \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD SetName(const PRUnichar * aName); \
  NS_IMETHOD GetUrl(char * *aUrl); \
  NS_IMETHOD SetUrl(const char * aUrl); \
  NS_IMETHOD GetTemporary(PRBool *aTemporary); \
  NS_IMETHOD SetTemporary(PRBool aTemporary); \
  NS_IMETHOD GetContentLocation(char * *aContentLocation); \
  NS_IMETHOD SetContentLocation(const char * aContentLocation); \
  NS_IMETHOD GetContentType(char * *aContentType); \
  NS_IMETHOD SetContentType(const char * aContentType); \
  NS_IMETHOD GetContentTypeParam(char * *aContentTypeParam); \
  NS_IMETHOD SetContentTypeParam(const char * aContentTypeParam); \
  NS_IMETHOD GetCharset(char * *aCharset); \
  NS_IMETHOD SetCharset(const char * aCharset); \
  NS_IMETHOD GetMacType(char * *aMacType); \
  NS_IMETHOD SetMacType(const char * aMacType); \
  NS_IMETHOD GetMacCreator(char * *aMacCreator); \
  NS_IMETHOD SetMacCreator(const char * aMacCreator); \
  NS_IMETHOD EqualsUrl(nsIMsgAttachment *attachment, PRBool *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGATTACHMENT(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to GetName(aName); } \
  NS_IMETHOD SetName(const PRUnichar * aName) { return _to SetName(aName); } \
  NS_IMETHOD GetUrl(char * *aUrl) { return _to GetUrl(aUrl); } \
  NS_IMETHOD SetUrl(const char * aUrl) { return _to SetUrl(aUrl); } \
  NS_IMETHOD GetTemporary(PRBool *aTemporary) { return _to GetTemporary(aTemporary); } \
  NS_IMETHOD SetTemporary(PRBool aTemporary) { return _to SetTemporary(aTemporary); } \
  NS_IMETHOD GetContentLocation(char * *aContentLocation) { return _to GetContentLocation(aContentLocation); } \
  NS_IMETHOD SetContentLocation(const char * aContentLocation) { return _to SetContentLocation(aContentLocation); } \
  NS_IMETHOD GetContentType(char * *aContentType) { return _to GetContentType(aContentType); } \
  NS_IMETHOD SetContentType(const char * aContentType) { return _to SetContentType(aContentType); } \
  NS_IMETHOD GetContentTypeParam(char * *aContentTypeParam) { return _to GetContentTypeParam(aContentTypeParam); } \
  NS_IMETHOD SetContentTypeParam(const char * aContentTypeParam) { return _to SetContentTypeParam(aContentTypeParam); } \
  NS_IMETHOD GetCharset(char * *aCharset) { return _to GetCharset(aCharset); } \
  NS_IMETHOD SetCharset(const char * aCharset) { return _to SetCharset(aCharset); } \
  NS_IMETHOD GetMacType(char * *aMacType) { return _to GetMacType(aMacType); } \
  NS_IMETHOD SetMacType(const char * aMacType) { return _to SetMacType(aMacType); } \
  NS_IMETHOD GetMacCreator(char * *aMacCreator) { return _to GetMacCreator(aMacCreator); } \
  NS_IMETHOD SetMacCreator(const char * aMacCreator) { return _to SetMacCreator(aMacCreator); } \
  NS_IMETHOD EqualsUrl(nsIMsgAttachment *attachment, PRBool *_retval) { return _to EqualsUrl(attachment, _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_NSIMSGATTACHMENT(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(const PRUnichar * aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetName(aName); } \
  NS_IMETHOD GetUrl(char * *aUrl) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUrl(aUrl); } \
  NS_IMETHOD SetUrl(const char * aUrl) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetUrl(aUrl); } \
  NS_IMETHOD GetTemporary(PRBool *aTemporary) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTemporary(aTemporary); } \
  NS_IMETHOD SetTemporary(PRBool aTemporary) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTemporary(aTemporary); } \
  NS_IMETHOD GetContentLocation(char * *aContentLocation) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetContentLocation(aContentLocation); } \
  NS_IMETHOD SetContentLocation(const char * aContentLocation) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetContentLocation(aContentLocation); } \
  NS_IMETHOD GetContentType(char * *aContentType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetContentType(aContentType); } \
  NS_IMETHOD SetContentType(const char * aContentType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetContentType(aContentType); } \
  NS_IMETHOD GetContentTypeParam(char * *aContentTypeParam) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetContentTypeParam(aContentTypeParam); } \
  NS_IMETHOD SetContentTypeParam(const char * aContentTypeParam) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetContentTypeParam(aContentTypeParam); } \
  NS_IMETHOD GetCharset(char * *aCharset) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCharset(aCharset); } \
  NS_IMETHOD SetCharset(const char * aCharset) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCharset(aCharset); } \
  NS_IMETHOD GetMacType(char * *aMacType) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMacType(aMacType); } \
  NS_IMETHOD SetMacType(const char * aMacType) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMacType(aMacType); } \
  NS_IMETHOD GetMacCreator(char * *aMacCreator) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMacCreator(aMacCreator); } \
  NS_IMETHOD SetMacCreator(const char * aMacCreator) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMacCreator(aMacCreator); } \
  NS_IMETHOD EqualsUrl(nsIMsgAttachment *attachment, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->EqualsUrl(attachment, _retval); } 

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

/* Header file */
class nsMsgAttachment : public nsIMsgAttachment
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGATTACHMENT

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgAttachment, nsIMsgAttachment)

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

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

/* attribute wstring name; */
NS_IMETHODIMP nsMsgAttachment::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachment::SetName(const PRUnichar * aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string url; */
NS_IMETHODIMP nsMsgAttachment::GetUrl(char * *aUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachment::SetUrl(const char * aUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean temporary; */
NS_IMETHODIMP nsMsgAttachment::GetTemporary(PRBool *aTemporary)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachment::SetTemporary(PRBool aTemporary)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string contentLocation; */
NS_IMETHODIMP nsMsgAttachment::GetContentLocation(char * *aContentLocation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachment::SetContentLocation(const char * aContentLocation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string contentType; */
NS_IMETHODIMP nsMsgAttachment::GetContentType(char * *aContentType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachment::SetContentType(const char * aContentType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string contentTypeParam; */
NS_IMETHODIMP nsMsgAttachment::GetContentTypeParam(char * *aContentTypeParam)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachment::SetContentTypeParam(const char * aContentTypeParam)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string charset; */
NS_IMETHODIMP nsMsgAttachment::GetCharset(char * *aCharset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachment::SetCharset(const char * aCharset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string macType; */
NS_IMETHODIMP nsMsgAttachment::GetMacType(char * *aMacType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachment::SetMacType(const char * aMacType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string macCreator; */
NS_IMETHODIMP nsMsgAttachment::GetMacCreator(char * *aMacCreator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachment::SetMacCreator(const char * aMacCreator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean equalsUrl (in nsIMsgAttachment attachment); */
NS_IMETHODIMP nsMsgAttachment::EqualsUrl(nsIMsgAttachment *attachment, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIMsgAttachment_h__ */
