/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM ../../../dist/idl\nsIExceptionService.idl
 */

#ifndef __gen_nsIExceptionService_h__
#define __gen_nsIExceptionService_h__


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

#ifndef __gen_nsIException_h__
#include "nsIException.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:    nsIExceptionManager */
#define NS_IEXCEPTIONMANAGER_IID_STR "efc9d00b-231c-4feb-852c-ac017266a415"

#define NS_IEXCEPTIONMANAGER_IID \
  {0xefc9d00b, 0x231c, 0x4feb, \
    { 0x85, 0x2c, 0xac, 0x01, 0x72, 0x66, 0xa4, 0x15 }}

class NS_NO_VTABLE nsIExceptionManager : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IEXCEPTIONMANAGER_IID)

  /* void setCurrentException (in nsIException error); */
  NS_IMETHOD SetCurrentException(nsIException *error) = 0;

  /* nsIException getCurrentException (); */
  NS_IMETHOD GetCurrentException(nsIException * *_retval) = 0;

  /* nsIException getExceptionFromProvider (in nsresult rc, in nsIException defaultException); */
  NS_IMETHOD GetExceptionFromProvider(nsresult rc, nsIException *defaultException, nsIException * *_retval) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIExceptionManager, NS_IEXCEPTIONMANAGER_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIEXCEPTIONMANAGER \
  NS_IMETHOD SetCurrentException(nsIException *error); \
  NS_IMETHOD GetCurrentException(nsIException * *_retval); \
  NS_IMETHOD GetExceptionFromProvider(nsresult rc, nsIException *defaultException, nsIException * *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIEXCEPTIONMANAGER(_to) \
  NS_IMETHOD SetCurrentException(nsIException *error) { return _to SetCurrentException(error); } \
  NS_IMETHOD GetCurrentException(nsIException * *_retval) { return _to GetCurrentException(_retval); } \
  NS_IMETHOD GetExceptionFromProvider(nsresult rc, nsIException *defaultException, nsIException * *_retval) { return _to GetExceptionFromProvider(rc, defaultException, _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_NSIEXCEPTIONMANAGER(_to) \
  NS_IMETHOD SetCurrentException(nsIException *error) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCurrentException(error); } \
  NS_IMETHOD GetCurrentException(nsIException * *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCurrentException(_retval); } \
  NS_IMETHOD GetExceptionFromProvider(nsresult rc, nsIException *defaultException, nsIException * *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExceptionFromProvider(rc, defaultException, _retval); } 

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

/* Header file */
class nsExceptionManager : public nsIExceptionManager
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIEXCEPTIONMANAGER

  nsExceptionManager();

private:
  ~nsExceptionManager();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsExceptionManager, nsIExceptionManager)

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

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

/* void setCurrentException (in nsIException error); */
NS_IMETHODIMP nsExceptionManager::SetCurrentException(nsIException *error)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIException getCurrentException (); */
NS_IMETHODIMP nsExceptionManager::GetCurrentException(nsIException * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIException getExceptionFromProvider (in nsresult rc, in nsIException defaultException); */
NS_IMETHODIMP nsExceptionManager::GetExceptionFromProvider(nsresult rc, nsIException *defaultException, nsIException * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIExceptionService */
#define NS_IEXCEPTIONSERVICE_IID_STR "8f9ccabb-a68b-43e3-b570-dd8c3179d2fb"

#define NS_IEXCEPTIONSERVICE_IID \
  {0x8f9ccabb, 0xa68b, 0x43e3, \
    { 0xb5, 0x70, 0xdd, 0x8c, 0x31, 0x79, 0xd2, 0xfb }}

class NS_NO_VTABLE nsIExceptionService : public nsIExceptionManager {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IEXCEPTIONSERVICE_IID)

  /* readonly attribute nsIExceptionManager currentExceptionManager; */
  NS_IMETHOD GetCurrentExceptionManager(nsIExceptionManager * *aCurrentExceptionManager) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIExceptionService, NS_IEXCEPTIONSERVICE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIEXCEPTIONSERVICE \
  NS_IMETHOD GetCurrentExceptionManager(nsIExceptionManager * *aCurrentExceptionManager); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIEXCEPTIONSERVICE(_to) \
  NS_IMETHOD GetCurrentExceptionManager(nsIExceptionManager * *aCurrentExceptionManager) { return _to GetCurrentExceptionManager(aCurrentExceptionManager); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIEXCEPTIONSERVICE(_to) \
  NS_IMETHOD GetCurrentExceptionManager(nsIExceptionManager * *aCurrentExceptionManager) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCurrentExceptionManager(aCurrentExceptionManager); } 

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

/* Header file */
class nsExceptionService : public nsIExceptionService
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIEXCEPTIONSERVICE

  nsExceptionService();

private:
  ~nsExceptionService();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsExceptionService, nsIExceptionService)

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

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

/* readonly attribute nsIExceptionManager currentExceptionManager; */
NS_IMETHODIMP nsExceptionService::GetCurrentExceptionManager(nsIExceptionManager * *aCurrentExceptionManager)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

// {35A88F54-F267-4414-92A7-191F6454AB52}
#define NS_EXCEPTIONSERVICE_CID \
{ 0x35a88f54, 0xf267, 0x4414, { 0x92, 0xa7, 0x19, 0x1f, 0x64, 0x54, 0xab, 0x52 } }
#define NS_EXCEPTIONSERVICE_CONTRACTID "@mozilla.org/exceptionservice;1"

#endif /* __gen_nsIExceptionService_h__ */
