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

#ifndef __gen_calIDateTime_h__
#define __gen_calIDateTime_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 calIDuration; /* forward declaration */

class calITimezone; /* forward declaration */


/* starting interface:    calIDateTime */
#define CALIDATETIME_IID_STR "fe3e9a58-2938-4b2c-9085-4989d5f7244f"

#define CALIDATETIME_IID \
  {0xfe3e9a58, 0x2938, 0x4b2c, \
    { 0x90, 0x85, 0x49, 0x89, 0xd5, 0xf7, 0x24, 0x4f }}

class NS_NO_VTABLE calIDateTime : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(CALIDATETIME_IID)

  /* readonly attribute boolean isMutable; */
  NS_IMETHOD GetIsMutable(bool *aIsMutable) = 0;

  /* void makeImmutable (); */
  NS_IMETHOD MakeImmutable(void) = 0;

  /* calIDateTime clone (); */
  NS_IMETHOD Clone(calIDateTime * *_retval) = 0;

  /* readonly attribute boolean isValid; */
  NS_IMETHOD GetIsValid(bool *aIsValid) = 0;

  /* attribute PRTime nativeTime; */
  NS_IMETHOD GetNativeTime(PRTime *aNativeTime) = 0;
  NS_IMETHOD SetNativeTime(PRTime aNativeTime) = 0;

  /* attribute short year; */
  NS_IMETHOD GetYear(int16_t *aYear) = 0;
  NS_IMETHOD SetYear(int16_t aYear) = 0;

  /* attribute short month; */
  NS_IMETHOD GetMonth(int16_t *aMonth) = 0;
  NS_IMETHOD SetMonth(int16_t aMonth) = 0;

  /* attribute short day; */
  NS_IMETHOD GetDay(int16_t *aDay) = 0;
  NS_IMETHOD SetDay(int16_t aDay) = 0;

  /* attribute short hour; */
  NS_IMETHOD GetHour(int16_t *aHour) = 0;
  NS_IMETHOD SetHour(int16_t aHour) = 0;

  /* attribute short minute; */
  NS_IMETHOD GetMinute(int16_t *aMinute) = 0;
  NS_IMETHOD SetMinute(int16_t aMinute) = 0;

  /* attribute short second; */
  NS_IMETHOD GetSecond(int16_t *aSecond) = 0;
  NS_IMETHOD SetSecond(int16_t aSecond) = 0;

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

  /* void resetTo (in short year, in short month, in short day, in short hour, in short minute, in short second, in calITimezone timezone); */
  NS_IMETHOD ResetTo(int16_t year, int16_t month, int16_t day, int16_t hour, int16_t minute, int16_t second, calITimezone *timezone) = 0;

  /* readonly attribute long timezoneOffset; */
  NS_IMETHOD GetTimezoneOffset(int32_t *aTimezoneOffset) = 0;

  /* attribute boolean isDate; */
  NS_IMETHOD GetIsDate(bool *aIsDate) = 0;
  NS_IMETHOD SetIsDate(bool aIsDate) = 0;

  /* readonly attribute short weekday; */
  NS_IMETHOD GetWeekday(int16_t *aWeekday) = 0;

  /* readonly attribute short yearday; */
  NS_IMETHOD GetYearday(int16_t *aYearday) = 0;

  /* void reset (); */
  NS_IMETHOD Reset(void) = 0;

  /* AUTF8String toString (); */
  NS_IMETHOD ToString(nsACString & _retval) = 0;

  /* calIDateTime getInTimezone (in calITimezone aTimezone); */
  NS_IMETHOD GetInTimezone(calITimezone *aTimezone, calIDateTime * *_retval) = 0;

  /* void addDuration (in calIDuration aDuration); */
  NS_IMETHOD AddDuration(calIDuration *aDuration) = 0;

  /* calIDuration subtractDate (in calIDateTime aOtherDate); */
  NS_IMETHOD SubtractDate(calIDateTime *aOtherDate, calIDuration * *_retval) = 0;

  /* long compare (in calIDateTime aOther); */
  NS_IMETHOD Compare(calIDateTime *aOther, int32_t *_retval) = 0;

  /* readonly attribute calIDateTime startOfWeek; */
  NS_IMETHOD GetStartOfWeek(calIDateTime * *aStartOfWeek) = 0;

  /* readonly attribute calIDateTime endOfWeek; */
  NS_IMETHOD GetEndOfWeek(calIDateTime * *aEndOfWeek) = 0;

  /* readonly attribute calIDateTime startOfMonth; */
  NS_IMETHOD GetStartOfMonth(calIDateTime * *aStartOfMonth) = 0;

  /* readonly attribute calIDateTime endOfMonth; */
  NS_IMETHOD GetEndOfMonth(calIDateTime * *aEndOfMonth) = 0;

  /* readonly attribute calIDateTime startOfYear; */
  NS_IMETHOD GetStartOfYear(calIDateTime * *aStartOfYear) = 0;

  /* readonly attribute calIDateTime endOfYear; */
  NS_IMETHOD GetEndOfYear(calIDateTime * *aEndOfYear) = 0;

  /* attribute ACString icalString; */
  NS_IMETHOD GetIcalString(nsACString & aIcalString) = 0;
  NS_IMETHOD SetIcalString(const nsACString & aIcalString) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(calIDateTime, CALIDATETIME_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALIDATETIME \
  NS_IMETHOD GetIsMutable(bool *aIsMutable) override; \
  NS_IMETHOD MakeImmutable(void) override; \
  NS_IMETHOD Clone(calIDateTime * *_retval) override; \
  NS_IMETHOD GetIsValid(bool *aIsValid) override; \
  NS_IMETHOD GetNativeTime(PRTime *aNativeTime) override; \
  NS_IMETHOD SetNativeTime(PRTime aNativeTime) override; \
  NS_IMETHOD GetYear(int16_t *aYear) override; \
  NS_IMETHOD SetYear(int16_t aYear) override; \
  NS_IMETHOD GetMonth(int16_t *aMonth) override; \
  NS_IMETHOD SetMonth(int16_t aMonth) override; \
  NS_IMETHOD GetDay(int16_t *aDay) override; \
  NS_IMETHOD SetDay(int16_t aDay) override; \
  NS_IMETHOD GetHour(int16_t *aHour) override; \
  NS_IMETHOD SetHour(int16_t aHour) override; \
  NS_IMETHOD GetMinute(int16_t *aMinute) override; \
  NS_IMETHOD SetMinute(int16_t aMinute) override; \
  NS_IMETHOD GetSecond(int16_t *aSecond) override; \
  NS_IMETHOD SetSecond(int16_t aSecond) override; \
  NS_IMETHOD GetTimezone(calITimezone * *aTimezone) override; \
  NS_IMETHOD SetTimezone(calITimezone *aTimezone) override; \
  NS_IMETHOD ResetTo(int16_t year, int16_t month, int16_t day, int16_t hour, int16_t minute, int16_t second, calITimezone *timezone) override; \
  NS_IMETHOD GetTimezoneOffset(int32_t *aTimezoneOffset) override; \
  NS_IMETHOD GetIsDate(bool *aIsDate) override; \
  NS_IMETHOD SetIsDate(bool aIsDate) override; \
  NS_IMETHOD GetWeekday(int16_t *aWeekday) override; \
  NS_IMETHOD GetYearday(int16_t *aYearday) override; \
  NS_IMETHOD Reset(void) override; \
  NS_IMETHOD ToString(nsACString & _retval) override; \
  NS_IMETHOD GetInTimezone(calITimezone *aTimezone, calIDateTime * *_retval) override; \
  NS_IMETHOD AddDuration(calIDuration *aDuration) override; \
  NS_IMETHOD SubtractDate(calIDateTime *aOtherDate, calIDuration * *_retval) override; \
  NS_IMETHOD Compare(calIDateTime *aOther, int32_t *_retval) override; \
  NS_IMETHOD GetStartOfWeek(calIDateTime * *aStartOfWeek) override; \
  NS_IMETHOD GetEndOfWeek(calIDateTime * *aEndOfWeek) override; \
  NS_IMETHOD GetStartOfMonth(calIDateTime * *aStartOfMonth) override; \
  NS_IMETHOD GetEndOfMonth(calIDateTime * *aEndOfMonth) override; \
  NS_IMETHOD GetStartOfYear(calIDateTime * *aStartOfYear) override; \
  NS_IMETHOD GetEndOfYear(calIDateTime * *aEndOfYear) override; \
  NS_IMETHOD GetIcalString(nsACString & aIcalString) override; \
  NS_IMETHOD SetIcalString(const nsACString & aIcalString) 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_CALIDATETIME \
  NS_METHOD GetIsMutable(bool *aIsMutable); \
  NS_METHOD MakeImmutable(void); \
  NS_METHOD Clone(calIDateTime * *_retval); \
  NS_METHOD GetIsValid(bool *aIsValid); \
  NS_METHOD GetNativeTime(PRTime *aNativeTime); \
  NS_METHOD SetNativeTime(PRTime aNativeTime); \
  NS_METHOD GetYear(int16_t *aYear); \
  NS_METHOD SetYear(int16_t aYear); \
  NS_METHOD GetMonth(int16_t *aMonth); \
  NS_METHOD SetMonth(int16_t aMonth); \
  NS_METHOD GetDay(int16_t *aDay); \
  NS_METHOD SetDay(int16_t aDay); \
  NS_METHOD GetHour(int16_t *aHour); \
  NS_METHOD SetHour(int16_t aHour); \
  NS_METHOD GetMinute(int16_t *aMinute); \
  NS_METHOD SetMinute(int16_t aMinute); \
  NS_METHOD GetSecond(int16_t *aSecond); \
  NS_METHOD SetSecond(int16_t aSecond); \
  NS_METHOD GetTimezone(calITimezone * *aTimezone); \
  NS_METHOD SetTimezone(calITimezone *aTimezone); \
  NS_METHOD ResetTo(int16_t year, int16_t month, int16_t day, int16_t hour, int16_t minute, int16_t second, calITimezone *timezone); \
  NS_METHOD GetTimezoneOffset(int32_t *aTimezoneOffset); \
  NS_METHOD GetIsDate(bool *aIsDate); \
  NS_METHOD SetIsDate(bool aIsDate); \
  NS_METHOD GetWeekday(int16_t *aWeekday); \
  NS_METHOD GetYearday(int16_t *aYearday); \
  NS_METHOD Reset(void); \
  NS_METHOD ToString(nsACString & _retval); \
  NS_METHOD GetInTimezone(calITimezone *aTimezone, calIDateTime * *_retval); \
  NS_METHOD AddDuration(calIDuration *aDuration); \
  NS_METHOD SubtractDate(calIDateTime *aOtherDate, calIDuration * *_retval); \
  NS_METHOD Compare(calIDateTime *aOther, int32_t *_retval); \
  NS_METHOD GetStartOfWeek(calIDateTime * *aStartOfWeek); \
  NS_METHOD GetEndOfWeek(calIDateTime * *aEndOfWeek); \
  NS_METHOD GetStartOfMonth(calIDateTime * *aStartOfMonth); \
  NS_METHOD GetEndOfMonth(calIDateTime * *aEndOfMonth); \
  NS_METHOD GetStartOfYear(calIDateTime * *aStartOfYear); \
  NS_METHOD GetEndOfYear(calIDateTime * *aEndOfYear); \
  NS_METHOD GetIcalString(nsACString & aIcalString); \
  NS_METHOD SetIcalString(const nsACString & aIcalString); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CALIDATETIME(_to) \
  NS_IMETHOD GetIsMutable(bool *aIsMutable) override { return _to GetIsMutable(aIsMutable); } \
  NS_IMETHOD MakeImmutable(void) override { return _to MakeImmutable(); } \
  NS_IMETHOD Clone(calIDateTime * *_retval) override { return _to Clone(_retval); } \
  NS_IMETHOD GetIsValid(bool *aIsValid) override { return _to GetIsValid(aIsValid); } \
  NS_IMETHOD GetNativeTime(PRTime *aNativeTime) override { return _to GetNativeTime(aNativeTime); } \
  NS_IMETHOD SetNativeTime(PRTime aNativeTime) override { return _to SetNativeTime(aNativeTime); } \
  NS_IMETHOD GetYear(int16_t *aYear) override { return _to GetYear(aYear); } \
  NS_IMETHOD SetYear(int16_t aYear) override { return _to SetYear(aYear); } \
  NS_IMETHOD GetMonth(int16_t *aMonth) override { return _to GetMonth(aMonth); } \
  NS_IMETHOD SetMonth(int16_t aMonth) override { return _to SetMonth(aMonth); } \
  NS_IMETHOD GetDay(int16_t *aDay) override { return _to GetDay(aDay); } \
  NS_IMETHOD SetDay(int16_t aDay) override { return _to SetDay(aDay); } \
  NS_IMETHOD GetHour(int16_t *aHour) override { return _to GetHour(aHour); } \
  NS_IMETHOD SetHour(int16_t aHour) override { return _to SetHour(aHour); } \
  NS_IMETHOD GetMinute(int16_t *aMinute) override { return _to GetMinute(aMinute); } \
  NS_IMETHOD SetMinute(int16_t aMinute) override { return _to SetMinute(aMinute); } \
  NS_IMETHOD GetSecond(int16_t *aSecond) override { return _to GetSecond(aSecond); } \
  NS_IMETHOD SetSecond(int16_t aSecond) override { return _to SetSecond(aSecond); } \
  NS_IMETHOD GetTimezone(calITimezone * *aTimezone) override { return _to GetTimezone(aTimezone); } \
  NS_IMETHOD SetTimezone(calITimezone *aTimezone) override { return _to SetTimezone(aTimezone); } \
  NS_IMETHOD ResetTo(int16_t year, int16_t month, int16_t day, int16_t hour, int16_t minute, int16_t second, calITimezone *timezone) override { return _to ResetTo(year, month, day, hour, minute, second, timezone); } \
  NS_IMETHOD GetTimezoneOffset(int32_t *aTimezoneOffset) override { return _to GetTimezoneOffset(aTimezoneOffset); } \
  NS_IMETHOD GetIsDate(bool *aIsDate) override { return _to GetIsDate(aIsDate); } \
  NS_IMETHOD SetIsDate(bool aIsDate) override { return _to SetIsDate(aIsDate); } \
  NS_IMETHOD GetWeekday(int16_t *aWeekday) override { return _to GetWeekday(aWeekday); } \
  NS_IMETHOD GetYearday(int16_t *aYearday) override { return _to GetYearday(aYearday); } \
  NS_IMETHOD Reset(void) override { return _to Reset(); } \
  NS_IMETHOD ToString(nsACString & _retval) override { return _to ToString(_retval); } \
  NS_IMETHOD GetInTimezone(calITimezone *aTimezone, calIDateTime * *_retval) override { return _to GetInTimezone(aTimezone, _retval); } \
  NS_IMETHOD AddDuration(calIDuration *aDuration) override { return _to AddDuration(aDuration); } \
  NS_IMETHOD SubtractDate(calIDateTime *aOtherDate, calIDuration * *_retval) override { return _to SubtractDate(aOtherDate, _retval); } \
  NS_IMETHOD Compare(calIDateTime *aOther, int32_t *_retval) override { return _to Compare(aOther, _retval); } \
  NS_IMETHOD GetStartOfWeek(calIDateTime * *aStartOfWeek) override { return _to GetStartOfWeek(aStartOfWeek); } \
  NS_IMETHOD GetEndOfWeek(calIDateTime * *aEndOfWeek) override { return _to GetEndOfWeek(aEndOfWeek); } \
  NS_IMETHOD GetStartOfMonth(calIDateTime * *aStartOfMonth) override { return _to GetStartOfMonth(aStartOfMonth); } \
  NS_IMETHOD GetEndOfMonth(calIDateTime * *aEndOfMonth) override { return _to GetEndOfMonth(aEndOfMonth); } \
  NS_IMETHOD GetStartOfYear(calIDateTime * *aStartOfYear) override { return _to GetStartOfYear(aStartOfYear); } \
  NS_IMETHOD GetEndOfYear(calIDateTime * *aEndOfYear) override { return _to GetEndOfYear(aEndOfYear); } \
  NS_IMETHOD GetIcalString(nsACString & aIcalString) override { return _to GetIcalString(aIcalString); } \
  NS_IMETHOD SetIcalString(const nsACString & aIcalString) override { return _to SetIcalString(aIcalString); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_CALIDATETIME(_to) \
  NS_IMETHOD GetIsMutable(bool *aIsMutable) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsMutable(aIsMutable); } \
  NS_IMETHOD MakeImmutable(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->MakeImmutable(); } \
  NS_IMETHOD Clone(calIDateTime * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Clone(_retval); } \
  NS_IMETHOD GetIsValid(bool *aIsValid) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsValid(aIsValid); } \
  NS_IMETHOD GetNativeTime(PRTime *aNativeTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNativeTime(aNativeTime); } \
  NS_IMETHOD SetNativeTime(PRTime aNativeTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNativeTime(aNativeTime); } \
  NS_IMETHOD GetYear(int16_t *aYear) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetYear(aYear); } \
  NS_IMETHOD SetYear(int16_t aYear) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetYear(aYear); } \
  NS_IMETHOD GetMonth(int16_t *aMonth) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMonth(aMonth); } \
  NS_IMETHOD SetMonth(int16_t aMonth) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMonth(aMonth); } \
  NS_IMETHOD GetDay(int16_t *aDay) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDay(aDay); } \
  NS_IMETHOD SetDay(int16_t aDay) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDay(aDay); } \
  NS_IMETHOD GetHour(int16_t *aHour) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHour(aHour); } \
  NS_IMETHOD SetHour(int16_t aHour) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHour(aHour); } \
  NS_IMETHOD GetMinute(int16_t *aMinute) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMinute(aMinute); } \
  NS_IMETHOD SetMinute(int16_t aMinute) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMinute(aMinute); } \
  NS_IMETHOD GetSecond(int16_t *aSecond) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSecond(aSecond); } \
  NS_IMETHOD SetSecond(int16_t aSecond) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSecond(aSecond); } \
  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 ResetTo(int16_t year, int16_t month, int16_t day, int16_t hour, int16_t minute, int16_t second, calITimezone *timezone) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ResetTo(year, month, day, hour, minute, second, timezone); } \
  NS_IMETHOD GetTimezoneOffset(int32_t *aTimezoneOffset) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTimezoneOffset(aTimezoneOffset); } \
  NS_IMETHOD GetIsDate(bool *aIsDate) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsDate(aIsDate); } \
  NS_IMETHOD SetIsDate(bool aIsDate) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIsDate(aIsDate); } \
  NS_IMETHOD GetWeekday(int16_t *aWeekday) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWeekday(aWeekday); } \
  NS_IMETHOD GetYearday(int16_t *aYearday) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetYearday(aYearday); } \
  NS_IMETHOD Reset(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Reset(); } \
  NS_IMETHOD ToString(nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ToString(_retval); } \
  NS_IMETHOD GetInTimezone(calITimezone *aTimezone, calIDateTime * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInTimezone(aTimezone, _retval); } \
  NS_IMETHOD AddDuration(calIDuration *aDuration) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddDuration(aDuration); } \
  NS_IMETHOD SubtractDate(calIDateTime *aOtherDate, calIDuration * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SubtractDate(aOtherDate, _retval); } \
  NS_IMETHOD Compare(calIDateTime *aOther, int32_t *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Compare(aOther, _retval); } \
  NS_IMETHOD GetStartOfWeek(calIDateTime * *aStartOfWeek) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStartOfWeek(aStartOfWeek); } \
  NS_IMETHOD GetEndOfWeek(calIDateTime * *aEndOfWeek) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEndOfWeek(aEndOfWeek); } \
  NS_IMETHOD GetStartOfMonth(calIDateTime * *aStartOfMonth) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStartOfMonth(aStartOfMonth); } \
  NS_IMETHOD GetEndOfMonth(calIDateTime * *aEndOfMonth) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEndOfMonth(aEndOfMonth); } \
  NS_IMETHOD GetStartOfYear(calIDateTime * *aStartOfYear) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStartOfYear(aStartOfYear); } \
  NS_IMETHOD GetEndOfYear(calIDateTime * *aEndOfYear) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEndOfYear(aEndOfYear); } \
  NS_IMETHOD GetIcalString(nsACString & aIcalString) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIcalString(aIcalString); } \
  NS_IMETHOD SetIcalString(const nsACString & aIcalString) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIcalString(aIcalString); } 

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

/* Header file */
class _MYCLASS_ : public calIDateTime
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALIDATETIME

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* readonly attribute boolean isMutable; */
NS_IMETHODIMP _MYCLASS_::GetIsMutable(bool *aIsMutable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void makeImmutable (); */
NS_IMETHODIMP _MYCLASS_::MakeImmutable()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* calIDateTime clone (); */
NS_IMETHODIMP _MYCLASS_::Clone(calIDateTime * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean isValid; */
NS_IMETHODIMP _MYCLASS_::GetIsValid(bool *aIsValid)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRTime nativeTime; */
NS_IMETHODIMP _MYCLASS_::GetNativeTime(PRTime *aNativeTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetNativeTime(PRTime aNativeTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute short year; */
NS_IMETHODIMP _MYCLASS_::GetYear(int16_t *aYear)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetYear(int16_t aYear)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute short month; */
NS_IMETHODIMP _MYCLASS_::GetMonth(int16_t *aMonth)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetMonth(int16_t aMonth)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute short day; */
NS_IMETHODIMP _MYCLASS_::GetDay(int16_t *aDay)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDay(int16_t aDay)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute short hour; */
NS_IMETHODIMP _MYCLASS_::GetHour(int16_t *aHour)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetHour(int16_t aHour)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute short minute; */
NS_IMETHODIMP _MYCLASS_::GetMinute(int16_t *aMinute)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetMinute(int16_t aMinute)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute short second; */
NS_IMETHODIMP _MYCLASS_::GetSecond(int16_t *aSecond)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetSecond(int16_t aSecond)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* 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;
}

/* void resetTo (in short year, in short month, in short day, in short hour, in short minute, in short second, in calITimezone timezone); */
NS_IMETHODIMP _MYCLASS_::ResetTo(int16_t year, int16_t month, int16_t day, int16_t hour, int16_t minute, int16_t second, calITimezone *timezone)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long timezoneOffset; */
NS_IMETHODIMP _MYCLASS_::GetTimezoneOffset(int32_t *aTimezoneOffset)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean isDate; */
NS_IMETHODIMP _MYCLASS_::GetIsDate(bool *aIsDate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIsDate(bool aIsDate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute short weekday; */
NS_IMETHODIMP _MYCLASS_::GetWeekday(int16_t *aWeekday)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute short yearday; */
NS_IMETHODIMP _MYCLASS_::GetYearday(int16_t *aYearday)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void reset (); */
NS_IMETHODIMP _MYCLASS_::Reset()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AUTF8String toString (); */
NS_IMETHODIMP _MYCLASS_::ToString(nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* calIDateTime getInTimezone (in calITimezone aTimezone); */
NS_IMETHODIMP _MYCLASS_::GetInTimezone(calITimezone *aTimezone, calIDateTime * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addDuration (in calIDuration aDuration); */
NS_IMETHODIMP _MYCLASS_::AddDuration(calIDuration *aDuration)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* calIDuration subtractDate (in calIDateTime aOtherDate); */
NS_IMETHODIMP _MYCLASS_::SubtractDate(calIDateTime *aOtherDate, calIDuration * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* long compare (in calIDateTime aOther); */
NS_IMETHODIMP _MYCLASS_::Compare(calIDateTime *aOther, int32_t *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute calIDateTime startOfWeek; */
NS_IMETHODIMP _MYCLASS_::GetStartOfWeek(calIDateTime * *aStartOfWeek)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute calIDateTime endOfWeek; */
NS_IMETHODIMP _MYCLASS_::GetEndOfWeek(calIDateTime * *aEndOfWeek)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute calIDateTime startOfMonth; */
NS_IMETHODIMP _MYCLASS_::GetStartOfMonth(calIDateTime * *aStartOfMonth)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute calIDateTime endOfMonth; */
NS_IMETHODIMP _MYCLASS_::GetEndOfMonth(calIDateTime * *aEndOfMonth)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute calIDateTime startOfYear; */
NS_IMETHODIMP _MYCLASS_::GetStartOfYear(calIDateTime * *aStartOfYear)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute calIDateTime endOfYear; */
NS_IMETHODIMP _MYCLASS_::GetEndOfYear(calIDateTime * *aEndOfYear)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute ACString icalString; */
NS_IMETHODIMP _MYCLASS_::GetIcalString(nsACString & aIcalString)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIcalString(const nsACString & aIcalString)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    calIDateTimeLibical */
#define CALIDATETIMELIBICAL_IID_STR "04139dff-a6f0-446d-9aec-2062df887ef2"

#define CALIDATETIMELIBICAL_IID \
  {0x04139dff, 0xa6f0, 0x446d, \
    { 0x9a, 0xec, 0x20, 0x62, 0xdf, 0x88, 0x7e, 0xf2 }}

class NS_NO_VTABLE calIDateTimeLibical : public calIDateTime {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(CALIDATETIMELIBICAL_IID)

  /* [noscript,notxpcom] void toIcalTime (in icaltimetypeptr itt); */
  NS_IMETHOD_(void) ToIcalTime(struct icaltimetype *itt) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(calIDateTimeLibical, CALIDATETIMELIBICAL_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALIDATETIMELIBICAL \
  NS_IMETHOD_(void) ToIcalTime(struct icaltimetype *itt) 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_CALIDATETIMELIBICAL \
  NS_METHOD_(void) ToIcalTime(struct icaltimetype *itt); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CALIDATETIMELIBICAL(_to) \
  NS_IMETHOD_(void) ToIcalTime(struct icaltimetype *itt) override { return _to ToIcalTime(itt); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_CALIDATETIMELIBICAL(_to) \
  NS_IMETHOD_(void) ToIcalTime(struct icaltimetype *itt) override; 

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

/* Header file */
class _MYCLASS_ : public calIDateTimeLibical
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALIDATETIMELIBICAL

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* [noscript,notxpcom] void toIcalTime (in icaltimetypeptr itt); */
NS_IMETHODIMP_(void) _MYCLASS_::ToIcalTime(struct icaltimetype *itt)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_calIDateTime_h__ */
