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

#ifndef __gen_calIICSService_h__
#define __gen_calIICSService_h__


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

#include "js/Value.h"

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

class calIDateTime; /* forward declaration */

class calIDuration; /* forward declaration */

class calITimezone; /* forward declaration */

class calITimezoneProvider; /* forward declaration */

class calIIcalProperty; /* forward declaration */

class nsIUTF8StringEnumerator; /* forward declaration */

class nsIInputStream; /* forward declaration */


/* starting interface:    calIIcalComponent */
#define CALIICALCOMPONENT_IID_STR "59132cf2-e48c-4807-ab53-779f414a7fbc"

#define CALIICALCOMPONENT_IID \
  {0x59132cf2, 0xe48c, 0x4807, \
    { 0xab, 0x53, 0x77, 0x9f, 0x41, 0x4a, 0x7f, 0xbc }}

class NS_NO_VTABLE calIIcalComponent : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(CALIICALCOMPONENT_IID)

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

  /* attribute jsval icalComponent; */
  NS_IMETHOD GetIcalComponent(JS::MutableHandleValue aIcalComponent) = 0;
  NS_IMETHOD SetIcalComponent(JS::HandleValue aIcalComponent) = 0;

  /* attribute jsval icalTimezone; */
  NS_IMETHOD GetIcalTimezone(JS::MutableHandleValue aIcalTimezone) = 0;
  NS_IMETHOD SetIcalTimezone(JS::HandleValue aIcalTimezone) = 0;

  enum {
    INVALID_VALUE = -1
  };

  /* calIIcalComponent getFirstSubcomponent (in AUTF8String componentType); */
  NS_IMETHOD GetFirstSubcomponent(const nsACString & componentType, calIIcalComponent * *_retval) = 0;

  /* calIIcalComponent getNextSubcomponent (in AUTF8String componentType); */
  NS_IMETHOD GetNextSubcomponent(const nsACString & componentType, calIIcalComponent * *_retval) = 0;

  /* readonly attribute AUTF8String componentType; */
  NS_IMETHOD GetComponentType(nsACString & aComponentType) = 0;

  /* attribute AUTF8String uid; */
  NS_IMETHOD GetUid(nsACString & aUid) = 0;
  NS_IMETHOD SetUid(const nsACString & aUid) = 0;

  /* attribute AUTF8String prodid; */
  NS_IMETHOD GetProdid(nsACString & aProdid) = 0;
  NS_IMETHOD SetProdid(const nsACString & aProdid) = 0;

  /* attribute AUTF8String version; */
  NS_IMETHOD GetVersion(nsACString & aVersion) = 0;
  NS_IMETHOD SetVersion(const nsACString & aVersion) = 0;

  /* attribute AUTF8String method; */
  NS_IMETHOD GetMethod(nsACString & aMethod) = 0;
  NS_IMETHOD SetMethod(const nsACString & aMethod) = 0;

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

  /* attribute AUTF8String summary; */
  NS_IMETHOD GetSummary(nsACString & aSummary) = 0;
  NS_IMETHOD SetSummary(const nsACString & aSummary) = 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 AUTF8String URL; */
  NS_IMETHOD GetURL(nsACString & aURL) = 0;
  NS_IMETHOD SetURL(const nsACString & aURL) = 0;

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

  /* attribute calIDateTime startTime; */
  NS_IMETHOD GetStartTime(calIDateTime * *aStartTime) = 0;
  NS_IMETHOD SetStartTime(calIDateTime *aStartTime) = 0;

  /* attribute calIDateTime endTime; */
  NS_IMETHOD GetEndTime(calIDateTime * *aEndTime) = 0;
  NS_IMETHOD SetEndTime(calIDateTime *aEndTime) = 0;

  /* readonly attribute calIDuration duration; */
  NS_IMETHOD GetDuration(calIDuration * *aDuration) = 0;

  /* attribute calIDateTime dueTime; */
  NS_IMETHOD GetDueTime(calIDateTime * *aDueTime) = 0;
  NS_IMETHOD SetDueTime(calIDateTime *aDueTime) = 0;

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

  /* attribute calIDateTime createdTime; */
  NS_IMETHOD GetCreatedTime(calIDateTime * *aCreatedTime) = 0;
  NS_IMETHOD SetCreatedTime(calIDateTime *aCreatedTime) = 0;

  /* attribute calIDateTime completedTime; */
  NS_IMETHOD GetCompletedTime(calIDateTime * *aCompletedTime) = 0;
  NS_IMETHOD SetCompletedTime(calIDateTime *aCompletedTime) = 0;

  /* attribute calIDateTime lastModified; */
  NS_IMETHOD GetLastModified(calIDateTime * *aLastModified) = 0;
  NS_IMETHOD SetLastModified(calIDateTime *aLastModified) = 0;

  /* attribute calIDateTime recurrenceId; */
  NS_IMETHOD GetRecurrenceId(calIDateTime * *aRecurrenceId) = 0;
  NS_IMETHOD SetRecurrenceId(calIDateTime *aRecurrenceId) = 0;

  /* AUTF8String serializeToICS (); */
  NS_IMETHOD SerializeToICS(nsACString & _retval) = 0;

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

  /* nsIInputStream serializeToICSStream (); */
  NS_IMETHOD SerializeToICSStream(nsIInputStream * *_retval) = 0;

  /* void addSubcomponent (in calIIcalComponent comp); */
  NS_IMETHOD AddSubcomponent(calIIcalComponent *comp) = 0;

  /* calIIcalProperty getFirstProperty (in AUTF8String kind); */
  NS_IMETHOD GetFirstProperty(const nsACString & kind, calIIcalProperty * *_retval) = 0;

  /* calIIcalProperty getNextProperty (in AUTF8String kind); */
  NS_IMETHOD GetNextProperty(const nsACString & kind, calIIcalProperty * *_retval) = 0;

  /* void addProperty (in calIIcalProperty prop); */
  NS_IMETHOD AddProperty(calIIcalProperty *prop) = 0;

  /* void addTimezoneReference (in calITimezone aTimezone); */
  NS_IMETHOD AddTimezoneReference(calITimezone *aTimezone) = 0;

  /* void getReferencedTimezones (out uint32_t aCount, [array, size_is (aCount), retval] out calITimezone aTimezones); */
  NS_IMETHOD GetReferencedTimezones(uint32_t *aCount, calITimezone * **aTimezones) = 0;

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

};

  NS_DEFINE_STATIC_IID_ACCESSOR(calIIcalComponent, CALIICALCOMPONENT_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALIICALCOMPONENT \
  NS_IMETHOD GetParent(calIIcalComponent * *aParent) override; \
  NS_IMETHOD GetIcalComponent(JS::MutableHandleValue aIcalComponent) override; \
  NS_IMETHOD SetIcalComponent(JS::HandleValue aIcalComponent) override; \
  NS_IMETHOD GetIcalTimezone(JS::MutableHandleValue aIcalTimezone) override; \
  NS_IMETHOD SetIcalTimezone(JS::HandleValue aIcalTimezone) override; \
  NS_IMETHOD GetFirstSubcomponent(const nsACString & componentType, calIIcalComponent * *_retval) override; \
  NS_IMETHOD GetNextSubcomponent(const nsACString & componentType, calIIcalComponent * *_retval) override; \
  NS_IMETHOD GetComponentType(nsACString & aComponentType) override; \
  NS_IMETHOD GetUid(nsACString & aUid) override; \
  NS_IMETHOD SetUid(const nsACString & aUid) override; \
  NS_IMETHOD GetProdid(nsACString & aProdid) override; \
  NS_IMETHOD SetProdid(const nsACString & aProdid) override; \
  NS_IMETHOD GetVersion(nsACString & aVersion) override; \
  NS_IMETHOD SetVersion(const nsACString & aVersion) override; \
  NS_IMETHOD GetMethod(nsACString & aMethod) override; \
  NS_IMETHOD SetMethod(const nsACString & aMethod) override; \
  NS_IMETHOD GetStatus(nsACString & aStatus) override; \
  NS_IMETHOD SetStatus(const nsACString & aStatus) override; \
  NS_IMETHOD GetSummary(nsACString & aSummary) override; \
  NS_IMETHOD SetSummary(const nsACString & aSummary) override; \
  NS_IMETHOD GetDescription(nsACString & aDescription) override; \
  NS_IMETHOD SetDescription(const nsACString & aDescription) override; \
  NS_IMETHOD GetLocation(nsACString & aLocation) override; \
  NS_IMETHOD SetLocation(const nsACString & aLocation) override; \
  NS_IMETHOD GetCategories(nsACString & aCategories) override; \
  NS_IMETHOD SetCategories(const nsACString & aCategories) override; \
  NS_IMETHOD GetURL(nsACString & aURL) override; \
  NS_IMETHOD SetURL(const nsACString & aURL) override; \
  NS_IMETHOD GetPriority(int32_t *aPriority) override; \
  NS_IMETHOD SetPriority(int32_t aPriority) override; \
  NS_IMETHOD GetStartTime(calIDateTime * *aStartTime) override; \
  NS_IMETHOD SetStartTime(calIDateTime *aStartTime) override; \
  NS_IMETHOD GetEndTime(calIDateTime * *aEndTime) override; \
  NS_IMETHOD SetEndTime(calIDateTime *aEndTime) override; \
  NS_IMETHOD GetDuration(calIDuration * *aDuration) override; \
  NS_IMETHOD GetDueTime(calIDateTime * *aDueTime) override; \
  NS_IMETHOD SetDueTime(calIDateTime *aDueTime) override; \
  NS_IMETHOD GetStampTime(calIDateTime * *aStampTime) override; \
  NS_IMETHOD SetStampTime(calIDateTime *aStampTime) override; \
  NS_IMETHOD GetCreatedTime(calIDateTime * *aCreatedTime) override; \
  NS_IMETHOD SetCreatedTime(calIDateTime *aCreatedTime) override; \
  NS_IMETHOD GetCompletedTime(calIDateTime * *aCompletedTime) override; \
  NS_IMETHOD SetCompletedTime(calIDateTime *aCompletedTime) override; \
  NS_IMETHOD GetLastModified(calIDateTime * *aLastModified) override; \
  NS_IMETHOD SetLastModified(calIDateTime *aLastModified) override; \
  NS_IMETHOD GetRecurrenceId(calIDateTime * *aRecurrenceId) override; \
  NS_IMETHOD SetRecurrenceId(calIDateTime *aRecurrenceId) override; \
  NS_IMETHOD SerializeToICS(nsACString & _retval) override; \
  NS_IMETHOD ToString(nsACString & _retval) override; \
  NS_IMETHOD SerializeToICSStream(nsIInputStream * *_retval) override; \
  NS_IMETHOD AddSubcomponent(calIIcalComponent *comp) override; \
  NS_IMETHOD GetFirstProperty(const nsACString & kind, calIIcalProperty * *_retval) override; \
  NS_IMETHOD GetNextProperty(const nsACString & kind, calIIcalProperty * *_retval) override; \
  NS_IMETHOD AddProperty(calIIcalProperty *prop) override; \
  NS_IMETHOD AddTimezoneReference(calITimezone *aTimezone) override; \
  NS_IMETHOD GetReferencedTimezones(uint32_t *aCount, calITimezone * **aTimezones) override; \
  NS_IMETHOD Clone(calIIcalComponent * *_retval) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_CALIICALCOMPONENT \
  NS_METHOD GetParent(calIIcalComponent * *aParent); \
  NS_METHOD GetIcalComponent(JS::MutableHandleValue aIcalComponent); \
  NS_METHOD SetIcalComponent(JS::HandleValue aIcalComponent); \
  NS_METHOD GetIcalTimezone(JS::MutableHandleValue aIcalTimezone); \
  NS_METHOD SetIcalTimezone(JS::HandleValue aIcalTimezone); \
  NS_METHOD GetFirstSubcomponent(const nsACString & componentType, calIIcalComponent * *_retval); \
  NS_METHOD GetNextSubcomponent(const nsACString & componentType, calIIcalComponent * *_retval); \
  NS_METHOD GetComponentType(nsACString & aComponentType); \
  NS_METHOD GetUid(nsACString & aUid); \
  NS_METHOD SetUid(const nsACString & aUid); \
  NS_METHOD GetProdid(nsACString & aProdid); \
  NS_METHOD SetProdid(const nsACString & aProdid); \
  NS_METHOD GetVersion(nsACString & aVersion); \
  NS_METHOD SetVersion(const nsACString & aVersion); \
  NS_METHOD GetMethod(nsACString & aMethod); \
  NS_METHOD SetMethod(const nsACString & aMethod); \
  NS_METHOD GetStatus(nsACString & aStatus); \
  NS_METHOD SetStatus(const nsACString & aStatus); \
  NS_METHOD GetSummary(nsACString & aSummary); \
  NS_METHOD SetSummary(const nsACString & aSummary); \
  NS_METHOD GetDescription(nsACString & aDescription); \
  NS_METHOD SetDescription(const nsACString & aDescription); \
  NS_METHOD GetLocation(nsACString & aLocation); \
  NS_METHOD SetLocation(const nsACString & aLocation); \
  NS_METHOD GetCategories(nsACString & aCategories); \
  NS_METHOD SetCategories(const nsACString & aCategories); \
  NS_METHOD GetURL(nsACString & aURL); \
  NS_METHOD SetURL(const nsACString & aURL); \
  NS_METHOD GetPriority(int32_t *aPriority); \
  NS_METHOD SetPriority(int32_t aPriority); \
  NS_METHOD GetStartTime(calIDateTime * *aStartTime); \
  NS_METHOD SetStartTime(calIDateTime *aStartTime); \
  NS_METHOD GetEndTime(calIDateTime * *aEndTime); \
  NS_METHOD SetEndTime(calIDateTime *aEndTime); \
  NS_METHOD GetDuration(calIDuration * *aDuration); \
  NS_METHOD GetDueTime(calIDateTime * *aDueTime); \
  NS_METHOD SetDueTime(calIDateTime *aDueTime); \
  NS_METHOD GetStampTime(calIDateTime * *aStampTime); \
  NS_METHOD SetStampTime(calIDateTime *aStampTime); \
  NS_METHOD GetCreatedTime(calIDateTime * *aCreatedTime); \
  NS_METHOD SetCreatedTime(calIDateTime *aCreatedTime); \
  NS_METHOD GetCompletedTime(calIDateTime * *aCompletedTime); \
  NS_METHOD SetCompletedTime(calIDateTime *aCompletedTime); \
  NS_METHOD GetLastModified(calIDateTime * *aLastModified); \
  NS_METHOD SetLastModified(calIDateTime *aLastModified); \
  NS_METHOD GetRecurrenceId(calIDateTime * *aRecurrenceId); \
  NS_METHOD SetRecurrenceId(calIDateTime *aRecurrenceId); \
  NS_METHOD SerializeToICS(nsACString & _retval); \
  NS_METHOD ToString(nsACString & _retval); \
  NS_METHOD SerializeToICSStream(nsIInputStream * *_retval); \
  NS_METHOD AddSubcomponent(calIIcalComponent *comp); \
  NS_METHOD GetFirstProperty(const nsACString & kind, calIIcalProperty * *_retval); \
  NS_METHOD GetNextProperty(const nsACString & kind, calIIcalProperty * *_retval); \
  NS_METHOD AddProperty(calIIcalProperty *prop); \
  NS_METHOD AddTimezoneReference(calITimezone *aTimezone); \
  NS_METHOD GetReferencedTimezones(uint32_t *aCount, calITimezone * **aTimezones); \
  NS_METHOD Clone(calIIcalComponent * *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CALIICALCOMPONENT(_to) \
  NS_IMETHOD GetParent(calIIcalComponent * *aParent) override { return _to GetParent(aParent); } \
  NS_IMETHOD GetIcalComponent(JS::MutableHandleValue aIcalComponent) override { return _to GetIcalComponent(aIcalComponent); } \
  NS_IMETHOD SetIcalComponent(JS::HandleValue aIcalComponent) override { return _to SetIcalComponent(aIcalComponent); } \
  NS_IMETHOD GetIcalTimezone(JS::MutableHandleValue aIcalTimezone) override { return _to GetIcalTimezone(aIcalTimezone); } \
  NS_IMETHOD SetIcalTimezone(JS::HandleValue aIcalTimezone) override { return _to SetIcalTimezone(aIcalTimezone); } \
  NS_IMETHOD GetFirstSubcomponent(const nsACString & componentType, calIIcalComponent * *_retval) override { return _to GetFirstSubcomponent(componentType, _retval); } \
  NS_IMETHOD GetNextSubcomponent(const nsACString & componentType, calIIcalComponent * *_retval) override { return _to GetNextSubcomponent(componentType, _retval); } \
  NS_IMETHOD GetComponentType(nsACString & aComponentType) override { return _to GetComponentType(aComponentType); } \
  NS_IMETHOD GetUid(nsACString & aUid) override { return _to GetUid(aUid); } \
  NS_IMETHOD SetUid(const nsACString & aUid) override { return _to SetUid(aUid); } \
  NS_IMETHOD GetProdid(nsACString & aProdid) override { return _to GetProdid(aProdid); } \
  NS_IMETHOD SetProdid(const nsACString & aProdid) override { return _to SetProdid(aProdid); } \
  NS_IMETHOD GetVersion(nsACString & aVersion) override { return _to GetVersion(aVersion); } \
  NS_IMETHOD SetVersion(const nsACString & aVersion) override { return _to SetVersion(aVersion); } \
  NS_IMETHOD GetMethod(nsACString & aMethod) override { return _to GetMethod(aMethod); } \
  NS_IMETHOD SetMethod(const nsACString & aMethod) override { return _to SetMethod(aMethod); } \
  NS_IMETHOD GetStatus(nsACString & aStatus) override { return _to GetStatus(aStatus); } \
  NS_IMETHOD SetStatus(const nsACString & aStatus) override { return _to SetStatus(aStatus); } \
  NS_IMETHOD GetSummary(nsACString & aSummary) override { return _to GetSummary(aSummary); } \
  NS_IMETHOD SetSummary(const nsACString & aSummary) override { return _to SetSummary(aSummary); } \
  NS_IMETHOD GetDescription(nsACString & aDescription) override { return _to GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const nsACString & aDescription) override { return _to SetDescription(aDescription); } \
  NS_IMETHOD GetLocation(nsACString & aLocation) override { return _to GetLocation(aLocation); } \
  NS_IMETHOD SetLocation(const nsACString & aLocation) override { return _to SetLocation(aLocation); } \
  NS_IMETHOD GetCategories(nsACString & aCategories) override { return _to GetCategories(aCategories); } \
  NS_IMETHOD SetCategories(const nsACString & aCategories) override { return _to SetCategories(aCategories); } \
  NS_IMETHOD GetURL(nsACString & aURL) override { return _to GetURL(aURL); } \
  NS_IMETHOD SetURL(const nsACString & aURL) override { return _to SetURL(aURL); } \
  NS_IMETHOD GetPriority(int32_t *aPriority) override { return _to GetPriority(aPriority); } \
  NS_IMETHOD SetPriority(int32_t aPriority) override { return _to SetPriority(aPriority); } \
  NS_IMETHOD GetStartTime(calIDateTime * *aStartTime) override { return _to GetStartTime(aStartTime); } \
  NS_IMETHOD SetStartTime(calIDateTime *aStartTime) override { return _to SetStartTime(aStartTime); } \
  NS_IMETHOD GetEndTime(calIDateTime * *aEndTime) override { return _to GetEndTime(aEndTime); } \
  NS_IMETHOD SetEndTime(calIDateTime *aEndTime) override { return _to SetEndTime(aEndTime); } \
  NS_IMETHOD GetDuration(calIDuration * *aDuration) override { return _to GetDuration(aDuration); } \
  NS_IMETHOD GetDueTime(calIDateTime * *aDueTime) override { return _to GetDueTime(aDueTime); } \
  NS_IMETHOD SetDueTime(calIDateTime *aDueTime) override { return _to SetDueTime(aDueTime); } \
  NS_IMETHOD GetStampTime(calIDateTime * *aStampTime) override { return _to GetStampTime(aStampTime); } \
  NS_IMETHOD SetStampTime(calIDateTime *aStampTime) override { return _to SetStampTime(aStampTime); } \
  NS_IMETHOD GetCreatedTime(calIDateTime * *aCreatedTime) override { return _to GetCreatedTime(aCreatedTime); } \
  NS_IMETHOD SetCreatedTime(calIDateTime *aCreatedTime) override { return _to SetCreatedTime(aCreatedTime); } \
  NS_IMETHOD GetCompletedTime(calIDateTime * *aCompletedTime) override { return _to GetCompletedTime(aCompletedTime); } \
  NS_IMETHOD SetCompletedTime(calIDateTime *aCompletedTime) override { return _to SetCompletedTime(aCompletedTime); } \
  NS_IMETHOD GetLastModified(calIDateTime * *aLastModified) override { return _to GetLastModified(aLastModified); } \
  NS_IMETHOD SetLastModified(calIDateTime *aLastModified) override { return _to SetLastModified(aLastModified); } \
  NS_IMETHOD GetRecurrenceId(calIDateTime * *aRecurrenceId) override { return _to GetRecurrenceId(aRecurrenceId); } \
  NS_IMETHOD SetRecurrenceId(calIDateTime *aRecurrenceId) override { return _to SetRecurrenceId(aRecurrenceId); } \
  NS_IMETHOD SerializeToICS(nsACString & _retval) override { return _to SerializeToICS(_retval); } \
  NS_IMETHOD ToString(nsACString & _retval) override { return _to ToString(_retval); } \
  NS_IMETHOD SerializeToICSStream(nsIInputStream * *_retval) override { return _to SerializeToICSStream(_retval); } \
  NS_IMETHOD AddSubcomponent(calIIcalComponent *comp) override { return _to AddSubcomponent(comp); } \
  NS_IMETHOD GetFirstProperty(const nsACString & kind, calIIcalProperty * *_retval) override { return _to GetFirstProperty(kind, _retval); } \
  NS_IMETHOD GetNextProperty(const nsACString & kind, calIIcalProperty * *_retval) override { return _to GetNextProperty(kind, _retval); } \
  NS_IMETHOD AddProperty(calIIcalProperty *prop) override { return _to AddProperty(prop); } \
  NS_IMETHOD AddTimezoneReference(calITimezone *aTimezone) override { return _to AddTimezoneReference(aTimezone); } \
  NS_IMETHOD GetReferencedTimezones(uint32_t *aCount, calITimezone * **aTimezones) override { return _to GetReferencedTimezones(aCount, aTimezones); } \
  NS_IMETHOD Clone(calIIcalComponent * *_retval) override { return _to Clone(_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_CALIICALCOMPONENT(_to) \
  NS_IMETHOD GetParent(calIIcalComponent * *aParent) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParent(aParent); } \
  NS_IMETHOD GetIcalComponent(JS::MutableHandleValue aIcalComponent) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIcalComponent(aIcalComponent); } \
  NS_IMETHOD SetIcalComponent(JS::HandleValue aIcalComponent) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIcalComponent(aIcalComponent); } \
  NS_IMETHOD GetIcalTimezone(JS::MutableHandleValue aIcalTimezone) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIcalTimezone(aIcalTimezone); } \
  NS_IMETHOD SetIcalTimezone(JS::HandleValue aIcalTimezone) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIcalTimezone(aIcalTimezone); } \
  NS_IMETHOD GetFirstSubcomponent(const nsACString & componentType, calIIcalComponent * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFirstSubcomponent(componentType, _retval); } \
  NS_IMETHOD GetNextSubcomponent(const nsACString & componentType, calIIcalComponent * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNextSubcomponent(componentType, _retval); } \
  NS_IMETHOD GetComponentType(nsACString & aComponentType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetComponentType(aComponentType); } \
  NS_IMETHOD GetUid(nsACString & aUid) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUid(aUid); } \
  NS_IMETHOD SetUid(const nsACString & aUid) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetUid(aUid); } \
  NS_IMETHOD GetProdid(nsACString & aProdid) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProdid(aProdid); } \
  NS_IMETHOD SetProdid(const nsACString & aProdid) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetProdid(aProdid); } \
  NS_IMETHOD GetVersion(nsACString & aVersion) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVersion(aVersion); } \
  NS_IMETHOD SetVersion(const nsACString & aVersion) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVersion(aVersion); } \
  NS_IMETHOD GetMethod(nsACString & aMethod) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMethod(aMethod); } \
  NS_IMETHOD SetMethod(const nsACString & aMethod) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMethod(aMethod); } \
  NS_IMETHOD GetStatus(nsACString & aStatus) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStatus(aStatus); } \
  NS_IMETHOD SetStatus(const nsACString & aStatus) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetStatus(aStatus); } \
  NS_IMETHOD GetSummary(nsACString & aSummary) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSummary(aSummary); } \
  NS_IMETHOD SetSummary(const nsACString & aSummary) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSummary(aSummary); } \
  NS_IMETHOD GetDescription(nsACString & aDescription) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const nsACString & aDescription) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDescription(aDescription); } \
  NS_IMETHOD GetLocation(nsACString & aLocation) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLocation(aLocation); } \
  NS_IMETHOD SetLocation(const nsACString & aLocation) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLocation(aLocation); } \
  NS_IMETHOD GetCategories(nsACString & aCategories) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCategories(aCategories); } \
  NS_IMETHOD SetCategories(const nsACString & aCategories) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCategories(aCategories); } \
  NS_IMETHOD GetURL(nsACString & aURL) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetURL(aURL); } \
  NS_IMETHOD SetURL(const nsACString & aURL) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetURL(aURL); } \
  NS_IMETHOD GetPriority(int32_t *aPriority) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPriority(aPriority); } \
  NS_IMETHOD SetPriority(int32_t aPriority) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPriority(aPriority); } \
  NS_IMETHOD GetStartTime(calIDateTime * *aStartTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStartTime(aStartTime); } \
  NS_IMETHOD SetStartTime(calIDateTime *aStartTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetStartTime(aStartTime); } \
  NS_IMETHOD GetEndTime(calIDateTime * *aEndTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEndTime(aEndTime); } \
  NS_IMETHOD SetEndTime(calIDateTime *aEndTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEndTime(aEndTime); } \
  NS_IMETHOD GetDuration(calIDuration * *aDuration) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDuration(aDuration); } \
  NS_IMETHOD GetDueTime(calIDateTime * *aDueTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDueTime(aDueTime); } \
  NS_IMETHOD SetDueTime(calIDateTime *aDueTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDueTime(aDueTime); } \
  NS_IMETHOD GetStampTime(calIDateTime * *aStampTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStampTime(aStampTime); } \
  NS_IMETHOD SetStampTime(calIDateTime *aStampTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetStampTime(aStampTime); } \
  NS_IMETHOD GetCreatedTime(calIDateTime * *aCreatedTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCreatedTime(aCreatedTime); } \
  NS_IMETHOD SetCreatedTime(calIDateTime *aCreatedTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCreatedTime(aCreatedTime); } \
  NS_IMETHOD GetCompletedTime(calIDateTime * *aCompletedTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCompletedTime(aCompletedTime); } \
  NS_IMETHOD SetCompletedTime(calIDateTime *aCompletedTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCompletedTime(aCompletedTime); } \
  NS_IMETHOD GetLastModified(calIDateTime * *aLastModified) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastModified(aLastModified); } \
  NS_IMETHOD SetLastModified(calIDateTime *aLastModified) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLastModified(aLastModified); } \
  NS_IMETHOD GetRecurrenceId(calIDateTime * *aRecurrenceId) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRecurrenceId(aRecurrenceId); } \
  NS_IMETHOD SetRecurrenceId(calIDateTime *aRecurrenceId) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRecurrenceId(aRecurrenceId); } \
  NS_IMETHOD SerializeToICS(nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SerializeToICS(_retval); } \
  NS_IMETHOD ToString(nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ToString(_retval); } \
  NS_IMETHOD SerializeToICSStream(nsIInputStream * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SerializeToICSStream(_retval); } \
  NS_IMETHOD AddSubcomponent(calIIcalComponent *comp) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddSubcomponent(comp); } \
  NS_IMETHOD GetFirstProperty(const nsACString & kind, calIIcalProperty * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFirstProperty(kind, _retval); } \
  NS_IMETHOD GetNextProperty(const nsACString & kind, calIIcalProperty * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNextProperty(kind, _retval); } \
  NS_IMETHOD AddProperty(calIIcalProperty *prop) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddProperty(prop); } \
  NS_IMETHOD AddTimezoneReference(calITimezone *aTimezone) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddTimezoneReference(aTimezone); } \
  NS_IMETHOD GetReferencedTimezones(uint32_t *aCount, calITimezone * **aTimezones) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetReferencedTimezones(aCount, aTimezones); } \
  NS_IMETHOD Clone(calIIcalComponent * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Clone(_retval); } 

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

/* Header file */
class _MYCLASS_ : public calIIcalComponent
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALIICALCOMPONENT

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

/* attribute jsval icalComponent; */
NS_IMETHODIMP _MYCLASS_::GetIcalComponent(JS::MutableHandleValue aIcalComponent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIcalComponent(JS::HandleValue aIcalComponent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute jsval icalTimezone; */
NS_IMETHODIMP _MYCLASS_::GetIcalTimezone(JS::MutableHandleValue aIcalTimezone)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIcalTimezone(JS::HandleValue aIcalTimezone)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* calIIcalComponent getFirstSubcomponent (in AUTF8String componentType); */
NS_IMETHODIMP _MYCLASS_::GetFirstSubcomponent(const nsACString & componentType, calIIcalComponent * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* calIIcalComponent getNextSubcomponent (in AUTF8String componentType); */
NS_IMETHODIMP _MYCLASS_::GetNextSubcomponent(const nsACString & componentType, calIIcalComponent * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute AUTF8String componentType; */
NS_IMETHODIMP _MYCLASS_::GetComponentType(nsACString & aComponentType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AUTF8String uid; */
NS_IMETHODIMP _MYCLASS_::GetUid(nsACString & aUid)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetUid(const nsACString & aUid)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AUTF8String prodid; */
NS_IMETHODIMP _MYCLASS_::GetProdid(nsACString & aProdid)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetProdid(const nsACString & aProdid)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AUTF8String version; */
NS_IMETHODIMP _MYCLASS_::GetVersion(nsACString & aVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetVersion(const nsACString & aVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AUTF8String method; */
NS_IMETHODIMP _MYCLASS_::GetMethod(nsACString & aMethod)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetMethod(const nsACString & aMethod)
{
    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 summary; */
NS_IMETHODIMP _MYCLASS_::GetSummary(nsACString & aSummary)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetSummary(const nsACString & aSummary)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

/* attribute AUTF8String URL; */
NS_IMETHODIMP _MYCLASS_::GetURL(nsACString & aURL)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetURL(const nsACString & aURL)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* attribute calIDateTime startTime; */
NS_IMETHODIMP _MYCLASS_::GetStartTime(calIDateTime * *aStartTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetStartTime(calIDateTime *aStartTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute calIDateTime endTime; */
NS_IMETHODIMP _MYCLASS_::GetEndTime(calIDateTime * *aEndTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetEndTime(calIDateTime *aEndTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute calIDuration duration; */
NS_IMETHODIMP _MYCLASS_::GetDuration(calIDuration * *aDuration)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute calIDateTime dueTime; */
NS_IMETHODIMP _MYCLASS_::GetDueTime(calIDateTime * *aDueTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDueTime(calIDateTime *aDueTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* attribute calIDateTime createdTime; */
NS_IMETHODIMP _MYCLASS_::GetCreatedTime(calIDateTime * *aCreatedTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetCreatedTime(calIDateTime *aCreatedTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute calIDateTime completedTime; */
NS_IMETHODIMP _MYCLASS_::GetCompletedTime(calIDateTime * *aCompletedTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetCompletedTime(calIDateTime *aCompletedTime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute calIDateTime lastModified; */
NS_IMETHODIMP _MYCLASS_::GetLastModified(calIDateTime * *aLastModified)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetLastModified(calIDateTime *aLastModified)
{
    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;
}

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

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

/* nsIInputStream serializeToICSStream (); */
NS_IMETHODIMP _MYCLASS_::SerializeToICSStream(nsIInputStream * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addSubcomponent (in calIIcalComponent comp); */
NS_IMETHODIMP _MYCLASS_::AddSubcomponent(calIIcalComponent *comp)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* calIIcalProperty getFirstProperty (in AUTF8String kind); */
NS_IMETHODIMP _MYCLASS_::GetFirstProperty(const nsACString & kind, calIIcalProperty * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* calIIcalProperty getNextProperty (in AUTF8String kind); */
NS_IMETHODIMP _MYCLASS_::GetNextProperty(const nsACString & kind, calIIcalProperty * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addProperty (in calIIcalProperty prop); */
NS_IMETHODIMP _MYCLASS_::AddProperty(calIIcalProperty *prop)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addTimezoneReference (in calITimezone aTimezone); */
NS_IMETHODIMP _MYCLASS_::AddTimezoneReference(calITimezone *aTimezone)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getReferencedTimezones (out uint32_t aCount, [array, size_is (aCount), retval] out calITimezone aTimezones); */
NS_IMETHODIMP _MYCLASS_::GetReferencedTimezones(uint32_t *aCount, calITimezone * **aTimezones)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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


/* starting interface:    calIIcalProperty */
#define CALIICALPROPERTY_IID_STR "5b13a69c-53d3-44a0-9203-f89f7e5e1604"

#define CALIICALPROPERTY_IID \
  {0x5b13a69c, 0x53d3, 0x44a0, \
    { 0x92, 0x03, 0xf8, 0x9f, 0x7e, 0x5e, 0x16, 0x04 }}

class NS_NO_VTABLE calIIcalProperty : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(CALIICALPROPERTY_IID)

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

  /* attribute jsval icalProperty; */
  NS_IMETHOD GetIcalProperty(JS::MutableHandleValue aIcalProperty) = 0;
  NS_IMETHOD SetIcalProperty(JS::HandleValue aIcalProperty) = 0;

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

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

  /* attribute AUTF8String value; */
  NS_IMETHOD GetValue(nsACString & aValue) = 0;
  NS_IMETHOD SetValue(const nsACString & aValue) = 0;

  /* attribute AUTF8String valueAsIcalString; */
  NS_IMETHOD GetValueAsIcalString(nsACString & aValueAsIcalString) = 0;
  NS_IMETHOD SetValueAsIcalString(const nsACString & aValueAsIcalString) = 0;

  /* attribute calIDateTime valueAsDatetime; */
  NS_IMETHOD GetValueAsDatetime(calIDateTime * *aValueAsDatetime) = 0;
  NS_IMETHOD SetValueAsDatetime(calIDateTime *aValueAsDatetime) = 0;

  /* readonly attribute AUTF8String propertyName; */
  NS_IMETHOD GetPropertyName(nsACString & aPropertyName) = 0;

  /* AUTF8String getParameter (in AUTF8String paramname); */
  NS_IMETHOD GetParameter(const nsACString & paramname, nsACString & _retval) = 0;

  /* void setParameter (in AUTF8String paramname, in AUTF8String paramval); */
  NS_IMETHOD SetParameter(const nsACString & paramname, const nsACString & paramval) = 0;

  /* AUTF8String getFirstParameterName (); */
  NS_IMETHOD GetFirstParameterName(nsACString & _retval) = 0;

  /* AUTF8String getNextParameterName (); */
  NS_IMETHOD GetNextParameterName(nsACString & _retval) = 0;

  /* void removeParameter (in AUTF8String paramname); */
  NS_IMETHOD RemoveParameter(const nsACString & paramname) = 0;

  /* void clearXParameters (); */
  NS_IMETHOD ClearXParameters(void) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(calIIcalProperty, CALIICALPROPERTY_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALIICALPROPERTY \
  NS_IMETHOD GetIcalString(nsACString & aIcalString) override; \
  NS_IMETHOD GetIcalProperty(JS::MutableHandleValue aIcalProperty) override; \
  NS_IMETHOD SetIcalProperty(JS::HandleValue aIcalProperty) override; \
  NS_IMETHOD GetParent(calIIcalComponent * *aParent) override; \
  NS_IMETHOD ToString(nsACString & _retval) override; \
  NS_IMETHOD GetValue(nsACString & aValue) override; \
  NS_IMETHOD SetValue(const nsACString & aValue) override; \
  NS_IMETHOD GetValueAsIcalString(nsACString & aValueAsIcalString) override; \
  NS_IMETHOD SetValueAsIcalString(const nsACString & aValueAsIcalString) override; \
  NS_IMETHOD GetValueAsDatetime(calIDateTime * *aValueAsDatetime) override; \
  NS_IMETHOD SetValueAsDatetime(calIDateTime *aValueAsDatetime) override; \
  NS_IMETHOD GetPropertyName(nsACString & aPropertyName) override; \
  NS_IMETHOD GetParameter(const nsACString & paramname, nsACString & _retval) override; \
  NS_IMETHOD SetParameter(const nsACString & paramname, const nsACString & paramval) override; \
  NS_IMETHOD GetFirstParameterName(nsACString & _retval) override; \
  NS_IMETHOD GetNextParameterName(nsACString & _retval) override; \
  NS_IMETHOD RemoveParameter(const nsACString & paramname) override; \
  NS_IMETHOD ClearXParameters(void) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_CALIICALPROPERTY \
  NS_METHOD GetIcalString(nsACString & aIcalString); \
  NS_METHOD GetIcalProperty(JS::MutableHandleValue aIcalProperty); \
  NS_METHOD SetIcalProperty(JS::HandleValue aIcalProperty); \
  NS_METHOD GetParent(calIIcalComponent * *aParent); \
  NS_METHOD ToString(nsACString & _retval); \
  NS_METHOD GetValue(nsACString & aValue); \
  NS_METHOD SetValue(const nsACString & aValue); \
  NS_METHOD GetValueAsIcalString(nsACString & aValueAsIcalString); \
  NS_METHOD SetValueAsIcalString(const nsACString & aValueAsIcalString); \
  NS_METHOD GetValueAsDatetime(calIDateTime * *aValueAsDatetime); \
  NS_METHOD SetValueAsDatetime(calIDateTime *aValueAsDatetime); \
  NS_METHOD GetPropertyName(nsACString & aPropertyName); \
  NS_METHOD GetParameter(const nsACString & paramname, nsACString & _retval); \
  NS_METHOD SetParameter(const nsACString & paramname, const nsACString & paramval); \
  NS_METHOD GetFirstParameterName(nsACString & _retval); \
  NS_METHOD GetNextParameterName(nsACString & _retval); \
  NS_METHOD RemoveParameter(const nsACString & paramname); \
  NS_METHOD ClearXParameters(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CALIICALPROPERTY(_to) \
  NS_IMETHOD GetIcalString(nsACString & aIcalString) override { return _to GetIcalString(aIcalString); } \
  NS_IMETHOD GetIcalProperty(JS::MutableHandleValue aIcalProperty) override { return _to GetIcalProperty(aIcalProperty); } \
  NS_IMETHOD SetIcalProperty(JS::HandleValue aIcalProperty) override { return _to SetIcalProperty(aIcalProperty); } \
  NS_IMETHOD GetParent(calIIcalComponent * *aParent) override { return _to GetParent(aParent); } \
  NS_IMETHOD ToString(nsACString & _retval) override { return _to ToString(_retval); } \
  NS_IMETHOD GetValue(nsACString & aValue) override { return _to GetValue(aValue); } \
  NS_IMETHOD SetValue(const nsACString & aValue) override { return _to SetValue(aValue); } \
  NS_IMETHOD GetValueAsIcalString(nsACString & aValueAsIcalString) override { return _to GetValueAsIcalString(aValueAsIcalString); } \
  NS_IMETHOD SetValueAsIcalString(const nsACString & aValueAsIcalString) override { return _to SetValueAsIcalString(aValueAsIcalString); } \
  NS_IMETHOD GetValueAsDatetime(calIDateTime * *aValueAsDatetime) override { return _to GetValueAsDatetime(aValueAsDatetime); } \
  NS_IMETHOD SetValueAsDatetime(calIDateTime *aValueAsDatetime) override { return _to SetValueAsDatetime(aValueAsDatetime); } \
  NS_IMETHOD GetPropertyName(nsACString & aPropertyName) override { return _to GetPropertyName(aPropertyName); } \
  NS_IMETHOD GetParameter(const nsACString & paramname, nsACString & _retval) override { return _to GetParameter(paramname, _retval); } \
  NS_IMETHOD SetParameter(const nsACString & paramname, const nsACString & paramval) override { return _to SetParameter(paramname, paramval); } \
  NS_IMETHOD GetFirstParameterName(nsACString & _retval) override { return _to GetFirstParameterName(_retval); } \
  NS_IMETHOD GetNextParameterName(nsACString & _retval) override { return _to GetNextParameterName(_retval); } \
  NS_IMETHOD RemoveParameter(const nsACString & paramname) override { return _to RemoveParameter(paramname); } \
  NS_IMETHOD ClearXParameters(void) override { return _to ClearXParameters(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_CALIICALPROPERTY(_to) \
  NS_IMETHOD GetIcalString(nsACString & aIcalString) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIcalString(aIcalString); } \
  NS_IMETHOD GetIcalProperty(JS::MutableHandleValue aIcalProperty) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIcalProperty(aIcalProperty); } \
  NS_IMETHOD SetIcalProperty(JS::HandleValue aIcalProperty) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIcalProperty(aIcalProperty); } \
  NS_IMETHOD GetParent(calIIcalComponent * *aParent) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParent(aParent); } \
  NS_IMETHOD ToString(nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ToString(_retval); } \
  NS_IMETHOD GetValue(nsACString & aValue) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetValue(aValue); } \
  NS_IMETHOD SetValue(const nsACString & aValue) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetValue(aValue); } \
  NS_IMETHOD GetValueAsIcalString(nsACString & aValueAsIcalString) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetValueAsIcalString(aValueAsIcalString); } \
  NS_IMETHOD SetValueAsIcalString(const nsACString & aValueAsIcalString) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetValueAsIcalString(aValueAsIcalString); } \
  NS_IMETHOD GetValueAsDatetime(calIDateTime * *aValueAsDatetime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetValueAsDatetime(aValueAsDatetime); } \
  NS_IMETHOD SetValueAsDatetime(calIDateTime *aValueAsDatetime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetValueAsDatetime(aValueAsDatetime); } \
  NS_IMETHOD GetPropertyName(nsACString & aPropertyName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPropertyName(aPropertyName); } \
  NS_IMETHOD GetParameter(const nsACString & paramname, nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParameter(paramname, _retval); } \
  NS_IMETHOD SetParameter(const nsACString & paramname, const nsACString & paramval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetParameter(paramname, paramval); } \
  NS_IMETHOD GetFirstParameterName(nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFirstParameterName(_retval); } \
  NS_IMETHOD GetNextParameterName(nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNextParameterName(_retval); } \
  NS_IMETHOD RemoveParameter(const nsACString & paramname) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveParameter(paramname); } \
  NS_IMETHOD ClearXParameters(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearXParameters(); } 

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

/* Header file */
class _MYCLASS_ : public calIIcalProperty
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALIICALPROPERTY

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

/* attribute jsval icalProperty; */
NS_IMETHODIMP _MYCLASS_::GetIcalProperty(JS::MutableHandleValue aIcalProperty)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIcalProperty(JS::HandleValue aIcalProperty)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

/* attribute AUTF8String value; */
NS_IMETHODIMP _MYCLASS_::GetValue(nsACString & aValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetValue(const nsACString & aValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AUTF8String valueAsIcalString; */
NS_IMETHODIMP _MYCLASS_::GetValueAsIcalString(nsACString & aValueAsIcalString)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetValueAsIcalString(const nsACString & aValueAsIcalString)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute calIDateTime valueAsDatetime; */
NS_IMETHODIMP _MYCLASS_::GetValueAsDatetime(calIDateTime * *aValueAsDatetime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetValueAsDatetime(calIDateTime *aValueAsDatetime)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute AUTF8String propertyName; */
NS_IMETHODIMP _MYCLASS_::GetPropertyName(nsACString & aPropertyName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AUTF8String getParameter (in AUTF8String paramname); */
NS_IMETHODIMP _MYCLASS_::GetParameter(const nsACString & paramname, nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setParameter (in AUTF8String paramname, in AUTF8String paramval); */
NS_IMETHODIMP _MYCLASS_::SetParameter(const nsACString & paramname, const nsACString & paramval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

/* void removeParameter (in AUTF8String paramname); */
NS_IMETHODIMP _MYCLASS_::RemoveParameter(const nsACString & paramname)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void clearXParameters (); */
NS_IMETHODIMP _MYCLASS_::ClearXParameters()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    calIIcsComponentParsingListener */
#define CALIICSCOMPONENTPARSINGLISTENER_IID_STR "eda9565f-f9bb-4846-b134-1e0653b2e767"

#define CALIICSCOMPONENTPARSINGLISTENER_IID \
  {0xeda9565f, 0xf9bb, 0x4846, \
    { 0xb1, 0x34, 0x1e, 0x06, 0x53, 0xb2, 0xe7, 0x67 }}

class NS_NO_VTABLE calIIcsComponentParsingListener : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(CALIICSCOMPONENTPARSINGLISTENER_IID)

  /* void onParsingComplete (in nsresult rc, in calIIcalComponent rootComp); */
  NS_IMETHOD OnParsingComplete(nsresult rc, calIIcalComponent *rootComp) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(calIIcsComponentParsingListener, CALIICSCOMPONENTPARSINGLISTENER_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALIICSCOMPONENTPARSINGLISTENER \
  NS_IMETHOD OnParsingComplete(nsresult rc, calIIcalComponent *rootComp) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_CALIICSCOMPONENTPARSINGLISTENER \
  NS_METHOD OnParsingComplete(nsresult rc, calIIcalComponent *rootComp); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CALIICSCOMPONENTPARSINGLISTENER(_to) \
  NS_IMETHOD OnParsingComplete(nsresult rc, calIIcalComponent *rootComp) override { return _to OnParsingComplete(rc, rootComp); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_CALIICSCOMPONENTPARSINGLISTENER(_to) \
  NS_IMETHOD OnParsingComplete(nsresult rc, calIIcalComponent *rootComp) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OnParsingComplete(rc, rootComp); } 

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

/* Header file */
class _MYCLASS_ : public calIIcsComponentParsingListener
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALIICSCOMPONENTPARSINGLISTENER

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void onParsingComplete (in nsresult rc, in calIIcalComponent rootComp); */
NS_IMETHODIMP _MYCLASS_::OnParsingComplete(nsresult rc, calIIcalComponent *rootComp)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    calIICSService */
#define CALIICSSERVICE_IID_STR "31e7636b-5a64-4d15-bc60-67b67cd85176"

#define CALIICSSERVICE_IID \
  {0x31e7636b, 0x5a64, 0x4d15, \
    { 0xbc, 0x60, 0x67, 0xb6, 0x7c, 0xd8, 0x51, 0x76 }}

class NS_NO_VTABLE calIICSService : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(CALIICSSERVICE_IID)

  /* calIIcalComponent parseICS (in AUTF8String serialized, in calITimezoneProvider tzProvider); */
  NS_IMETHOD ParseICS(const nsACString & serialized, calITimezoneProvider *tzProvider, calIIcalComponent * *_retval) = 0;

  /* void parseICSAsync (in AUTF8String serialized, in calITimezoneProvider tzProvider, in calIIcsComponentParsingListener listener); */
  NS_IMETHOD ParseICSAsync(const nsACString & serialized, calITimezoneProvider *tzProvider, calIIcsComponentParsingListener *listener) = 0;

  /* calIIcalComponent createIcalComponent (in AUTF8String kind); */
  NS_IMETHOD CreateIcalComponent(const nsACString & kind, calIIcalComponent * *_retval) = 0;

  /* calIIcalProperty createIcalProperty (in AUTF8String kind); */
  NS_IMETHOD CreateIcalProperty(const nsACString & kind, calIIcalProperty * *_retval) = 0;

  /* calIIcalProperty createIcalPropertyFromString (in AUTF8String str); */
  NS_IMETHOD CreateIcalPropertyFromString(const nsACString & str, calIIcalProperty * *_retval) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(calIICSService, CALIICSSERVICE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALIICSSERVICE \
  NS_IMETHOD ParseICS(const nsACString & serialized, calITimezoneProvider *tzProvider, calIIcalComponent * *_retval) override; \
  NS_IMETHOD ParseICSAsync(const nsACString & serialized, calITimezoneProvider *tzProvider, calIIcsComponentParsingListener *listener) override; \
  NS_IMETHOD CreateIcalComponent(const nsACString & kind, calIIcalComponent * *_retval) override; \
  NS_IMETHOD CreateIcalProperty(const nsACString & kind, calIIcalProperty * *_retval) override; \
  NS_IMETHOD CreateIcalPropertyFromString(const nsACString & str, calIIcalProperty * *_retval) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_CALIICSSERVICE \
  NS_METHOD ParseICS(const nsACString & serialized, calITimezoneProvider *tzProvider, calIIcalComponent * *_retval); \
  NS_METHOD ParseICSAsync(const nsACString & serialized, calITimezoneProvider *tzProvider, calIIcsComponentParsingListener *listener); \
  NS_METHOD CreateIcalComponent(const nsACString & kind, calIIcalComponent * *_retval); \
  NS_METHOD CreateIcalProperty(const nsACString & kind, calIIcalProperty * *_retval); \
  NS_METHOD CreateIcalPropertyFromString(const nsACString & str, calIIcalProperty * *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CALIICSSERVICE(_to) \
  NS_IMETHOD ParseICS(const nsACString & serialized, calITimezoneProvider *tzProvider, calIIcalComponent * *_retval) override { return _to ParseICS(serialized, tzProvider, _retval); } \
  NS_IMETHOD ParseICSAsync(const nsACString & serialized, calITimezoneProvider *tzProvider, calIIcsComponentParsingListener *listener) override { return _to ParseICSAsync(serialized, tzProvider, listener); } \
  NS_IMETHOD CreateIcalComponent(const nsACString & kind, calIIcalComponent * *_retval) override { return _to CreateIcalComponent(kind, _retval); } \
  NS_IMETHOD CreateIcalProperty(const nsACString & kind, calIIcalProperty * *_retval) override { return _to CreateIcalProperty(kind, _retval); } \
  NS_IMETHOD CreateIcalPropertyFromString(const nsACString & str, calIIcalProperty * *_retval) override { return _to CreateIcalPropertyFromString(str, _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_CALIICSSERVICE(_to) \
  NS_IMETHOD ParseICS(const nsACString & serialized, calITimezoneProvider *tzProvider, calIIcalComponent * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ParseICS(serialized, tzProvider, _retval); } \
  NS_IMETHOD ParseICSAsync(const nsACString & serialized, calITimezoneProvider *tzProvider, calIIcsComponentParsingListener *listener) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ParseICSAsync(serialized, tzProvider, listener); } \
  NS_IMETHOD CreateIcalComponent(const nsACString & kind, calIIcalComponent * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateIcalComponent(kind, _retval); } \
  NS_IMETHOD CreateIcalProperty(const nsACString & kind, calIIcalProperty * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateIcalProperty(kind, _retval); } \
  NS_IMETHOD CreateIcalPropertyFromString(const nsACString & str, calIIcalProperty * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateIcalPropertyFromString(str, _retval); } 

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

/* Header file */
class _MYCLASS_ : public calIICSService
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALIICSSERVICE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* calIIcalComponent parseICS (in AUTF8String serialized, in calITimezoneProvider tzProvider); */
NS_IMETHODIMP _MYCLASS_::ParseICS(const nsACString & serialized, calITimezoneProvider *tzProvider, calIIcalComponent * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void parseICSAsync (in AUTF8String serialized, in calITimezoneProvider tzProvider, in calIIcsComponentParsingListener listener); */
NS_IMETHODIMP _MYCLASS_::ParseICSAsync(const nsACString & serialized, calITimezoneProvider *tzProvider, calIIcsComponentParsingListener *listener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* calIIcalComponent createIcalComponent (in AUTF8String kind); */
NS_IMETHODIMP _MYCLASS_::CreateIcalComponent(const nsACString & kind, calIIcalComponent * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* calIIcalProperty createIcalProperty (in AUTF8String kind); */
NS_IMETHODIMP _MYCLASS_::CreateIcalProperty(const nsACString & kind, calIIcalProperty * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* calIIcalProperty createIcalPropertyFromString (in AUTF8String str); */
NS_IMETHODIMP _MYCLASS_::CreateIcalPropertyFromString(const nsACString & str, calIIcalProperty * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    calIIcalComponentLibical */
#define CALIICALCOMPONENTLIBICAL_IID_STR "d2fc0264-191e-435e-8ef2-b2ab1fa81ca9"

#define CALIICALCOMPONENTLIBICAL_IID \
  {0xd2fc0264, 0x191e, 0x435e, \
    { 0x8e, 0xf2, 0xb2, 0xab, 0x1f, 0xa8, 0x1c, 0xa9 }}

class NS_NO_VTABLE calIIcalComponentLibical : public calIIcalComponent {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(CALIICALCOMPONENTLIBICAL_IID)

  /* [noscript,notxpcom] icalcomponentptr getLibicalComponent (); */
  NS_IMETHOD_(struct icalcomponent_impl *) GetLibicalComponent(void) = 0;

  /* [noscript,notxpcom] icaltimezoneptr getLibicalTimezone (); */
  NS_IMETHOD_(struct _icaltimezone *) GetLibicalTimezone(void) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(calIIcalComponentLibical, CALIICALCOMPONENTLIBICAL_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALIICALCOMPONENTLIBICAL \
  NS_IMETHOD_(struct icalcomponent_impl *) GetLibicalComponent(void) override; \
  NS_IMETHOD_(struct _icaltimezone *) GetLibicalTimezone(void) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_CALIICALCOMPONENTLIBICAL \
  NS_METHOD_(struct icalcomponent_impl *) GetLibicalComponent(void); \
  NS_METHOD_(struct _icaltimezone *) GetLibicalTimezone(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CALIICALCOMPONENTLIBICAL(_to) \
  NS_IMETHOD_(struct icalcomponent_impl *) GetLibicalComponent(void) override { return _to GetLibicalComponent(); } \
  NS_IMETHOD_(struct _icaltimezone *) GetLibicalTimezone(void) override { return _to GetLibicalTimezone(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_CALIICALCOMPONENTLIBICAL(_to) \
  NS_IMETHOD_(struct icalcomponent_impl *) GetLibicalComponent(void) override; \
  NS_IMETHOD_(struct _icaltimezone *) GetLibicalTimezone(void) override; 

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

/* Header file */
class _MYCLASS_ : public calIIcalComponentLibical
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALIICALCOMPONENTLIBICAL

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* [noscript,notxpcom] icalcomponentptr getLibicalComponent (); */
NS_IMETHODIMP_(struct icalcomponent_impl *) _MYCLASS_::GetLibicalComponent()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript,notxpcom] icaltimezoneptr getLibicalTimezone (); */
NS_IMETHODIMP_(struct _icaltimezone *) _MYCLASS_::GetLibicalTimezone()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    calIIcalPropertyLibical */
#define CALIICALPROPERTYLIBICAL_IID_STR "e0b9067f-0a53-4724-9c69-63599681877e"

#define CALIICALPROPERTYLIBICAL_IID \
  {0xe0b9067f, 0x0a53, 0x4724, \
    { 0x9c, 0x69, 0x63, 0x59, 0x96, 0x81, 0x87, 0x7e }}

class NS_NO_VTABLE calIIcalPropertyLibical : public calIIcalProperty {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(CALIICALPROPERTYLIBICAL_IID)

  /* [noscript,notxpcom] icalpropertyptr getLibicalProperty (); */
  NS_IMETHOD_(struct icalproperty_impl *) GetLibicalProperty(void) = 0;

  /* [noscript,notxpcom] icalcomponentptr getLibicalComponent (); */
  NS_IMETHOD_(struct icalcomponent_impl *) GetLibicalComponent(void) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(calIIcalPropertyLibical, CALIICALPROPERTYLIBICAL_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALIICALPROPERTYLIBICAL \
  NS_IMETHOD_(struct icalproperty_impl *) GetLibicalProperty(void) override; \
  NS_IMETHOD_(struct icalcomponent_impl *) GetLibicalComponent(void) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_CALIICALPROPERTYLIBICAL \
  NS_METHOD_(struct icalproperty_impl *) GetLibicalProperty(void); \
  NS_METHOD_(struct icalcomponent_impl *) GetLibicalComponent(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CALIICALPROPERTYLIBICAL(_to) \
  NS_IMETHOD_(struct icalproperty_impl *) GetLibicalProperty(void) override { return _to GetLibicalProperty(); } \
  NS_IMETHOD_(struct icalcomponent_impl *) GetLibicalComponent(void) override { return _to GetLibicalComponent(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_CALIICALPROPERTYLIBICAL(_to) \
  NS_IMETHOD_(struct icalproperty_impl *) GetLibicalProperty(void) override; \
  NS_IMETHOD_(struct icalcomponent_impl *) GetLibicalComponent(void) override; 

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

/* Header file */
class _MYCLASS_ : public calIIcalPropertyLibical
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALIICALPROPERTYLIBICAL

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* [noscript,notxpcom] icalpropertyptr getLibicalProperty (); */
NS_IMETHODIMP_(struct icalproperty_impl *) _MYCLASS_::GetLibicalProperty()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript,notxpcom] icalcomponentptr getLibicalComponent (); */
NS_IMETHODIMP_(struct icalcomponent_impl *) _MYCLASS_::GetLibicalComponent()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_calIICSService_h__ */
