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

#ifndef __gen_calIPeriod_h__
#define __gen_calIPeriod_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 calIDateTime; /* forward declaration */

class calIDuration; /* forward declaration */


/* starting interface:    calIPeriod */
#define CALIPERIOD_IID_STR "ace2a74c-bd08-476f-be8b-6565abc50339"

#define CALIPERIOD_IID \
  {0xace2a74c, 0xbd08, 0x476f, \
    { 0xbe, 0x8b, 0x65, 0x65, 0xab, 0xc5, 0x03, 0x39 }}

class NS_NO_VTABLE calIPeriod : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(CALIPERIOD_IID)

  /* attribute jsval icalPeriod; */
  NS_IMETHOD GetIcalPeriod(JS::MutableHandleValue aIcalPeriod) = 0;
  NS_IMETHOD SetIcalPeriod(JS::HandleValue aIcalPeriod) = 0;

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

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

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

  /* attribute calIDateTime start; */
  NS_IMETHOD GetStart(calIDateTime * *aStart) = 0;
  NS_IMETHOD SetStart(calIDateTime *aStart) = 0;

  /* attribute calIDateTime end; */
  NS_IMETHOD GetEnd(calIDateTime * *aEnd) = 0;
  NS_IMETHOD SetEnd(calIDateTime *aEnd) = 0;

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

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

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

};

  NS_DEFINE_STATIC_IID_ACCESSOR(calIPeriod, CALIPERIOD_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALIPERIOD \
  NS_IMETHOD GetIcalPeriod(JS::MutableHandleValue aIcalPeriod) override; \
  NS_IMETHOD SetIcalPeriod(JS::HandleValue aIcalPeriod) override; \
  NS_IMETHOD GetIsMutable(bool *aIsMutable) override; \
  NS_IMETHOD MakeImmutable(void) override; \
  NS_IMETHOD Clone(calIPeriod * *_retval) override; \
  NS_IMETHOD GetStart(calIDateTime * *aStart) override; \
  NS_IMETHOD SetStart(calIDateTime *aStart) override; \
  NS_IMETHOD GetEnd(calIDateTime * *aEnd) override; \
  NS_IMETHOD SetEnd(calIDateTime *aEnd) override; \
  NS_IMETHOD GetDuration(calIDuration * *aDuration) override; \
  NS_IMETHOD ToString(nsACString & _retval) 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_CALIPERIOD \
  NS_METHOD GetIcalPeriod(JS::MutableHandleValue aIcalPeriod); \
  NS_METHOD SetIcalPeriod(JS::HandleValue aIcalPeriod); \
  NS_METHOD GetIsMutable(bool *aIsMutable); \
  NS_METHOD MakeImmutable(void); \
  NS_METHOD Clone(calIPeriod * *_retval); \
  NS_METHOD GetStart(calIDateTime * *aStart); \
  NS_METHOD SetStart(calIDateTime *aStart); \
  NS_METHOD GetEnd(calIDateTime * *aEnd); \
  NS_METHOD SetEnd(calIDateTime *aEnd); \
  NS_METHOD GetDuration(calIDuration * *aDuration); \
  NS_METHOD ToString(nsACString & _retval); \
  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_CALIPERIOD(_to) \
  NS_IMETHOD GetIcalPeriod(JS::MutableHandleValue aIcalPeriod) override { return _to GetIcalPeriod(aIcalPeriod); } \
  NS_IMETHOD SetIcalPeriod(JS::HandleValue aIcalPeriod) override { return _to SetIcalPeriod(aIcalPeriod); } \
  NS_IMETHOD GetIsMutable(bool *aIsMutable) override { return _to GetIsMutable(aIsMutable); } \
  NS_IMETHOD MakeImmutable(void) override { return _to MakeImmutable(); } \
  NS_IMETHOD Clone(calIPeriod * *_retval) override { return _to Clone(_retval); } \
  NS_IMETHOD GetStart(calIDateTime * *aStart) override { return _to GetStart(aStart); } \
  NS_IMETHOD SetStart(calIDateTime *aStart) override { return _to SetStart(aStart); } \
  NS_IMETHOD GetEnd(calIDateTime * *aEnd) override { return _to GetEnd(aEnd); } \
  NS_IMETHOD SetEnd(calIDateTime *aEnd) override { return _to SetEnd(aEnd); } \
  NS_IMETHOD GetDuration(calIDuration * *aDuration) override { return _to GetDuration(aDuration); } \
  NS_IMETHOD ToString(nsACString & _retval) override { return _to ToString(_retval); } \
  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_CALIPERIOD(_to) \
  NS_IMETHOD GetIcalPeriod(JS::MutableHandleValue aIcalPeriod) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIcalPeriod(aIcalPeriod); } \
  NS_IMETHOD SetIcalPeriod(JS::HandleValue aIcalPeriod) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIcalPeriod(aIcalPeriod); } \
  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(calIPeriod * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Clone(_retval); } \
  NS_IMETHOD GetStart(calIDateTime * *aStart) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStart(aStart); } \
  NS_IMETHOD SetStart(calIDateTime *aStart) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetStart(aStart); } \
  NS_IMETHOD GetEnd(calIDateTime * *aEnd) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnd(aEnd); } \
  NS_IMETHOD SetEnd(calIDateTime *aEnd) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEnd(aEnd); } \
  NS_IMETHOD GetDuration(calIDuration * *aDuration) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDuration(aDuration); } \
  NS_IMETHOD ToString(nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ToString(_retval); } \
  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 calIPeriod
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALIPERIOD

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* attribute jsval icalPeriod; */
NS_IMETHODIMP _MYCLASS_::GetIcalPeriod(JS::MutableHandleValue aIcalPeriod)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetIcalPeriod(JS::HandleValue aIcalPeriod)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* 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;
}

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

/* attribute calIDateTime start; */
NS_IMETHODIMP _MYCLASS_::GetStart(calIDateTime * *aStart)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetStart(calIDateTime *aStart)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute calIDateTime end; */
NS_IMETHODIMP _MYCLASS_::GetEnd(calIDateTime * *aEnd)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP _MYCLASS_::SetEnd(calIDateTime *aEnd)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* AUTF8String toString (); */
NS_IMETHODIMP _MYCLASS_::ToString(nsACString & _retval)
{
    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:    calIPeriodLibical */
#define CALIPERIODLIBICAL_IID_STR "04ee525f-96db-4731-8d61-688e754df24f"

#define CALIPERIODLIBICAL_IID \
  {0x04ee525f, 0x96db, 0x4731, \
    { 0x8d, 0x61, 0x68, 0x8e, 0x75, 0x4d, 0xf2, 0x4f }}

class NS_NO_VTABLE calIPeriodLibical : public calIPeriod {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(CALIPERIODLIBICAL_IID)

  /* [noscript,notxpcom] void toIcalPeriod (in icalperiodtypeptr idt); */
  NS_IMETHOD_(void) ToIcalPeriod(struct icalperiodtype *idt) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(calIPeriodLibical, CALIPERIODLIBICAL_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_CALIPERIODLIBICAL \
  NS_IMETHOD_(void) ToIcalPeriod(struct icalperiodtype *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_CALIPERIODLIBICAL \
  NS_METHOD_(void) ToIcalPeriod(struct icalperiodtype *idt); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_CALIPERIODLIBICAL(_to) \
  NS_IMETHOD_(void) ToIcalPeriod(struct icalperiodtype *idt) override { return _to ToIcalPeriod(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_CALIPERIODLIBICAL(_to) \
  NS_IMETHOD_(void) ToIcalPeriod(struct icalperiodtype *idt) override; 

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

/* Header file */
class _MYCLASS_ : public calIPeriodLibical
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_CALIPERIODLIBICAL

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* [noscript,notxpcom] void toIcalPeriod (in icalperiodtypeptr idt); */
NS_IMETHODIMP_(void) _MYCLASS_::ToIcalPeriod(struct icalperiodtype *idt)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_calIPeriod_h__ */
