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

#ifndef __gen_calICalendarManager_h__
#define __gen_calICalendarManager_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
class calICalendar; /* forward declaration */

class nsIURI; /* forward declaration */

class nsIVariant; /* forward declaration */

class calICalendarManagerObserver; /* forward declaration */


/* starting interface:    calICalendarManager */
#define CALICALENDARMANAGER_IID_STR "43a71d40-7807-4e2f-b741-2926ee73f89a"

#define CALICALENDARMANAGER_IID \
  {0x43a71d40, 0x7807, 0x4e2f, \
    { 0xb7, 0x41, 0x29, 0x26, 0xee, 0x73, 0xf8, 0x9a }}

class NS_NO_VTABLE calICalendarManager : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(CALICALENDARMANAGER_IID)

  /**
   * Gives the number of registered calendars that require network access.
   */
  /* readonly attribute PRUint32 networkCalendarCount; */
  NS_IMETHOD GetNetworkCalendarCount(PRUint32 *aNetworkCalendarCount) = 0;

  /***
   * Gives the number of registered readonly calendars.
   */
  /* readonly attribute PRUint32 readOnlyCalendarCount; */
  NS_IMETHOD GetReadOnlyCalendarCount(PRUint32 *aReadOnlyCalendarCount) = 0;

  /**
   * Gives the number of registered calendars
   */
  /* readonly attribute PRUint32 calendarCount; */
  NS_IMETHOD GetCalendarCount(PRUint32 *aCalendarCount) = 0;

  /* calICalendar createCalendar (in AUTF8String aType, in nsIURI aURL); */
  NS_IMETHOD CreateCalendar(const nsACString & aType, nsIURI *aURL, calICalendar **_retval) = 0;

  /* void registerCalendar (in calICalendar aCalendar); */
  NS_IMETHOD RegisterCalendar(calICalendar *aCalendar) = 0;

  /* void unregisterCalendar (in calICalendar aCalendar); */
  NS_IMETHOD UnregisterCalendar(calICalendar *aCalendar) = 0;

  /* void deleteCalendar (in calICalendar aCalendar); */
  NS_IMETHOD DeleteCalendar(calICalendar *aCalendar) = 0;

  /* void getCalendars (out PRUint32 count, [array, size_is (count), retval] out calICalendar aCalendars); */
  NS_IMETHOD GetCalendars(PRUint32 *count, calICalendar ***aCalendars) = 0;

  /* nsIVariant getCalendarPref_ (in calICalendar aCalendar, in AUTF8String aName); */
  NS_IMETHOD GetCalendarPref_(calICalendar *aCalendar, const nsACString & aName, nsIVariant **_retval) = 0;

  /* void setCalendarPref_ (in calICalendar aCalendar, in nsIVariant aName, in nsIVariant aValue); */
  NS_IMETHOD SetCalendarPref_(calICalendar *aCalendar, nsIVariant *aName, nsIVariant *aValue) = 0;

  /* void deleteCalendarPref_ (in calICalendar aCalendar, in AUTF8String aName); */
  NS_IMETHOD DeleteCalendarPref_(calICalendar *aCalendar, const nsACString & aName) = 0;

  /* void addObserver (in calICalendarManagerObserver aObserver); */
  NS_IMETHOD AddObserver(calICalendarManagerObserver *aObserver) = 0;

  /* void removeObserver (in calICalendarManagerObserver aObserver); */
  NS_IMETHOD RemoveObserver(calICalendarManagerObserver *aObserver) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALICALENDARMANAGER \
  NS_IMETHOD GetNetworkCalendarCount(PRUint32 *aNetworkCalendarCount); \
  NS_IMETHOD GetReadOnlyCalendarCount(PRUint32 *aReadOnlyCalendarCount); \
  NS_IMETHOD GetCalendarCount(PRUint32 *aCalendarCount); \
  NS_IMETHOD CreateCalendar(const nsACString & aType, nsIURI *aURL, calICalendar **_retval); \
  NS_IMETHOD RegisterCalendar(calICalendar *aCalendar); \
  NS_IMETHOD UnregisterCalendar(calICalendar *aCalendar); \
  NS_IMETHOD DeleteCalendar(calICalendar *aCalendar); \
  NS_IMETHOD GetCalendars(PRUint32 *count, calICalendar ***aCalendars); \
  NS_IMETHOD GetCalendarPref_(calICalendar *aCalendar, const nsACString & aName, nsIVariant **_retval); \
  NS_IMETHOD SetCalendarPref_(calICalendar *aCalendar, nsIVariant *aName, nsIVariant *aValue); \
  NS_IMETHOD DeleteCalendarPref_(calICalendar *aCalendar, const nsACString & aName); \
  NS_IMETHOD AddObserver(calICalendarManagerObserver *aObserver); \
  NS_IMETHOD RemoveObserver(calICalendarManagerObserver *aObserver); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CALICALENDARMANAGER(_to) \
  NS_IMETHOD GetNetworkCalendarCount(PRUint32 *aNetworkCalendarCount) { return _to GetNetworkCalendarCount(aNetworkCalendarCount); } \
  NS_IMETHOD GetReadOnlyCalendarCount(PRUint32 *aReadOnlyCalendarCount) { return _to GetReadOnlyCalendarCount(aReadOnlyCalendarCount); } \
  NS_IMETHOD GetCalendarCount(PRUint32 *aCalendarCount) { return _to GetCalendarCount(aCalendarCount); } \
  NS_IMETHOD CreateCalendar(const nsACString & aType, nsIURI *aURL, calICalendar **_retval) { return _to CreateCalendar(aType, aURL, _retval); } \
  NS_IMETHOD RegisterCalendar(calICalendar *aCalendar) { return _to RegisterCalendar(aCalendar); } \
  NS_IMETHOD UnregisterCalendar(calICalendar *aCalendar) { return _to UnregisterCalendar(aCalendar); } \
  NS_IMETHOD DeleteCalendar(calICalendar *aCalendar) { return _to DeleteCalendar(aCalendar); } \
  NS_IMETHOD GetCalendars(PRUint32 *count, calICalendar ***aCalendars) { return _to GetCalendars(count, aCalendars); } \
  NS_IMETHOD GetCalendarPref_(calICalendar *aCalendar, const nsACString & aName, nsIVariant **_retval) { return _to GetCalendarPref_(aCalendar, aName, _retval); } \
  NS_IMETHOD SetCalendarPref_(calICalendar *aCalendar, nsIVariant *aName, nsIVariant *aValue) { return _to SetCalendarPref_(aCalendar, aName, aValue); } \
  NS_IMETHOD DeleteCalendarPref_(calICalendar *aCalendar, const nsACString & aName) { return _to DeleteCalendarPref_(aCalendar, aName); } \
  NS_IMETHOD AddObserver(calICalendarManagerObserver *aObserver) { return _to AddObserver(aObserver); } \
  NS_IMETHOD RemoveObserver(calICalendarManagerObserver *aObserver) { return _to RemoveObserver(aObserver); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_CALICALENDARMANAGER(_to) \
  NS_IMETHOD GetNetworkCalendarCount(PRUint32 *aNetworkCalendarCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNetworkCalendarCount(aNetworkCalendarCount); } \
  NS_IMETHOD GetReadOnlyCalendarCount(PRUint32 *aReadOnlyCalendarCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetReadOnlyCalendarCount(aReadOnlyCalendarCount); } \
  NS_IMETHOD GetCalendarCount(PRUint32 *aCalendarCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCalendarCount(aCalendarCount); } \
  NS_IMETHOD CreateCalendar(const nsACString & aType, nsIURI *aURL, calICalendar **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateCalendar(aType, aURL, _retval); } \
  NS_IMETHOD RegisterCalendar(calICalendar *aCalendar) { return !_to ? NS_ERROR_NULL_POINTER : _to->RegisterCalendar(aCalendar); } \
  NS_IMETHOD UnregisterCalendar(calICalendar *aCalendar) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnregisterCalendar(aCalendar); } \
  NS_IMETHOD DeleteCalendar(calICalendar *aCalendar) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteCalendar(aCalendar); } \
  NS_IMETHOD GetCalendars(PRUint32 *count, calICalendar ***aCalendars) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCalendars(count, aCalendars); } \
  NS_IMETHOD GetCalendarPref_(calICalendar *aCalendar, const nsACString & aName, nsIVariant **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCalendarPref_(aCalendar, aName, _retval); } \
  NS_IMETHOD SetCalendarPref_(calICalendar *aCalendar, nsIVariant *aName, nsIVariant *aValue) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCalendarPref_(aCalendar, aName, aValue); } \
  NS_IMETHOD DeleteCalendarPref_(calICalendar *aCalendar, const nsACString & aName) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteCalendarPref_(aCalendar, aName); } \
  NS_IMETHOD AddObserver(calICalendarManagerObserver *aObserver) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddObserver(aObserver); } \
  NS_IMETHOD RemoveObserver(calICalendarManagerObserver *aObserver) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveObserver(aObserver); } 

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

/* Header file */
class _MYCLASS_ : public calICalendarManager
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALICALENDARMANAGER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute PRUint32 networkCalendarCount; */
NS_IMETHODIMP _MYCLASS_::GetNetworkCalendarCount(PRUint32 *aNetworkCalendarCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 readOnlyCalendarCount; */
NS_IMETHODIMP _MYCLASS_::GetReadOnlyCalendarCount(PRUint32 *aReadOnlyCalendarCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRUint32 calendarCount; */
NS_IMETHODIMP _MYCLASS_::GetCalendarCount(PRUint32 *aCalendarCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* calICalendar createCalendar (in AUTF8String aType, in nsIURI aURL); */
NS_IMETHODIMP _MYCLASS_::CreateCalendar(const nsACString & aType, nsIURI *aURL, calICalendar **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void registerCalendar (in calICalendar aCalendar); */
NS_IMETHODIMP _MYCLASS_::RegisterCalendar(calICalendar *aCalendar)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unregisterCalendar (in calICalendar aCalendar); */
NS_IMETHODIMP _MYCLASS_::UnregisterCalendar(calICalendar *aCalendar)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteCalendar (in calICalendar aCalendar); */
NS_IMETHODIMP _MYCLASS_::DeleteCalendar(calICalendar *aCalendar)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getCalendars (out PRUint32 count, [array, size_is (count), retval] out calICalendar aCalendars); */
NS_IMETHODIMP _MYCLASS_::GetCalendars(PRUint32 *count, calICalendar ***aCalendars)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIVariant getCalendarPref_ (in calICalendar aCalendar, in AUTF8String aName); */
NS_IMETHODIMP _MYCLASS_::GetCalendarPref_(calICalendar *aCalendar, const nsACString & aName, nsIVariant **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setCalendarPref_ (in calICalendar aCalendar, in nsIVariant aName, in nsIVariant aValue); */
NS_IMETHODIMP _MYCLASS_::SetCalendarPref_(calICalendar *aCalendar, nsIVariant *aName, nsIVariant *aValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteCalendarPref_ (in calICalendar aCalendar, in AUTF8String aName); */
NS_IMETHODIMP _MYCLASS_::DeleteCalendarPref_(calICalendar *aCalendar, const nsACString & aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addObserver (in calICalendarManagerObserver aObserver); */
NS_IMETHODIMP _MYCLASS_::AddObserver(calICalendarManagerObserver *aObserver)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeObserver (in calICalendarManagerObserver aObserver); */
NS_IMETHODIMP _MYCLASS_::RemoveObserver(calICalendarManagerObserver *aObserver)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    calICalendarManagerObserver */
#define CALICALENDARMANAGEROBSERVER_IID_STR "383f36f1-e669-4ca4-be7f-06b43910f44a"

#define CALICALENDARMANAGEROBSERVER_IID \
  {0x383f36f1, 0xe669, 0x4ca4, \
    { 0xbe, 0x7f, 0x06, 0xb4, 0x39, 0x10, 0xf4, 0x4a }}

class NS_NO_VTABLE calICalendarManagerObserver : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(CALICALENDARMANAGEROBSERVER_IID)

  /* void onCalendarRegistered (in calICalendar aCalendar); */
  NS_IMETHOD OnCalendarRegistered(calICalendar *aCalendar) = 0;

  /* void onCalendarUnregistering (in calICalendar aCalendar); */
  NS_IMETHOD OnCalendarUnregistering(calICalendar *aCalendar) = 0;

  /* void onCalendarDeleting (in calICalendar aCalendar); */
  NS_IMETHOD OnCalendarDeleting(calICalendar *aCalendar) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALICALENDARMANAGEROBSERVER \
  NS_IMETHOD OnCalendarRegistered(calICalendar *aCalendar); \
  NS_IMETHOD OnCalendarUnregistering(calICalendar *aCalendar); \
  NS_IMETHOD OnCalendarDeleting(calICalendar *aCalendar); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CALICALENDARMANAGEROBSERVER(_to) \
  NS_IMETHOD OnCalendarRegistered(calICalendar *aCalendar) { return _to OnCalendarRegistered(aCalendar); } \
  NS_IMETHOD OnCalendarUnregistering(calICalendar *aCalendar) { return _to OnCalendarUnregistering(aCalendar); } \
  NS_IMETHOD OnCalendarDeleting(calICalendar *aCalendar) { return _to OnCalendarDeleting(aCalendar); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_CALICALENDARMANAGEROBSERVER(_to) \
  NS_IMETHOD OnCalendarRegistered(calICalendar *aCalendar) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnCalendarRegistered(aCalendar); } \
  NS_IMETHOD OnCalendarUnregistering(calICalendar *aCalendar) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnCalendarUnregistering(aCalendar); } \
  NS_IMETHOD OnCalendarDeleting(calICalendar *aCalendar) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnCalendarDeleting(aCalendar); } 

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

/* Header file */
class _MYCLASS_ : public calICalendarManagerObserver
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALICALENDARMANAGEROBSERVER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void onCalendarRegistered (in calICalendar aCalendar); */
NS_IMETHODIMP _MYCLASS_::OnCalendarRegistered(calICalendar *aCalendar)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onCalendarUnregistering (in calICalendar aCalendar); */
NS_IMETHODIMP _MYCLASS_::OnCalendarUnregistering(calICalendar *aCalendar)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onCalendarDeleting (in calICalendar aCalendar); */
NS_IMETHODIMP _MYCLASS_::OnCalendarDeleting(calICalendar *aCalendar)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_calICalendarManager_h__ */
