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

#ifndef __gen_calIItemBase_h__
#define __gen_calIItemBase_h__


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

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

class nsIMutableArray; /* forward declaration */

class nsISimpleEnumerator; /* forward declaration */

class nsIVariant; /* forward declaration */

class nsIPropertyBag; /* forward declaration */

class calICalendar; /* forward declaration */

class calIDateTime; /* forward declaration */

class calIRecurrenceInfo; /* forward declaration */

class calIAttendee; /* forward declaration */

class calIIcalComponent; /* forward declaration */


/* starting interface:    calIItemBase */
#define CALIITEMBASE_IID_STR "18521d75-346d-4616-8778-de2c4a9a676e"

#define CALIITEMBASE_IID \
  {0x18521d75, 0x346d, 0x4616, \
    { 0x87, 0x78, 0xde, 0x2c, 0x4a, 0x9a, 0x67, 0x6e }}

class NS_NO_VTABLE calIItemBase : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(CALIITEMBASE_IID)

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

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

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

  /* readonly attribute PRUint32 generation; */
  NS_IMETHOD GetGeneration(PRUint32 *aGeneration) = 0;

  /* readonly attribute calIDateTime creationDate; */
  NS_IMETHOD GetCreationDate(calIDateTime * *aCreationDate) = 0;

  /* readonly attribute calIDateTime lastModifiedTime; */
  NS_IMETHOD GetLastModifiedTime(calIDateTime * *aLastModifiedTime) = 0;

  /* readonly attribute calIDateTime stampTime; */
  NS_IMETHOD GetStampTime(calIDateTime * *aStampTime) = 0;

  /* void updateStampTime (); */
  NS_IMETHOD UpdateStampTime(void) = 0;

  /* attribute calICalendar calendar; */
  NS_IMETHOD GetCalendar(calICalendar * *aCalendar) = 0;
  NS_IMETHOD SetCalendar(calICalendar * aCalendar) = 0;

  /* attribute AUTF8String id; */
  NS_IMETHOD GetId(nsACString & aId) = 0;
  NS_IMETHOD SetId(const nsACString & aId) = 0;

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

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

  /* attribute AUTF8String privacy; */
  NS_IMETHOD GetPrivacy(nsACString & aPrivacy) = 0;
  NS_IMETHOD SetPrivacy(const nsACString & aPrivacy) = 0;

  /* attribute AUTF8String status; */
  NS_IMETHOD GetStatus(nsACString & aStatus) = 0;
  NS_IMETHOD SetStatus(const nsACString & aStatus) = 0;

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

  /* attribute calIIcalComponent icalComponent; */
  NS_IMETHOD GetIcalComponent(calIIcalComponent * *aIcalComponent) = 0;
  NS_IMETHOD SetIcalComponent(calIIcalComponent * aIcalComponent) = 0;

  /* attribute calIDateTime alarmTime; */
  NS_IMETHOD GetAlarmTime(calIDateTime * *aAlarmTime) = 0;
  NS_IMETHOD SetAlarmTime(calIDateTime * aAlarmTime) = 0;

  /* attribute calIRecurrenceInfo recurrenceInfo; */
  NS_IMETHOD GetRecurrenceInfo(calIRecurrenceInfo * *aRecurrenceInfo) = 0;
  NS_IMETHOD SetRecurrenceInfo(calIRecurrenceInfo * aRecurrenceInfo) = 0;

  /* attribute calIDateTime recurrenceStartDate; */
  NS_IMETHOD GetRecurrenceStartDate(calIDateTime * *aRecurrenceStartDate) = 0;
  NS_IMETHOD SetRecurrenceStartDate(calIDateTime * aRecurrenceStartDate) = 0;

  /* readonly attribute nsIArray attachments; */
  NS_IMETHOD GetAttachments(nsIArray * *aAttachments) = 0;

  /* readonly attribute nsISimpleEnumerator propertyEnumerator; */
  NS_IMETHOD GetPropertyEnumerator(nsISimpleEnumerator * *aPropertyEnumerator) = 0;

  /* boolean hasProperty (in AString name); */
  NS_IMETHOD HasProperty(const nsAString & name, PRBool *_retval) = 0;

  /* nsIVariant getProperty (in AString name); */
  NS_IMETHOD GetProperty(const nsAString & name, nsIVariant **_retval) = 0;

  /* void setProperty (in AString name, in nsIVariant value); */
  NS_IMETHOD SetProperty(const nsAString & name, nsIVariant *value) = 0;

  /* void deleteProperty (in AString name); */
  NS_IMETHOD DeleteProperty(const nsAString & name) = 0;

  /* boolean isPropertyPromoted (in AString name); */
  NS_IMETHOD IsPropertyPromoted(const nsAString & name, PRBool *_retval) = 0;

  /**
   * The organizer (originator) of the item.  We will likely not
   * honour or preserve all fields in the calIAttendee passed around here.
   * A base class like calIPerson might be more appropriate here, if we ever
   * grow one.
   */
  /* attribute calIAttendee organizer; */
  NS_IMETHOD GetOrganizer(calIAttendee * *aOrganizer) = 0;
  NS_IMETHOD SetOrganizer(calIAttendee * aOrganizer) = 0;

  /* void getAttendees (out PRUint32 count, [array, size_is (count), retval] out calIAttendee attendees); */
  NS_IMETHOD GetAttendees(PRUint32 *count, calIAttendee ***attendees) = 0;

  /* calIAttendee getAttendeeById (in AUTF8String id); */
  NS_IMETHOD GetAttendeeById(const nsACString & id, calIAttendee **_retval) = 0;

  /* void removeAttendee (in calIAttendee attendee); */
  NS_IMETHOD RemoveAttendee(calIAttendee *attendee) = 0;

  /* void addAttendee (in calIAttendee attendee); */
  NS_IMETHOD AddAttendee(calIAttendee *attendee) = 0;

  /* void removeAllAttendees (); */
  NS_IMETHOD RemoveAllAttendees(void) = 0;

  /**
   * Return a list of occurrences of this item between the given dates.  The items
   * returned are the same type as this one, as proxies.
   */
  /* void getOccurrencesBetween (in calIDateTime aStartDate, in calIDateTime aEndDate, out PRUint32 aCount, [array, size_is (aCount), retval] out calIItemBase aOccurrences); */
  NS_IMETHOD GetOccurrencesBetween(calIDateTime *aStartDate, calIDateTime *aEndDate, PRUint32 *aCount, calIItemBase ***aOccurrences) = 0;

  /**
   * The next occurrence after this one, if any.
   */
  /* readonly attribute calIItemBase nextOccurrence; */
  NS_IMETHOD GetNextOccurrence(calIItemBase * *aNextOccurrence) = 0;

  /**
   * The previous occurrence before this one, if any.
   */
  /* readonly attribute calIItemBase previousOccurrence; */
  NS_IMETHOD GetPreviousOccurrence(calIItemBase * *aPreviousOccurrence) = 0;

  /**
   * create a proxy for this item; the returned item
   * proxy will have parentItem set to this instance.
   */
  /* calIItemBase createProxy (); */
  NS_IMETHOD CreateProxy(calIItemBase **_retval) = 0;

  /**
   * If this item is a proxy, parentItem will point upwards
   * to our parent.  Otherwise, it will point to this.
   * parentItem can thus always be used for modifyItem() calls
   * to providers.
   */
  /* attribute calIItemBase parentItem; */
  NS_IMETHOD GetParentItem(calIItemBase * *aParentItem) = 0;
  NS_IMETHOD SetParentItem(calIItemBase * aParentItem) = 0;

  /**
   * The recurrence ID, a.k.a. DTSTART-of-calculated-occurrence,
   * or null if this isn't an occurrence.
   */
  /* attribute calIDateTime recurrenceId; */
  NS_IMETHOD GetRecurrenceId(calIDateTime * *aRecurrenceId) = 0;
  NS_IMETHOD SetRecurrenceId(calIDateTime * aRecurrenceId) = 0;

  /**
   * Returns the given property value if it is natively set on the item,
   * otherwise returns null.
   */
  /* nsIVariant getUnproxiedProperty (in AString name); */
  NS_IMETHOD GetUnproxiedProperty(const nsAString & name, nsIVariant **_retval) = 0;

  /**
   * An enumerator that lets us walk down the list of properties
   * that are actually changed by this proxy from the base.  If this
   * item is not a proxy, then this list will be equivalent to the one
   * returned from propertyEnumerator.
   *
   * The elements returned by the enumerator will be of type nsIProperty,
   * as with a normal nsIPropertyBag enumerator.
   */
  /* readonly attribute nsISimpleEnumerator unproxiedPropertyEnumerator; */
  NS_IMETHOD GetUnproxiedPropertyEnumerator(nsISimpleEnumerator * *aUnproxiedPropertyEnumerator) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALIITEMBASE \
  NS_IMETHOD GetIsMutable(PRBool *aIsMutable); \
  NS_IMETHOD MakeImmutable(void); \
  NS_IMETHOD Clone(calIItemBase **_retval); \
  NS_IMETHOD GetGeneration(PRUint32 *aGeneration); \
  NS_IMETHOD GetCreationDate(calIDateTime * *aCreationDate); \
  NS_IMETHOD GetLastModifiedTime(calIDateTime * *aLastModifiedTime); \
  NS_IMETHOD GetStampTime(calIDateTime * *aStampTime); \
  NS_IMETHOD UpdateStampTime(void); \
  NS_IMETHOD GetCalendar(calICalendar * *aCalendar); \
  NS_IMETHOD SetCalendar(calICalendar * aCalendar); \
  NS_IMETHOD GetId(nsACString & aId); \
  NS_IMETHOD SetId(const nsACString & aId); \
  NS_IMETHOD GetTitle(nsACString & aTitle); \
  NS_IMETHOD SetTitle(const nsACString & aTitle); \
  NS_IMETHOD GetPriority(PRInt16 *aPriority); \
  NS_IMETHOD SetPriority(PRInt16 aPriority); \
  NS_IMETHOD GetPrivacy(nsACString & aPrivacy); \
  NS_IMETHOD SetPrivacy(const nsACString & aPrivacy); \
  NS_IMETHOD GetStatus(nsACString & aStatus); \
  NS_IMETHOD SetStatus(const nsACString & aStatus); \
  NS_IMETHOD GetIcalString(nsACString & aIcalString); \
  NS_IMETHOD SetIcalString(const nsACString & aIcalString); \
  NS_IMETHOD GetIcalComponent(calIIcalComponent * *aIcalComponent); \
  NS_IMETHOD SetIcalComponent(calIIcalComponent * aIcalComponent); \
  NS_IMETHOD GetAlarmTime(calIDateTime * *aAlarmTime); \
  NS_IMETHOD SetAlarmTime(calIDateTime * aAlarmTime); \
  NS_IMETHOD GetRecurrenceInfo(calIRecurrenceInfo * *aRecurrenceInfo); \
  NS_IMETHOD SetRecurrenceInfo(calIRecurrenceInfo * aRecurrenceInfo); \
  NS_IMETHOD GetRecurrenceStartDate(calIDateTime * *aRecurrenceStartDate); \
  NS_IMETHOD SetRecurrenceStartDate(calIDateTime * aRecurrenceStartDate); \
  NS_IMETHOD GetAttachments(nsIArray * *aAttachments); \
  NS_IMETHOD GetPropertyEnumerator(nsISimpleEnumerator * *aPropertyEnumerator); \
  NS_IMETHOD HasProperty(const nsAString & name, PRBool *_retval); \
  NS_IMETHOD GetProperty(const nsAString & name, nsIVariant **_retval); \
  NS_IMETHOD SetProperty(const nsAString & name, nsIVariant *value); \
  NS_IMETHOD DeleteProperty(const nsAString & name); \
  NS_IMETHOD IsPropertyPromoted(const nsAString & name, PRBool *_retval); \
  NS_IMETHOD GetOrganizer(calIAttendee * *aOrganizer); \
  NS_IMETHOD SetOrganizer(calIAttendee * aOrganizer); \
  NS_IMETHOD GetAttendees(PRUint32 *count, calIAttendee ***attendees); \
  NS_IMETHOD GetAttendeeById(const nsACString & id, calIAttendee **_retval); \
  NS_IMETHOD RemoveAttendee(calIAttendee *attendee); \
  NS_IMETHOD AddAttendee(calIAttendee *attendee); \
  NS_IMETHOD RemoveAllAttendees(void); \
  NS_IMETHOD GetOccurrencesBetween(calIDateTime *aStartDate, calIDateTime *aEndDate, PRUint32 *aCount, calIItemBase ***aOccurrences); \
  NS_IMETHOD GetNextOccurrence(calIItemBase * *aNextOccurrence); \
  NS_IMETHOD GetPreviousOccurrence(calIItemBase * *aPreviousOccurrence); \
  NS_IMETHOD CreateProxy(calIItemBase **_retval); \
  NS_IMETHOD GetParentItem(calIItemBase * *aParentItem); \
  NS_IMETHOD SetParentItem(calIItemBase * aParentItem); \
  NS_IMETHOD GetRecurrenceId(calIDateTime * *aRecurrenceId); \
  NS_IMETHOD SetRecurrenceId(calIDateTime * aRecurrenceId); \
  NS_IMETHOD GetUnproxiedProperty(const nsAString & name, nsIVariant **_retval); \
  NS_IMETHOD GetUnproxiedPropertyEnumerator(nsISimpleEnumerator * *aUnproxiedPropertyEnumerator); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CALIITEMBASE(_to) \
  NS_IMETHOD GetIsMutable(PRBool *aIsMutable) { return _to GetIsMutable(aIsMutable); } \
  NS_IMETHOD MakeImmutable(void) { return _to MakeImmutable(); } \
  NS_IMETHOD Clone(calIItemBase **_retval) { return _to Clone(_retval); } \
  NS_IMETHOD GetGeneration(PRUint32 *aGeneration) { return _to GetGeneration(aGeneration); } \
  NS_IMETHOD GetCreationDate(calIDateTime * *aCreationDate) { return _to GetCreationDate(aCreationDate); } \
  NS_IMETHOD GetLastModifiedTime(calIDateTime * *aLastModifiedTime) { return _to GetLastModifiedTime(aLastModifiedTime); } \
  NS_IMETHOD GetStampTime(calIDateTime * *aStampTime) { return _to GetStampTime(aStampTime); } \
  NS_IMETHOD UpdateStampTime(void) { return _to UpdateStampTime(); } \
  NS_IMETHOD GetCalendar(calICalendar * *aCalendar) { return _to GetCalendar(aCalendar); } \
  NS_IMETHOD SetCalendar(calICalendar * aCalendar) { return _to SetCalendar(aCalendar); } \
  NS_IMETHOD GetId(nsACString & aId) { return _to GetId(aId); } \
  NS_IMETHOD SetId(const nsACString & 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 GetPriority(PRInt16 *aPriority) { return _to GetPriority(aPriority); } \
  NS_IMETHOD SetPriority(PRInt16 aPriority) { return _to SetPriority(aPriority); } \
  NS_IMETHOD GetPrivacy(nsACString & aPrivacy) { return _to GetPrivacy(aPrivacy); } \
  NS_IMETHOD SetPrivacy(const nsACString & aPrivacy) { return _to SetPrivacy(aPrivacy); } \
  NS_IMETHOD GetStatus(nsACString & aStatus) { return _to GetStatus(aStatus); } \
  NS_IMETHOD SetStatus(const nsACString & aStatus) { return _to SetStatus(aStatus); } \
  NS_IMETHOD GetIcalString(nsACString & aIcalString) { return _to GetIcalString(aIcalString); } \
  NS_IMETHOD SetIcalString(const nsACString & aIcalString) { return _to SetIcalString(aIcalString); } \
  NS_IMETHOD GetIcalComponent(calIIcalComponent * *aIcalComponent) { return _to GetIcalComponent(aIcalComponent); } \
  NS_IMETHOD SetIcalComponent(calIIcalComponent * aIcalComponent) { return _to SetIcalComponent(aIcalComponent); } \
  NS_IMETHOD GetAlarmTime(calIDateTime * *aAlarmTime) { return _to GetAlarmTime(aAlarmTime); } \
  NS_IMETHOD SetAlarmTime(calIDateTime * aAlarmTime) { return _to SetAlarmTime(aAlarmTime); } \
  NS_IMETHOD GetRecurrenceInfo(calIRecurrenceInfo * *aRecurrenceInfo) { return _to GetRecurrenceInfo(aRecurrenceInfo); } \
  NS_IMETHOD SetRecurrenceInfo(calIRecurrenceInfo * aRecurrenceInfo) { return _to SetRecurrenceInfo(aRecurrenceInfo); } \
  NS_IMETHOD GetRecurrenceStartDate(calIDateTime * *aRecurrenceStartDate) { return _to GetRecurrenceStartDate(aRecurrenceStartDate); } \
  NS_IMETHOD SetRecurrenceStartDate(calIDateTime * aRecurrenceStartDate) { return _to SetRecurrenceStartDate(aRecurrenceStartDate); } \
  NS_IMETHOD GetAttachments(nsIArray * *aAttachments) { return _to GetAttachments(aAttachments); } \
  NS_IMETHOD GetPropertyEnumerator(nsISimpleEnumerator * *aPropertyEnumerator) { return _to GetPropertyEnumerator(aPropertyEnumerator); } \
  NS_IMETHOD HasProperty(const nsAString & name, PRBool *_retval) { return _to HasProperty(name, _retval); } \
  NS_IMETHOD GetProperty(const nsAString & name, nsIVariant **_retval) { return _to GetProperty(name, _retval); } \
  NS_IMETHOD SetProperty(const nsAString & name, nsIVariant *value) { return _to SetProperty(name, value); } \
  NS_IMETHOD DeleteProperty(const nsAString & name) { return _to DeleteProperty(name); } \
  NS_IMETHOD IsPropertyPromoted(const nsAString & name, PRBool *_retval) { return _to IsPropertyPromoted(name, _retval); } \
  NS_IMETHOD GetOrganizer(calIAttendee * *aOrganizer) { return _to GetOrganizer(aOrganizer); } \
  NS_IMETHOD SetOrganizer(calIAttendee * aOrganizer) { return _to SetOrganizer(aOrganizer); } \
  NS_IMETHOD GetAttendees(PRUint32 *count, calIAttendee ***attendees) { return _to GetAttendees(count, attendees); } \
  NS_IMETHOD GetAttendeeById(const nsACString & id, calIAttendee **_retval) { return _to GetAttendeeById(id, _retval); } \
  NS_IMETHOD RemoveAttendee(calIAttendee *attendee) { return _to RemoveAttendee(attendee); } \
  NS_IMETHOD AddAttendee(calIAttendee *attendee) { return _to AddAttendee(attendee); } \
  NS_IMETHOD RemoveAllAttendees(void) { return _to RemoveAllAttendees(); } \
  NS_IMETHOD GetOccurrencesBetween(calIDateTime *aStartDate, calIDateTime *aEndDate, PRUint32 *aCount, calIItemBase ***aOccurrences) { return _to GetOccurrencesBetween(aStartDate, aEndDate, aCount, aOccurrences); } \
  NS_IMETHOD GetNextOccurrence(calIItemBase * *aNextOccurrence) { return _to GetNextOccurrence(aNextOccurrence); } \
  NS_IMETHOD GetPreviousOccurrence(calIItemBase * *aPreviousOccurrence) { return _to GetPreviousOccurrence(aPreviousOccurrence); } \
  NS_IMETHOD CreateProxy(calIItemBase **_retval) { return _to CreateProxy(_retval); } \
  NS_IMETHOD GetParentItem(calIItemBase * *aParentItem) { return _to GetParentItem(aParentItem); } \
  NS_IMETHOD SetParentItem(calIItemBase * aParentItem) { return _to SetParentItem(aParentItem); } \
  NS_IMETHOD GetRecurrenceId(calIDateTime * *aRecurrenceId) { return _to GetRecurrenceId(aRecurrenceId); } \
  NS_IMETHOD SetRecurrenceId(calIDateTime * aRecurrenceId) { return _to SetRecurrenceId(aRecurrenceId); } \
  NS_IMETHOD GetUnproxiedProperty(const nsAString & name, nsIVariant **_retval) { return _to GetUnproxiedProperty(name, _retval); } \
  NS_IMETHOD GetUnproxiedPropertyEnumerator(nsISimpleEnumerator * *aUnproxiedPropertyEnumerator) { return _to GetUnproxiedPropertyEnumerator(aUnproxiedPropertyEnumerator); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_CALIITEMBASE(_to) \
  NS_IMETHOD GetIsMutable(PRBool *aIsMutable) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsMutable(aIsMutable); } \
  NS_IMETHOD MakeImmutable(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->MakeImmutable(); } \
  NS_IMETHOD Clone(calIItemBase **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->Clone(_retval); } \
  NS_IMETHOD GetGeneration(PRUint32 *aGeneration) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetGeneration(aGeneration); } \
  NS_IMETHOD GetCreationDate(calIDateTime * *aCreationDate) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCreationDate(aCreationDate); } \
  NS_IMETHOD GetLastModifiedTime(calIDateTime * *aLastModifiedTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastModifiedTime(aLastModifiedTime); } \
  NS_IMETHOD GetStampTime(calIDateTime * *aStampTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStampTime(aStampTime); } \
  NS_IMETHOD UpdateStampTime(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateStampTime(); } \
  NS_IMETHOD GetCalendar(calICalendar * *aCalendar) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCalendar(aCalendar); } \
  NS_IMETHOD SetCalendar(calICalendar * aCalendar) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCalendar(aCalendar); } \
  NS_IMETHOD GetId(nsACString & aId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetId(aId); } \
  NS_IMETHOD SetId(const nsACString & 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 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 GetPrivacy(nsACString & aPrivacy) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPrivacy(aPrivacy); } \
  NS_IMETHOD SetPrivacy(const nsACString & aPrivacy) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPrivacy(aPrivacy); } \
  NS_IMETHOD GetStatus(nsACString & aStatus) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStatus(aStatus); } \
  NS_IMETHOD SetStatus(const nsACString & aStatus) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetStatus(aStatus); } \
  NS_IMETHOD GetIcalString(nsACString & aIcalString) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIcalString(aIcalString); } \
  NS_IMETHOD SetIcalString(const nsACString & aIcalString) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIcalString(aIcalString); } \
  NS_IMETHOD GetIcalComponent(calIIcalComponent * *aIcalComponent) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIcalComponent(aIcalComponent); } \
  NS_IMETHOD SetIcalComponent(calIIcalComponent * aIcalComponent) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIcalComponent(aIcalComponent); } \
  NS_IMETHOD GetAlarmTime(calIDateTime * *aAlarmTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAlarmTime(aAlarmTime); } \
  NS_IMETHOD SetAlarmTime(calIDateTime * aAlarmTime) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAlarmTime(aAlarmTime); } \
  NS_IMETHOD GetRecurrenceInfo(calIRecurrenceInfo * *aRecurrenceInfo) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecurrenceInfo(aRecurrenceInfo); } \
  NS_IMETHOD SetRecurrenceInfo(calIRecurrenceInfo * aRecurrenceInfo) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRecurrenceInfo(aRecurrenceInfo); } \
  NS_IMETHOD GetRecurrenceStartDate(calIDateTime * *aRecurrenceStartDate) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecurrenceStartDate(aRecurrenceStartDate); } \
  NS_IMETHOD SetRecurrenceStartDate(calIDateTime * aRecurrenceStartDate) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRecurrenceStartDate(aRecurrenceStartDate); } \
  NS_IMETHOD GetAttachments(nsIArray * *aAttachments) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAttachments(aAttachments); } \
  NS_IMETHOD GetPropertyEnumerator(nsISimpleEnumerator * *aPropertyEnumerator) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPropertyEnumerator(aPropertyEnumerator); } \
  NS_IMETHOD HasProperty(const nsAString & name, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->HasProperty(name, _retval); } \
  NS_IMETHOD GetProperty(const nsAString & name, nsIVariant **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProperty(name, _retval); } \
  NS_IMETHOD SetProperty(const nsAString & name, nsIVariant *value) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetProperty(name, value); } \
  NS_IMETHOD DeleteProperty(const nsAString & name) { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteProperty(name); } \
  NS_IMETHOD IsPropertyPromoted(const nsAString & name, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->IsPropertyPromoted(name, _retval); } \
  NS_IMETHOD GetOrganizer(calIAttendee * *aOrganizer) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOrganizer(aOrganizer); } \
  NS_IMETHOD SetOrganizer(calIAttendee * aOrganizer) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetOrganizer(aOrganizer); } \
  NS_IMETHOD GetAttendees(PRUint32 *count, calIAttendee ***attendees) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAttendees(count, attendees); } \
  NS_IMETHOD GetAttendeeById(const nsACString & id, calIAttendee **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAttendeeById(id, _retval); } \
  NS_IMETHOD RemoveAttendee(calIAttendee *attendee) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveAttendee(attendee); } \
  NS_IMETHOD AddAttendee(calIAttendee *attendee) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddAttendee(attendee); } \
  NS_IMETHOD RemoveAllAttendees(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveAllAttendees(); } \
  NS_IMETHOD GetOccurrencesBetween(calIDateTime *aStartDate, calIDateTime *aEndDate, PRUint32 *aCount, calIItemBase ***aOccurrences) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOccurrencesBetween(aStartDate, aEndDate, aCount, aOccurrences); } \
  NS_IMETHOD GetNextOccurrence(calIItemBase * *aNextOccurrence) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNextOccurrence(aNextOccurrence); } \
  NS_IMETHOD GetPreviousOccurrence(calIItemBase * *aPreviousOccurrence) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPreviousOccurrence(aPreviousOccurrence); } \
  NS_IMETHOD CreateProxy(calIItemBase **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateProxy(_retval); } \
  NS_IMETHOD GetParentItem(calIItemBase * *aParentItem) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParentItem(aParentItem); } \
  NS_IMETHOD SetParentItem(calIItemBase * aParentItem) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetParentItem(aParentItem); } \
  NS_IMETHOD GetRecurrenceId(calIDateTime * *aRecurrenceId) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecurrenceId(aRecurrenceId); } \
  NS_IMETHOD SetRecurrenceId(calIDateTime * aRecurrenceId) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRecurrenceId(aRecurrenceId); } \
  NS_IMETHOD GetUnproxiedProperty(const nsAString & name, nsIVariant **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUnproxiedProperty(name, _retval); } \
  NS_IMETHOD GetUnproxiedPropertyEnumerator(nsISimpleEnumerator * *aUnproxiedPropertyEnumerator) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUnproxiedPropertyEnumerator(aUnproxiedPropertyEnumerator); } 

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

/* Header file */
class _MYCLASS_ : public calIItemBase
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALIITEMBASE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

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

/* readonly attribute PRUint32 generation; */
NS_IMETHODIMP _MYCLASS_::GetGeneration(PRUint32 *aGeneration)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute calIDateTime creationDate; */
NS_IMETHODIMP _MYCLASS_::GetCreationDate(calIDateTime * *aCreationDate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute calIDateTime lastModifiedTime; */
NS_IMETHODIMP _MYCLASS_::GetLastModifiedTime(calIDateTime * *aLastModifiedTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute calIDateTime stampTime; */
NS_IMETHODIMP _MYCLASS_::GetStampTime(calIDateTime * *aStampTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void updateStampTime (); */
NS_IMETHODIMP _MYCLASS_::UpdateStampTime()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute calICalendar calendar; */
NS_IMETHODIMP _MYCLASS_::GetCalendar(calICalendar * *aCalendar)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetCalendar(calICalendar * aCalendar)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AUTF8String id; */
NS_IMETHODIMP _MYCLASS_::GetId(nsACString & aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetId(const nsACString & aId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

/* attribute AUTF8String privacy; */
NS_IMETHODIMP _MYCLASS_::GetPrivacy(nsACString & aPrivacy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetPrivacy(const nsACString & aPrivacy)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AUTF8String status; */
NS_IMETHODIMP _MYCLASS_::GetStatus(nsACString & aStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetStatus(const nsACString & aStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* attribute calIIcalComponent icalComponent; */
NS_IMETHODIMP _MYCLASS_::GetIcalComponent(calIIcalComponent * *aIcalComponent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIcalComponent(calIIcalComponent * aIcalComponent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute calIDateTime alarmTime; */
NS_IMETHODIMP _MYCLASS_::GetAlarmTime(calIDateTime * *aAlarmTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetAlarmTime(calIDateTime * aAlarmTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute calIRecurrenceInfo recurrenceInfo; */
NS_IMETHODIMP _MYCLASS_::GetRecurrenceInfo(calIRecurrenceInfo * *aRecurrenceInfo)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetRecurrenceInfo(calIRecurrenceInfo * aRecurrenceInfo)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute calIDateTime recurrenceStartDate; */
NS_IMETHODIMP _MYCLASS_::GetRecurrenceStartDate(calIDateTime * *aRecurrenceStartDate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetRecurrenceStartDate(calIDateTime * aRecurrenceStartDate)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIArray attachments; */
NS_IMETHODIMP _MYCLASS_::GetAttachments(nsIArray * *aAttachments)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsISimpleEnumerator propertyEnumerator; */
NS_IMETHODIMP _MYCLASS_::GetPropertyEnumerator(nsISimpleEnumerator * *aPropertyEnumerator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean hasProperty (in AString name); */
NS_IMETHODIMP _MYCLASS_::HasProperty(const nsAString & name, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIVariant getProperty (in AString name); */
NS_IMETHODIMP _MYCLASS_::GetProperty(const nsAString & name, nsIVariant **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setProperty (in AString name, in nsIVariant value); */
NS_IMETHODIMP _MYCLASS_::SetProperty(const nsAString & name, nsIVariant *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteProperty (in AString name); */
NS_IMETHODIMP _MYCLASS_::DeleteProperty(const nsAString & name)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean isPropertyPromoted (in AString name); */
NS_IMETHODIMP _MYCLASS_::IsPropertyPromoted(const nsAString & name, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute calIAttendee organizer; */
NS_IMETHODIMP _MYCLASS_::GetOrganizer(calIAttendee * *aOrganizer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetOrganizer(calIAttendee * aOrganizer)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getAttendees (out PRUint32 count, [array, size_is (count), retval] out calIAttendee attendees); */
NS_IMETHODIMP _MYCLASS_::GetAttendees(PRUint32 *count, calIAttendee ***attendees)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* calIAttendee getAttendeeById (in AUTF8String id); */
NS_IMETHODIMP _MYCLASS_::GetAttendeeById(const nsACString & id, calIAttendee **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeAttendee (in calIAttendee attendee); */
NS_IMETHODIMP _MYCLASS_::RemoveAttendee(calIAttendee *attendee)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addAttendee (in calIAttendee attendee); */
NS_IMETHODIMP _MYCLASS_::AddAttendee(calIAttendee *attendee)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeAllAttendees (); */
NS_IMETHODIMP _MYCLASS_::RemoveAllAttendees()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getOccurrencesBetween (in calIDateTime aStartDate, in calIDateTime aEndDate, out PRUint32 aCount, [array, size_is (aCount), retval] out calIItemBase aOccurrences); */
NS_IMETHODIMP _MYCLASS_::GetOccurrencesBetween(calIDateTime *aStartDate, calIDateTime *aEndDate, PRUint32 *aCount, calIItemBase ***aOccurrences)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute calIItemBase nextOccurrence; */
NS_IMETHODIMP _MYCLASS_::GetNextOccurrence(calIItemBase * *aNextOccurrence)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute calIItemBase previousOccurrence; */
NS_IMETHODIMP _MYCLASS_::GetPreviousOccurrence(calIItemBase * *aPreviousOccurrence)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* calIItemBase createProxy (); */
NS_IMETHODIMP _MYCLASS_::CreateProxy(calIItemBase **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute calIItemBase parentItem; */
NS_IMETHODIMP _MYCLASS_::GetParentItem(calIItemBase * *aParentItem)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetParentItem(calIItemBase * aParentItem)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute calIDateTime recurrenceId; */
NS_IMETHODIMP _MYCLASS_::GetRecurrenceId(calIDateTime * *aRecurrenceId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetRecurrenceId(calIDateTime * aRecurrenceId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIVariant getUnproxiedProperty (in AString name); */
NS_IMETHODIMP _MYCLASS_::GetUnproxiedProperty(const nsAString & name, nsIVariant **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsISimpleEnumerator unproxiedPropertyEnumerator; */
NS_IMETHODIMP _MYCLASS_::GetUnproxiedPropertyEnumerator(nsISimpleEnumerator * *aUnproxiedPropertyEnumerator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_calIItemBase_h__ */
