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

#ifndef __gen_calIRecurrenceItem_h__
#define __gen_calIRecurrenceItem_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 calIItemBase; /* forward declaration */

class calIDateTime; /* forward declaration */

class calIIcalProperty; /* forward declaration */


/* starting interface:    calIRecurrenceItem */
#define CALIRECURRENCEITEM_IID_STR "918a243b-d887-41b0-8b4b-9cd56a9dd55f"

#define CALIRECURRENCEITEM_IID \
  {0x918a243b, 0xd887, 0x41b0, \
    { 0x8b, 0x4b, 0x9c, 0xd5, 0x6a, 0x9d, 0xd5, 0x5f }}

class NS_NO_VTABLE calIRecurrenceItem : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(CALIRECURRENCEITEM_IID)

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

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

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

  /* attribute boolean isNegative; */
  NS_IMETHOD GetIsNegative(bool *aIsNegative) = 0;
  NS_IMETHOD SetIsNegative(bool aIsNegative) = 0;

  /* readonly attribute boolean isFinite; */
  NS_IMETHOD GetIsFinite(bool *aIsFinite) = 0;

  /* calIDateTime getNextOccurrence (in calIDateTime aRecurrenceId, in calIDateTime aTime); */
  NS_IMETHOD GetNextOccurrence(calIDateTime *aRecurrenceId, calIDateTime *aTime, calIDateTime * *_retval) = 0;

  /* void getOccurrences (in calIDateTime aStartTime, in calIDateTime aRangeStart, in calIDateTime aRangeEnd, in unsigned long aMaxCount, out unsigned long aCount, [array, size_is (aCount), retval] out calIDateTime aDates); */
  NS_IMETHOD GetOccurrences(calIDateTime *aStartTime, calIDateTime *aRangeStart, calIDateTime *aRangeEnd, uint32_t aMaxCount, uint32_t *aCount, calIDateTime * **aDates) = 0;

  /* attribute calIIcalProperty icalProperty; */
  NS_IMETHOD GetIcalProperty(calIIcalProperty * *aIcalProperty) = 0;
  NS_IMETHOD SetIcalProperty(calIIcalProperty *aIcalProperty) = 0;

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

};

  NS_DEFINE_STATIC_IID_ACCESSOR(calIRecurrenceItem, CALIRECURRENCEITEM_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALIRECURRENCEITEM \
  NS_IMETHOD GetIsMutable(bool *aIsMutable) override; \
  NS_IMETHOD MakeImmutable(void) override; \
  NS_IMETHOD Clone(calIRecurrenceItem * *_retval) override; \
  NS_IMETHOD GetIsNegative(bool *aIsNegative) override; \
  NS_IMETHOD SetIsNegative(bool aIsNegative) override; \
  NS_IMETHOD GetIsFinite(bool *aIsFinite) override; \
  NS_IMETHOD GetNextOccurrence(calIDateTime *aRecurrenceId, calIDateTime *aTime, calIDateTime * *_retval) override; \
  NS_IMETHOD GetOccurrences(calIDateTime *aStartTime, calIDateTime *aRangeStart, calIDateTime *aRangeEnd, uint32_t aMaxCount, uint32_t *aCount, calIDateTime * **aDates) override; \
  NS_IMETHOD GetIcalProperty(calIIcalProperty * *aIcalProperty) override; \
  NS_IMETHOD SetIcalProperty(calIIcalProperty *aIcalProperty) override; \
  NS_IMETHOD GetIcalString(nsACString & aIcalString) override; \
  NS_IMETHOD SetIcalString(const nsACString & aIcalString) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_CALIRECURRENCEITEM \
  NS_METHOD GetIsMutable(bool *aIsMutable); \
  NS_METHOD MakeImmutable(void); \
  NS_METHOD Clone(calIRecurrenceItem * *_retval); \
  NS_METHOD GetIsNegative(bool *aIsNegative); \
  NS_METHOD SetIsNegative(bool aIsNegative); \
  NS_METHOD GetIsFinite(bool *aIsFinite); \
  NS_METHOD GetNextOccurrence(calIDateTime *aRecurrenceId, calIDateTime *aTime, calIDateTime * *_retval); \
  NS_METHOD GetOccurrences(calIDateTime *aStartTime, calIDateTime *aRangeStart, calIDateTime *aRangeEnd, uint32_t aMaxCount, uint32_t *aCount, calIDateTime * **aDates); \
  NS_METHOD GetIcalProperty(calIIcalProperty * *aIcalProperty); \
  NS_METHOD SetIcalProperty(calIIcalProperty *aIcalProperty); \
  NS_METHOD GetIcalString(nsACString & aIcalString); \
  NS_METHOD SetIcalString(const nsACString & aIcalString); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CALIRECURRENCEITEM(_to) \
  NS_IMETHOD GetIsMutable(bool *aIsMutable) override { return _to GetIsMutable(aIsMutable); } \
  NS_IMETHOD MakeImmutable(void) override { return _to MakeImmutable(); } \
  NS_IMETHOD Clone(calIRecurrenceItem * *_retval) override { return _to Clone(_retval); } \
  NS_IMETHOD GetIsNegative(bool *aIsNegative) override { return _to GetIsNegative(aIsNegative); } \
  NS_IMETHOD SetIsNegative(bool aIsNegative) override { return _to SetIsNegative(aIsNegative); } \
  NS_IMETHOD GetIsFinite(bool *aIsFinite) override { return _to GetIsFinite(aIsFinite); } \
  NS_IMETHOD GetNextOccurrence(calIDateTime *aRecurrenceId, calIDateTime *aTime, calIDateTime * *_retval) override { return _to GetNextOccurrence(aRecurrenceId, aTime, _retval); } \
  NS_IMETHOD GetOccurrences(calIDateTime *aStartTime, calIDateTime *aRangeStart, calIDateTime *aRangeEnd, uint32_t aMaxCount, uint32_t *aCount, calIDateTime * **aDates) override { return _to GetOccurrences(aStartTime, aRangeStart, aRangeEnd, aMaxCount, aCount, aDates); } \
  NS_IMETHOD GetIcalProperty(calIIcalProperty * *aIcalProperty) override { return _to GetIcalProperty(aIcalProperty); } \
  NS_IMETHOD SetIcalProperty(calIIcalProperty *aIcalProperty) override { return _to SetIcalProperty(aIcalProperty); } \
  NS_IMETHOD GetIcalString(nsACString & aIcalString) override { return _to GetIcalString(aIcalString); } \
  NS_IMETHOD SetIcalString(const nsACString & aIcalString) override { return _to SetIcalString(aIcalString); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_CALIRECURRENCEITEM(_to) \
  NS_IMETHOD GetIsMutable(bool *aIsMutable) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsMutable(aIsMutable); } \
  NS_IMETHOD MakeImmutable(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->MakeImmutable(); } \
  NS_IMETHOD Clone(calIRecurrenceItem * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Clone(_retval); } \
  NS_IMETHOD GetIsNegative(bool *aIsNegative) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsNegative(aIsNegative); } \
  NS_IMETHOD SetIsNegative(bool aIsNegative) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIsNegative(aIsNegative); } \
  NS_IMETHOD GetIsFinite(bool *aIsFinite) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsFinite(aIsFinite); } \
  NS_IMETHOD GetNextOccurrence(calIDateTime *aRecurrenceId, calIDateTime *aTime, calIDateTime * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNextOccurrence(aRecurrenceId, aTime, _retval); } \
  NS_IMETHOD GetOccurrences(calIDateTime *aStartTime, calIDateTime *aRangeStart, calIDateTime *aRangeEnd, uint32_t aMaxCount, uint32_t *aCount, calIDateTime * **aDates) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOccurrences(aStartTime, aRangeStart, aRangeEnd, aMaxCount, aCount, aDates); } \
  NS_IMETHOD GetIcalProperty(calIIcalProperty * *aIcalProperty) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIcalProperty(aIcalProperty); } \
  NS_IMETHOD SetIcalProperty(calIIcalProperty *aIcalProperty) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIcalProperty(aIcalProperty); } \
  NS_IMETHOD GetIcalString(nsACString & aIcalString) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIcalString(aIcalString); } \
  NS_IMETHOD SetIcalString(const nsACString & aIcalString) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIcalString(aIcalString); } 

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

/* Header file */
class _MYCLASS_ : public calIRecurrenceItem
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALIRECURRENCEITEM

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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

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

/* attribute boolean isNegative; */
NS_IMETHODIMP _MYCLASS_::GetIsNegative(bool *aIsNegative)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIsNegative(bool aIsNegative)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean isFinite; */
NS_IMETHODIMP _MYCLASS_::GetIsFinite(bool *aIsFinite)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* calIDateTime getNextOccurrence (in calIDateTime aRecurrenceId, in calIDateTime aTime); */
NS_IMETHODIMP _MYCLASS_::GetNextOccurrence(calIDateTime *aRecurrenceId, calIDateTime *aTime, calIDateTime * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getOccurrences (in calIDateTime aStartTime, in calIDateTime aRangeStart, in calIDateTime aRangeEnd, in unsigned long aMaxCount, out unsigned long aCount, [array, size_is (aCount), retval] out calIDateTime aDates); */
NS_IMETHODIMP _MYCLASS_::GetOccurrences(calIDateTime *aStartTime, calIDateTime *aRangeStart, calIDateTime *aRangeEnd, uint32_t aMaxCount, uint32_t *aCount, calIDateTime * **aDates)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute calIIcalProperty icalProperty; */
NS_IMETHODIMP _MYCLASS_::GetIcalProperty(calIIcalProperty * *aIcalProperty)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIcalProperty(calIIcalProperty *aIcalProperty)
{
    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;
}

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


#endif /* __gen_calIRecurrenceItem_h__ */
