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

#ifndef __gen_nsIMIMEInfo_h__
#define __gen_nsIMIMEInfo_h__


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

#ifndef __gen_nsIURI_h__
#include "nsIURI.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
/**
 * Protocol writers can obtain a very basic (ok, degenerate) implementation
 * of nsIURI by calling the component manager with NS_SIMPLEURI_CID. The
 * implementation returned will only parse things of the form:
 *
 *    about:cache
 *    \   / \   /
 *     ---   ---
 *      |     |
 *   Scheme  Path
 *
 * where the path is everything after the colon. Note that this is probably 
 * only useful for cases like about: or javascript: URIs. 
 *
 * *** What you most likely will want is NS_STANDARDURL_CID which is much more 
 * full featured. Look at nsIURL.idl for more details.
 *
 * NOTE: CIDs are declared in nsNetCID.h
 */
class nsIFile; /* forward declaration */

typedef PRInt32 nsMIMEInfoHandleAction;


/* starting interface:    nsIMIMEInfo */
#define NS_IMIMEINFO_IID_STR "6a57eae0-2fe8-11d3-a164-0050041caf44"

#define NS_IMIMEINFO_IID \
  {0x6a57eae0, 0x2fe8, 0x11d3, \
    { 0xa1, 0x64, 0x00, 0x50, 0x04, 0x1c, 0xaf, 0x44 }}

class NS_NO_VTABLE nsIMIMEInfo : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMIMEINFO_IID)

  /* void GetFileExtensions (out PRUint32 elementCount, [array, size_is (elementCount)] out string extensions); */
  NS_IMETHOD GetFileExtensions(PRUint32 *elementCount, char ***extensions) = 0;

  /* void SetFileExtensions (in string aExtensions); */
  NS_IMETHOD SetFileExtensions(const char *aExtensions) = 0;

  /* boolean ExtensionExists (in string aExtension); */
  NS_IMETHOD ExtensionExists(const char *aExtension, PRBool *_retval) = 0;

  /* string FirstExtension (); */
  NS_IMETHOD FirstExtension(char **_retval) = 0;

  /* void AppendExtension (in string aExtension); */
  NS_IMETHOD AppendExtension(const char *aExtension) = 0;

  /* attribute string MIMEType; */
  NS_IMETHOD GetMIMEType(char * *aMIMEType) = 0;
  NS_IMETHOD SetMIMEType(const char * aMIMEType) = 0;

  /* attribute wstring Description; */
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) = 0;
  NS_IMETHOD SetDescription(const PRUnichar * aDescription) = 0;

  /* readonly attribute nsIURI DataURI; */
  NS_IMETHOD GetDataURI(nsIURI * *aDataURI) = 0;

  /* attribute PRUint32 MacType; */
  NS_IMETHOD GetMacType(PRUint32 *aMacType) = 0;
  NS_IMETHOD SetMacType(PRUint32 aMacType) = 0;

  /* attribute PRUint32 MacCreator; */
  NS_IMETHOD GetMacCreator(PRUint32 *aMacCreator) = 0;
  NS_IMETHOD SetMacCreator(PRUint32 aMacCreator) = 0;

  /* boolean Equals (in nsIMIMEInfo aMIMEInfo); */
  NS_IMETHOD Equals(nsIMIMEInfo *aMIMEInfo, PRBool *_retval) = 0;

  /* attribute nsIFile preferredApplicationHandler; */
  NS_IMETHOD GetPreferredApplicationHandler(nsIFile * *aPreferredApplicationHandler) = 0;
  NS_IMETHOD SetPreferredApplicationHandler(nsIFile * aPreferredApplicationHandler) = 0;

  /* attribute wstring applicationDescription; */
  NS_IMETHOD GetApplicationDescription(PRUnichar * *aApplicationDescription) = 0;
  NS_IMETHOD SetApplicationDescription(const PRUnichar * aApplicationDescription) = 0;

  enum { saveToDisk = 0 };

  enum { alwaysAsk = 1 };

  enum { useHelperApp = 2 };

  enum { handleInternally = 3 };

  enum { useSystemDefault = 4 };

  /* attribute nsMIMEInfoHandleAction preferredAction; */
  NS_IMETHOD GetPreferredAction(nsMIMEInfoHandleAction *aPreferredAction) = 0;
  NS_IMETHOD SetPreferredAction(nsMIMEInfoHandleAction aPreferredAction) = 0;

  /* attribute boolean alwaysAskBeforeHandling; */
  NS_IMETHOD GetAlwaysAskBeforeHandling(PRBool *aAlwaysAskBeforeHandling) = 0;
  NS_IMETHOD SetAlwaysAskBeforeHandling(PRBool aAlwaysAskBeforeHandling) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMIMEINFO \
  NS_IMETHOD GetFileExtensions(PRUint32 *elementCount, char ***extensions); \
  NS_IMETHOD SetFileExtensions(const char *aExtensions); \
  NS_IMETHOD ExtensionExists(const char *aExtension, PRBool *_retval); \
  NS_IMETHOD FirstExtension(char **_retval); \
  NS_IMETHOD AppendExtension(const char *aExtension); \
  NS_IMETHOD GetMIMEType(char * *aMIMEType); \
  NS_IMETHOD SetMIMEType(const char * aMIMEType); \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription); \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription); \
  NS_IMETHOD GetDataURI(nsIURI * *aDataURI); \
  NS_IMETHOD GetMacType(PRUint32 *aMacType); \
  NS_IMETHOD SetMacType(PRUint32 aMacType); \
  NS_IMETHOD GetMacCreator(PRUint32 *aMacCreator); \
  NS_IMETHOD SetMacCreator(PRUint32 aMacCreator); \
  NS_IMETHOD Equals(nsIMIMEInfo *aMIMEInfo, PRBool *_retval); \
  NS_IMETHOD GetPreferredApplicationHandler(nsIFile * *aPreferredApplicationHandler); \
  NS_IMETHOD SetPreferredApplicationHandler(nsIFile * aPreferredApplicationHandler); \
  NS_IMETHOD GetApplicationDescription(PRUnichar * *aApplicationDescription); \
  NS_IMETHOD SetApplicationDescription(const PRUnichar * aApplicationDescription); \
  NS_IMETHOD GetPreferredAction(nsMIMEInfoHandleAction *aPreferredAction); \
  NS_IMETHOD SetPreferredAction(nsMIMEInfoHandleAction aPreferredAction); \
  NS_IMETHOD GetAlwaysAskBeforeHandling(PRBool *aAlwaysAskBeforeHandling); \
  NS_IMETHOD SetAlwaysAskBeforeHandling(PRBool aAlwaysAskBeforeHandling); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMIMEINFO(_to) \
  NS_IMETHOD GetFileExtensions(PRUint32 *elementCount, char ***extensions) { return _to ## GetFileExtensions(elementCount, extensions); } \
  NS_IMETHOD SetFileExtensions(const char *aExtensions) { return _to ## SetFileExtensions(aExtensions); } \
  NS_IMETHOD ExtensionExists(const char *aExtension, PRBool *_retval) { return _to ## ExtensionExists(aExtension, _retval); } \
  NS_IMETHOD FirstExtension(char **_retval) { return _to ## FirstExtension(_retval); } \
  NS_IMETHOD AppendExtension(const char *aExtension) { return _to ## AppendExtension(aExtension); } \
  NS_IMETHOD GetMIMEType(char * *aMIMEType) { return _to ## GetMIMEType(aMIMEType); } \
  NS_IMETHOD SetMIMEType(const char * aMIMEType) { return _to ## SetMIMEType(aMIMEType); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return _to ## GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription) { return _to ## SetDescription(aDescription); } \
  NS_IMETHOD GetDataURI(nsIURI * *aDataURI) { return _to ## GetDataURI(aDataURI); } \
  NS_IMETHOD GetMacType(PRUint32 *aMacType) { return _to ## GetMacType(aMacType); } \
  NS_IMETHOD SetMacType(PRUint32 aMacType) { return _to ## SetMacType(aMacType); } \
  NS_IMETHOD GetMacCreator(PRUint32 *aMacCreator) { return _to ## GetMacCreator(aMacCreator); } \
  NS_IMETHOD SetMacCreator(PRUint32 aMacCreator) { return _to ## SetMacCreator(aMacCreator); } \
  NS_IMETHOD Equals(nsIMIMEInfo *aMIMEInfo, PRBool *_retval) { return _to ## Equals(aMIMEInfo, _retval); } \
  NS_IMETHOD GetPreferredApplicationHandler(nsIFile * *aPreferredApplicationHandler) { return _to ## GetPreferredApplicationHandler(aPreferredApplicationHandler); } \
  NS_IMETHOD SetPreferredApplicationHandler(nsIFile * aPreferredApplicationHandler) { return _to ## SetPreferredApplicationHandler(aPreferredApplicationHandler); } \
  NS_IMETHOD GetApplicationDescription(PRUnichar * *aApplicationDescription) { return _to ## GetApplicationDescription(aApplicationDescription); } \
  NS_IMETHOD SetApplicationDescription(const PRUnichar * aApplicationDescription) { return _to ## SetApplicationDescription(aApplicationDescription); } \
  NS_IMETHOD GetPreferredAction(nsMIMEInfoHandleAction *aPreferredAction) { return _to ## GetPreferredAction(aPreferredAction); } \
  NS_IMETHOD SetPreferredAction(nsMIMEInfoHandleAction aPreferredAction) { return _to ## SetPreferredAction(aPreferredAction); } \
  NS_IMETHOD GetAlwaysAskBeforeHandling(PRBool *aAlwaysAskBeforeHandling) { return _to ## GetAlwaysAskBeforeHandling(aAlwaysAskBeforeHandling); } \
  NS_IMETHOD SetAlwaysAskBeforeHandling(PRBool aAlwaysAskBeforeHandling) { return _to ## SetAlwaysAskBeforeHandling(aAlwaysAskBeforeHandling); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMIMEINFO(_to) \
  NS_IMETHOD GetFileExtensions(PRUint32 *elementCount, char ***extensions) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetFileExtensions(elementCount, extensions); } \
  NS_IMETHOD SetFileExtensions(const char *aExtensions) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> SetFileExtensions(aExtensions); } \
  NS_IMETHOD ExtensionExists(const char *aExtension, PRBool *_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ExtensionExists(aExtension, _retval); } \
  NS_IMETHOD FirstExtension(char **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> FirstExtension(_retval); } \
  NS_IMETHOD AppendExtension(const char *aExtension) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> AppendExtension(aExtension); } \
  NS_IMETHOD GetMIMEType(char * *aMIMEType) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetMIMEType(aMIMEType); } \
  NS_IMETHOD SetMIMEType(const char * aMIMEType) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetMIMEType(aMIMEType); } \
  NS_IMETHOD GetDescription(PRUnichar * *aDescription) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const PRUnichar * aDescription) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetDescription(aDescription); } \
  NS_IMETHOD GetDataURI(nsIURI * *aDataURI) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetDataURI(aDataURI); } \
  NS_IMETHOD GetMacType(PRUint32 *aMacType) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetMacType(aMacType); } \
  NS_IMETHOD SetMacType(PRUint32 aMacType) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetMacType(aMacType); } \
  NS_IMETHOD GetMacCreator(PRUint32 *aMacCreator) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetMacCreator(aMacCreator); } \
  NS_IMETHOD SetMacCreator(PRUint32 aMacCreator) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetMacCreator(aMacCreator); } \
  NS_IMETHOD Equals(nsIMIMEInfo *aMIMEInfo, PRBool *_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> Equals(aMIMEInfo, _retval); } \
  NS_IMETHOD GetPreferredApplicationHandler(nsIFile * *aPreferredApplicationHandler) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetPreferredApplicationHandler(aPreferredApplicationHandler); } \
  NS_IMETHOD SetPreferredApplicationHandler(nsIFile * aPreferredApplicationHandler) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetPreferredApplicationHandler(aPreferredApplicationHandler); } \
  NS_IMETHOD GetApplicationDescription(PRUnichar * *aApplicationDescription) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetApplicationDescription(aApplicationDescription); } \
  NS_IMETHOD SetApplicationDescription(const PRUnichar * aApplicationDescription) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetApplicationDescription(aApplicationDescription); } \
  NS_IMETHOD GetPreferredAction(nsMIMEInfoHandleAction *aPreferredAction) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetPreferredAction(aPreferredAction); } \
  NS_IMETHOD SetPreferredAction(nsMIMEInfoHandleAction aPreferredAction) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetPreferredAction(aPreferredAction); } \
  NS_IMETHOD GetAlwaysAskBeforeHandling(PRBool *aAlwaysAskBeforeHandling) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetAlwaysAskBeforeHandling(aAlwaysAskBeforeHandling); } \
  NS_IMETHOD SetAlwaysAskBeforeHandling(PRBool aAlwaysAskBeforeHandling) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetAlwaysAskBeforeHandling(aAlwaysAskBeforeHandling); } 

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

/* Header file */
class nsMIMEInfo : public nsIMIMEInfo
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMIMEINFO

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMIMEInfo, nsIMIMEInfo)

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

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

/* void GetFileExtensions (out PRUint32 elementCount, [array, size_is (elementCount)] out string extensions); */
NS_IMETHODIMP nsMIMEInfo::GetFileExtensions(PRUint32 *elementCount, char ***extensions)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void SetFileExtensions (in string aExtensions); */
NS_IMETHODIMP nsMIMEInfo::SetFileExtensions(const char *aExtensions)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean ExtensionExists (in string aExtension); */
NS_IMETHODIMP nsMIMEInfo::ExtensionExists(const char *aExtension, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string FirstExtension (); */
NS_IMETHODIMP nsMIMEInfo::FirstExtension(char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void AppendExtension (in string aExtension); */
NS_IMETHODIMP nsMIMEInfo::AppendExtension(const char *aExtension)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string MIMEType; */
NS_IMETHODIMP nsMIMEInfo::GetMIMEType(char * *aMIMEType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMIMEInfo::SetMIMEType(const char * aMIMEType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring Description; */
NS_IMETHODIMP nsMIMEInfo::GetDescription(PRUnichar * *aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMIMEInfo::SetDescription(const PRUnichar * aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIURI DataURI; */
NS_IMETHODIMP nsMIMEInfo::GetDataURI(nsIURI * *aDataURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 MacType; */
NS_IMETHODIMP nsMIMEInfo::GetMacType(PRUint32 *aMacType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMIMEInfo::SetMacType(PRUint32 aMacType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRUint32 MacCreator; */
NS_IMETHODIMP nsMIMEInfo::GetMacCreator(PRUint32 *aMacCreator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMIMEInfo::SetMacCreator(PRUint32 aMacCreator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean Equals (in nsIMIMEInfo aMIMEInfo); */
NS_IMETHODIMP nsMIMEInfo::Equals(nsIMIMEInfo *aMIMEInfo, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIFile preferredApplicationHandler; */
NS_IMETHODIMP nsMIMEInfo::GetPreferredApplicationHandler(nsIFile * *aPreferredApplicationHandler)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMIMEInfo::SetPreferredApplicationHandler(nsIFile * aPreferredApplicationHandler)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute wstring applicationDescription; */
NS_IMETHODIMP nsMIMEInfo::GetApplicationDescription(PRUnichar * *aApplicationDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMIMEInfo::SetApplicationDescription(const PRUnichar * aApplicationDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsMIMEInfoHandleAction preferredAction; */
NS_IMETHODIMP nsMIMEInfo::GetPreferredAction(nsMIMEInfoHandleAction *aPreferredAction)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMIMEInfo::SetPreferredAction(nsMIMEInfoHandleAction aPreferredAction)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean alwaysAskBeforeHandling; */
NS_IMETHODIMP nsMIMEInfo::GetAlwaysAskBeforeHandling(PRBool *aAlwaysAskBeforeHandling)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMIMEInfo::SetAlwaysAskBeforeHandling(PRBool aAlwaysAskBeforeHandling)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define NS_MIMEINFO_CID                           \
{ /* {95df6583-0001-11d4-a12b-a66ef662f0bc} */         \
    0x95df6583,                                      \
    0x0001,                                          \
    0x11d4,                                          \
    { 0xa1, 0x2b, 0xa6, 0x6e, 0xf6, 0x62, 0xf0, 0xbc } \
}
#define NS_MIMEINFO_CONTRACTID "@mozilla.org/mime-info;1"

#endif /* __gen_nsIMIMEInfo_h__ */
