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

#ifndef __gen_flockIPriorityQueue_h__
#define __gen_flockIPriorityQueue_h__


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

#ifndef __gen_nsIEnumerator_h__
#include "nsIEnumerator.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:    flockIPQEnumerator */
#define FLOCKIPQENUMERATOR_IID_STR "b5c002d5-718d-46b9-98a3-da766d74f4ce"

#define FLOCKIPQENUMERATOR_IID \
  {0xb5c002d5, 0x718d, 0x46b9, \
    { 0x98, 0xa3, 0xda, 0x76, 0x6d, 0x74, 0xf4, 0xce }}

class NS_NO_VTABLE flockIPQEnumerator : public nsIEnumerator {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FLOCKIPQENUMERATOR_IID)

  /* nsISupports getNext (); */
  NS_IMETHOD GetNext(nsISupports **_retval) = 0;

  /* PRBool hasMoreElements (); */
  NS_IMETHOD HasMoreElements(PRBool *_retval) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKIPQENUMERATOR \
  NS_IMETHOD GetNext(nsISupports **_retval); \
  NS_IMETHOD HasMoreElements(PRBool *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FLOCKIPQENUMERATOR(_to) \
  NS_IMETHOD GetNext(nsISupports **_retval) { return _to GetNext(_retval); } \
  NS_IMETHOD HasMoreElements(PRBool *_retval) { return _to HasMoreElements(_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_FLOCKIPQENUMERATOR(_to) \
  NS_IMETHOD GetNext(nsISupports **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNext(_retval); } \
  NS_IMETHOD HasMoreElements(PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->HasMoreElements(_retval); } 

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

/* Header file */
class _MYCLASS_ : public flockIPQEnumerator
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FLOCKIPQENUMERATOR

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* nsISupports getNext (); */
NS_IMETHODIMP _MYCLASS_::GetNext(nsISupports **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* PRBool hasMoreElements (); */
NS_IMETHODIMP _MYCLASS_::HasMoreElements(PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    flockIPriorityQueue */
#define FLOCKIPRIORITYQUEUE_IID_STR "df1cc8a4-4367-11db-8929-0016cbca64d1"

#define FLOCKIPRIORITYQUEUE_IID \
  {0xdf1cc8a4, 0x4367, 0x11db, \
    { 0x89, 0x29, 0x00, 0x16, 0xcb, 0xca, 0x64, 0xd1 }}

class NS_NO_VTABLE flockIPriorityQueue : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(FLOCKIPRIORITYQUEUE_IID)

  /* void push (in nsISupports element); */
  NS_IMETHOD Push(nsISupports *element) = 0;

  /* nsISupports pop (); */
  NS_IMETHOD Pop(nsISupports **_retval) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKIPRIORITYQUEUE \
  NS_IMETHOD Push(nsISupports *element); \
  NS_IMETHOD Pop(nsISupports **_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FLOCKIPRIORITYQUEUE(_to) \
  NS_IMETHOD Push(nsISupports *element) { return _to Push(element); } \
  NS_IMETHOD Pop(nsISupports **_retval) { return _to Pop(_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_FLOCKIPRIORITYQUEUE(_to) \
  NS_IMETHOD Push(nsISupports *element) { return !_to ? NS_ERROR_NULL_POINTER : _to->Push(element); } \
  NS_IMETHOD Pop(nsISupports **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->Pop(_retval); } 

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

/* Header file */
class _MYCLASS_ : public flockIPriorityQueue
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FLOCKIPRIORITYQUEUE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

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

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

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

/* void push (in nsISupports element); */
NS_IMETHODIMP _MYCLASS_::Push(nsISupports *element)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISupports pop (); */
NS_IMETHODIMP _MYCLASS_::Pop(nsISupports **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define FLOCK_PRIORITYQUEUE_CID \
{ 0xdf1cc8a4, 0x4367, 0x11db, { 0x89, 0x29, 0x0, 0x16, 0xcb, 0xca, 0x64, 0xd1 } }
#define FLOCK_PRIORITYQUEUE_CLASSNAME "Flock Priority Queue"
#define FLOCK_PRIORITYQUEUE_CONTRACTID "@flock.com/priority-queue;1"

#endif /* __gen_flockIPriorityQueue_h__ */
