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

#ifndef __gen_calIDuration_h__
#define __gen_calIDuration_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

/* starting interface:    calIDuration */
#define CALIDURATION_IID_STR "d1d2e05d-5472-482e-b0a4-a9e43925d530"

#define CALIDURATION_IID \
  {0xd1d2e05d, 0x5472, 0x482e, \
    { 0xb0, 0xa4, 0xa9, 0xe4, 0x39, 0x25, 0xd5, 0x30 }}

class NS_NO_VTABLE calIDuration : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(CALIDURATION_IID)

  /**
   * isMutable is true if this instance is modifiable.
   * If isMutable is false, any attempts to modify
   * the object will throw CAL_ERROR_ITEM_IS_MUTABLE.
   */
  /* readonly attribute boolean isMutable; */
  NS_IMETHOD GetIsMutable(PRBool *aIsMutable) = 0;

  /**
   * Make this calIDuration instance immutable.
   */
  /* void makeImmutable (); */
  NS_IMETHOD MakeImmutable(void) = 0;

  /**
   * Clone this calIDuration instance into a new
   * mutable object.
   */
  /* calIDuration clone (); */
  NS_IMETHOD Clone(calIDuration **_retval) = 0;

  /**
   * Is Negative
   */
  /* attribute boolean isNegative; */
  NS_IMETHOD GetIsNegative(PRBool *aIsNegative) = 0;
  NS_IMETHOD SetIsNegative(PRBool aIsNegative) = 0;

  /**
   * Weeks
   */
  /* attribute short weeks; */
  NS_IMETHOD GetWeeks(PRInt16 *aWeeks) = 0;
  NS_IMETHOD SetWeeks(PRInt16 aWeeks) = 0;

  /**
   * Days
   */
  /* attribute short days; */
  NS_IMETHOD GetDays(PRInt16 *aDays) = 0;
  NS_IMETHOD SetDays(PRInt16 aDays) = 0;

  /**
   * Hours
   */
  /* attribute short hours; */
  NS_IMETHOD GetHours(PRInt16 *aHours) = 0;
  NS_IMETHOD SetHours(PRInt16 aHours) = 0;

  /**
   * Minutes
   */
  /* attribute short minutes; */
  NS_IMETHOD GetMinutes(PRInt16 *aMinutes) = 0;
  NS_IMETHOD SetMinutes(PRInt16 aMinutes) = 0;

  /**
   * Seconds
   */
  /* attribute short seconds; */
  NS_IMETHOD GetSeconds(PRInt16 *aSeconds) = 0;
  NS_IMETHOD SetSeconds(PRInt16 aSeconds) = 0;

  /**
   * total duration in seconds
   */
  /* attribute long inSeconds; */
  NS_IMETHOD GetInSeconds(PRInt32 *aInSeconds) = 0;
  NS_IMETHOD SetInSeconds(PRInt32 aInSeconds) = 0;

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

  /**
   * Compare with another duration
   *
   * @param    aOther     to be compared with this object
   * 
   * @return   -1, 0, 1 if this < aOther, this == aOther, or this > aOther,
   *           respectively.
   */
  /* long compare (in calIDuration aOther); */
  NS_IMETHOD Compare(calIDuration *aOther, PRInt32 *_retval) = 0;

  /**
   * Reset this duration to 0
   */
  /* void reset (); */
  NS_IMETHOD Reset(void) = 0;

  /**
   * Normalize the duration
   */
  /* void normalize (); */
  NS_IMETHOD Normalize(void) = 0;

  /**
   * Return a string representation of this instance.
   */
  /* AUTF8String toString (); */
  NS_IMETHOD ToString(nsACString & _retval) = 0;

  /* [noscript, notxpcom] void toIcalDuration (in icaldurationtypeptr idt); */
  NS_IMETHOD_(void) ToIcalDuration(struct icaldurationtype * idt) = 0;

  /**
   * This object as an iCalendar DURATION string
   */
  /* attribute ACString icalString; */
  NS_IMETHOD GetIcalString(nsACString & aIcalString) = 0;
  NS_IMETHOD SetIcalString(const nsACString & aIcalString) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALIDURATION \
  NS_IMETHOD GetIsMutable(PRBool *aIsMutable); \
  NS_IMETHOD MakeImmutable(void); \
  NS_IMETHOD Clone(calIDuration **_retval); \
  NS_IMETHOD GetIsNegative(PRBool *aIsNegative); \
  NS_IMETHOD SetIsNegative(PRBool aIsNegative); \
  NS_IMETHOD GetWeeks(PRInt16 *aWeeks); \
  NS_IMETHOD SetWeeks(PRInt16 aWeeks); \
  NS_IMETHOD GetDays(PRInt16 *aDays); \
  NS_IMETHOD SetDays(PRInt16 aDays); \
  NS_IMETHOD GetHours(PRInt16 *aHours); \
  NS_IMETHOD SetHours(PRInt16 aHours); \
  NS_IMETHOD GetMinutes(PRInt16 *aMinutes); \
  NS_IMETHOD SetMinutes(PRInt16 aMinutes); \
  NS_IMETHOD GetSeconds(PRInt16 *aSeconds); \
  NS_IMETHOD SetSeconds(PRInt16 aSeconds); \
  NS_IMETHOD GetInSeconds(PRInt32 *aInSeconds); \
  NS_IMETHOD SetInSeconds(PRInt32 aInSeconds); \
  NS_IMETHOD AddDuration(calIDuration *aDuration); \
  NS_IMETHOD Compare(calIDuration *aOther, PRInt32 *_retval); \
  NS_IMETHOD Reset(void); \
  NS_IMETHOD Normalize(void); \
  NS_IMETHOD ToString(nsACString & _retval); \
  NS_IMETHOD_(void) ToIcalDuration(struct icaldurationtype * idt); \
  NS_IMETHOD GetIcalString(nsACString & aIcalString); \
  NS_IMETHOD SetIcalString(const nsACString & aIcalString); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CALIDURATION(_to) \
  NS_IMETHOD GetIsMutable(PRBool *aIsMutable) { return _to GetIsMutable(aIsMutable); } \
  NS_IMETHOD MakeImmutable(void) { return _to MakeImmutable(); } \
  NS_IMETHOD Clone(calIDuration **_retval) { return _to Clone(_retval); } \
  NS_IMETHOD GetIsNegative(PRBool *aIsNegative) { return _to GetIsNegative(aIsNegative); } \
  NS_IMETHOD SetIsNegative(PRBool aIsNegative) { return _to SetIsNegative(aIsNegative); } \
  NS_IMETHOD GetWeeks(PRInt16 *aWeeks) { return _to GetWeeks(aWeeks); } \
  NS_IMETHOD SetWeeks(PRInt16 aWeeks) { return _to SetWeeks(aWeeks); } \
  NS_IMETHOD GetDays(PRInt16 *aDays) { return _to GetDays(aDays); } \
  NS_IMETHOD SetDays(PRInt16 aDays) { return _to SetDays(aDays); } \
  NS_IMETHOD GetHours(PRInt16 *aHours) { return _to GetHours(aHours); } \
  NS_IMETHOD SetHours(PRInt16 aHours) { return _to SetHours(aHours); } \
  NS_IMETHOD GetMinutes(PRInt16 *aMinutes) { return _to GetMinutes(aMinutes); } \
  NS_IMETHOD SetMinutes(PRInt16 aMinutes) { return _to SetMinutes(aMinutes); } \
  NS_IMETHOD GetSeconds(PRInt16 *aSeconds) { return _to GetSeconds(aSeconds); } \
  NS_IMETHOD SetSeconds(PRInt16 aSeconds) { return _to SetSeconds(aSeconds); } \
  NS_IMETHOD GetInSeconds(PRInt32 *aInSeconds) { return _to GetInSeconds(aInSeconds); } \
  NS_IMETHOD SetInSeconds(PRInt32 aInSeconds) { return _to SetInSeconds(aInSeconds); } \
  NS_IMETHOD AddDuration(calIDuration *aDuration) { return _to AddDuration(aDuration); } \
  NS_IMETHOD Compare(calIDuration *aOther, PRInt32 *_retval) { return _to Compare(aOther, _retval); } \
  NS_IMETHOD Reset(void) { return _to Reset(); } \
  NS_IMETHOD Normalize(void) { return _to Normalize(); } \
  NS_IMETHOD ToString(nsACString & _retval) { return _to ToString(_retval); } \
  NS_IMETHOD_(void) ToIcalDuration(struct icaldurationtype * idt) { return _to ToIcalDuration(idt); } \
  NS_IMETHOD GetIcalString(nsACString & aIcalString) { return _to GetIcalString(aIcalString); } \
  NS_IMETHOD SetIcalString(const nsACString & aIcalString) { 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_CALIDURATION(_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(calIDuration **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->Clone(_retval); } \
  NS_IMETHOD GetIsNegative(PRBool *aIsNegative) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsNegative(aIsNegative); } \
  NS_IMETHOD SetIsNegative(PRBool aIsNegative) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIsNegative(aIsNegative); } \
  NS_IMETHOD GetWeeks(PRInt16 *aWeeks) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWeeks(aWeeks); } \
  NS_IMETHOD SetWeeks(PRInt16 aWeeks) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetWeeks(aWeeks); } \
  NS_IMETHOD GetDays(PRInt16 *aDays) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDays(aDays); } \
  NS_IMETHOD SetDays(PRInt16 aDays) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDays(aDays); } \
  NS_IMETHOD GetHours(PRInt16 *aHours) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHours(aHours); } \
  NS_IMETHOD SetHours(PRInt16 aHours) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHours(aHours); } \
  NS_IMETHOD GetMinutes(PRInt16 *aMinutes) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMinutes(aMinutes); } \
  NS_IMETHOD SetMinutes(PRInt16 aMinutes) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMinutes(aMinutes); } \
  NS_IMETHOD GetSeconds(PRInt16 *aSeconds) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSeconds(aSeconds); } \
  NS_IMETHOD SetSeconds(PRInt16 aSeconds) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSeconds(aSeconds); } \
  NS_IMETHOD GetInSeconds(PRInt32 *aInSeconds) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInSeconds(aInSeconds); } \
  NS_IMETHOD SetInSeconds(PRInt32 aInSeconds) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetInSeconds(aInSeconds); } \
  NS_IMETHOD AddDuration(calIDuration *aDuration) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddDuration(aDuration); } \
  NS_IMETHOD Compare(calIDuration *aOther, PRInt32 *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->Compare(aOther, _retval); } \
  NS_IMETHOD Reset(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Reset(); } \
  NS_IMETHOD Normalize(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Normalize(); } \
  NS_IMETHOD ToString(nsACString & _retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->ToString(_retval); } \
  NS_IMETHOD_(void) ToIcalDuration(struct icaldurationtype * idt) { return !_to ? NS_ERROR_NULL_POINTER : _to->ToIcalDuration(idt); } \
  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); } 

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

/* Header file */
class _MYCLASS_ : public calIDuration
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALIDURATION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

_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;
}

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

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

/* attribute short weeks; */
NS_IMETHODIMP _MYCLASS_::GetWeeks(PRInt16 *aWeeks)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetWeeks(PRInt16 aWeeks)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute short days; */
NS_IMETHODIMP _MYCLASS_::GetDays(PRInt16 *aDays)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetDays(PRInt16 aDays)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute short hours; */
NS_IMETHODIMP _MYCLASS_::GetHours(PRInt16 *aHours)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetHours(PRInt16 aHours)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute short minutes; */
NS_IMETHODIMP _MYCLASS_::GetMinutes(PRInt16 *aMinutes)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetMinutes(PRInt16 aMinutes)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute short seconds; */
NS_IMETHODIMP _MYCLASS_::GetSeconds(PRInt16 *aSeconds)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetSeconds(PRInt16 aSeconds)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute long inSeconds; */
NS_IMETHODIMP _MYCLASS_::GetInSeconds(PRInt32 *aInSeconds)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetInSeconds(PRInt32 aInSeconds)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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

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

/* void normalize (); */
NS_IMETHODIMP _MYCLASS_::Normalize()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* [noscript, notxpcom] void toIcalDuration (in icaldurationtypeptr idt); */
NS_IMETHODIMP_(void) _MYCLASS_::ToIcalDuration(struct icaldurationtype * idt)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

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


#endif /* __gen_calIDuration_h__ */
