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

#ifndef __gen_nsIRequest_h__
#define __gen_nsIRequest_h__

#include "nsISupports.h"


/* starting interface:    nsIRequest */
#define NS_IREQUEST_IID_STR "f2caaba0-2f25-11d3-a164-0050041caf44"

#define NS_IREQUEST_IID \
  {0xf2caaba0, 0x2f25, 0x11d3, \
    { 0xa1, 0x64, 0x00, 0x50, 0x04, 0x1c, 0xaf, 0x44 }}

class NS_NO_VTABLE nsIRequest : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IREQUEST_IID)

  /**
     * Returns the name of the request. Often this is the URL of the request.
     */
  /* readonly attribute wstring name; */
  NS_IMETHOD GetName(PRUnichar * *aName) = 0;

  /**
     * Returns true if the request is pending (active). Returns false 
     * after completion or successful calling Cancel. Suspended requests
     * are still considered pending.
     */
  /* boolean isPending (); */
  NS_IMETHOD IsPending(PRBool *_retval) = 0;

  /**
     * Returns any error status associated with the request.
     */
  /* readonly attribute nsresult status; */
  NS_IMETHOD GetStatus(nsresult *aStatus) = 0;

  /**
     * Cancels the current request. This will close any open input or
     * output streams and terminate any async requests. Users should 
     * normally pass NS_BINDING_ABORTED, although other errors may also
     * be passed. The error passed in will become the value of the 
     * status attribute.
     */
  /* void cancel (in nsresult status); */
  NS_IMETHOD Cancel(nsresult status) = 0;

  /**
     * Suspends the current requests. This may have the effect of closing
     * any underlying transport (in order to free up resources), although
     * any open streams remain logically opened and will continue delivering
     * data when the transport is resumed. 
     */
  /* void suspend (); */
  NS_IMETHOD Suspend(void) = 0;

  /**
     * Resumes the current request. This may have the effect of re-opening
     * any underlying transport and will resume the delivery of data to 
     * any open streams. 
     */
  /* void resume (); */
  NS_IMETHOD Resume(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIREQUEST \
  NS_IMETHOD GetName(PRUnichar * *aName); \
  NS_IMETHOD IsPending(PRBool *_retval); \
  NS_IMETHOD GetStatus(nsresult *aStatus); \
  NS_IMETHOD Cancel(nsresult status); \
  NS_IMETHOD Suspend(void); \
  NS_IMETHOD Resume(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIREQUEST(_to) \
  NS_IMETHOD GetName(PRUnichar * *aName) { return _to ## GetName(aName); } \
  NS_IMETHOD IsPending(PRBool *_retval) { return _to ## IsPending(_retval); } \
  NS_IMETHOD GetStatus(nsresult *aStatus) { return _to ## GetStatus(aStatus); } \
  NS_IMETHOD Cancel(nsresult status) { return _to ## Cancel(status); } \
  NS_IMETHOD Suspend(void) { return _to ## Suspend(); } \
  NS_IMETHOD Resume(void) { return _to ## Resume(); } 

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

/* Header file */
class nsRequest : public nsIRequest
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIREQUEST

  nsRequest();
  virtual ~nsRequest();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsRequest, nsIRequest)

nsRequest::nsRequest()
{
  NS_INIT_ISUPPORTS();
  /* member initializers and constructor code */
}

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

/* readonly attribute wstring name; */
NS_IMETHODIMP nsRequest::GetName(PRUnichar * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean isPending (); */
NS_IMETHODIMP nsRequest::IsPending(PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsresult status; */
NS_IMETHODIMP nsRequest::GetStatus(nsresult *aStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void cancel (in nsresult status); */
NS_IMETHODIMP nsRequest::Cancel(nsresult status)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void suspend (); */
NS_IMETHODIMP nsRequest::Suspend()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void resume (); */
NS_IMETHODIMP nsRequest::Resume()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIRequest_h__ */
