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

#ifndef __gen_oeIICal_h__
#define __gen_oeIICal_h__


#ifndef __gen_nsISupports_h__
#include "nsISupports.h"
#endif

#ifndef __gen_nsISupportsArray_h__
#include "nsISupportsArray.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
class nsIAbCard; /* forward declaration */

class nsIMsgAttachment; /* forward declaration */

/**
 * Used to enumerate over elements defined by its implementor.
 * Although hasMoreElements() can be called independently of getNext(),
 * getNext() must be pre-ceeded by a call to hasMoreElements(). There is
 * no way to "reset" an enumerator, once you obtain one.
 *
 * @status FROZEN
 * @version 1.0
 */
class nsISimpleEnumerator; /* forward declaration */

/**
 * The uuid is a unique number identifying the interface normally
 * called IID. It can be generated as follows:
 *
 * Windows: guidgen.exe
 * Unix: uuidgen which comes with e2fsprogs package
 * Mac: ???
 * All platform: Using irc, connect to irc.mozilla.org and type in
 *				/join #mozilla
 *				/msg mozbot uuid
 *
 */
typedef PRInt32 eventMethodProperty;

typedef PRInt32 eventStatusProperty;

class oeIICal; /* forward declaration */


/* starting interface:    oeIDateTime */
#define OEIDATETIME_IID_STR "db180127-cc56-40c6-a8ef-7e329e1c4142"

#define OEIDATETIME_IID \
  {0xdb180127, 0xcc56, 0x40c6, \
    { 0xa8, 0xef, 0x7e, 0x32, 0x9e, 0x1c, 0x41, 0x42 }}

class NS_NO_VTABLE oeIDateTime : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(OEIDATETIME_IID)

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

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

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

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

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

  /* attribute boolean utc; */
  NS_IMETHOD GetUtc(PRBool *aUtc) = 0;
  NS_IMETHOD SetUtc(PRBool aUtc) = 0;

  /* PRTime getTime (); */
  NS_IMETHOD GetTime(PRTime *_retval) = 0;

  /* void setTime (in PRTime ms); */
  NS_IMETHOD SetTime(PRTime ms) = 0;

  /* string toString (); */
  NS_IMETHOD ToString(char **_retval) = 0;

  /* void clear (); */
  NS_IMETHOD Clear(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_OEIDATETIME \
  NS_IMETHOD GetYear(PRInt16 *aYear); \
  NS_IMETHOD SetYear(PRInt16 aYear); \
  NS_IMETHOD GetMonth(PRInt16 *aMonth); \
  NS_IMETHOD SetMonth(PRInt16 aMonth); \
  NS_IMETHOD GetDay(PRInt16 *aDay); \
  NS_IMETHOD SetDay(PRInt16 aDay); \
  NS_IMETHOD GetHour(PRInt16 *aHour); \
  NS_IMETHOD SetHour(PRInt16 aHour); \
  NS_IMETHOD GetMinute(PRInt16 *aMinute); \
  NS_IMETHOD SetMinute(PRInt16 aMinute); \
  NS_IMETHOD GetUtc(PRBool *aUtc); \
  NS_IMETHOD SetUtc(PRBool aUtc); \
  NS_IMETHOD GetTime(PRTime *_retval); \
  NS_IMETHOD SetTime(PRTime ms); \
  NS_IMETHOD ToString(char **_retval); \
  NS_IMETHOD Clear(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_OEIDATETIME(_to) \
  NS_IMETHOD GetYear(PRInt16 *aYear) { return _to GetYear(aYear); } \
  NS_IMETHOD SetYear(PRInt16 aYear) { return _to SetYear(aYear); } \
  NS_IMETHOD GetMonth(PRInt16 *aMonth) { return _to GetMonth(aMonth); } \
  NS_IMETHOD SetMonth(PRInt16 aMonth) { return _to SetMonth(aMonth); } \
  NS_IMETHOD GetDay(PRInt16 *aDay) { return _to GetDay(aDay); } \
  NS_IMETHOD SetDay(PRInt16 aDay) { return _to SetDay(aDay); } \
  NS_IMETHOD GetHour(PRInt16 *aHour) { return _to GetHour(aHour); } \
  NS_IMETHOD SetHour(PRInt16 aHour) { return _to SetHour(aHour); } \
  NS_IMETHOD GetMinute(PRInt16 *aMinute) { return _to GetMinute(aMinute); } \
  NS_IMETHOD SetMinute(PRInt16 aMinute) { return _to SetMinute(aMinute); } \
  NS_IMETHOD GetUtc(PRBool *aUtc) { return _to GetUtc(aUtc); } \
  NS_IMETHOD SetUtc(PRBool aUtc) { return _to SetUtc(aUtc); } \
  NS_IMETHOD GetTime(PRTime *_retval) { return _to GetTime(_retval); } \
  NS_IMETHOD SetTime(PRTime ms) { return _to SetTime(ms); } \
  NS_IMETHOD ToString(char **_retval) { return _to ToString(_retval); } \
  NS_IMETHOD Clear(void) { return _to Clear(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_OEIDATETIME(_to) \
  NS_IMETHOD GetYear(PRInt16 *aYear) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetYear(aYear); } \
  NS_IMETHOD SetYear(PRInt16 aYear) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetYear(aYear); } \
  NS_IMETHOD GetMonth(PRInt16 *aMonth) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMonth(aMonth); } \
  NS_IMETHOD SetMonth(PRInt16 aMonth) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMonth(aMonth); } \
  NS_IMETHOD GetDay(PRInt16 *aDay) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDay(aDay); } \
  NS_IMETHOD SetDay(PRInt16 aDay) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDay(aDay); } \
  NS_IMETHOD GetHour(PRInt16 *aHour) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHour(aHour); } \
  NS_IMETHOD SetHour(PRInt16 aHour) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHour(aHour); } \
  NS_IMETHOD GetMinute(PRInt16 *aMinute) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMinute(aMinute); } \
  NS_IMETHOD SetMinute(PRInt16 aMinute) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMinute(aMinute); } \
  NS_IMETHOD GetUtc(PRBool *aUtc) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUtc(aUtc); } \
  NS_IMETHOD SetUtc(PRBool aUtc) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetUtc(aUtc); } \
  NS_IMETHOD GetTime(PRTime *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTime(_retval); } \
  NS_IMETHOD SetTime(PRTime ms) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTime(ms); } \
  NS_IMETHOD ToString(char **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->ToString(_retval); } \
  NS_IMETHOD Clear(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Clear(); } 

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

/* Header file */
class oeDateTime : public oeIDateTime
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_OEIDATETIME

  oeDateTime();
  virtual ~oeDateTime();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(oeDateTime, oeIDateTime)

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

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

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

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

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

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

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

/* attribute boolean utc; */
NS_IMETHODIMP oeDateTime::GetUtc(PRBool *aUtc)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeDateTime::SetUtc(PRBool aUtc)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* PRTime getTime (); */
NS_IMETHODIMP oeDateTime::GetTime(PRTime *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setTime (in PRTime ms); */
NS_IMETHODIMP oeDateTime::SetTime(PRTime ms)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string toString (); */
NS_IMETHODIMP oeDateTime::ToString(char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void clear (); */
NS_IMETHODIMP oeDateTime::Clear()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    oeIICalEvent */
#define OEIICALEVENT_IID_STR "89c5cd5a-af2d-45e6-83c7-2f2420a13626"

#define OEIICALEVENT_IID \
  {0x89c5cd5a, 0xaf2d, 0x45e6, \
    { 0x83, 0xc7, 0x2f, 0x24, 0x20, 0xa1, 0x36, 0x26 }}

class NS_NO_VTABLE oeIICalEvent : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(OEIICALEVENT_IID)

  enum { ICAL_METHOD_X = 10011 };

  enum { ICAL_METHOD_PUBLISH = 10012 };

  enum { ICAL_METHOD_REQUEST = 10013 };

  enum { ICAL_STATUS_X = 10028 };

  enum { ICAL_STATUS_TENTATIVE = 10029 };

  enum { ICAL_STATUS_CONFIRMED = 10030 };

  enum { ICAL_STATUS_COMPLETED = 10031 };

  enum { ICAL_STATUS_NEEDSACTION = 10032 };

  enum { ICAL_STATUS_CANCELLED = 10033 };

  enum { ICAL_STATUS_INPROCESS = 10034 };

  enum { ICAL_STATUS_DRAFT = 10035 };

  enum { ICAL_STATUS_FINAL = 10036 };

  enum { ICAL_STATUS_NONE = 10037 };

  /* readonly attribute oeIDateTime start; */
  NS_IMETHOD GetStart(oeIDateTime * *aStart) = 0;

  /* readonly attribute oeIDateTime end; */
  NS_IMETHOD GetEnd(oeIDateTime * *aEnd) = 0;

  /* readonly attribute oeIDateTime stamp; */
  NS_IMETHOD GetStamp(oeIDateTime * *aStamp) = 0;

  /* readonly attribute oeIICal parent; */
  NS_IMETHOD GetParent(oeIICal * *aParent) = 0;

  /* attribute string id; */
  NS_IMETHOD GetId(char * *aId) = 0;
  NS_IMETHOD SetId(const char * aId) = 0;

  /* attribute AUTF8String title; */
  NS_IMETHOD GetTitle(nsACString & aTitle) = 0;
  NS_IMETHOD SetTitle(const nsACString & aTitle) = 0;

  /* attribute AUTF8String description; */
  NS_IMETHOD GetDescription(nsACString & aDescription) = 0;
  NS_IMETHOD SetDescription(const nsACString & aDescription) = 0;

  /* attribute AUTF8String location; */
  NS_IMETHOD GetLocation(nsACString & aLocation) = 0;
  NS_IMETHOD SetLocation(const nsACString & aLocation) = 0;

  /* attribute AUTF8String categories; */
  NS_IMETHOD GetCategories(nsACString & aCategories) = 0;
  NS_IMETHOD SetCategories(const nsACString & aCategories) = 0;

  /* attribute boolean privateEvent; */
  NS_IMETHOD GetPrivateEvent(PRBool *aPrivateEvent) = 0;
  NS_IMETHOD SetPrivateEvent(PRBool aPrivateEvent) = 0;

  /* attribute string syncId; */
  NS_IMETHOD GetSyncId(char * *aSyncId) = 0;
  NS_IMETHOD SetSyncId(const char * aSyncId) = 0;

  /* attribute boolean allDay; */
  NS_IMETHOD GetAllDay(PRBool *aAllDay) = 0;
  NS_IMETHOD SetAllDay(PRBool aAllDay) = 0;

  /* attribute boolean alarm; */
  NS_IMETHOD GetAlarm(PRBool *aAlarm) = 0;
  NS_IMETHOD SetAlarm(PRBool aAlarm) = 0;

  /* attribute string alarmUnits; */
  NS_IMETHOD GetAlarmUnits(char * *aAlarmUnits) = 0;
  NS_IMETHOD SetAlarmUnits(const char * aAlarmUnits) = 0;

  /* attribute unsigned long alarmLength; */
  NS_IMETHOD GetAlarmLength(PRUint32 *aAlarmLength) = 0;
  NS_IMETHOD SetAlarmLength(PRUint32 aAlarmLength) = 0;

  /* attribute string alarmEmailAddress; */
  NS_IMETHOD GetAlarmEmailAddress(char * *aAlarmEmailAddress) = 0;
  NS_IMETHOD SetAlarmEmailAddress(const char * aAlarmEmailAddress) = 0;

  /* attribute string inviteEmailAddress; */
  NS_IMETHOD GetInviteEmailAddress(char * *aInviteEmailAddress) = 0;
  NS_IMETHOD SetInviteEmailAddress(const char * aInviteEmailAddress) = 0;

  /* attribute unsigned long recurInterval; */
  NS_IMETHOD GetRecurInterval(PRUint32 *aRecurInterval) = 0;
  NS_IMETHOD SetRecurInterval(PRUint32 aRecurInterval) = 0;

  /* attribute unsigned long recurCount; */
  NS_IMETHOD GetRecurCount(PRUint32 *aRecurCount) = 0;
  NS_IMETHOD SetRecurCount(PRUint32 aRecurCount) = 0;

  /* readonly attribute oeIDateTime recurEnd; */
  NS_IMETHOD GetRecurEnd(oeIDateTime * *aRecurEnd) = 0;

  /* attribute boolean recur; */
  NS_IMETHOD GetRecur(PRBool *aRecur) = 0;
  NS_IMETHOD SetRecur(PRBool aRecur) = 0;

  /* attribute string recurUnits; */
  NS_IMETHOD GetRecurUnits(char * *aRecurUnits) = 0;
  NS_IMETHOD SetRecurUnits(const char * aRecurUnits) = 0;

  /* attribute boolean recurForever; */
  NS_IMETHOD GetRecurForever(PRBool *aRecurForever) = 0;
  NS_IMETHOD SetRecurForever(PRBool aRecurForever) = 0;

  /* attribute short recurWeekdays; */
  NS_IMETHOD GetRecurWeekdays(PRInt16 *aRecurWeekdays) = 0;
  NS_IMETHOD SetRecurWeekdays(PRInt16 aRecurWeekdays) = 0;

  /* attribute short recurWeekNumber; */
  NS_IMETHOD GetRecurWeekNumber(PRInt16 *aRecurWeekNumber) = 0;
  NS_IMETHOD SetRecurWeekNumber(PRInt16 aRecurWeekNumber) = 0;

  /* attribute PRTime lastAlarmAck; */
  NS_IMETHOD GetLastAlarmAck(PRTime *aLastAlarmAck) = 0;
  NS_IMETHOD SetLastAlarmAck(PRTime aLastAlarmAck) = 0;

  /* attribute AUTF8String url; */
  NS_IMETHOD GetUrl(nsACString & aUrl) = 0;
  NS_IMETHOD SetUrl(const nsACString & aUrl) = 0;

  /* attribute short priority; */
  NS_IMETHOD GetPriority(PRInt16 *aPriority) = 0;
  NS_IMETHOD SetPriority(PRInt16 aPriority) = 0;

  /* attribute eventMethodProperty method; */
  NS_IMETHOD GetMethod(eventMethodProperty *aMethod) = 0;
  NS_IMETHOD SetMethod(eventMethodProperty aMethod) = 0;

  /* attribute eventStatusProperty status; */
  NS_IMETHOD GetStatus(eventStatusProperty *aStatus) = 0;
  NS_IMETHOD SetStatus(eventStatusProperty aStatus) = 0;

  /* void setDuration (in boolean is_negative, in unsigned short weeks, in unsigned short days, in unsigned short hours, in unsigned short minutes, in unsigned short seconds); */
  NS_IMETHOD SetDuration(PRBool is_negative, PRUint16 weeks, PRUint16 days, PRUint16 hours, PRUint16 minutes, PRUint16 seconds) = 0;

  /* void getDuration (out boolean is_negative, out unsigned short weeks, out unsigned short days, out unsigned short hours, out unsigned short minutes, out unsigned short seconds); */
  NS_IMETHOD GetDuration(PRBool *is_negative, PRUint16 *weeks, PRUint16 *days, PRUint16 *hours, PRUint16 *minutes, PRUint16 *seconds) = 0;

  /* boolean getNextRecurrence (in PRTime begin, out PRTime result); */
  NS_IMETHOD GetNextRecurrence(PRTime begin, PRTime *result, PRBool *_retval) = 0;

  /* boolean getPreviousOccurrence (in PRTime beforethis, out PRTime result); */
  NS_IMETHOD GetPreviousOccurrence(PRTime beforethis, PRTime *result, PRBool *_retval) = 0;

  /* AUTF8String getIcalString (); */
  NS_IMETHOD GetIcalString(nsACString & _retval) = 0;

  /* boolean parseIcalString (in AUTF8String icalstr); */
  NS_IMETHOD ParseIcalString(const nsACString & icalstr, PRBool *_retval) = 0;

  /* void addException (in PRTime exdate); */
  NS_IMETHOD AddException(PRTime exdate) = 0;

  /* nsISimpleEnumerator getExceptions (); */
  NS_IMETHOD GetExceptions(nsISimpleEnumerator **_retval) = 0;

  /* void removeAllExceptions (); */
  NS_IMETHOD RemoveAllExceptions(void) = 0;

  /* void setSnoozeTime (in PRTime exdate); */
  NS_IMETHOD SetSnoozeTime(PRTime exdate) = 0;

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

  /* readonly attribute nsISupportsArray attachmentsArray; */
  NS_IMETHOD GetAttachmentsArray(nsISupportsArray * *aAttachmentsArray) = 0;

  /* void addAttachment (in nsIMsgAttachment attachment); */
  NS_IMETHOD AddAttachment(nsIMsgAttachment *attachment) = 0;

  /* void removeAttachment (in nsIMsgAttachment attachment); */
  NS_IMETHOD RemoveAttachment(nsIMsgAttachment *attachment) = 0;

  /* void removeAttachments (); */
  NS_IMETHOD RemoveAttachments(void) = 0;

  /* readonly attribute nsISupportsArray contactsArray; */
  NS_IMETHOD GetContactsArray(nsISupportsArray * *aContactsArray) = 0;

  /* void addContact (in nsIAbCard contact); */
  NS_IMETHOD AddContact(nsIAbCard *contact) = 0;

  /* void removeContact (in nsIAbCard contact); */
  NS_IMETHOD RemoveContact(nsIAbCard *contact) = 0;

  /* void removeContacts (); */
  NS_IMETHOD RemoveContacts(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_OEIICALEVENT \
  NS_IMETHOD GetStart(oeIDateTime * *aStart); \
  NS_IMETHOD GetEnd(oeIDateTime * *aEnd); \
  NS_IMETHOD GetStamp(oeIDateTime * *aStamp); \
  NS_IMETHOD GetParent(oeIICal * *aParent); \
  NS_IMETHOD GetId(char * *aId); \
  NS_IMETHOD SetId(const char * aId); \
  NS_IMETHOD GetTitle(nsACString & aTitle); \
  NS_IMETHOD SetTitle(const nsACString & aTitle); \
  NS_IMETHOD GetDescription(nsACString & aDescription); \
  NS_IMETHOD SetDescription(const nsACString & aDescription); \
  NS_IMETHOD GetLocation(nsACString & aLocation); \
  NS_IMETHOD SetLocation(const nsACString & aLocation); \
  NS_IMETHOD GetCategories(nsACString & aCategories); \
  NS_IMETHOD SetCategories(const nsACString & aCategories); \
  NS_IMETHOD GetPrivateEvent(PRBool *aPrivateEvent); \
  NS_IMETHOD SetPrivateEvent(PRBool aPrivateEvent); \
  NS_IMETHOD GetSyncId(char * *aSyncId); \
  NS_IMETHOD SetSyncId(const char * aSyncId); \
  NS_IMETHOD GetAllDay(PRBool *aAllDay); \
  NS_IMETHOD SetAllDay(PRBool aAllDay); \
  NS_IMETHOD GetAlarm(PRBool *aAlarm); \
  NS_IMETHOD SetAlarm(PRBool aAlarm); \
  NS_IMETHOD GetAlarmUnits(char * *aAlarmUnits); \
  NS_IMETHOD SetAlarmUnits(const char * aAlarmUnits); \
  NS_IMETHOD GetAlarmLength(PRUint32 *aAlarmLength); \
  NS_IMETHOD SetAlarmLength(PRUint32 aAlarmLength); \
  NS_IMETHOD GetAlarmEmailAddress(char * *aAlarmEmailAddress); \
  NS_IMETHOD SetAlarmEmailAddress(const char * aAlarmEmailAddress); \
  NS_IMETHOD GetInviteEmailAddress(char * *aInviteEmailAddress); \
  NS_IMETHOD SetInviteEmailAddress(const char * aInviteEmailAddress); \
  NS_IMETHOD GetRecurInterval(PRUint32 *aRecurInterval); \
  NS_IMETHOD SetRecurInterval(PRUint32 aRecurInterval); \
  NS_IMETHOD GetRecurCount(PRUint32 *aRecurCount); \
  NS_IMETHOD SetRecurCount(PRUint32 aRecurCount); \
  NS_IMETHOD GetRecurEnd(oeIDateTime * *aRecurEnd); \
  NS_IMETHOD GetRecur(PRBool *aRecur); \
  NS_IMETHOD SetRecur(PRBool aRecur); \
  NS_IMETHOD GetRecurUnits(char * *aRecurUnits); \
  NS_IMETHOD SetRecurUnits(const char * aRecurUnits); \
  NS_IMETHOD GetRecurForever(PRBool *aRecurForever); \
  NS_IMETHOD SetRecurForever(PRBool aRecurForever); \
  NS_IMETHOD GetRecurWeekdays(PRInt16 *aRecurWeekdays); \
  NS_IMETHOD SetRecurWeekdays(PRInt16 aRecurWeekdays); \
  NS_IMETHOD GetRecurWeekNumber(PRInt16 *aRecurWeekNumber); \
  NS_IMETHOD SetRecurWeekNumber(PRInt16 aRecurWeekNumber); \
  NS_IMETHOD GetLastAlarmAck(PRTime *aLastAlarmAck); \
  NS_IMETHOD SetLastAlarmAck(PRTime aLastAlarmAck); \
  NS_IMETHOD GetUrl(nsACString & aUrl); \
  NS_IMETHOD SetUrl(const nsACString & aUrl); \
  NS_IMETHOD GetPriority(PRInt16 *aPriority); \
  NS_IMETHOD SetPriority(PRInt16 aPriority); \
  NS_IMETHOD GetMethod(eventMethodProperty *aMethod); \
  NS_IMETHOD SetMethod(eventMethodProperty aMethod); \
  NS_IMETHOD GetStatus(eventStatusProperty *aStatus); \
  NS_IMETHOD SetStatus(eventStatusProperty aStatus); \
  NS_IMETHOD SetDuration(PRBool is_negative, PRUint16 weeks, PRUint16 days, PRUint16 hours, PRUint16 minutes, PRUint16 seconds); \
  NS_IMETHOD GetDuration(PRBool *is_negative, PRUint16 *weeks, PRUint16 *days, PRUint16 *hours, PRUint16 *minutes, PRUint16 *seconds); \
  NS_IMETHOD GetNextRecurrence(PRTime begin, PRTime *result, PRBool *_retval); \
  NS_IMETHOD GetPreviousOccurrence(PRTime beforethis, PRTime *result, PRBool *_retval); \
  NS_IMETHOD GetIcalString(nsACString & _retval); \
  NS_IMETHOD ParseIcalString(const nsACString & icalstr, PRBool *_retval); \
  NS_IMETHOD AddException(PRTime exdate); \
  NS_IMETHOD GetExceptions(nsISimpleEnumerator **_retval); \
  NS_IMETHOD RemoveAllExceptions(void); \
  NS_IMETHOD SetSnoozeTime(PRTime exdate); \
  NS_IMETHOD Clone(oeIICalEvent **_retval); \
  NS_IMETHOD GetAttachmentsArray(nsISupportsArray * *aAttachmentsArray); \
  NS_IMETHOD AddAttachment(nsIMsgAttachment *attachment); \
  NS_IMETHOD RemoveAttachment(nsIMsgAttachment *attachment); \
  NS_IMETHOD RemoveAttachments(void); \
  NS_IMETHOD GetContactsArray(nsISupportsArray * *aContactsArray); \
  NS_IMETHOD AddContact(nsIAbCard *contact); \
  NS_IMETHOD RemoveContact(nsIAbCard *contact); \
  NS_IMETHOD RemoveContacts(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_OEIICALEVENT(_to) \
  NS_IMETHOD GetStart(oeIDateTime * *aStart) { return _to GetStart(aStart); } \
  NS_IMETHOD GetEnd(oeIDateTime * *aEnd) { return _to GetEnd(aEnd); } \
  NS_IMETHOD GetStamp(oeIDateTime * *aStamp) { return _to GetStamp(aStamp); } \
  NS_IMETHOD GetParent(oeIICal * *aParent) { return _to GetParent(aParent); } \
  NS_IMETHOD GetId(char * *aId) { return _to GetId(aId); } \
  NS_IMETHOD SetId(const char * aId) { return _to SetId(aId); } \
  NS_IMETHOD GetTitle(nsACString & aTitle) { return _to GetTitle(aTitle); } \
  NS_IMETHOD SetTitle(const nsACString & aTitle) { return _to SetTitle(aTitle); } \
  NS_IMETHOD GetDescription(nsACString & aDescription) { return _to GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const nsACString & aDescription) { return _to SetDescription(aDescription); } \
  NS_IMETHOD GetLocation(nsACString & aLocation) { return _to GetLocation(aLocation); } \
  NS_IMETHOD SetLocation(const nsACString & aLocation) { return _to SetLocation(aLocation); } \
  NS_IMETHOD GetCategories(nsACString & aCategories) { return _to GetCategories(aCategories); } \
  NS_IMETHOD SetCategories(const nsACString & aCategories) { return _to SetCategories(aCategories); } \
  NS_IMETHOD GetPrivateEvent(PRBool *aPrivateEvent) { return _to GetPrivateEvent(aPrivateEvent); } \
  NS_IMETHOD SetPrivateEvent(PRBool aPrivateEvent) { return _to SetPrivateEvent(aPrivateEvent); } \
  NS_IMETHOD GetSyncId(char * *aSyncId) { return _to GetSyncId(aSyncId); } \
  NS_IMETHOD SetSyncId(const char * aSyncId) { return _to SetSyncId(aSyncId); } \
  NS_IMETHOD GetAllDay(PRBool *aAllDay) { return _to GetAllDay(aAllDay); } \
  NS_IMETHOD SetAllDay(PRBool aAllDay) { return _to SetAllDay(aAllDay); } \
  NS_IMETHOD GetAlarm(PRBool *aAlarm) { return _to GetAlarm(aAlarm); } \
  NS_IMETHOD SetAlarm(PRBool aAlarm) { return _to SetAlarm(aAlarm); } \
  NS_IMETHOD GetAlarmUnits(char * *aAlarmUnits) { return _to GetAlarmUnits(aAlarmUnits); } \
  NS_IMETHOD SetAlarmUnits(const char * aAlarmUnits) { return _to SetAlarmUnits(aAlarmUnits); } \
  NS_IMETHOD GetAlarmLength(PRUint32 *aAlarmLength) { return _to GetAlarmLength(aAlarmLength); } \
  NS_IMETHOD SetAlarmLength(PRUint32 aAlarmLength) { return _to SetAlarmLength(aAlarmLength); } \
  NS_IMETHOD GetAlarmEmailAddress(char * *aAlarmEmailAddress) { return _to GetAlarmEmailAddress(aAlarmEmailAddress); } \
  NS_IMETHOD SetAlarmEmailAddress(const char * aAlarmEmailAddress) { return _to SetAlarmEmailAddress(aAlarmEmailAddress); } \
  NS_IMETHOD GetInviteEmailAddress(char * *aInviteEmailAddress) { return _to GetInviteEmailAddress(aInviteEmailAddress); } \
  NS_IMETHOD SetInviteEmailAddress(const char * aInviteEmailAddress) { return _to SetInviteEmailAddress(aInviteEmailAddress); } \
  NS_IMETHOD GetRecurInterval(PRUint32 *aRecurInterval) { return _to GetRecurInterval(aRecurInterval); } \
  NS_IMETHOD SetRecurInterval(PRUint32 aRecurInterval) { return _to SetRecurInterval(aRecurInterval); } \
  NS_IMETHOD GetRecurCount(PRUint32 *aRecurCount) { return _to GetRecurCount(aRecurCount); } \
  NS_IMETHOD SetRecurCount(PRUint32 aRecurCount) { return _to SetRecurCount(aRecurCount); } \
  NS_IMETHOD GetRecurEnd(oeIDateTime * *aRecurEnd) { return _to GetRecurEnd(aRecurEnd); } \
  NS_IMETHOD GetRecur(PRBool *aRecur) { return _to GetRecur(aRecur); } \
  NS_IMETHOD SetRecur(PRBool aRecur) { return _to SetRecur(aRecur); } \
  NS_IMETHOD GetRecurUnits(char * *aRecurUnits) { return _to GetRecurUnits(aRecurUnits); } \
  NS_IMETHOD SetRecurUnits(const char * aRecurUnits) { return _to SetRecurUnits(aRecurUnits); } \
  NS_IMETHOD GetRecurForever(PRBool *aRecurForever) { return _to GetRecurForever(aRecurForever); } \
  NS_IMETHOD SetRecurForever(PRBool aRecurForever) { return _to SetRecurForever(aRecurForever); } \
  NS_IMETHOD GetRecurWeekdays(PRInt16 *aRecurWeekdays) { return _to GetRecurWeekdays(aRecurWeekdays); } \
  NS_IMETHOD SetRecurWeekdays(PRInt16 aRecurWeekdays) { return _to SetRecurWeekdays(aRecurWeekdays); } \
  NS_IMETHOD GetRecurWeekNumber(PRInt16 *aRecurWeekNumber) { return _to GetRecurWeekNumber(aRecurWeekNumber); } \
  NS_IMETHOD SetRecurWeekNumber(PRInt16 aRecurWeekNumber) { return _to SetRecurWeekNumber(aRecurWeekNumber); } \
  NS_IMETHOD GetLastAlarmAck(PRTime *aLastAlarmAck) { return _to GetLastAlarmAck(aLastAlarmAck); } \
  NS_IMETHOD SetLastAlarmAck(PRTime aLastAlarmAck) { return _to SetLastAlarmAck(aLastAlarmAck); } \
  NS_IMETHOD GetUrl(nsACString & aUrl) { return _to GetUrl(aUrl); } \
  NS_IMETHOD SetUrl(const nsACString & aUrl) { return _to SetUrl(aUrl); } \
  NS_IMETHOD GetPriority(PRInt16 *aPriority) { return _to GetPriority(aPriority); } \
  NS_IMETHOD SetPriority(PRInt16 aPriority) { return _to SetPriority(aPriority); } \
  NS_IMETHOD GetMethod(eventMethodProperty *aMethod) { return _to GetMethod(aMethod); } \
  NS_IMETHOD SetMethod(eventMethodProperty aMethod) { return _to SetMethod(aMethod); } \
  NS_IMETHOD GetStatus(eventStatusProperty *aStatus) { return _to GetStatus(aStatus); } \
  NS_IMETHOD SetStatus(eventStatusProperty aStatus) { return _to SetStatus(aStatus); } \
  NS_IMETHOD SetDuration(PRBool is_negative, PRUint16 weeks, PRUint16 days, PRUint16 hours, PRUint16 minutes, PRUint16 seconds) { return _to SetDuration(is_negative, weeks, days, hours, minutes, seconds); } \
  NS_IMETHOD GetDuration(PRBool *is_negative, PRUint16 *weeks, PRUint16 *days, PRUint16 *hours, PRUint16 *minutes, PRUint16 *seconds) { return _to GetDuration(is_negative, weeks, days, hours, minutes, seconds); } \
  NS_IMETHOD GetNextRecurrence(PRTime begin, PRTime *result, PRBool *_retval) { return _to GetNextRecurrence(begin, result, _retval); } \
  NS_IMETHOD GetPreviousOccurrence(PRTime beforethis, PRTime *result, PRBool *_retval) { return _to GetPreviousOccurrence(beforethis, result, _retval); } \
  NS_IMETHOD GetIcalString(nsACString & _retval) { return _to GetIcalString(_retval); } \
  NS_IMETHOD ParseIcalString(const nsACString & icalstr, PRBool *_retval) { return _to ParseIcalString(icalstr, _retval); } \
  NS_IMETHOD AddException(PRTime exdate) { return _to AddException(exdate); } \
  NS_IMETHOD GetExceptions(nsISimpleEnumerator **_retval) { return _to GetExceptions(_retval); } \
  NS_IMETHOD RemoveAllExceptions(void) { return _to RemoveAllExceptions(); } \
  NS_IMETHOD SetSnoozeTime(PRTime exdate) { return _to SetSnoozeTime(exdate); } \
  NS_IMETHOD Clone(oeIICalEvent **_retval) { return _to Clone(_retval); } \
  NS_IMETHOD GetAttachmentsArray(nsISupportsArray * *aAttachmentsArray) { return _to GetAttachmentsArray(aAttachmentsArray); } \
  NS_IMETHOD AddAttachment(nsIMsgAttachment *attachment) { return _to AddAttachment(attachment); } \
  NS_IMETHOD RemoveAttachment(nsIMsgAttachment *attachment) { return _to RemoveAttachment(attachment); } \
  NS_IMETHOD RemoveAttachments(void) { return _to RemoveAttachments(); } \
  NS_IMETHOD GetContactsArray(nsISupportsArray * *aContactsArray) { return _to GetContactsArray(aContactsArray); } \
  NS_IMETHOD AddContact(nsIAbCard *contact) { return _to AddContact(contact); } \
  NS_IMETHOD RemoveContact(nsIAbCard *contact) { return _to RemoveContact(contact); } \
  NS_IMETHOD RemoveContacts(void) { return _to RemoveContacts(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_OEIICALEVENT(_to) \
  NS_IMETHOD GetStart(oeIDateTime * *aStart) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStart(aStart); } \
  NS_IMETHOD GetEnd(oeIDateTime * *aEnd) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnd(aEnd); } \
  NS_IMETHOD GetStamp(oeIDateTime * *aStamp) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStamp(aStamp); } \
  NS_IMETHOD GetParent(oeIICal * *aParent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParent(aParent); } \
  NS_IMETHOD GetId(char * *aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD SetId(const char * aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetId(aId); } \
  NS_IMETHOD GetTitle(nsACString & aTitle) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTitle(aTitle); } \
  NS_IMETHOD SetTitle(const nsACString & aTitle) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTitle(aTitle); } \
  NS_IMETHOD GetDescription(nsACString & aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const nsACString & aDescription) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDescription(aDescription); } \
  NS_IMETHOD GetLocation(nsACString & aLocation) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLocation(aLocation); } \
  NS_IMETHOD SetLocation(const nsACString & aLocation) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLocation(aLocation); } \
  NS_IMETHOD GetCategories(nsACString & aCategories) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCategories(aCategories); } \
  NS_IMETHOD SetCategories(const nsACString & aCategories) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCategories(aCategories); } \
  NS_IMETHOD GetPrivateEvent(PRBool *aPrivateEvent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPrivateEvent(aPrivateEvent); } \
  NS_IMETHOD SetPrivateEvent(PRBool aPrivateEvent) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPrivateEvent(aPrivateEvent); } \
  NS_IMETHOD GetSyncId(char * *aSyncId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSyncId(aSyncId); } \
  NS_IMETHOD SetSyncId(const char * aSyncId) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSyncId(aSyncId); } \
  NS_IMETHOD GetAllDay(PRBool *aAllDay) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllDay(aAllDay); } \
  NS_IMETHOD SetAllDay(PRBool aAllDay) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAllDay(aAllDay); } \
  NS_IMETHOD GetAlarm(PRBool *aAlarm) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAlarm(aAlarm); } \
  NS_IMETHOD SetAlarm(PRBool aAlarm) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAlarm(aAlarm); } \
  NS_IMETHOD GetAlarmUnits(char * *aAlarmUnits) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAlarmUnits(aAlarmUnits); } \
  NS_IMETHOD SetAlarmUnits(const char * aAlarmUnits) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAlarmUnits(aAlarmUnits); } \
  NS_IMETHOD GetAlarmLength(PRUint32 *aAlarmLength) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAlarmLength(aAlarmLength); } \
  NS_IMETHOD SetAlarmLength(PRUint32 aAlarmLength) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAlarmLength(aAlarmLength); } \
  NS_IMETHOD GetAlarmEmailAddress(char * *aAlarmEmailAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAlarmEmailAddress(aAlarmEmailAddress); } \
  NS_IMETHOD SetAlarmEmailAddress(const char * aAlarmEmailAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAlarmEmailAddress(aAlarmEmailAddress); } \
  NS_IMETHOD GetInviteEmailAddress(char * *aInviteEmailAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInviteEmailAddress(aInviteEmailAddress); } \
  NS_IMETHOD SetInviteEmailAddress(const char * aInviteEmailAddress) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetInviteEmailAddress(aInviteEmailAddress); } \
  NS_IMETHOD GetRecurInterval(PRUint32 *aRecurInterval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecurInterval(aRecurInterval); } \
  NS_IMETHOD SetRecurInterval(PRUint32 aRecurInterval) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRecurInterval(aRecurInterval); } \
  NS_IMETHOD GetRecurCount(PRUint32 *aRecurCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecurCount(aRecurCount); } \
  NS_IMETHOD SetRecurCount(PRUint32 aRecurCount) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRecurCount(aRecurCount); } \
  NS_IMETHOD GetRecurEnd(oeIDateTime * *aRecurEnd) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecurEnd(aRecurEnd); } \
  NS_IMETHOD GetRecur(PRBool *aRecur) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecur(aRecur); } \
  NS_IMETHOD SetRecur(PRBool aRecur) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRecur(aRecur); } \
  NS_IMETHOD GetRecurUnits(char * *aRecurUnits) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecurUnits(aRecurUnits); } \
  NS_IMETHOD SetRecurUnits(const char * aRecurUnits) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRecurUnits(aRecurUnits); } \
  NS_IMETHOD GetRecurForever(PRBool *aRecurForever) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecurForever(aRecurForever); } \
  NS_IMETHOD SetRecurForever(PRBool aRecurForever) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRecurForever(aRecurForever); } \
  NS_IMETHOD GetRecurWeekdays(PRInt16 *aRecurWeekdays) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecurWeekdays(aRecurWeekdays); } \
  NS_IMETHOD SetRecurWeekdays(PRInt16 aRecurWeekdays) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRecurWeekdays(aRecurWeekdays); } \
  NS_IMETHOD GetRecurWeekNumber(PRInt16 *aRecurWeekNumber) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecurWeekNumber(aRecurWeekNumber); } \
  NS_IMETHOD SetRecurWeekNumber(PRInt16 aRecurWeekNumber) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRecurWeekNumber(aRecurWeekNumber); } \
  NS_IMETHOD GetLastAlarmAck(PRTime *aLastAlarmAck) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastAlarmAck(aLastAlarmAck); } \
  NS_IMETHOD SetLastAlarmAck(PRTime aLastAlarmAck) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLastAlarmAck(aLastAlarmAck); } \
  NS_IMETHOD GetUrl(nsACString & aUrl) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUrl(aUrl); } \
  NS_IMETHOD SetUrl(const nsACString & aUrl) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetUrl(aUrl); } \
  NS_IMETHOD GetPriority(PRInt16 *aPriority) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPriority(aPriority); } \
  NS_IMETHOD SetPriority(PRInt16 aPriority) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPriority(aPriority); } \
  NS_IMETHOD GetMethod(eventMethodProperty *aMethod) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMethod(aMethod); } \
  NS_IMETHOD SetMethod(eventMethodProperty aMethod) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMethod(aMethod); } \
  NS_IMETHOD GetStatus(eventStatusProperty *aStatus) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStatus(aStatus); } \
  NS_IMETHOD SetStatus(eventStatusProperty aStatus) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetStatus(aStatus); } \
  NS_IMETHOD SetDuration(PRBool is_negative, PRUint16 weeks, PRUint16 days, PRUint16 hours, PRUint16 minutes, PRUint16 seconds) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDuration(is_negative, weeks, days, hours, minutes, seconds); } \
  NS_IMETHOD GetDuration(PRBool *is_negative, PRUint16 *weeks, PRUint16 *days, PRUint16 *hours, PRUint16 *minutes, PRUint16 *seconds) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDuration(is_negative, weeks, days, hours, minutes, seconds); } \
  NS_IMETHOD GetNextRecurrence(PRTime begin, PRTime *result, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNextRecurrence(begin, result, _retval); } \
  NS_IMETHOD GetPreviousOccurrence(PRTime beforethis, PRTime *result, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPreviousOccurrence(beforethis, result, _retval); } \
  NS_IMETHOD GetIcalString(nsACString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIcalString(_retval); } \
  NS_IMETHOD ParseIcalString(const nsACString & icalstr, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->ParseIcalString(icalstr, _retval); } \
  NS_IMETHOD AddException(PRTime exdate) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddException(exdate); } \
  NS_IMETHOD GetExceptions(nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExceptions(_retval); } \
  NS_IMETHOD RemoveAllExceptions(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveAllExceptions(); } \
  NS_IMETHOD SetSnoozeTime(PRTime exdate) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSnoozeTime(exdate); } \
  NS_IMETHOD Clone(oeIICalEvent **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->Clone(_retval); } \
  NS_IMETHOD GetAttachmentsArray(nsISupportsArray * *aAttachmentsArray) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAttachmentsArray(aAttachmentsArray); } \
  NS_IMETHOD AddAttachment(nsIMsgAttachment *attachment) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddAttachment(attachment); } \
  NS_IMETHOD RemoveAttachment(nsIMsgAttachment *attachment) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveAttachment(attachment); } \
  NS_IMETHOD RemoveAttachments(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveAttachments(); } \
  NS_IMETHOD GetContactsArray(nsISupportsArray * *aContactsArray) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetContactsArray(aContactsArray); } \
  NS_IMETHOD AddContact(nsIAbCard *contact) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddContact(contact); } \
  NS_IMETHOD RemoveContact(nsIAbCard *contact) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveContact(contact); } \
  NS_IMETHOD RemoveContacts(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveContacts(); } 

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

/* Header file */
class oeICalEvent : public oeIICalEvent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_OEIICALEVENT

  oeICalEvent();
  virtual ~oeICalEvent();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(oeICalEvent, oeIICalEvent)

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

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

/* readonly attribute oeIDateTime start; */
NS_IMETHODIMP oeICalEvent::GetStart(oeIDateTime * *aStart)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute oeIDateTime end; */
NS_IMETHODIMP oeICalEvent::GetEnd(oeIDateTime * *aEnd)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute oeIDateTime stamp; */
NS_IMETHODIMP oeICalEvent::GetStamp(oeIDateTime * *aStamp)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute oeIICal parent; */
NS_IMETHODIMP oeICalEvent::GetParent(oeIICal * *aParent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string id; */
NS_IMETHODIMP oeICalEvent::GetId(char * *aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetId(const char * aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AUTF8String title; */
NS_IMETHODIMP oeICalEvent::GetTitle(nsACString & aTitle)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetTitle(const nsACString & aTitle)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AUTF8String description; */
NS_IMETHODIMP oeICalEvent::GetDescription(nsACString & aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetDescription(const nsACString & aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AUTF8String location; */
NS_IMETHODIMP oeICalEvent::GetLocation(nsACString & aLocation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetLocation(const nsACString & aLocation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AUTF8String categories; */
NS_IMETHODIMP oeICalEvent::GetCategories(nsACString & aCategories)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetCategories(const nsACString & aCategories)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean privateEvent; */
NS_IMETHODIMP oeICalEvent::GetPrivateEvent(PRBool *aPrivateEvent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetPrivateEvent(PRBool aPrivateEvent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string syncId; */
NS_IMETHODIMP oeICalEvent::GetSyncId(char * *aSyncId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetSyncId(const char * aSyncId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean allDay; */
NS_IMETHODIMP oeICalEvent::GetAllDay(PRBool *aAllDay)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetAllDay(PRBool aAllDay)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean alarm; */
NS_IMETHODIMP oeICalEvent::GetAlarm(PRBool *aAlarm)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetAlarm(PRBool aAlarm)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string alarmUnits; */
NS_IMETHODIMP oeICalEvent::GetAlarmUnits(char * *aAlarmUnits)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetAlarmUnits(const char * aAlarmUnits)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long alarmLength; */
NS_IMETHODIMP oeICalEvent::GetAlarmLength(PRUint32 *aAlarmLength)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetAlarmLength(PRUint32 aAlarmLength)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string alarmEmailAddress; */
NS_IMETHODIMP oeICalEvent::GetAlarmEmailAddress(char * *aAlarmEmailAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetAlarmEmailAddress(const char * aAlarmEmailAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string inviteEmailAddress; */
NS_IMETHODIMP oeICalEvent::GetInviteEmailAddress(char * *aInviteEmailAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetInviteEmailAddress(const char * aInviteEmailAddress)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long recurInterval; */
NS_IMETHODIMP oeICalEvent::GetRecurInterval(PRUint32 *aRecurInterval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetRecurInterval(PRUint32 aRecurInterval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long recurCount; */
NS_IMETHODIMP oeICalEvent::GetRecurCount(PRUint32 *aRecurCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetRecurCount(PRUint32 aRecurCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute oeIDateTime recurEnd; */
NS_IMETHODIMP oeICalEvent::GetRecurEnd(oeIDateTime * *aRecurEnd)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean recur; */
NS_IMETHODIMP oeICalEvent::GetRecur(PRBool *aRecur)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetRecur(PRBool aRecur)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string recurUnits; */
NS_IMETHODIMP oeICalEvent::GetRecurUnits(char * *aRecurUnits)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetRecurUnits(const char * aRecurUnits)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean recurForever; */
NS_IMETHODIMP oeICalEvent::GetRecurForever(PRBool *aRecurForever)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetRecurForever(PRBool aRecurForever)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute short recurWeekdays; */
NS_IMETHODIMP oeICalEvent::GetRecurWeekdays(PRInt16 *aRecurWeekdays)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetRecurWeekdays(PRInt16 aRecurWeekdays)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute short recurWeekNumber; */
NS_IMETHODIMP oeICalEvent::GetRecurWeekNumber(PRInt16 *aRecurWeekNumber)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetRecurWeekNumber(PRInt16 aRecurWeekNumber)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRTime lastAlarmAck; */
NS_IMETHODIMP oeICalEvent::GetLastAlarmAck(PRTime *aLastAlarmAck)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetLastAlarmAck(PRTime aLastAlarmAck)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AUTF8String url; */
NS_IMETHODIMP oeICalEvent::GetUrl(nsACString & aUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetUrl(const nsACString & aUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute short priority; */
NS_IMETHODIMP oeICalEvent::GetPriority(PRInt16 *aPriority)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetPriority(PRInt16 aPriority)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute eventMethodProperty method; */
NS_IMETHODIMP oeICalEvent::GetMethod(eventMethodProperty *aMethod)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetMethod(eventMethodProperty aMethod)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute eventStatusProperty status; */
NS_IMETHODIMP oeICalEvent::GetStatus(eventStatusProperty *aStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEvent::SetStatus(eventStatusProperty aStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setDuration (in boolean is_negative, in unsigned short weeks, in unsigned short days, in unsigned short hours, in unsigned short minutes, in unsigned short seconds); */
NS_IMETHODIMP oeICalEvent::SetDuration(PRBool is_negative, PRUint16 weeks, PRUint16 days, PRUint16 hours, PRUint16 minutes, PRUint16 seconds)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getDuration (out boolean is_negative, out unsigned short weeks, out unsigned short days, out unsigned short hours, out unsigned short minutes, out unsigned short seconds); */
NS_IMETHODIMP oeICalEvent::GetDuration(PRBool *is_negative, PRUint16 *weeks, PRUint16 *days, PRUint16 *hours, PRUint16 *minutes, PRUint16 *seconds)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean getNextRecurrence (in PRTime begin, out PRTime result); */
NS_IMETHODIMP oeICalEvent::GetNextRecurrence(PRTime begin, PRTime *result, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean getPreviousOccurrence (in PRTime beforethis, out PRTime result); */
NS_IMETHODIMP oeICalEvent::GetPreviousOccurrence(PRTime beforethis, PRTime *result, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AUTF8String getIcalString (); */
NS_IMETHODIMP oeICalEvent::GetIcalString(nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean parseIcalString (in AUTF8String icalstr); */
NS_IMETHODIMP oeICalEvent::ParseIcalString(const nsACString & icalstr, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addException (in PRTime exdate); */
NS_IMETHODIMP oeICalEvent::AddException(PRTime exdate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getExceptions (); */
NS_IMETHODIMP oeICalEvent::GetExceptions(nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeAllExceptions (); */
NS_IMETHODIMP oeICalEvent::RemoveAllExceptions()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setSnoozeTime (in PRTime exdate); */
NS_IMETHODIMP oeICalEvent::SetSnoozeTime(PRTime exdate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* oeIICalEvent clone (); */
NS_IMETHODIMP oeICalEvent::Clone(oeIICalEvent **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsISupportsArray attachmentsArray; */
NS_IMETHODIMP oeICalEvent::GetAttachmentsArray(nsISupportsArray * *aAttachmentsArray)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addAttachment (in nsIMsgAttachment attachment); */
NS_IMETHODIMP oeICalEvent::AddAttachment(nsIMsgAttachment *attachment)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeAttachment (in nsIMsgAttachment attachment); */
NS_IMETHODIMP oeICalEvent::RemoveAttachment(nsIMsgAttachment *attachment)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeAttachments (); */
NS_IMETHODIMP oeICalEvent::RemoveAttachments()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsISupportsArray contactsArray; */
NS_IMETHODIMP oeICalEvent::GetContactsArray(nsISupportsArray * *aContactsArray)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addContact (in nsIAbCard contact); */
NS_IMETHODIMP oeICalEvent::AddContact(nsIAbCard *contact)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeContact (in nsIAbCard contact); */
NS_IMETHODIMP oeICalEvent::RemoveContact(nsIAbCard *contact)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeContacts (); */
NS_IMETHODIMP oeICalEvent::RemoveContacts()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    oeIICalEventDisplay */
#define OEIICALEVENTDISPLAY_IID_STR "f95df40e-0d5f-49ec-9ba8-4b88d3eb53e0"

#define OEIICALEVENTDISPLAY_IID \
  {0xf95df40e, 0x0d5f, 0x49ec, \
    { 0x9b, 0xa8, 0x4b, 0x88, 0xd3, 0xeb, 0x53, 0xe0 }}

class NS_NO_VTABLE oeIICalEventDisplay : public oeIICalEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(OEIICALEVENTDISPLAY_IID)

  /* readonly attribute oeIICalEvent event; */
  NS_IMETHOD GetEvent(oeIICalEvent * *aEvent) = 0;

  /* attribute PRTime displayDate; */
  NS_IMETHOD GetDisplayDate(PRTime *aDisplayDate) = 0;
  NS_IMETHOD SetDisplayDate(PRTime aDisplayDate) = 0;

  /* attribute PRTime displayEndDate; */
  NS_IMETHOD GetDisplayEndDate(PRTime *aDisplayEndDate) = 0;
  NS_IMETHOD SetDisplayEndDate(PRTime aDisplayEndDate) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_OEIICALEVENTDISPLAY \
  NS_IMETHOD GetEvent(oeIICalEvent * *aEvent); \
  NS_IMETHOD GetDisplayDate(PRTime *aDisplayDate); \
  NS_IMETHOD SetDisplayDate(PRTime aDisplayDate); \
  NS_IMETHOD GetDisplayEndDate(PRTime *aDisplayEndDate); \
  NS_IMETHOD SetDisplayEndDate(PRTime aDisplayEndDate); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_OEIICALEVENTDISPLAY(_to) \
  NS_IMETHOD GetEvent(oeIICalEvent * *aEvent) { return _to GetEvent(aEvent); } \
  NS_IMETHOD GetDisplayDate(PRTime *aDisplayDate) { return _to GetDisplayDate(aDisplayDate); } \
  NS_IMETHOD SetDisplayDate(PRTime aDisplayDate) { return _to SetDisplayDate(aDisplayDate); } \
  NS_IMETHOD GetDisplayEndDate(PRTime *aDisplayEndDate) { return _to GetDisplayEndDate(aDisplayEndDate); } \
  NS_IMETHOD SetDisplayEndDate(PRTime aDisplayEndDate) { return _to SetDisplayEndDate(aDisplayEndDate); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_OEIICALEVENTDISPLAY(_to) \
  NS_IMETHOD GetEvent(oeIICalEvent * *aEvent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEvent(aEvent); } \
  NS_IMETHOD GetDisplayDate(PRTime *aDisplayDate) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDisplayDate(aDisplayDate); } \
  NS_IMETHOD SetDisplayDate(PRTime aDisplayDate) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDisplayDate(aDisplayDate); } \
  NS_IMETHOD GetDisplayEndDate(PRTime *aDisplayEndDate) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDisplayEndDate(aDisplayEndDate); } \
  NS_IMETHOD SetDisplayEndDate(PRTime aDisplayEndDate) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDisplayEndDate(aDisplayEndDate); } 

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

/* Header file */
class oeICalEventDisplay : public oeIICalEventDisplay
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_OEIICALEVENTDISPLAY

  oeICalEventDisplay();
  virtual ~oeICalEventDisplay();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(oeICalEventDisplay, oeIICalEventDisplay)

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

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

/* readonly attribute oeIICalEvent event; */
NS_IMETHODIMP oeICalEventDisplay::GetEvent(oeIICalEvent * *aEvent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRTime displayDate; */
NS_IMETHODIMP oeICalEventDisplay::GetDisplayDate(PRTime *aDisplayDate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEventDisplay::SetDisplayDate(PRTime aDisplayDate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute PRTime displayEndDate; */
NS_IMETHODIMP oeICalEventDisplay::GetDisplayEndDate(PRTime *aDisplayEndDate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalEventDisplay::SetDisplayEndDate(PRTime aDisplayEndDate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    oeIICalTodo */
#define OEIICALTODO_IID_STR "d44987b4-1dd1-11b2-9783-8a78ed685caf"

#define OEIICALTODO_IID \
  {0xd44987b4, 0x1dd1, 0x11b2, \
    { 0x97, 0x83, 0x8a, 0x78, 0xed, 0x68, 0x5c, 0xaf }}

class NS_NO_VTABLE oeIICalTodo : public oeIICalEvent {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(OEIICALTODO_IID)

  /* readonly attribute oeIDateTime due; */
  NS_IMETHOD GetDue(oeIDateTime * *aDue) = 0;

  /* readonly attribute oeIDateTime completed; */
  NS_IMETHOD GetCompleted(oeIDateTime * *aCompleted) = 0;

  /* attribute short percent; */
  NS_IMETHOD GetPercent(PRInt16 *aPercent) = 0;
  NS_IMETHOD SetPercent(PRInt16 aPercent) = 0;

  /* AUTF8String getTodoIcalString (); */
  NS_IMETHOD GetTodoIcalString(nsACString & _retval) = 0;

  /* boolean parseTodoIcalString (in AUTF8String icalstr); */
  NS_IMETHOD ParseTodoIcalString(const nsACString & icalstr, PRBool *_retval) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_OEIICALTODO \
  NS_IMETHOD GetDue(oeIDateTime * *aDue); \
  NS_IMETHOD GetCompleted(oeIDateTime * *aCompleted); \
  NS_IMETHOD GetPercent(PRInt16 *aPercent); \
  NS_IMETHOD SetPercent(PRInt16 aPercent); \
  NS_IMETHOD GetTodoIcalString(nsACString & _retval); \
  NS_IMETHOD ParseTodoIcalString(const nsACString & icalstr, PRBool *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_OEIICALTODO(_to) \
  NS_IMETHOD GetDue(oeIDateTime * *aDue) { return _to GetDue(aDue); } \
  NS_IMETHOD GetCompleted(oeIDateTime * *aCompleted) { return _to GetCompleted(aCompleted); } \
  NS_IMETHOD GetPercent(PRInt16 *aPercent) { return _to GetPercent(aPercent); } \
  NS_IMETHOD SetPercent(PRInt16 aPercent) { return _to SetPercent(aPercent); } \
  NS_IMETHOD GetTodoIcalString(nsACString & _retval) { return _to GetTodoIcalString(_retval); } \
  NS_IMETHOD ParseTodoIcalString(const nsACString & icalstr, PRBool *_retval) { return _to ParseTodoIcalString(icalstr, _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_OEIICALTODO(_to) \
  NS_IMETHOD GetDue(oeIDateTime * *aDue) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDue(aDue); } \
  NS_IMETHOD GetCompleted(oeIDateTime * *aCompleted) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCompleted(aCompleted); } \
  NS_IMETHOD GetPercent(PRInt16 *aPercent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPercent(aPercent); } \
  NS_IMETHOD SetPercent(PRInt16 aPercent) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPercent(aPercent); } \
  NS_IMETHOD GetTodoIcalString(nsACString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTodoIcalString(_retval); } \
  NS_IMETHOD ParseTodoIcalString(const nsACString & icalstr, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->ParseTodoIcalString(icalstr, _retval); } 

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

/* Header file */
class oeICalTodo : public oeIICalTodo
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_OEIICALTODO

  oeICalTodo();
  virtual ~oeICalTodo();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(oeICalTodo, oeIICalTodo)

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

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

/* readonly attribute oeIDateTime due; */
NS_IMETHODIMP oeICalTodo::GetDue(oeIDateTime * *aDue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute oeIDateTime completed; */
NS_IMETHODIMP oeICalTodo::GetCompleted(oeIDateTime * *aCompleted)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute short percent; */
NS_IMETHODIMP oeICalTodo::GetPercent(PRInt16 *aPercent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalTodo::SetPercent(PRInt16 aPercent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AUTF8String getTodoIcalString (); */
NS_IMETHODIMP oeICalTodo::GetTodoIcalString(nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean parseTodoIcalString (in AUTF8String icalstr); */
NS_IMETHODIMP oeICalTodo::ParseTodoIcalString(const nsACString & icalstr, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    oeIICalObserver */
#define OEIICALOBSERVER_IID_STR "b8584baa-1507-40d4-b542-5a2758e1c86d"

#define OEIICALOBSERVER_IID \
  {0xb8584baa, 0x1507, 0x40d4, \
    { 0xb5, 0x42, 0x5a, 0x27, 0x58, 0xe1, 0xc8, 0x6d }}

class NS_NO_VTABLE oeIICalObserver : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(OEIICALOBSERVER_IID)

  /* void onStartBatch (); */
  NS_IMETHOD OnStartBatch(void) = 0;

  /* void onEndBatch (); */
  NS_IMETHOD OnEndBatch(void) = 0;

  /* void onLoad (); */
  NS_IMETHOD OnLoad(void) = 0;

  /* void onAddItem (in oeIICalEvent e); */
  NS_IMETHOD OnAddItem(oeIICalEvent *e) = 0;

  /* void onModifyItem (in oeIICalEvent e, in oeIICalEvent olde); */
  NS_IMETHOD OnModifyItem(oeIICalEvent *e, oeIICalEvent *olde) = 0;

  /* void onDeleteItem (in oeIICalEvent e); */
  NS_IMETHOD OnDeleteItem(oeIICalEvent *e) = 0;

  /* void onAlarm (in oeIICalEventDisplay e); */
  NS_IMETHOD OnAlarm(oeIICalEventDisplay *e) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_OEIICALOBSERVER \
  NS_IMETHOD OnStartBatch(void); \
  NS_IMETHOD OnEndBatch(void); \
  NS_IMETHOD OnLoad(void); \
  NS_IMETHOD OnAddItem(oeIICalEvent *e); \
  NS_IMETHOD OnModifyItem(oeIICalEvent *e, oeIICalEvent *olde); \
  NS_IMETHOD OnDeleteItem(oeIICalEvent *e); \
  NS_IMETHOD OnAlarm(oeIICalEventDisplay *e); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_OEIICALOBSERVER(_to) \
  NS_IMETHOD OnStartBatch(void) { return _to OnStartBatch(); } \
  NS_IMETHOD OnEndBatch(void) { return _to OnEndBatch(); } \
  NS_IMETHOD OnLoad(void) { return _to OnLoad(); } \
  NS_IMETHOD OnAddItem(oeIICalEvent *e) { return _to OnAddItem(e); } \
  NS_IMETHOD OnModifyItem(oeIICalEvent *e, oeIICalEvent *olde) { return _to OnModifyItem(e, olde); } \
  NS_IMETHOD OnDeleteItem(oeIICalEvent *e) { return _to OnDeleteItem(e); } \
  NS_IMETHOD OnAlarm(oeIICalEventDisplay *e) { return _to OnAlarm(e); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_OEIICALOBSERVER(_to) \
  NS_IMETHOD OnStartBatch(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnStartBatch(); } \
  NS_IMETHOD OnEndBatch(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnEndBatch(); } \
  NS_IMETHOD OnLoad(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnLoad(); } \
  NS_IMETHOD OnAddItem(oeIICalEvent *e) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnAddItem(e); } \
  NS_IMETHOD OnModifyItem(oeIICalEvent *e, oeIICalEvent *olde) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnModifyItem(e, olde); } \
  NS_IMETHOD OnDeleteItem(oeIICalEvent *e) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnDeleteItem(e); } \
  NS_IMETHOD OnAlarm(oeIICalEventDisplay *e) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnAlarm(e); } 

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

/* Header file */
class oeICalObserver : public oeIICalObserver
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_OEIICALOBSERVER

  oeICalObserver();
  virtual ~oeICalObserver();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(oeICalObserver, oeIICalObserver)

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

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

/* void onStartBatch (); */
NS_IMETHODIMP oeICalObserver::OnStartBatch()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onEndBatch (); */
NS_IMETHODIMP oeICalObserver::OnEndBatch()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onLoad (); */
NS_IMETHODIMP oeICalObserver::OnLoad()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onAddItem (in oeIICalEvent e); */
NS_IMETHODIMP oeICalObserver::OnAddItem(oeIICalEvent *e)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onModifyItem (in oeIICalEvent e, in oeIICalEvent olde); */
NS_IMETHODIMP oeICalObserver::OnModifyItem(oeIICalEvent *e, oeIICalEvent *olde)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onDeleteItem (in oeIICalEvent e); */
NS_IMETHODIMP oeICalObserver::OnDeleteItem(oeIICalEvent *e)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onAlarm (in oeIICalEventDisplay e); */
NS_IMETHODIMP oeICalObserver::OnAlarm(oeIICalEventDisplay *e)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    oeIICalTodoObserver */
#define OEIICALTODOOBSERVER_IID_STR "7a4fd625-69a8-4008-932e-cccc227b402c"

#define OEIICALTODOOBSERVER_IID \
  {0x7a4fd625, 0x69a8, 0x4008, \
    { 0x93, 0x2e, 0xcc, 0xcc, 0x22, 0x7b, 0x40, 0x2c }}

class NS_NO_VTABLE oeIICalTodoObserver : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(OEIICALTODOOBSERVER_IID)

  /* void onStartBatch (); */
  NS_IMETHOD OnStartBatch(void) = 0;

  /* void onEndBatch (); */
  NS_IMETHOD OnEndBatch(void) = 0;

  /* void onLoad (); */
  NS_IMETHOD OnLoad(void) = 0;

  /* void onAddItem (in oeIICalTodo e); */
  NS_IMETHOD OnAddItem(oeIICalTodo *e) = 0;

  /* void onModifyItem (in oeIICalTodo e, in oeIICalTodo olde); */
  NS_IMETHOD OnModifyItem(oeIICalTodo *e, oeIICalTodo *olde) = 0;

  /* void onDeleteItem (in oeIICalTodo e); */
  NS_IMETHOD OnDeleteItem(oeIICalTodo *e) = 0;

  /* void onAlarm (in oeIICalTodo e); */
  NS_IMETHOD OnAlarm(oeIICalTodo *e) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_OEIICALTODOOBSERVER \
  NS_IMETHOD OnStartBatch(void); \
  NS_IMETHOD OnEndBatch(void); \
  NS_IMETHOD OnLoad(void); \
  NS_IMETHOD OnAddItem(oeIICalTodo *e); \
  NS_IMETHOD OnModifyItem(oeIICalTodo *e, oeIICalTodo *olde); \
  NS_IMETHOD OnDeleteItem(oeIICalTodo *e); \
  NS_IMETHOD OnAlarm(oeIICalTodo *e); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_OEIICALTODOOBSERVER(_to) \
  NS_IMETHOD OnStartBatch(void) { return _to OnStartBatch(); } \
  NS_IMETHOD OnEndBatch(void) { return _to OnEndBatch(); } \
  NS_IMETHOD OnLoad(void) { return _to OnLoad(); } \
  NS_IMETHOD OnAddItem(oeIICalTodo *e) { return _to OnAddItem(e); } \
  NS_IMETHOD OnModifyItem(oeIICalTodo *e, oeIICalTodo *olde) { return _to OnModifyItem(e, olde); } \
  NS_IMETHOD OnDeleteItem(oeIICalTodo *e) { return _to OnDeleteItem(e); } \
  NS_IMETHOD OnAlarm(oeIICalTodo *e) { return _to OnAlarm(e); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_OEIICALTODOOBSERVER(_to) \
  NS_IMETHOD OnStartBatch(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnStartBatch(); } \
  NS_IMETHOD OnEndBatch(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnEndBatch(); } \
  NS_IMETHOD OnLoad(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnLoad(); } \
  NS_IMETHOD OnAddItem(oeIICalTodo *e) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnAddItem(e); } \
  NS_IMETHOD OnModifyItem(oeIICalTodo *e, oeIICalTodo *olde) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnModifyItem(e, olde); } \
  NS_IMETHOD OnDeleteItem(oeIICalTodo *e) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnDeleteItem(e); } \
  NS_IMETHOD OnAlarm(oeIICalTodo *e) { return !_to ? NS_ERROR_NULL_POINTER : _to->OnAlarm(e); } 

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

/* Header file */
class oeICalTodoObserver : public oeIICalTodoObserver
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_OEIICALTODOOBSERVER

  oeICalTodoObserver();
  virtual ~oeICalTodoObserver();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(oeICalTodoObserver, oeIICalTodoObserver)

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

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

/* void onStartBatch (); */
NS_IMETHODIMP oeICalTodoObserver::OnStartBatch()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onEndBatch (); */
NS_IMETHODIMP oeICalTodoObserver::OnEndBatch()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onLoad (); */
NS_IMETHODIMP oeICalTodoObserver::OnLoad()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onAddItem (in oeIICalTodo e); */
NS_IMETHODIMP oeICalTodoObserver::OnAddItem(oeIICalTodo *e)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onModifyItem (in oeIICalTodo e, in oeIICalTodo olde); */
NS_IMETHODIMP oeICalTodoObserver::OnModifyItem(oeIICalTodo *e, oeIICalTodo *olde)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onDeleteItem (in oeIICalTodo e); */
NS_IMETHODIMP oeICalTodoObserver::OnDeleteItem(oeIICalTodo *e)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onAlarm (in oeIICalTodo e); */
NS_IMETHODIMP oeICalTodoObserver::OnAlarm(oeIICalTodo *e)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    oeIICal */
#define OEIICAL_IID_STR "981ab93d-ad51-45bb-a4a2-e158c2cfdeb4"

#define OEIICAL_IID \
  {0x981ab93d, 0xad51, 0x45bb, \
    { 0xa4, 0xa2, 0xe1, 0x58, 0xc2, 0xcf, 0xde, 0xb4 }}

class NS_NO_VTABLE oeIICal : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(OEIICAL_IID)

  /* void Test (); */
  NS_IMETHOD Test(void) = 0;

  /* attribute boolean batchMode; */
  NS_IMETHOD GetBatchMode(PRBool *aBatchMode) = 0;
  NS_IMETHOD SetBatchMode(PRBool aBatchMode) = 0;

  /* readonly attribute oeIICalTodo filter; */
  NS_IMETHOD GetFilter(oeIICalTodo * *aFilter) = 0;

  /* attribute string server; */
  NS_IMETHOD GetServer(char * *aServer) = 0;
  NS_IMETHOD SetServer(const char * aServer) = 0;

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

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

  /* void addTodoObserver (in oeIICalTodoObserver observer); */
  NS_IMETHOD AddTodoObserver(oeIICalTodoObserver *observer) = 0;

  /* void removeTodoObserver (in oeIICalTodoObserver observer); */
  NS_IMETHOD RemoveTodoObserver(oeIICalTodoObserver *observer) = 0;

  /* string addEvent (in oeIICalEvent icalevent); */
  NS_IMETHOD AddEvent(oeIICalEvent *icalevent, char **_retval) = 0;

  /* string modifyEvent (in oeIICalEvent icalevent); */
  NS_IMETHOD ModifyEvent(oeIICalEvent *icalevent, char **_retval) = 0;

  /* void deleteEvent (in string id); */
  NS_IMETHOD DeleteEvent(const char *id) = 0;

  /* oeIICalEvent fetchEvent (in string id); */
  NS_IMETHOD FetchEvent(const char *id, oeIICalEvent **_retval) = 0;

  /* nsISimpleEnumerator getAllEvents (); */
  NS_IMETHOD GetAllEvents(nsISimpleEnumerator **_retval) = 0;

  /* nsISimpleEnumerator getEventsForMonth (in PRTime date); */
  NS_IMETHOD GetEventsForMonth(PRTime date, nsISimpleEnumerator **_retval) = 0;

  /* nsISimpleEnumerator getEventsForWeek (in PRTime date); */
  NS_IMETHOD GetEventsForWeek(PRTime date, nsISimpleEnumerator **_retval) = 0;

  /* nsISimpleEnumerator getEventsForDay (in PRTime date); */
  NS_IMETHOD GetEventsForDay(PRTime date, nsISimpleEnumerator **_retval) = 0;

  /* nsISimpleEnumerator getEventsForRange (in PRTime begindate, in PRTime enddate); */
  NS_IMETHOD GetEventsForRange(PRTime begindate, PRTime enddate, nsISimpleEnumerator **_retval) = 0;

  /* nsISimpleEnumerator getNextNEvents (in PRTime begindate, in long count); */
  NS_IMETHOD GetNextNEvents(PRTime begindate, PRInt32 count, nsISimpleEnumerator **_retval) = 0;

  /* nsISimpleEnumerator getFirstEventsForRange (in PRTime begindate, in PRTime enddate); */
  NS_IMETHOD GetFirstEventsForRange(PRTime begindate, PRTime enddate, nsISimpleEnumerator **_retval) = 0;

  /* string addTodo (in oeIICalTodo icaltodo); */
  NS_IMETHOD AddTodo(oeIICalTodo *icaltodo, char **_retval) = 0;

  /* string modifyTodo (in oeIICalTodo icaltodo); */
  NS_IMETHOD ModifyTodo(oeIICalTodo *icaltodo, char **_retval) = 0;

  /* void deleteTodo (in string id); */
  NS_IMETHOD DeleteTodo(const char *id) = 0;

  /* oeIICalTodo fetchTodo (in string id); */
  NS_IMETHOD FetchTodo(const char *id, oeIICalTodo **_retval) = 0;

  /* nsISimpleEnumerator getAllTodos (); */
  NS_IMETHOD GetAllTodos(nsISimpleEnumerator **_retval) = 0;

  /* void resetFilter (); */
  NS_IMETHOD ResetFilter(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_OEIICAL \
  NS_IMETHOD Test(void); \
  NS_IMETHOD GetBatchMode(PRBool *aBatchMode); \
  NS_IMETHOD SetBatchMode(PRBool aBatchMode); \
  NS_IMETHOD GetFilter(oeIICalTodo * *aFilter); \
  NS_IMETHOD GetServer(char * *aServer); \
  NS_IMETHOD SetServer(const char * aServer); \
  NS_IMETHOD AddObserver(oeIICalObserver *observer); \
  NS_IMETHOD RemoveObserver(oeIICalObserver *observer); \
  NS_IMETHOD AddTodoObserver(oeIICalTodoObserver *observer); \
  NS_IMETHOD RemoveTodoObserver(oeIICalTodoObserver *observer); \
  NS_IMETHOD AddEvent(oeIICalEvent *icalevent, char **_retval); \
  NS_IMETHOD ModifyEvent(oeIICalEvent *icalevent, char **_retval); \
  NS_IMETHOD DeleteEvent(const char *id); \
  NS_IMETHOD FetchEvent(const char *id, oeIICalEvent **_retval); \
  NS_IMETHOD GetAllEvents(nsISimpleEnumerator **_retval); \
  NS_IMETHOD GetEventsForMonth(PRTime date, nsISimpleEnumerator **_retval); \
  NS_IMETHOD GetEventsForWeek(PRTime date, nsISimpleEnumerator **_retval); \
  NS_IMETHOD GetEventsForDay(PRTime date, nsISimpleEnumerator **_retval); \
  NS_IMETHOD GetEventsForRange(PRTime begindate, PRTime enddate, nsISimpleEnumerator **_retval); \
  NS_IMETHOD GetNextNEvents(PRTime begindate, PRInt32 count, nsISimpleEnumerator **_retval); \
  NS_IMETHOD GetFirstEventsForRange(PRTime begindate, PRTime enddate, nsISimpleEnumerator **_retval); \
  NS_IMETHOD AddTodo(oeIICalTodo *icaltodo, char **_retval); \
  NS_IMETHOD ModifyTodo(oeIICalTodo *icaltodo, char **_retval); \
  NS_IMETHOD DeleteTodo(const char *id); \
  NS_IMETHOD FetchTodo(const char *id, oeIICalTodo **_retval); \
  NS_IMETHOD GetAllTodos(nsISimpleEnumerator **_retval); \
  NS_IMETHOD ResetFilter(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_OEIICAL(_to) \
  NS_IMETHOD Test(void) { return _to Test(); } \
  NS_IMETHOD GetBatchMode(PRBool *aBatchMode) { return _to GetBatchMode(aBatchMode); } \
  NS_IMETHOD SetBatchMode(PRBool aBatchMode) { return _to SetBatchMode(aBatchMode); } \
  NS_IMETHOD GetFilter(oeIICalTodo * *aFilter) { return _to GetFilter(aFilter); } \
  NS_IMETHOD GetServer(char * *aServer) { return _to GetServer(aServer); } \
  NS_IMETHOD SetServer(const char * aServer) { return _to SetServer(aServer); } \
  NS_IMETHOD AddObserver(oeIICalObserver *observer) { return _to AddObserver(observer); } \
  NS_IMETHOD RemoveObserver(oeIICalObserver *observer) { return _to RemoveObserver(observer); } \
  NS_IMETHOD AddTodoObserver(oeIICalTodoObserver *observer) { return _to AddTodoObserver(observer); } \
  NS_IMETHOD RemoveTodoObserver(oeIICalTodoObserver *observer) { return _to RemoveTodoObserver(observer); } \
  NS_IMETHOD AddEvent(oeIICalEvent *icalevent, char **_retval) { return _to AddEvent(icalevent, _retval); } \
  NS_IMETHOD ModifyEvent(oeIICalEvent *icalevent, char **_retval) { return _to ModifyEvent(icalevent, _retval); } \
  NS_IMETHOD DeleteEvent(const char *id) { return _to DeleteEvent(id); } \
  NS_IMETHOD FetchEvent(const char *id, oeIICalEvent **_retval) { return _to FetchEvent(id, _retval); } \
  NS_IMETHOD GetAllEvents(nsISimpleEnumerator **_retval) { return _to GetAllEvents(_retval); } \
  NS_IMETHOD GetEventsForMonth(PRTime date, nsISimpleEnumerator **_retval) { return _to GetEventsForMonth(date, _retval); } \
  NS_IMETHOD GetEventsForWeek(PRTime date, nsISimpleEnumerator **_retval) { return _to GetEventsForWeek(date, _retval); } \
  NS_IMETHOD GetEventsForDay(PRTime date, nsISimpleEnumerator **_retval) { return _to GetEventsForDay(date, _retval); } \
  NS_IMETHOD GetEventsForRange(PRTime begindate, PRTime enddate, nsISimpleEnumerator **_retval) { return _to GetEventsForRange(begindate, enddate, _retval); } \
  NS_IMETHOD GetNextNEvents(PRTime begindate, PRInt32 count, nsISimpleEnumerator **_retval) { return _to GetNextNEvents(begindate, count, _retval); } \
  NS_IMETHOD GetFirstEventsForRange(PRTime begindate, PRTime enddate, nsISimpleEnumerator **_retval) { return _to GetFirstEventsForRange(begindate, enddate, _retval); } \
  NS_IMETHOD AddTodo(oeIICalTodo *icaltodo, char **_retval) { return _to AddTodo(icaltodo, _retval); } \
  NS_IMETHOD ModifyTodo(oeIICalTodo *icaltodo, char **_retval) { return _to ModifyTodo(icaltodo, _retval); } \
  NS_IMETHOD DeleteTodo(const char *id) { return _to DeleteTodo(id); } \
  NS_IMETHOD FetchTodo(const char *id, oeIICalTodo **_retval) { return _to FetchTodo(id, _retval); } \
  NS_IMETHOD GetAllTodos(nsISimpleEnumerator **_retval) { return _to GetAllTodos(_retval); } \
  NS_IMETHOD ResetFilter(void) { return _to ResetFilter(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_OEIICAL(_to) \
  NS_IMETHOD Test(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Test(); } \
  NS_IMETHOD GetBatchMode(PRBool *aBatchMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBatchMode(aBatchMode); } \
  NS_IMETHOD SetBatchMode(PRBool aBatchMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBatchMode(aBatchMode); } \
  NS_IMETHOD GetFilter(oeIICalTodo * *aFilter) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilter(aFilter); } \
  NS_IMETHOD GetServer(char * *aServer) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetServer(aServer); } \
  NS_IMETHOD SetServer(const char * aServer) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetServer(aServer); } \
  NS_IMETHOD AddObserver(oeIICalObserver *observer) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddObserver(observer); } \
  NS_IMETHOD RemoveObserver(oeIICalObserver *observer) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveObserver(observer); } \
  NS_IMETHOD AddTodoObserver(oeIICalTodoObserver *observer) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddTodoObserver(observer); } \
  NS_IMETHOD RemoveTodoObserver(oeIICalTodoObserver *observer) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveTodoObserver(observer); } \
  NS_IMETHOD AddEvent(oeIICalEvent *icalevent, char **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddEvent(icalevent, _retval); } \
  NS_IMETHOD ModifyEvent(oeIICalEvent *icalevent, char **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->ModifyEvent(icalevent, _retval); } \
  NS_IMETHOD DeleteEvent(const char *id) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteEvent(id); } \
  NS_IMETHOD FetchEvent(const char *id, oeIICalEvent **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->FetchEvent(id, _retval); } \
  NS_IMETHOD GetAllEvents(nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllEvents(_retval); } \
  NS_IMETHOD GetEventsForMonth(PRTime date, nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEventsForMonth(date, _retval); } \
  NS_IMETHOD GetEventsForWeek(PRTime date, nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEventsForWeek(date, _retval); } \
  NS_IMETHOD GetEventsForDay(PRTime date, nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEventsForDay(date, _retval); } \
  NS_IMETHOD GetEventsForRange(PRTime begindate, PRTime enddate, nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEventsForRange(begindate, enddate, _retval); } \
  NS_IMETHOD GetNextNEvents(PRTime begindate, PRInt32 count, nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNextNEvents(begindate, count, _retval); } \
  NS_IMETHOD GetFirstEventsForRange(PRTime begindate, PRTime enddate, nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFirstEventsForRange(begindate, enddate, _retval); } \
  NS_IMETHOD AddTodo(oeIICalTodo *icaltodo, char **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddTodo(icaltodo, _retval); } \
  NS_IMETHOD ModifyTodo(oeIICalTodo *icaltodo, char **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->ModifyTodo(icaltodo, _retval); } \
  NS_IMETHOD DeleteTodo(const char *id) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteTodo(id); } \
  NS_IMETHOD FetchTodo(const char *id, oeIICalTodo **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->FetchTodo(id, _retval); } \
  NS_IMETHOD GetAllTodos(nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllTodos(_retval); } \
  NS_IMETHOD ResetFilter(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->ResetFilter(); } 

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

/* Header file */
class oeICal : public oeIICal
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_OEIICAL

  oeICal();
  virtual ~oeICal();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(oeICal, oeIICal)

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

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

/* void Test (); */
NS_IMETHODIMP oeICal::Test()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean batchMode; */
NS_IMETHODIMP oeICal::GetBatchMode(PRBool *aBatchMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICal::SetBatchMode(PRBool aBatchMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute oeIICalTodo filter; */
NS_IMETHODIMP oeICal::GetFilter(oeIICalTodo * *aFilter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string server; */
NS_IMETHODIMP oeICal::GetServer(char * *aServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICal::SetServer(const char * aServer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

/* void addTodoObserver (in oeIICalTodoObserver observer); */
NS_IMETHODIMP oeICal::AddTodoObserver(oeIICalTodoObserver *observer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeTodoObserver (in oeIICalTodoObserver observer); */
NS_IMETHODIMP oeICal::RemoveTodoObserver(oeIICalTodoObserver *observer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string addEvent (in oeIICalEvent icalevent); */
NS_IMETHODIMP oeICal::AddEvent(oeIICalEvent *icalevent, char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string modifyEvent (in oeIICalEvent icalevent); */
NS_IMETHODIMP oeICal::ModifyEvent(oeIICalEvent *icalevent, char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteEvent (in string id); */
NS_IMETHODIMP oeICal::DeleteEvent(const char *id)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* oeIICalEvent fetchEvent (in string id); */
NS_IMETHODIMP oeICal::FetchEvent(const char *id, oeIICalEvent **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getAllEvents (); */
NS_IMETHODIMP oeICal::GetAllEvents(nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getEventsForMonth (in PRTime date); */
NS_IMETHODIMP oeICal::GetEventsForMonth(PRTime date, nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getEventsForWeek (in PRTime date); */
NS_IMETHODIMP oeICal::GetEventsForWeek(PRTime date, nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getEventsForDay (in PRTime date); */
NS_IMETHODIMP oeICal::GetEventsForDay(PRTime date, nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getEventsForRange (in PRTime begindate, in PRTime enddate); */
NS_IMETHODIMP oeICal::GetEventsForRange(PRTime begindate, PRTime enddate, nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getNextNEvents (in PRTime begindate, in long count); */
NS_IMETHODIMP oeICal::GetNextNEvents(PRTime begindate, PRInt32 count, nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getFirstEventsForRange (in PRTime begindate, in PRTime enddate); */
NS_IMETHODIMP oeICal::GetFirstEventsForRange(PRTime begindate, PRTime enddate, nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string addTodo (in oeIICalTodo icaltodo); */
NS_IMETHODIMP oeICal::AddTodo(oeIICalTodo *icaltodo, char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string modifyTodo (in oeIICalTodo icaltodo); */
NS_IMETHODIMP oeICal::ModifyTodo(oeIICalTodo *icaltodo, char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteTodo (in string id); */
NS_IMETHODIMP oeICal::DeleteTodo(const char *id)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* oeIICalTodo fetchTodo (in string id); */
NS_IMETHODIMP oeICal::FetchTodo(const char *id, oeIICalTodo **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getAllTodos (); */
NS_IMETHODIMP oeICal::GetAllTodos(nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void resetFilter (); */
NS_IMETHODIMP oeICal::ResetFilter()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    oeIICalContainer */
#define OEIICALCONTAINER_IID_STR "c89ec938-f690-4f62-a4b3-11e962ba2314"

#define OEIICALCONTAINER_IID \
  {0xc89ec938, 0xf690, 0x4f62, \
    { 0xa4, 0xb3, 0x11, 0xe9, 0x62, 0xba, 0x23, 0x14 }}

class NS_NO_VTABLE oeIICalContainer : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(OEIICALCONTAINER_IID)

  /* attribute boolean batchMode; */
  NS_IMETHOD GetBatchMode(PRBool *aBatchMode) = 0;
  NS_IMETHOD SetBatchMode(PRBool aBatchMode) = 0;

  /* readonly attribute oeIICalTodo filter; */
  NS_IMETHOD GetFilter(oeIICalTodo * *aFilter) = 0;

  /* void addCalendar (in string server); */
  NS_IMETHOD AddCalendar(const char *server) = 0;

  /* void removeCalendar (in string server); */
  NS_IMETHOD RemoveCalendar(const char *server) = 0;

  /* oeIICal getCalendar (in string server); */
  NS_IMETHOD GetCalendar(const char *server, oeIICal **_retval) = 0;

  /* void addCalendars (in unsigned long serverCount, [array, size_is (serverCount)] in string servers); */
  NS_IMETHOD AddCalendars(PRUint32 serverCount, const char **servers) = 0;

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

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

  /* void addTodoObserver (in oeIICalTodoObserver observer); */
  NS_IMETHOD AddTodoObserver(oeIICalTodoObserver *observer) = 0;

  /* void removeTodoObserver (in oeIICalTodoObserver observer); */
  NS_IMETHOD RemoveTodoObserver(oeIICalTodoObserver *observer) = 0;

  /* string addEvent (in oeIICalEvent icalevent, in string server); */
  NS_IMETHOD AddEvent(oeIICalEvent *icalevent, const char *server, char **_retval) = 0;

  /* string modifyEvent (in oeIICalEvent icalevent); */
  NS_IMETHOD ModifyEvent(oeIICalEvent *icalevent, char **_retval) = 0;

  /* void deleteEvent (in string id); */
  NS_IMETHOD DeleteEvent(const char *id) = 0;

  /* oeIICalEvent fetchEvent (in string id); */
  NS_IMETHOD FetchEvent(const char *id, oeIICalEvent **_retval) = 0;

  /* nsISimpleEnumerator getAllEvents (); */
  NS_IMETHOD GetAllEvents(nsISimpleEnumerator **_retval) = 0;

  /* nsISimpleEnumerator getEventsForMonth (in PRTime date); */
  NS_IMETHOD GetEventsForMonth(PRTime date, nsISimpleEnumerator **_retval) = 0;

  /* nsISimpleEnumerator getEventsForWeek (in PRTime date); */
  NS_IMETHOD GetEventsForWeek(PRTime date, nsISimpleEnumerator **_retval) = 0;

  /* nsISimpleEnumerator getEventsForDay (in PRTime date); */
  NS_IMETHOD GetEventsForDay(PRTime date, nsISimpleEnumerator **_retval) = 0;

  /* nsISimpleEnumerator getEventsForRange (in PRTime begindate, in PRTime enddate); */
  NS_IMETHOD GetEventsForRange(PRTime begindate, PRTime enddate, nsISimpleEnumerator **_retval) = 0;

  /* nsISimpleEnumerator getNextNEvents (in PRTime begindate, in long count); */
  NS_IMETHOD GetNextNEvents(PRTime begindate, PRInt32 count, nsISimpleEnumerator **_retval) = 0;

  /* nsISimpleEnumerator getFirstEventsForRange (in PRTime begindate, in PRTime enddate); */
  NS_IMETHOD GetFirstEventsForRange(PRTime begindate, PRTime enddate, nsISimpleEnumerator **_retval) = 0;

  /* string addTodo (in oeIICalTodo icaltodo, in string server); */
  NS_IMETHOD AddTodo(oeIICalTodo *icaltodo, const char *server, char **_retval) = 0;

  /* string modifyTodo (in oeIICalTodo icaltodo); */
  NS_IMETHOD ModifyTodo(oeIICalTodo *icaltodo, char **_retval) = 0;

  /* void deleteTodo (in string id); */
  NS_IMETHOD DeleteTodo(const char *id) = 0;

  /* oeIICalTodo fetchTodo (in string id); */
  NS_IMETHOD FetchTodo(const char *id, oeIICalTodo **_retval) = 0;

  /* nsISimpleEnumerator getAllTodos (); */
  NS_IMETHOD GetAllTodos(nsISimpleEnumerator **_retval) = 0;

  /* void resetFilter (); */
  NS_IMETHOD ResetFilter(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_OEIICALCONTAINER \
  NS_IMETHOD GetBatchMode(PRBool *aBatchMode); \
  NS_IMETHOD SetBatchMode(PRBool aBatchMode); \
  NS_IMETHOD GetFilter(oeIICalTodo * *aFilter); \
  NS_IMETHOD AddCalendar(const char *server); \
  NS_IMETHOD RemoveCalendar(const char *server); \
  NS_IMETHOD GetCalendar(const char *server, oeIICal **_retval); \
  NS_IMETHOD AddCalendars(PRUint32 serverCount, const char **servers); \
  NS_IMETHOD AddObserver(oeIICalObserver *observer); \
  NS_IMETHOD RemoveObserver(oeIICalObserver *observer); \
  NS_IMETHOD AddTodoObserver(oeIICalTodoObserver *observer); \
  NS_IMETHOD RemoveTodoObserver(oeIICalTodoObserver *observer); \
  NS_IMETHOD AddEvent(oeIICalEvent *icalevent, const char *server, char **_retval); \
  NS_IMETHOD ModifyEvent(oeIICalEvent *icalevent, char **_retval); \
  NS_IMETHOD DeleteEvent(const char *id); \
  NS_IMETHOD FetchEvent(const char *id, oeIICalEvent **_retval); \
  NS_IMETHOD GetAllEvents(nsISimpleEnumerator **_retval); \
  NS_IMETHOD GetEventsForMonth(PRTime date, nsISimpleEnumerator **_retval); \
  NS_IMETHOD GetEventsForWeek(PRTime date, nsISimpleEnumerator **_retval); \
  NS_IMETHOD GetEventsForDay(PRTime date, nsISimpleEnumerator **_retval); \
  NS_IMETHOD GetEventsForRange(PRTime begindate, PRTime enddate, nsISimpleEnumerator **_retval); \
  NS_IMETHOD GetNextNEvents(PRTime begindate, PRInt32 count, nsISimpleEnumerator **_retval); \
  NS_IMETHOD GetFirstEventsForRange(PRTime begindate, PRTime enddate, nsISimpleEnumerator **_retval); \
  NS_IMETHOD AddTodo(oeIICalTodo *icaltodo, const char *server, char **_retval); \
  NS_IMETHOD ModifyTodo(oeIICalTodo *icaltodo, char **_retval); \
  NS_IMETHOD DeleteTodo(const char *id); \
  NS_IMETHOD FetchTodo(const char *id, oeIICalTodo **_retval); \
  NS_IMETHOD GetAllTodos(nsISimpleEnumerator **_retval); \
  NS_IMETHOD ResetFilter(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_OEIICALCONTAINER(_to) \
  NS_IMETHOD GetBatchMode(PRBool *aBatchMode) { return _to GetBatchMode(aBatchMode); } \
  NS_IMETHOD SetBatchMode(PRBool aBatchMode) { return _to SetBatchMode(aBatchMode); } \
  NS_IMETHOD GetFilter(oeIICalTodo * *aFilter) { return _to GetFilter(aFilter); } \
  NS_IMETHOD AddCalendar(const char *server) { return _to AddCalendar(server); } \
  NS_IMETHOD RemoveCalendar(const char *server) { return _to RemoveCalendar(server); } \
  NS_IMETHOD GetCalendar(const char *server, oeIICal **_retval) { return _to GetCalendar(server, _retval); } \
  NS_IMETHOD AddCalendars(PRUint32 serverCount, const char **servers) { return _to AddCalendars(serverCount, servers); } \
  NS_IMETHOD AddObserver(oeIICalObserver *observer) { return _to AddObserver(observer); } \
  NS_IMETHOD RemoveObserver(oeIICalObserver *observer) { return _to RemoveObserver(observer); } \
  NS_IMETHOD AddTodoObserver(oeIICalTodoObserver *observer) { return _to AddTodoObserver(observer); } \
  NS_IMETHOD RemoveTodoObserver(oeIICalTodoObserver *observer) { return _to RemoveTodoObserver(observer); } \
  NS_IMETHOD AddEvent(oeIICalEvent *icalevent, const char *server, char **_retval) { return _to AddEvent(icalevent, server, _retval); } \
  NS_IMETHOD ModifyEvent(oeIICalEvent *icalevent, char **_retval) { return _to ModifyEvent(icalevent, _retval); } \
  NS_IMETHOD DeleteEvent(const char *id) { return _to DeleteEvent(id); } \
  NS_IMETHOD FetchEvent(const char *id, oeIICalEvent **_retval) { return _to FetchEvent(id, _retval); } \
  NS_IMETHOD GetAllEvents(nsISimpleEnumerator **_retval) { return _to GetAllEvents(_retval); } \
  NS_IMETHOD GetEventsForMonth(PRTime date, nsISimpleEnumerator **_retval) { return _to GetEventsForMonth(date, _retval); } \
  NS_IMETHOD GetEventsForWeek(PRTime date, nsISimpleEnumerator **_retval) { return _to GetEventsForWeek(date, _retval); } \
  NS_IMETHOD GetEventsForDay(PRTime date, nsISimpleEnumerator **_retval) { return _to GetEventsForDay(date, _retval); } \
  NS_IMETHOD GetEventsForRange(PRTime begindate, PRTime enddate, nsISimpleEnumerator **_retval) { return _to GetEventsForRange(begindate, enddate, _retval); } \
  NS_IMETHOD GetNextNEvents(PRTime begindate, PRInt32 count, nsISimpleEnumerator **_retval) { return _to GetNextNEvents(begindate, count, _retval); } \
  NS_IMETHOD GetFirstEventsForRange(PRTime begindate, PRTime enddate, nsISimpleEnumerator **_retval) { return _to GetFirstEventsForRange(begindate, enddate, _retval); } \
  NS_IMETHOD AddTodo(oeIICalTodo *icaltodo, const char *server, char **_retval) { return _to AddTodo(icaltodo, server, _retval); } \
  NS_IMETHOD ModifyTodo(oeIICalTodo *icaltodo, char **_retval) { return _to ModifyTodo(icaltodo, _retval); } \
  NS_IMETHOD DeleteTodo(const char *id) { return _to DeleteTodo(id); } \
  NS_IMETHOD FetchTodo(const char *id, oeIICalTodo **_retval) { return _to FetchTodo(id, _retval); } \
  NS_IMETHOD GetAllTodos(nsISimpleEnumerator **_retval) { return _to GetAllTodos(_retval); } \
  NS_IMETHOD ResetFilter(void) { return _to ResetFilter(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_OEIICALCONTAINER(_to) \
  NS_IMETHOD GetBatchMode(PRBool *aBatchMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBatchMode(aBatchMode); } \
  NS_IMETHOD SetBatchMode(PRBool aBatchMode) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBatchMode(aBatchMode); } \
  NS_IMETHOD GetFilter(oeIICalTodo * *aFilter) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilter(aFilter); } \
  NS_IMETHOD AddCalendar(const char *server) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddCalendar(server); } \
  NS_IMETHOD RemoveCalendar(const char *server) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveCalendar(server); } \
  NS_IMETHOD GetCalendar(const char *server, oeIICal **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCalendar(server, _retval); } \
  NS_IMETHOD AddCalendars(PRUint32 serverCount, const char **servers) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddCalendars(serverCount, servers); } \
  NS_IMETHOD AddObserver(oeIICalObserver *observer) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddObserver(observer); } \
  NS_IMETHOD RemoveObserver(oeIICalObserver *observer) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveObserver(observer); } \
  NS_IMETHOD AddTodoObserver(oeIICalTodoObserver *observer) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddTodoObserver(observer); } \
  NS_IMETHOD RemoveTodoObserver(oeIICalTodoObserver *observer) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveTodoObserver(observer); } \
  NS_IMETHOD AddEvent(oeIICalEvent *icalevent, const char *server, char **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddEvent(icalevent, server, _retval); } \
  NS_IMETHOD ModifyEvent(oeIICalEvent *icalevent, char **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->ModifyEvent(icalevent, _retval); } \
  NS_IMETHOD DeleteEvent(const char *id) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteEvent(id); } \
  NS_IMETHOD FetchEvent(const char *id, oeIICalEvent **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->FetchEvent(id, _retval); } \
  NS_IMETHOD GetAllEvents(nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllEvents(_retval); } \
  NS_IMETHOD GetEventsForMonth(PRTime date, nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEventsForMonth(date, _retval); } \
  NS_IMETHOD GetEventsForWeek(PRTime date, nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEventsForWeek(date, _retval); } \
  NS_IMETHOD GetEventsForDay(PRTime date, nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEventsForDay(date, _retval); } \
  NS_IMETHOD GetEventsForRange(PRTime begindate, PRTime enddate, nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEventsForRange(begindate, enddate, _retval); } \
  NS_IMETHOD GetNextNEvents(PRTime begindate, PRInt32 count, nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNextNEvents(begindate, count, _retval); } \
  NS_IMETHOD GetFirstEventsForRange(PRTime begindate, PRTime enddate, nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFirstEventsForRange(begindate, enddate, _retval); } \
  NS_IMETHOD AddTodo(oeIICalTodo *icaltodo, const char *server, char **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddTodo(icaltodo, server, _retval); } \
  NS_IMETHOD ModifyTodo(oeIICalTodo *icaltodo, char **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->ModifyTodo(icaltodo, _retval); } \
  NS_IMETHOD DeleteTodo(const char *id) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteTodo(id); } \
  NS_IMETHOD FetchTodo(const char *id, oeIICalTodo **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->FetchTodo(id, _retval); } \
  NS_IMETHOD GetAllTodos(nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllTodos(_retval); } \
  NS_IMETHOD ResetFilter(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->ResetFilter(); } 

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

/* Header file */
class oeICalContainer : public oeIICalContainer
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_OEIICALCONTAINER

  oeICalContainer();
  virtual ~oeICalContainer();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(oeICalContainer, oeIICalContainer)

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

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

/* attribute boolean batchMode; */
NS_IMETHODIMP oeICalContainer::GetBatchMode(PRBool *aBatchMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP oeICalContainer::SetBatchMode(PRBool aBatchMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute oeIICalTodo filter; */
NS_IMETHODIMP oeICalContainer::GetFilter(oeIICalTodo * *aFilter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addCalendar (in string server); */
NS_IMETHODIMP oeICalContainer::AddCalendar(const char *server)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeCalendar (in string server); */
NS_IMETHODIMP oeICalContainer::RemoveCalendar(const char *server)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* oeIICal getCalendar (in string server); */
NS_IMETHODIMP oeICalContainer::GetCalendar(const char *server, oeIICal **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addCalendars (in unsigned long serverCount, [array, size_is (serverCount)] in string servers); */
NS_IMETHODIMP oeICalContainer::AddCalendars(PRUint32 serverCount, const char **servers)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

/* void addTodoObserver (in oeIICalTodoObserver observer); */
NS_IMETHODIMP oeICalContainer::AddTodoObserver(oeIICalTodoObserver *observer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeTodoObserver (in oeIICalTodoObserver observer); */
NS_IMETHODIMP oeICalContainer::RemoveTodoObserver(oeIICalTodoObserver *observer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string addEvent (in oeIICalEvent icalevent, in string server); */
NS_IMETHODIMP oeICalContainer::AddEvent(oeIICalEvent *icalevent, const char *server, char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string modifyEvent (in oeIICalEvent icalevent); */
NS_IMETHODIMP oeICalContainer::ModifyEvent(oeIICalEvent *icalevent, char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteEvent (in string id); */
NS_IMETHODIMP oeICalContainer::DeleteEvent(const char *id)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* oeIICalEvent fetchEvent (in string id); */
NS_IMETHODIMP oeICalContainer::FetchEvent(const char *id, oeIICalEvent **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getAllEvents (); */
NS_IMETHODIMP oeICalContainer::GetAllEvents(nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getEventsForMonth (in PRTime date); */
NS_IMETHODIMP oeICalContainer::GetEventsForMonth(PRTime date, nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getEventsForWeek (in PRTime date); */
NS_IMETHODIMP oeICalContainer::GetEventsForWeek(PRTime date, nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getEventsForDay (in PRTime date); */
NS_IMETHODIMP oeICalContainer::GetEventsForDay(PRTime date, nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getEventsForRange (in PRTime begindate, in PRTime enddate); */
NS_IMETHODIMP oeICalContainer::GetEventsForRange(PRTime begindate, PRTime enddate, nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getNextNEvents (in PRTime begindate, in long count); */
NS_IMETHODIMP oeICalContainer::GetNextNEvents(PRTime begindate, PRInt32 count, nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getFirstEventsForRange (in PRTime begindate, in PRTime enddate); */
NS_IMETHODIMP oeICalContainer::GetFirstEventsForRange(PRTime begindate, PRTime enddate, nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string addTodo (in oeIICalTodo icaltodo, in string server); */
NS_IMETHODIMP oeICalContainer::AddTodo(oeIICalTodo *icaltodo, const char *server, char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string modifyTodo (in oeIICalTodo icaltodo); */
NS_IMETHODIMP oeICalContainer::ModifyTodo(oeIICalTodo *icaltodo, char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteTodo (in string id); */
NS_IMETHODIMP oeICalContainer::DeleteTodo(const char *id)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* oeIICalTodo fetchTodo (in string id); */
NS_IMETHODIMP oeICalContainer::FetchTodo(const char *id, oeIICalTodo **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getAllTodos (); */
NS_IMETHODIMP oeICalContainer::GetAllTodos(nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void resetFilter (); */
NS_IMETHODIMP oeICalContainer::ResetFilter()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

extern nsresult
NS_NewICal(oeIICal** inst);
extern nsresult
NS_NewICalEvent(oeIICalEvent** inst);
extern nsresult
NS_NewICalTodo(oeIICalTodo** inst);
extern nsresult
NS_NewDateTime(oeIDateTime** inst);
extern nsresult
NS_NewICalEventDisplay( oeIICalEvent* event, oeIICalEventDisplay** inst );

#endif /* __gen_oeIICal_h__ */
