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

#ifndef __gen_calICalendarView_h__
#define __gen_calICalendarView_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 calIDateTime; /* forward declaration */

class calICalendarViewController; /* forward declaration */

class calIItemBase; /* forward declaration */


/* starting interface:    calICalendarView */
#define CALICALENDARVIEW_IID_STR "3e567ccb-2ecf-4f59-b7ca-bf42b0fbf24a"

#define CALICALENDARVIEW_IID \
  {0x3e567ccb, 0x2ecf, 0x4f59, \
    { 0xb7, 0xca, 0xbf, 0x42, 0xb0, 0xfb, 0xf2, 0x4a }}

class NS_NO_VTABLE calICalendarView : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(CALICALENDARVIEW_IID)

  /**
   * the calendar that this view is displaying
   */
  /* attribute calICalendar displayCalender; */
  NS_IMETHOD GetDisplayCalender(calICalendar * *aDisplayCalender) = 0;
  NS_IMETHOD SetDisplayCalender(calICalendar * aDisplayCalender) = 0;

  /**
   * the controller for this view
   */
  /* attribute calICalendarViewController controller; */
  NS_IMETHOD GetController(calICalendarViewController * *aController) = 0;
  NS_IMETHOD SetController(calICalendarViewController * aController) = 0;

  /**
   * Ensure that the given date is visible; the view is free
   * to show more dates than the given date (e.g. week view
   * would show the entire week).
   */
  /* void showDate (in calIDateTime aDate); */
  NS_IMETHOD ShowDate(calIDateTime *aDate) = 0;

  /**
   * Set a date range for the view to display, from aStartDate
   * to aEndDate, inclusive.
   *
   * Some views may decide to utilize the time portion of these
   * calIDateTimes; pass in calIDateTimes that are dates if you
   * want to make sure this doesn't happen.
   */
  /* void setDateRange (in calIDateTime aStartDate, in calIDateTime aEndDate); */
  NS_IMETHOD SetDateRange(calIDateTime *aStartDate, calIDateTime *aEndDate) = 0;

  /**
   * The start date of the view's display.  If the view is displaying
   * disjoint dates, this will be the earliest date that's displayed.
   */
  /* readonly attribute calIDateTime startDate; */
  NS_IMETHOD GetStartDate(calIDateTime * *aStartDate) = 0;

  /**
   * The start date of the view's display.  If the view is displaying
   * disjoint dates, this will be the latest date that's displayed.
   *
   * Note that this won't be equivalent to the aEndDate passed to
   * setDateRange, because that date isn't actually displayed!
   */
  /* readonly attribute calIDateTime endDate; */
  NS_IMETHOD GetEndDate(calIDateTime * *aEndDate) = 0;

  /**
   * True if this view supports disjoint dates
   */
  /* readonly attribute boolean supportsDisjointDates; */
  NS_IMETHOD GetSupportsDisjointDates(PRBool *aSupportsDisjointDates) = 0;

  /**
   * True if this view currently has a disjoint date set.
   */
  /* readonly attribute boolean hasDisjointDates; */
  NS_IMETHOD GetHasDisjointDates(PRBool *aHasDisjointDates) = 0;

  /**
   * Set a disjoint date list for this view to show.  Throws
   * if supportsDisjointDates is false for this view.
   */
  /* void setDateList (in unsigned long aCount, [array, size_is (aCount)] in calIDateTime aDates); */
  NS_IMETHOD SetDateList(PRUint32 aCount, calIDateTime **aDates) = 0;

  /**
   * Returns the list of dates being shown by this calendar.
   * If a date range is set, it will expand out the date range by
   * day and return the full set.
   */
  /* void getDateList (out unsigned long aCount, [array, size_is (aCount), retval] out calIDateTime aDates); */
  NS_IMETHOD GetDateList(PRUint32 *aCount, calIDateTime ***aDates) = 0;

  /**
   * Get or set the selected item.  Only one item may be selected.
   */
  /* attribute calIItemBase selectedItem; */
  NS_IMETHOD GetSelectedItem(calIItemBase * *aSelectedItem) = 0;
  NS_IMETHOD SetSelectedItem(calIItemBase * aSelectedItem) = 0;

  /**
   * Get or set the selected day.
   */
  /* attribute calIDateTime selectedDay; */
  NS_IMETHOD GetSelectedDay(calIDateTime * *aSelectedDay) = 0;
  NS_IMETHOD SetSelectedDay(calIDateTime * aSelectedDay) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALICALENDARVIEW \
  NS_IMETHOD GetDisplayCalender(calICalendar * *aDisplayCalender); \
  NS_IMETHOD SetDisplayCalender(calICalendar * aDisplayCalender); \
  NS_IMETHOD GetController(calICalendarViewController * *aController); \
  NS_IMETHOD SetController(calICalendarViewController * aController); \
  NS_IMETHOD ShowDate(calIDateTime *aDate); \
  NS_IMETHOD SetDateRange(calIDateTime *aStartDate, calIDateTime *aEndDate); \
  NS_IMETHOD GetStartDate(calIDateTime * *aStartDate); \
  NS_IMETHOD GetEndDate(calIDateTime * *aEndDate); \
  NS_IMETHOD GetSupportsDisjointDates(PRBool *aSupportsDisjointDates); \
  NS_IMETHOD GetHasDisjointDates(PRBool *aHasDisjointDates); \
  NS_IMETHOD SetDateList(PRUint32 aCount, calIDateTime **aDates); \
  NS_IMETHOD GetDateList(PRUint32 *aCount, calIDateTime ***aDates); \
  NS_IMETHOD GetSelectedItem(calIItemBase * *aSelectedItem); \
  NS_IMETHOD SetSelectedItem(calIItemBase * aSelectedItem); \
  NS_IMETHOD GetSelectedDay(calIDateTime * *aSelectedDay); \
  NS_IMETHOD SetSelectedDay(calIDateTime * aSelectedDay); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CALICALENDARVIEW(_to) \
  NS_IMETHOD GetDisplayCalender(calICalendar * *aDisplayCalender) { return _to GetDisplayCalender(aDisplayCalender); } \
  NS_IMETHOD SetDisplayCalender(calICalendar * aDisplayCalender) { return _to SetDisplayCalender(aDisplayCalender); } \
  NS_IMETHOD GetController(calICalendarViewController * *aController) { return _to GetController(aController); } \
  NS_IMETHOD SetController(calICalendarViewController * aController) { return _to SetController(aController); } \
  NS_IMETHOD ShowDate(calIDateTime *aDate) { return _to ShowDate(aDate); } \
  NS_IMETHOD SetDateRange(calIDateTime *aStartDate, calIDateTime *aEndDate) { return _to SetDateRange(aStartDate, aEndDate); } \
  NS_IMETHOD GetStartDate(calIDateTime * *aStartDate) { return _to GetStartDate(aStartDate); } \
  NS_IMETHOD GetEndDate(calIDateTime * *aEndDate) { return _to GetEndDate(aEndDate); } \
  NS_IMETHOD GetSupportsDisjointDates(PRBool *aSupportsDisjointDates) { return _to GetSupportsDisjointDates(aSupportsDisjointDates); } \
  NS_IMETHOD GetHasDisjointDates(PRBool *aHasDisjointDates) { return _to GetHasDisjointDates(aHasDisjointDates); } \
  NS_IMETHOD SetDateList(PRUint32 aCount, calIDateTime **aDates) { return _to SetDateList(aCount, aDates); } \
  NS_IMETHOD GetDateList(PRUint32 *aCount, calIDateTime ***aDates) { return _to GetDateList(aCount, aDates); } \
  NS_IMETHOD GetSelectedItem(calIItemBase * *aSelectedItem) { return _to GetSelectedItem(aSelectedItem); } \
  NS_IMETHOD SetSelectedItem(calIItemBase * aSelectedItem) { return _to SetSelectedItem(aSelectedItem); } \
  NS_IMETHOD GetSelectedDay(calIDateTime * *aSelectedDay) { return _to GetSelectedDay(aSelectedDay); } \
  NS_IMETHOD SetSelectedDay(calIDateTime * aSelectedDay) { return _to SetSelectedDay(aSelectedDay); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_CALICALENDARVIEW(_to) \
  NS_IMETHOD GetDisplayCalender(calICalendar * *aDisplayCalender) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDisplayCalender(aDisplayCalender); } \
  NS_IMETHOD SetDisplayCalender(calICalendar * aDisplayCalender) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDisplayCalender(aDisplayCalender); } \
  NS_IMETHOD GetController(calICalendarViewController * *aController) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetController(aController); } \
  NS_IMETHOD SetController(calICalendarViewController * aController) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetController(aController); } \
  NS_IMETHOD ShowDate(calIDateTime *aDate) { return !_to ? NS_ERROR_NULL_POINTER : _to->ShowDate(aDate); } \
  NS_IMETHOD SetDateRange(calIDateTime *aStartDate, calIDateTime *aEndDate) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDateRange(aStartDate, aEndDate); } \
  NS_IMETHOD GetStartDate(calIDateTime * *aStartDate) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStartDate(aStartDate); } \
  NS_IMETHOD GetEndDate(calIDateTime * *aEndDate) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEndDate(aEndDate); } \
  NS_IMETHOD GetSupportsDisjointDates(PRBool *aSupportsDisjointDates) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSupportsDisjointDates(aSupportsDisjointDates); } \
  NS_IMETHOD GetHasDisjointDates(PRBool *aHasDisjointDates) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHasDisjointDates(aHasDisjointDates); } \
  NS_IMETHOD SetDateList(PRUint32 aCount, calIDateTime **aDates) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDateList(aCount, aDates); } \
  NS_IMETHOD GetDateList(PRUint32 *aCount, calIDateTime ***aDates) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDateList(aCount, aDates); } \
  NS_IMETHOD GetSelectedItem(calIItemBase * *aSelectedItem) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSelectedItem(aSelectedItem); } \
  NS_IMETHOD SetSelectedItem(calIItemBase * aSelectedItem) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSelectedItem(aSelectedItem); } \
  NS_IMETHOD GetSelectedDay(calIDateTime * *aSelectedDay) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSelectedDay(aSelectedDay); } \
  NS_IMETHOD SetSelectedDay(calIDateTime * aSelectedDay) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSelectedDay(aSelectedDay); } 

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

/* Header file */
class _MYCLASS_ : public calICalendarView
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALICALENDARVIEW

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* attribute calICalendar displayCalender; */
NS_IMETHODIMP _MYCLASS_::GetDisplayCalender(calICalendar * *aDisplayCalender)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDisplayCalender(calICalendar * aDisplayCalender)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute calICalendarViewController controller; */
NS_IMETHODIMP _MYCLASS_::GetController(calICalendarViewController * *aController)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetController(calICalendarViewController * aController)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void showDate (in calIDateTime aDate); */
NS_IMETHODIMP _MYCLASS_::ShowDate(calIDateTime *aDate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setDateRange (in calIDateTime aStartDate, in calIDateTime aEndDate); */
NS_IMETHODIMP _MYCLASS_::SetDateRange(calIDateTime *aStartDate, calIDateTime *aEndDate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute calIDateTime startDate; */
NS_IMETHODIMP _MYCLASS_::GetStartDate(calIDateTime * *aStartDate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute calIDateTime endDate; */
NS_IMETHODIMP _MYCLASS_::GetEndDate(calIDateTime * *aEndDate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean supportsDisjointDates; */
NS_IMETHODIMP _MYCLASS_::GetSupportsDisjointDates(PRBool *aSupportsDisjointDates)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean hasDisjointDates; */
NS_IMETHODIMP _MYCLASS_::GetHasDisjointDates(PRBool *aHasDisjointDates)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setDateList (in unsigned long aCount, [array, size_is (aCount)] in calIDateTime aDates); */
NS_IMETHODIMP _MYCLASS_::SetDateList(PRUint32 aCount, calIDateTime **aDates)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getDateList (out unsigned long aCount, [array, size_is (aCount), retval] out calIDateTime aDates); */
NS_IMETHODIMP _MYCLASS_::GetDateList(PRUint32 *aCount, calIDateTime ***aDates)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute calIItemBase selectedItem; */
NS_IMETHODIMP _MYCLASS_::GetSelectedItem(calIItemBase * *aSelectedItem)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetSelectedItem(calIItemBase * aSelectedItem)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute calIDateTime selectedDay; */
NS_IMETHODIMP _MYCLASS_::GetSelectedDay(calIDateTime * *aSelectedDay)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetSelectedDay(calIDateTime * aSelectedDay)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_calICalendarView_h__ */
