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

#ifndef __gen_calIAlarmService_h__
#define __gen_calIAlarmService_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 calIItemBase; /* forward declaration */

class calICalendar; /* forward declaration */

class calIDuration; /* forward declaration */

class calITimezone; /* forward declaration */

class calIAlarm; /* forward declaration */

class calIOperation; /* forward declaration */


/* starting interface:    calIAlarmServiceObserver */
#define CALIALARMSERVICEOBSERVER_IID_STR "dc96dd04-d2dd-448e-b307-8c8ff39c72af"

#define CALIALARMSERVICEOBSERVER_IID \
  {0xdc96dd04, 0xd2dd, 0x448e, \
    { 0xb3, 0x07, 0x8c, 0x8f, 0xf3, 0x9c, 0x72, 0xaf }}

class NS_NO_VTABLE calIAlarmServiceObserver : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(CALIALARMSERVICEOBSERVER_IID)

  /* void onAlarm (in calIItemBase item, in calIAlarm alarm); */
  NS_IMETHOD OnAlarm(calIItemBase *item, calIAlarm *alarm) = 0;

  /* void onRemoveAlarmsByItem (in calIItemBase item); */
  NS_IMETHOD OnRemoveAlarmsByItem(calIItemBase *item) = 0;

  /* void onRemoveAlarmsByCalendar (in calICalendar calendar); */
  NS_IMETHOD OnRemoveAlarmsByCalendar(calICalendar *calendar) = 0;

  /* void onAlarmsLoaded (in calICalendar calendar); */
  NS_IMETHOD OnAlarmsLoaded(calICalendar *calendar) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(calIAlarmServiceObserver, CALIALARMSERVICEOBSERVER_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALIALARMSERVICEOBSERVER \
  NS_IMETHOD OnAlarm(calIItemBase *item, calIAlarm *alarm) override; \
  NS_IMETHOD OnRemoveAlarmsByItem(calIItemBase *item) override; \
  NS_IMETHOD OnRemoveAlarmsByCalendar(calICalendar *calendar) override; \
  NS_IMETHOD OnAlarmsLoaded(calICalendar *calendar) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_CALIALARMSERVICEOBSERVER \
  NS_METHOD OnAlarm(calIItemBase *item, calIAlarm *alarm); \
  NS_METHOD OnRemoveAlarmsByItem(calIItemBase *item); \
  NS_METHOD OnRemoveAlarmsByCalendar(calICalendar *calendar); \
  NS_METHOD OnAlarmsLoaded(calICalendar *calendar); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CALIALARMSERVICEOBSERVER(_to) \
  NS_IMETHOD OnAlarm(calIItemBase *item, calIAlarm *alarm) override { return _to OnAlarm(item, alarm); } \
  NS_IMETHOD OnRemoveAlarmsByItem(calIItemBase *item) override { return _to OnRemoveAlarmsByItem(item); } \
  NS_IMETHOD OnRemoveAlarmsByCalendar(calICalendar *calendar) override { return _to OnRemoveAlarmsByCalendar(calendar); } \
  NS_IMETHOD OnAlarmsLoaded(calICalendar *calendar) override { return _to OnAlarmsLoaded(calendar); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_CALIALARMSERVICEOBSERVER(_to) \
  NS_IMETHOD OnAlarm(calIItemBase *item, calIAlarm *alarm) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OnAlarm(item, alarm); } \
  NS_IMETHOD OnRemoveAlarmsByItem(calIItemBase *item) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OnRemoveAlarmsByItem(item); } \
  NS_IMETHOD OnRemoveAlarmsByCalendar(calICalendar *calendar) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OnRemoveAlarmsByCalendar(calendar); } \
  NS_IMETHOD OnAlarmsLoaded(calICalendar *calendar) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OnAlarmsLoaded(calendar); } 

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

/* Header file */
class _MYCLASS_ : public calIAlarmServiceObserver
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALIALARMSERVICEOBSERVER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(_MYCLASS_, calIAlarmServiceObserver)

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

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

/* void onAlarm (in calIItemBase item, in calIAlarm alarm); */
NS_IMETHODIMP _MYCLASS_::OnAlarm(calIItemBase *item, calIAlarm *alarm)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onRemoveAlarmsByItem (in calIItemBase item); */
NS_IMETHODIMP _MYCLASS_::OnRemoveAlarmsByItem(calIItemBase *item)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onRemoveAlarmsByCalendar (in calICalendar calendar); */
NS_IMETHODIMP _MYCLASS_::OnRemoveAlarmsByCalendar(calICalendar *calendar)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onAlarmsLoaded (in calICalendar calendar); */
NS_IMETHODIMP _MYCLASS_::OnAlarmsLoaded(calICalendar *calendar)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    calIAlarmService */
#define CALIALARMSERVICE_IID_STR "42cfa9ce-49d6-11e5-b88c-5b90eedc1c47"

#define CALIALARMSERVICE_IID \
  {0x42cfa9ce, 0x49d6, 0x11e5, \
    { 0xb8, 0x8c, 0x5b, 0x90, 0xee, 0xdc, 0x1c, 0x47 }}

class NS_NO_VTABLE calIAlarmService : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(CALIALARMSERVICE_IID)

  enum {
    MAX_SNOOZE_MONTHS = 1U
  };

  /* attribute calITimezone timezone; */
  NS_IMETHOD GetTimezone(calITimezone * *aTimezone) = 0;
  NS_IMETHOD SetTimezone(calITimezone *aTimezone) = 0;

  /* attribute boolean isLoading; */
  NS_IMETHOD GetIsLoading(bool *aIsLoading) = 0;
  NS_IMETHOD SetIsLoading(bool aIsLoading) = 0;

  /* void startup (); */
  NS_IMETHOD Startup(void) = 0;

  /* void shutdown (); */
  NS_IMETHOD Shutdown(void) = 0;

  /* void addObserver (in calIAlarmServiceObserver observer); */
  NS_IMETHOD AddObserver(calIAlarmServiceObserver *observer) = 0;

  /* void removeObserver (in calIAlarmServiceObserver observer); */
  NS_IMETHOD RemoveObserver(calIAlarmServiceObserver *observer) = 0;

  /* calIOperation snoozeAlarm (in calIItemBase item, in calIAlarm alarm, in calIDuration duration); */
  NS_IMETHOD SnoozeAlarm(calIItemBase *item, calIAlarm *alarm, calIDuration *duration, calIOperation * *_retval) = 0;

  /* calIOperation dismissAlarm (in calIItemBase item, in calIAlarm alarm); */
  NS_IMETHOD DismissAlarm(calIItemBase *item, calIAlarm *alarm, calIOperation * *_retval) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(calIAlarmService, CALIALARMSERVICE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALIALARMSERVICE \
  NS_IMETHOD GetTimezone(calITimezone * *aTimezone) override; \
  NS_IMETHOD SetTimezone(calITimezone *aTimezone) override; \
  NS_IMETHOD GetIsLoading(bool *aIsLoading) override; \
  NS_IMETHOD SetIsLoading(bool aIsLoading) override; \
  NS_IMETHOD Startup(void) override; \
  NS_IMETHOD Shutdown(void) override; \
  NS_IMETHOD AddObserver(calIAlarmServiceObserver *observer) override; \
  NS_IMETHOD RemoveObserver(calIAlarmServiceObserver *observer) override; \
  NS_IMETHOD SnoozeAlarm(calIItemBase *item, calIAlarm *alarm, calIDuration *duration, calIOperation * *_retval) override; \
  NS_IMETHOD DismissAlarm(calIItemBase *item, calIAlarm *alarm, calIOperation * *_retval) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_CALIALARMSERVICE \
  NS_METHOD GetTimezone(calITimezone * *aTimezone); \
  NS_METHOD SetTimezone(calITimezone *aTimezone); \
  NS_METHOD GetIsLoading(bool *aIsLoading); \
  NS_METHOD SetIsLoading(bool aIsLoading); \
  NS_METHOD Startup(void); \
  NS_METHOD Shutdown(void); \
  NS_METHOD AddObserver(calIAlarmServiceObserver *observer); \
  NS_METHOD RemoveObserver(calIAlarmServiceObserver *observer); \
  NS_METHOD SnoozeAlarm(calIItemBase *item, calIAlarm *alarm, calIDuration *duration, calIOperation * *_retval); \
  NS_METHOD DismissAlarm(calIItemBase *item, calIAlarm *alarm, calIOperation * *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CALIALARMSERVICE(_to) \
  NS_IMETHOD GetTimezone(calITimezone * *aTimezone) override { return _to GetTimezone(aTimezone); } \
  NS_IMETHOD SetTimezone(calITimezone *aTimezone) override { return _to SetTimezone(aTimezone); } \
  NS_IMETHOD GetIsLoading(bool *aIsLoading) override { return _to GetIsLoading(aIsLoading); } \
  NS_IMETHOD SetIsLoading(bool aIsLoading) override { return _to SetIsLoading(aIsLoading); } \
  NS_IMETHOD Startup(void) override { return _to Startup(); } \
  NS_IMETHOD Shutdown(void) override { return _to Shutdown(); } \
  NS_IMETHOD AddObserver(calIAlarmServiceObserver *observer) override { return _to AddObserver(observer); } \
  NS_IMETHOD RemoveObserver(calIAlarmServiceObserver *observer) override { return _to RemoveObserver(observer); } \
  NS_IMETHOD SnoozeAlarm(calIItemBase *item, calIAlarm *alarm, calIDuration *duration, calIOperation * *_retval) override { return _to SnoozeAlarm(item, alarm, duration, _retval); } \
  NS_IMETHOD DismissAlarm(calIItemBase *item, calIAlarm *alarm, calIOperation * *_retval) override { return _to DismissAlarm(item, alarm, _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_CALIALARMSERVICE(_to) \
  NS_IMETHOD GetTimezone(calITimezone * *aTimezone) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTimezone(aTimezone); } \
  NS_IMETHOD SetTimezone(calITimezone *aTimezone) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTimezone(aTimezone); } \
  NS_IMETHOD GetIsLoading(bool *aIsLoading) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsLoading(aIsLoading); } \
  NS_IMETHOD SetIsLoading(bool aIsLoading) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIsLoading(aIsLoading); } \
  NS_IMETHOD Startup(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Startup(); } \
  NS_IMETHOD Shutdown(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Shutdown(); } \
  NS_IMETHOD AddObserver(calIAlarmServiceObserver *observer) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddObserver(observer); } \
  NS_IMETHOD RemoveObserver(calIAlarmServiceObserver *observer) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveObserver(observer); } \
  NS_IMETHOD SnoozeAlarm(calIItemBase *item, calIAlarm *alarm, calIDuration *duration, calIOperation * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SnoozeAlarm(item, alarm, duration, _retval); } \
  NS_IMETHOD DismissAlarm(calIItemBase *item, calIAlarm *alarm, calIOperation * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DismissAlarm(item, alarm, _retval); } 

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

/* Header file */
class _MYCLASS_ : public calIAlarmService
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALIALARMSERVICE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(_MYCLASS_, calIAlarmService)

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

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

/* attribute calITimezone timezone; */
NS_IMETHODIMP _MYCLASS_::GetTimezone(calITimezone * *aTimezone)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetTimezone(calITimezone *aTimezone)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean isLoading; */
NS_IMETHODIMP _MYCLASS_::GetIsLoading(bool *aIsLoading)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIsLoading(bool aIsLoading)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void startup (); */
NS_IMETHODIMP _MYCLASS_::Startup()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void shutdown (); */
NS_IMETHODIMP _MYCLASS_::Shutdown()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

/* calIOperation snoozeAlarm (in calIItemBase item, in calIAlarm alarm, in calIDuration duration); */
NS_IMETHODIMP _MYCLASS_::SnoozeAlarm(calIItemBase *item, calIAlarm *alarm, calIDuration *duration, calIOperation * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* calIOperation dismissAlarm (in calIItemBase item, in calIAlarm alarm); */
NS_IMETHODIMP _MYCLASS_::DismissAlarm(calIItemBase *item, calIAlarm *alarm, calIOperation * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_calIAlarmService_h__ */
