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

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

/* starting interface:    calIDuration */
#define CALIDURATION_IID_STR "78537f21-fd5c-4e02-ab26-8ff6a3d946cb"

#define CALIDURATION_IID \
  {0x78537f21, 0xfd5c, 0x4e02, \
    { 0xab, 0x26, 0x8f, 0xf6, 0xa3, 0xd9, 0x46, 0xcb }}

class NS_NO_VTABLE calIDuration : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(CALIDURATION_IID)

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

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

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

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

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

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

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

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

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

  /* attribute long inSeconds; */
  NS_IMETHOD GetInSeconds(int32_t *aInSeconds) = 0;
  NS_IMETHOD SetInSeconds(int32_t aInSeconds) = 0;

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

  /* long compare (in calIDuration aOther); */
  NS_IMETHOD Compare(calIDuration *aOther, int32_t *_retval) = 0;

  /* void reset (); */
  NS_IMETHOD Reset(void) = 0;

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

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

  /* attribute jsval icalDuration; */
  NS_IMETHOD GetIcalDuration(JS::MutableHandleValue aIcalDuration) = 0;
  NS_IMETHOD SetIcalDuration(JS::HandleValue aIcalDuration) = 0;

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

};

  NS_DEFINE_STATIC_IID_ACCESSOR(calIDuration, CALIDURATION_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALIDURATION \
  NS_IMETHOD GetIsMutable(bool *aIsMutable) override; \
  NS_IMETHOD MakeImmutable(void) override; \
  NS_IMETHOD Clone(calIDuration * *_retval) override; \
  NS_IMETHOD GetIsNegative(bool *aIsNegative) override; \
  NS_IMETHOD SetIsNegative(bool aIsNegative) override; \
  NS_IMETHOD GetWeeks(int16_t *aWeeks) override; \
  NS_IMETHOD SetWeeks(int16_t aWeeks) override; \
  NS_IMETHOD GetDays(int16_t *aDays) override; \
  NS_IMETHOD SetDays(int16_t aDays) override; \
  NS_IMETHOD GetHours(int16_t *aHours) override; \
  NS_IMETHOD SetHours(int16_t aHours) override; \
  NS_IMETHOD GetMinutes(int16_t *aMinutes) override; \
  NS_IMETHOD SetMinutes(int16_t aMinutes) override; \
  NS_IMETHOD GetSeconds(int16_t *aSeconds) override; \
  NS_IMETHOD SetSeconds(int16_t aSeconds) override; \
  NS_IMETHOD GetInSeconds(int32_t *aInSeconds) override; \
  NS_IMETHOD SetInSeconds(int32_t aInSeconds) override; \
  NS_IMETHOD AddDuration(calIDuration *aDuration) override; \
  NS_IMETHOD Compare(calIDuration *aOther, int32_t *_retval) override; \
  NS_IMETHOD Reset(void) override; \
  NS_IMETHOD Normalize(void) override; \
  NS_IMETHOD ToString(nsACString & _retval) override; \
  NS_IMETHOD GetIcalDuration(JS::MutableHandleValue aIcalDuration) override; \
  NS_IMETHOD SetIcalDuration(JS::HandleValue aIcalDuration) 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_CALIDURATION \
  NS_METHOD GetIsMutable(bool *aIsMutable); \
  NS_METHOD MakeImmutable(void); \
  NS_METHOD Clone(calIDuration * *_retval); \
  NS_METHOD GetIsNegative(bool *aIsNegative); \
  NS_METHOD SetIsNegative(bool aIsNegative); \
  NS_METHOD GetWeeks(int16_t *aWeeks); \
  NS_METHOD SetWeeks(int16_t aWeeks); \
  NS_METHOD GetDays(int16_t *aDays); \
  NS_METHOD SetDays(int16_t aDays); \
  NS_METHOD GetHours(int16_t *aHours); \
  NS_METHOD SetHours(int16_t aHours); \
  NS_METHOD GetMinutes(int16_t *aMinutes); \
  NS_METHOD SetMinutes(int16_t aMinutes); \
  NS_METHOD GetSeconds(int16_t *aSeconds); \
  NS_METHOD SetSeconds(int16_t aSeconds); \
  NS_METHOD GetInSeconds(int32_t *aInSeconds); \
  NS_METHOD SetInSeconds(int32_t aInSeconds); \
  NS_METHOD AddDuration(calIDuration *aDuration); \
  NS_METHOD Compare(calIDuration *aOther, int32_t *_retval); \
  NS_METHOD Reset(void); \
  NS_METHOD Normalize(void); \
  NS_METHOD ToString(nsACString & _retval); \
  NS_METHOD GetIcalDuration(JS::MutableHandleValue aIcalDuration); \
  NS_METHOD SetIcalDuration(JS::HandleValue aIcalDuration); \
  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_CALIDURATION(_to) \
  NS_IMETHOD GetIsMutable(bool *aIsMutable) override { return _to GetIsMutable(aIsMutable); } \
  NS_IMETHOD MakeImmutable(void) override { return _to MakeImmutable(); } \
  NS_IMETHOD Clone(calIDuration * *_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 GetWeeks(int16_t *aWeeks) override { return _to GetWeeks(aWeeks); } \
  NS_IMETHOD SetWeeks(int16_t aWeeks) override { return _to SetWeeks(aWeeks); } \
  NS_IMETHOD GetDays(int16_t *aDays) override { return _to GetDays(aDays); } \
  NS_IMETHOD SetDays(int16_t aDays) override { return _to SetDays(aDays); } \
  NS_IMETHOD GetHours(int16_t *aHours) override { return _to GetHours(aHours); } \
  NS_IMETHOD SetHours(int16_t aHours) override { return _to SetHours(aHours); } \
  NS_IMETHOD GetMinutes(int16_t *aMinutes) override { return _to GetMinutes(aMinutes); } \
  NS_IMETHOD SetMinutes(int16_t aMinutes) override { return _to SetMinutes(aMinutes); } \
  NS_IMETHOD GetSeconds(int16_t *aSeconds) override { return _to GetSeconds(aSeconds); } \
  NS_IMETHOD SetSeconds(int16_t aSeconds) override { return _to SetSeconds(aSeconds); } \
  NS_IMETHOD GetInSeconds(int32_t *aInSeconds) override { return _to GetInSeconds(aInSeconds); } \
  NS_IMETHOD SetInSeconds(int32_t aInSeconds) override { return _to SetInSeconds(aInSeconds); } \
  NS_IMETHOD AddDuration(calIDuration *aDuration) override { return _to AddDuration(aDuration); } \
  NS_IMETHOD Compare(calIDuration *aOther, int32_t *_retval) override { return _to Compare(aOther, _retval); } \
  NS_IMETHOD Reset(void) override { return _to Reset(); } \
  NS_IMETHOD Normalize(void) override { return _to Normalize(); } \
  NS_IMETHOD ToString(nsACString & _retval) override { return _to ToString(_retval); } \
  NS_IMETHOD GetIcalDuration(JS::MutableHandleValue aIcalDuration) override { return _to GetIcalDuration(aIcalDuration); } \
  NS_IMETHOD SetIcalDuration(JS::HandleValue aIcalDuration) override { return _to SetIcalDuration(aIcalDuration); } \
  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_CALIDURATION(_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(calIDuration * *_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 GetWeeks(int16_t *aWeeks) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetWeeks(aWeeks); } \
  NS_IMETHOD SetWeeks(int16_t aWeeks) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetWeeks(aWeeks); } \
  NS_IMETHOD GetDays(int16_t *aDays) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDays(aDays); } \
  NS_IMETHOD SetDays(int16_t aDays) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDays(aDays); } \
  NS_IMETHOD GetHours(int16_t *aHours) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHours(aHours); } \
  NS_IMETHOD SetHours(int16_t aHours) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHours(aHours); } \
  NS_IMETHOD GetMinutes(int16_t *aMinutes) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMinutes(aMinutes); } \
  NS_IMETHOD SetMinutes(int16_t aMinutes) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMinutes(aMinutes); } \
  NS_IMETHOD GetSeconds(int16_t *aSeconds) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSeconds(aSeconds); } \
  NS_IMETHOD SetSeconds(int16_t aSeconds) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSeconds(aSeconds); } \
  NS_IMETHOD GetInSeconds(int32_t *aInSeconds) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetInSeconds(aInSeconds); } \
  NS_IMETHOD SetInSeconds(int32_t aInSeconds) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetInSeconds(aInSeconds); } \
  NS_IMETHOD AddDuration(calIDuration *aDuration) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddDuration(aDuration); } \
  NS_IMETHOD Compare(calIDuration *aOther, int32_t *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Compare(aOther, _retval); } \
  NS_IMETHOD Reset(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Reset(); } \
  NS_IMETHOD Normalize(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Normalize(); } \
  NS_IMETHOD ToString(nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ToString(_retval); } \
  NS_IMETHOD GetIcalDuration(JS::MutableHandleValue aIcalDuration) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIcalDuration(aIcalDuration); } \
  NS_IMETHOD SetIcalDuration(JS::HandleValue aIcalDuration) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIcalDuration(aIcalDuration); } \
  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 calIDuration
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALIDURATION

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

/* calIDuration clone (); */
NS_IMETHODIMP _MYCLASS_::Clone(calIDuration * *_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;
}

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

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

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

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

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

/* attribute long inSeconds; */
NS_IMETHODIMP _MYCLASS_::GetInSeconds(int32_t *aInSeconds)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetInSeconds(int32_t 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, int32_t *_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;
}

/* attribute jsval icalDuration; */
NS_IMETHODIMP _MYCLASS_::GetIcalDuration(JS::MutableHandleValue aIcalDuration)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIcalDuration(JS::HandleValue aIcalDuration)
{
    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


/* starting interface:    calIDurationLibical */
#define CALIDURATIONLIBICAL_IID_STR "f5e1c987-e722-4dec-bf91-93d4062b504a"

#define CALIDURATIONLIBICAL_IID \
  {0xf5e1c987, 0xe722, 0x4dec, \
    { 0xbf, 0x91, 0x93, 0xd4, 0x06, 0x2b, 0x50, 0x4a }}

class NS_NO_VTABLE calIDurationLibical : public calIDuration {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(CALIDURATIONLIBICAL_IID)

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

};

  NS_DEFINE_STATIC_IID_ACCESSOR(calIDurationLibical, CALIDURATIONLIBICAL_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALIDURATIONLIBICAL \
  NS_IMETHOD_(void) ToIcalDuration(struct icaldurationtype *idt) 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_CALIDURATIONLIBICAL \
  NS_METHOD_(void) ToIcalDuration(struct icaldurationtype *idt); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CALIDURATIONLIBICAL(_to) \
  NS_IMETHOD_(void) ToIcalDuration(struct icaldurationtype *idt) override { return _to ToIcalDuration(idt); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_CALIDURATIONLIBICAL(_to) \
  NS_IMETHOD_(void) ToIcalDuration(struct icaldurationtype *idt) override; 

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

/* Header file */
class _MYCLASS_ : public calIDurationLibical
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALIDURATIONLIBICAL

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

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

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


#endif /* __gen_calIDuration_h__ */
