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

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


/* starting interface:    calIDateTimeFormatter */
#define CALIDATETIMEFORMATTER_IID_STR "17101743-f016-4fb2-90dd-0c043aa44579"

#define CALIDATETIMEFORMATTER_IID \
  {0x17101743, 0xf016, 0x4fb2, \
    { 0x90, 0xdd, 0x0c, 0x04, 0x3a, 0xa4, 0x45, 0x79 }}

class NS_NO_VTABLE calIDateTimeFormatter : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(CALIDATETIMEFORMATTER_IID)

  /**
     * Format a date in either short or long format, depending on the
     * users preference
     *
     * @see
     *     formatDateShort
     *     formatDateLong
     */
  /* AString formatDate (in calIDateTime aDate); */
  NS_IMETHOD FormatDate(calIDateTime *aDate, nsAString & _retval) = 0;

  /**
     * Format a date into a short format, for example
     * "12/17/2005"
     *
     * @param aDate
     *      the datetime to format
     * @returns
     *      a string representing the date part of the datetime
     */
  /* AString formatDateShort (in calIDateTime aDate); */
  NS_IMETHOD FormatDateShort(calIDateTime *aDate, nsAString & _retval) = 0;

  /**
     * Format a date into a long format, for example
     * "Sat Dec 17 2005"
     *
     * @param aDate
     *      the datetime to format
     * @returns
     *      a string representing the date part of the datetime
     */
  /* AString formatDateLong (in calIDateTime aDate); */
  NS_IMETHOD FormatDateLong(calIDateTime *aDate, nsAString & _retval) = 0;

  /**
     * Format a date into a short format without mentioning the year, for
     * example "Dec 17"
     *
     * @param aDate
     *      the datetime to format
     * @returns
     *      a string representing the date part of the datetime
     */
  /* AString formatDateWithoutYear (in calIDateTime aDate); */
  NS_IMETHOD FormatDateWithoutYear(calIDateTime *aDate, nsAString & _retval) = 0;

  /**
     * Format a time into the format specified by the OS settings.
     * Will omit the seconds from the output.
     *
     * @param aDate
     *      the datetime to format
     * @returns
     *      a string representing the time part of the datetime
     */
  /* AString formatTime (in calIDateTime aDate); */
  NS_IMETHOD FormatTime(calIDateTime *aDate, nsAString & _retval) = 0;

  /**
     * Format a datetime into the format specified by the OS settings.
     * Will omit the seconds from the output.
     *
     * @param aDateTime
     *      the datetime to format
     * @returns
     *      a string representing the datetime
     */
  /* AString formatDateTime (in calIDateTime aDate); */
  NS_IMETHOD FormatDateTime(calIDateTime *aDate, nsAString & _retval) = 0;

  /**
     * Format a time interval. May assume that both out strings are displayed
     * close to each other, so that it can leave out the date part of the
     * end string (when applicable)
     *
     * @param aStartDate
     *      The start of the interval
     * @param aEndDate
     *      The end of the interval
     * @param aStartString
     *      A string representing the start of the interval
     * @param aEndString
     *      A string representing the end of the interval. May leave out
     *      parts already in aStartString.
     */
  /* void formatInterval (in calIDateTime aStartDate, in calIDateTime aEndDate, out wstring aStartString, out wstring aEndString); */
  NS_IMETHOD FormatInterval(calIDateTime *aStartDate, calIDateTime *aEndDate, PRUnichar **aStartString, PRUnichar **aEndString) = 0;

  /**
     * Get the month name
     *
     * @param aMonthIndex
     *     zero-based month number (0 is january, 11 is december)
     * @returns
     *      the month name in the current locale
     */
  /* AString monthName (in unsigned long aMonthIndex); */
  NS_IMETHOD MonthName(PRUint32 aMonthIndex, nsAString & _retval) = 0;

  /**
     * Get the abbrevation of the month name
     *
     * @see monthName
     */
  /* AString shortMonthName (in unsigned long aMonthIndex); */
  NS_IMETHOD ShortMonthName(PRUint32 aMonthIndex, nsAString & _retval) = 0;

  /**
     * Get the day name
     * @param aMonthIndex
     *     zero-based month number (0 is sunday, 6 is saturday)
     * @returns
     *      the day name in the current locale
     */
  /* AString dayName (in unsigned long aDayIndex); */
  NS_IMETHOD DayName(PRUint32 aDayIndex, nsAString & _retval) = 0;

  /**
     * Get the abbrevation of the day name
     * @see dayName
     */
  /* AString shortDayName (in unsigned long aDayIndex); */
  NS_IMETHOD ShortDayName(PRUint32 aDayIndex, nsAString & _retval) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALIDATETIMEFORMATTER \
  NS_IMETHOD FormatDate(calIDateTime *aDate, nsAString & _retval); \
  NS_IMETHOD FormatDateShort(calIDateTime *aDate, nsAString & _retval); \
  NS_IMETHOD FormatDateLong(calIDateTime *aDate, nsAString & _retval); \
  NS_IMETHOD FormatDateWithoutYear(calIDateTime *aDate, nsAString & _retval); \
  NS_IMETHOD FormatTime(calIDateTime *aDate, nsAString & _retval); \
  NS_IMETHOD FormatDateTime(calIDateTime *aDate, nsAString & _retval); \
  NS_IMETHOD FormatInterval(calIDateTime *aStartDate, calIDateTime *aEndDate, PRUnichar **aStartString, PRUnichar **aEndString); \
  NS_IMETHOD MonthName(PRUint32 aMonthIndex, nsAString & _retval); \
  NS_IMETHOD ShortMonthName(PRUint32 aMonthIndex, nsAString & _retval); \
  NS_IMETHOD DayName(PRUint32 aDayIndex, nsAString & _retval); \
  NS_IMETHOD ShortDayName(PRUint32 aDayIndex, nsAString & _retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CALIDATETIMEFORMATTER(_to) \
  NS_IMETHOD FormatDate(calIDateTime *aDate, nsAString & _retval) { return _to FormatDate(aDate, _retval); } \
  NS_IMETHOD FormatDateShort(calIDateTime *aDate, nsAString & _retval) { return _to FormatDateShort(aDate, _retval); } \
  NS_IMETHOD FormatDateLong(calIDateTime *aDate, nsAString & _retval) { return _to FormatDateLong(aDate, _retval); } \
  NS_IMETHOD FormatDateWithoutYear(calIDateTime *aDate, nsAString & _retval) { return _to FormatDateWithoutYear(aDate, _retval); } \
  NS_IMETHOD FormatTime(calIDateTime *aDate, nsAString & _retval) { return _to FormatTime(aDate, _retval); } \
  NS_IMETHOD FormatDateTime(calIDateTime *aDate, nsAString & _retval) { return _to FormatDateTime(aDate, _retval); } \
  NS_IMETHOD FormatInterval(calIDateTime *aStartDate, calIDateTime *aEndDate, PRUnichar **aStartString, PRUnichar **aEndString) { return _to FormatInterval(aStartDate, aEndDate, aStartString, aEndString); } \
  NS_IMETHOD MonthName(PRUint32 aMonthIndex, nsAString & _retval) { return _to MonthName(aMonthIndex, _retval); } \
  NS_IMETHOD ShortMonthName(PRUint32 aMonthIndex, nsAString & _retval) { return _to ShortMonthName(aMonthIndex, _retval); } \
  NS_IMETHOD DayName(PRUint32 aDayIndex, nsAString & _retval) { return _to DayName(aDayIndex, _retval); } \
  NS_IMETHOD ShortDayName(PRUint32 aDayIndex, nsAString & _retval) { return _to ShortDayName(aDayIndex, _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_CALIDATETIMEFORMATTER(_to) \
  NS_IMETHOD FormatDate(calIDateTime *aDate, nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->FormatDate(aDate, _retval); } \
  NS_IMETHOD FormatDateShort(calIDateTime *aDate, nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->FormatDateShort(aDate, _retval); } \
  NS_IMETHOD FormatDateLong(calIDateTime *aDate, nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->FormatDateLong(aDate, _retval); } \
  NS_IMETHOD FormatDateWithoutYear(calIDateTime *aDate, nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->FormatDateWithoutYear(aDate, _retval); } \
  NS_IMETHOD FormatTime(calIDateTime *aDate, nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->FormatTime(aDate, _retval); } \
  NS_IMETHOD FormatDateTime(calIDateTime *aDate, nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->FormatDateTime(aDate, _retval); } \
  NS_IMETHOD FormatInterval(calIDateTime *aStartDate, calIDateTime *aEndDate, PRUnichar **aStartString, PRUnichar **aEndString) { return !_to ? NS_ERROR_NULL_POINTER : _to->FormatInterval(aStartDate, aEndDate, aStartString, aEndString); } \
  NS_IMETHOD MonthName(PRUint32 aMonthIndex, nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->MonthName(aMonthIndex, _retval); } \
  NS_IMETHOD ShortMonthName(PRUint32 aMonthIndex, nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->ShortMonthName(aMonthIndex, _retval); } \
  NS_IMETHOD DayName(PRUint32 aDayIndex, nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->DayName(aDayIndex, _retval); } \
  NS_IMETHOD ShortDayName(PRUint32 aDayIndex, nsAString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->ShortDayName(aDayIndex, _retval); } 

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

/* Header file */
class _MYCLASS_ : public calIDateTimeFormatter
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALIDATETIMEFORMATTER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* AString formatDate (in calIDateTime aDate); */
NS_IMETHODIMP _MYCLASS_::FormatDate(calIDateTime *aDate, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString formatDateShort (in calIDateTime aDate); */
NS_IMETHODIMP _MYCLASS_::FormatDateShort(calIDateTime *aDate, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString formatDateLong (in calIDateTime aDate); */
NS_IMETHODIMP _MYCLASS_::FormatDateLong(calIDateTime *aDate, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString formatDateWithoutYear (in calIDateTime aDate); */
NS_IMETHODIMP _MYCLASS_::FormatDateWithoutYear(calIDateTime *aDate, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString formatTime (in calIDateTime aDate); */
NS_IMETHODIMP _MYCLASS_::FormatTime(calIDateTime *aDate, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString formatDateTime (in calIDateTime aDate); */
NS_IMETHODIMP _MYCLASS_::FormatDateTime(calIDateTime *aDate, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void formatInterval (in calIDateTime aStartDate, in calIDateTime aEndDate, out wstring aStartString, out wstring aEndString); */
NS_IMETHODIMP _MYCLASS_::FormatInterval(calIDateTime *aStartDate, calIDateTime *aEndDate, PRUnichar **aStartString, PRUnichar **aEndString)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString monthName (in unsigned long aMonthIndex); */
NS_IMETHODIMP _MYCLASS_::MonthName(PRUint32 aMonthIndex, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString shortMonthName (in unsigned long aMonthIndex); */
NS_IMETHODIMP _MYCLASS_::ShortMonthName(PRUint32 aMonthIndex, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString dayName (in unsigned long aDayIndex); */
NS_IMETHODIMP _MYCLASS_::DayName(PRUint32 aDayIndex, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString shortDayName (in unsigned long aDayIndex); */
NS_IMETHODIMP _MYCLASS_::ShortDayName(PRUint32 aDayIndex, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_calIDateTimeFormatter_h__ */
