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

#ifndef __gen_nsIWebDAVService_h__
#define __gen_nsIWebDAVService_h__


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

#ifndef __gen_nsIWebDAVListener_h__
#include "nsIWebDAVListener.h"
#endif

#ifndef __gen_nsIWebDAVResource_h__
#include "nsIWebDAVResource.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
class nsIStreamListener; /* forward declaration */

class nsIOutputStream; /* forward declaration */

class nsIInputStream; /* forward declaration */

class nsIDOMDocument; /* forward declaration */

class nsIInterfaceRequestor; /* forward declaration */


/* starting interface:    nsIWebDAVService */
#define NS_IWEBDAVSERVICE_IID_STR "173ef52e-2a2f-45ca-8f9f-abc7429163c2"

#define NS_IWEBDAVSERVICE_IID \
  {0x173ef52e, 0x2a2f, 0x45ca, \
    { 0x8f, 0x9f, 0xab, 0xc7, 0x42, 0x91, 0x63, 0xc2 }}

class NS_NO_VTABLE nsIWebDAVService : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IWEBDAVSERVICE_IID)

  /**
     * @param notificationCallbacks  
     *                  The notification callbacks to be passed to the channel
     *                  that will be used to perform this opperation.  This is
     *                  set by clients, who wish to provide a means to receive
     *                  progress, status and protocol-specific notifications.
     *                  
     *                  Interfaces commonly requested include: 
     *                  nsIProgressEventSink, nsIPrompt, and nsIAuthPrompt.
     * @param closure   caller-private data returned via listener
     */
  /* void lockResources (in PRUint32 count, [array, size_is (count)] in nsIWebDAVResource resources, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
  NS_IMETHOD LockResources(PRUint32 count, nsIWebDAVResource **resources, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) = 0;

  /**
     * @param notificationCallbacks  
     *                  The notification callbacks to be passed to the channel
     *                  that will be used to perform this opperation.  This is
     *                  set by clients, who wish to provide a means to receive
     *                  progress, status and protocol-specific notifications.
     *                  
     *                  Interfaces commonly requested include: 
     *                  nsIProgressEventSink, nsIPrompt, and nsIAuthPrompt.
     * @param closure   caller-private data returned via listener
     */
  /* void unlockResources (in PRUint32 count, [array, size_is (count)] in nsIWebDAVResource resources, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
  NS_IMETHOD UnlockResources(PRUint32 count, nsIWebDAVResource **resources, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) = 0;

  /**
     * @param notificationCallbacks  
     *                  The notification callbacks to be passed to the channel
     *                  that will be used to perform this opperation.  This is
     *                  set by clients, who wish to provide a means to receive
     *                  progress, status and protocol-specific notifications.
     *                  
     *                  Interfaces commonly requested include: 
     *                  nsIProgressEventSink, nsIPrompt, and nsIAuthPrompt.
     * @param closure   caller-private data returned via listener
     */
  /* void getResourcePropertyNames (in nsIWebDAVResource resource, in boolean withDepth, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
  NS_IMETHOD GetResourcePropertyNames(nsIWebDAVResource *resource, PRBool withDepth, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) = 0;

  /**
     * @param properties  an array of propertynames, where the namespace
     *                    and the name of the properties are seperated by
     *                    a space
     * @param notificationCallbacks  
     *                  The notification callbacks to be passed to the channel
     *                  that will be used to perform this opperation.  This is
     *                  set by clients, who wish to provide a means to receive
     *                  progress, status and protocol-specific notifications.
     *                  
     *                  Interfaces commonly requested include: 
     *                  nsIProgressEventSink, nsIPrompt, and nsIAuthPrompt.
     * @param closure   caller-private data returned via listener
     */
  /* void getResourceProperties (in nsIWebDAVResource resource, in PRUint32 propCount, [array, size_is (propCount)] in string properties, in boolean withDepth, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
  NS_IMETHOD GetResourceProperties(nsIWebDAVResource *resource, PRUint32 propCount, const char **properties, PRBool withDepth, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) = 0;

  /**
     * @param notificationCallbacks  
     *                  The notification callbacks to be passed to the channel
     *                  that will be used to perform this opperation.  This is
     *                  set by clients, who wish to provide a means to receive
     *                  progress, status and protocol-specific notifications.
     *                  
     *                  Interfaces commonly requested include: 
     *                  nsIProgressEventSink, nsIPrompt, and nsIAuthPrompt.
     * @param closure   caller-private data returned via listener
     */
  /* void getResourceOptions (in nsIWebDAVResource resource, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
  NS_IMETHOD GetResourceOptions(nsIWebDAVResource *resource, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) = 0;

  /**
     * @param notificationCallbacks  
     *                  The notification callbacks to be passed to the channel
     *                  that will be used to perform this opperation.  This is
     *                  set by clients, who wish to provide a means to receive
     *                  progress, status and protocol-specific notifications.
     *                  
     *                  Interfaces commonly requested include: 
     *                  nsIProgressEventSink, nsIPrompt, and nsIAuthPrompt.
     * XXX need to add a closure param
     */
  /* void get (in nsIWebDAVResource resource, in nsIStreamListener listener, in nsIInterfaceRequestor notificationCallbacks); */
  NS_IMETHOD Get(nsIWebDAVResource *resource, nsIStreamListener *listener, nsIInterfaceRequestor *notificationCallbacks) = 0;

  /**
     * GET the resource and stick it in the provided OutputStream.
     * Your output stream must be buffered, or we will fail miserably.
     * I would check that for you and provide a buffered wrapper automatically,
     * but there is no way to check if one is needed!
     *
     * @param notificationCallbacks  
     *                  The notification callbacks to be passed to the channel
     *                  that will be used to perform this opperation.  This is
     *                  set by clients, who wish to provide a means to receive
     *                  progress, status and protocol-specific notifications.
     *                  
     *                  Interfaces commonly requested include: 
     *                  nsIProgressEventSink, nsIPrompt, and nsIAuthPrompt.
     * @param closure   caller-private data returned via listener
     */
  /* void getToOutputStream (in nsIWebDAVResource resource, in nsIOutputStream stream, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
  NS_IMETHOD GetToOutputStream(nsIWebDAVResource *resource, nsIOutputStream *stream, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) = 0;

  /**
     * GET the resource and return it to the listener as a string.
     *
     * @param notificationCallbacks  
     *                  The notification callbacks to be passed to the channel
     *                  that will be used to perform this opperation.  This is
     *                  set by clients, who wish to provide a means to receive
     *                  progress, status and protocol-specific notifications.
     *                  
     *                  Interfaces commonly requested include: 
     *                  nsIProgressEventSink, nsIPrompt, and nsIAuthPrompt.
     * @param closure  caller-private data returned via listener
     */
  /* void getToString (in nsIWebDAVResource resource, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
  NS_IMETHOD GetToString(nsIWebDAVResource *resource, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) = 0;

  /**
     * @param notificationCallbacks  
     *                  The notification callbacks to be passed to the channel
     *                  that will be used to perform this opperation.  This is
     *                  set by clients, who wish to provide a means to receive
     *                  progress, status and protocol-specific notifications.
     *                  
     *                  Interfaces commonly requested include: 
     *                  nsIProgressEventSink, nsIPrompt, and nsIAuthPrompt.
     * @param closure   caller-private data returned via listener
     */
  /* void put (in nsIWebDAVResource resource, in ACString contentType, in nsIInputStream data, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
  NS_IMETHOD Put(nsIWebDAVResource *resource, const nsACString & contentType, nsIInputStream *data, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) = 0;

  /**
     * @param notificationCallbacks  
     *                  The notification callbacks to be passed to the channel
     *                  that will be used to perform this opperation.  This is
     *                  set by clients, who wish to provide a means to receive
     *                  progress, status and protocol-specific notifications.
     *                  
     *                  Interfaces commonly requested include: 
     *                  nsIProgressEventSink, nsIPrompt, and nsIAuthPrompt.
     * @param closure   caller-private data returned via listener
     */
  /* void putFromString (in nsIWebDAVResource resource, in ACString contentType, in AUTF8String data, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
  NS_IMETHOD PutFromString(nsIWebDAVResource *resource, const nsACString & contentType, const nsACString & data, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) = 0;

  /**
     * @param notificationCallbacks  
     *                  The notification callbacks to be passed to the channel
     *                  that will be used to perform this opperation.  This is
     *                  set by clients, who wish to provide a means to receive
     *                  progress, status and protocol-specific notifications.
     *                  
     *                  Interfaces commonly requested include: 
     *                  nsIProgressEventSink, nsIPrompt, and nsIAuthPrompt.
     * @param closure   caller-private data returned via listener
     */
  /* void remove (in nsIWebDAVResource resource, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
  NS_IMETHOD Remove(nsIWebDAVResource *resource, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) = 0;

  /**
     * @param notificationCallbacks  
     *                  The notification callbacks to be passed to the channel
     *                  that will be used to perform this opperation.  This is
     *                  set by clients, who wish to provide a means to receive
     *                  progress, status and protocol-specific notifications.
     *                  
     *                  Interfaces commonly requested include: 
     *                  nsIProgressEventSink, nsIPrompt, and nsIAuthPrompt.
     * @param closure   caller-private data returned via listener
     */
  /* void moveTo (in nsIWebDAVResource resource, in ACString destination, in boolean overwrite, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
  NS_IMETHOD MoveTo(nsIWebDAVResource *resource, const nsACString & destination, PRBool overwrite, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) = 0;

  /**
     * @param notificationCallbacks  
     *                  The notification callbacks to be passed to the channel
     *                  that will be used to perform this opperation.  This is
     *                  set by clients, who wish to provide a means to receive
     *                  progress, status and protocol-specific notifications.
     *                  
     *                  Interfaces commonly requested include: 
     *                  nsIProgressEventSink, nsIPrompt, and nsIAuthPrompt.
     * @param closure   caller-private data returned via listener
     */
  /* void copyTo (in nsIWebDAVResource resource, in ACString destination, in boolean recursive, in boolean overwrite, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
  NS_IMETHOD CopyTo(nsIWebDAVResource *resource, const nsACString & destination, PRBool recursive, PRBool overwrite, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) = 0;

  /**
     * @param notificationCallbacks  
     *                  The notification callbacks to be passed to the channel
     *                  that will be used to perform this opperation.  This is
     *                  set by clients, who wish to provide a means to receive
     *                  progress, status and protocol-specific notifications.
     *                  
     *                  Interfaces commonly requested include: 
     *                  nsIProgressEventSink, nsIPrompt, and nsIAuthPrompt.
     * @param closure   caller-private data returned via listener
     */
  /* void makeCollection (in nsIWebDAVResource resource, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
  NS_IMETHOD MakeCollection(nsIWebDAVResource *resource, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) = 0;

  /**
     * Requests the specified report on the given resource with a Depth: header
     * set to zero.
     * 
     * @param resource  the resource to perform this query on?
     * @param query     an XML document of the query
     * @param withDepth if true, set the Depth header to 1 instead of 0
     * @param listener  results will be called back through this interface
     * @param notificationCallbacks  
     *                  The notification callbacks to be passed to the channel
     *                  that will be used to perform this opperation.  This is
     *                  set by clients, who wish to provide a means to receive
     *                  progress, status and protocol-specific notifications.
     *                  
     *                  Interfaces commonly requested include: 
     *                  nsIProgressEventSink, nsIPrompt, and nsIAuthPrompt.
     * @param closure   caller-private data returned via listener
     */
  /* void report (in nsIWebDAVResource resource, in nsIDOMDocument query, in boolean withDepth, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
  NS_IMETHOD Report(nsIWebDAVResource *resource, nsIDOMDocument *query, PRBool withDepth, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBDAVSERVICE \
  NS_IMETHOD LockResources(PRUint32 count, nsIWebDAVResource **resources, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure); \
  NS_IMETHOD UnlockResources(PRUint32 count, nsIWebDAVResource **resources, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure); \
  NS_IMETHOD GetResourcePropertyNames(nsIWebDAVResource *resource, PRBool withDepth, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure); \
  NS_IMETHOD GetResourceProperties(nsIWebDAVResource *resource, PRUint32 propCount, const char **properties, PRBool withDepth, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure); \
  NS_IMETHOD GetResourceOptions(nsIWebDAVResource *resource, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure); \
  NS_IMETHOD Get(nsIWebDAVResource *resource, nsIStreamListener *listener, nsIInterfaceRequestor *notificationCallbacks); \
  NS_IMETHOD GetToOutputStream(nsIWebDAVResource *resource, nsIOutputStream *stream, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure); \
  NS_IMETHOD GetToString(nsIWebDAVResource *resource, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure); \
  NS_IMETHOD Put(nsIWebDAVResource *resource, const nsACString & contentType, nsIInputStream *data, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure); \
  NS_IMETHOD PutFromString(nsIWebDAVResource *resource, const nsACString & contentType, const nsACString & data, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure); \
  NS_IMETHOD Remove(nsIWebDAVResource *resource, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure); \
  NS_IMETHOD MoveTo(nsIWebDAVResource *resource, const nsACString & destination, PRBool overwrite, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure); \
  NS_IMETHOD CopyTo(nsIWebDAVResource *resource, const nsACString & destination, PRBool recursive, PRBool overwrite, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure); \
  NS_IMETHOD MakeCollection(nsIWebDAVResource *resource, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure); \
  NS_IMETHOD Report(nsIWebDAVResource *resource, nsIDOMDocument *query, PRBool withDepth, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBDAVSERVICE(_to) \
  NS_IMETHOD LockResources(PRUint32 count, nsIWebDAVResource **resources, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return _to LockResources(count, resources, listener, notificationCallbacks, closure); } \
  NS_IMETHOD UnlockResources(PRUint32 count, nsIWebDAVResource **resources, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return _to UnlockResources(count, resources, listener, notificationCallbacks, closure); } \
  NS_IMETHOD GetResourcePropertyNames(nsIWebDAVResource *resource, PRBool withDepth, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return _to GetResourcePropertyNames(resource, withDepth, listener, notificationCallbacks, closure); } \
  NS_IMETHOD GetResourceProperties(nsIWebDAVResource *resource, PRUint32 propCount, const char **properties, PRBool withDepth, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return _to GetResourceProperties(resource, propCount, properties, withDepth, listener, notificationCallbacks, closure); } \
  NS_IMETHOD GetResourceOptions(nsIWebDAVResource *resource, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return _to GetResourceOptions(resource, listener, notificationCallbacks, closure); } \
  NS_IMETHOD Get(nsIWebDAVResource *resource, nsIStreamListener *listener, nsIInterfaceRequestor *notificationCallbacks) { return _to Get(resource, listener, notificationCallbacks); } \
  NS_IMETHOD GetToOutputStream(nsIWebDAVResource *resource, nsIOutputStream *stream, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return _to GetToOutputStream(resource, stream, listener, notificationCallbacks, closure); } \
  NS_IMETHOD GetToString(nsIWebDAVResource *resource, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return _to GetToString(resource, listener, notificationCallbacks, closure); } \
  NS_IMETHOD Put(nsIWebDAVResource *resource, const nsACString & contentType, nsIInputStream *data, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return _to Put(resource, contentType, data, listener, notificationCallbacks, closure); } \
  NS_IMETHOD PutFromString(nsIWebDAVResource *resource, const nsACString & contentType, const nsACString & data, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return _to PutFromString(resource, contentType, data, listener, notificationCallbacks, closure); } \
  NS_IMETHOD Remove(nsIWebDAVResource *resource, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return _to Remove(resource, listener, notificationCallbacks, closure); } \
  NS_IMETHOD MoveTo(nsIWebDAVResource *resource, const nsACString & destination, PRBool overwrite, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return _to MoveTo(resource, destination, overwrite, listener, notificationCallbacks, closure); } \
  NS_IMETHOD CopyTo(nsIWebDAVResource *resource, const nsACString & destination, PRBool recursive, PRBool overwrite, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return _to CopyTo(resource, destination, recursive, overwrite, listener, notificationCallbacks, closure); } \
  NS_IMETHOD MakeCollection(nsIWebDAVResource *resource, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return _to MakeCollection(resource, listener, notificationCallbacks, closure); } \
  NS_IMETHOD Report(nsIWebDAVResource *resource, nsIDOMDocument *query, PRBool withDepth, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return _to Report(resource, query, withDepth, listener, notificationCallbacks, closure); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBDAVSERVICE(_to) \
  NS_IMETHOD LockResources(PRUint32 count, nsIWebDAVResource **resources, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return !_to ? NS_ERROR_NULL_POINTER : _to->LockResources(count, resources, listener, notificationCallbacks, closure); } \
  NS_IMETHOD UnlockResources(PRUint32 count, nsIWebDAVResource **resources, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnlockResources(count, resources, listener, notificationCallbacks, closure); } \
  NS_IMETHOD GetResourcePropertyNames(nsIWebDAVResource *resource, PRBool withDepth, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetResourcePropertyNames(resource, withDepth, listener, notificationCallbacks, closure); } \
  NS_IMETHOD GetResourceProperties(nsIWebDAVResource *resource, PRUint32 propCount, const char **properties, PRBool withDepth, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetResourceProperties(resource, propCount, properties, withDepth, listener, notificationCallbacks, closure); } \
  NS_IMETHOD GetResourceOptions(nsIWebDAVResource *resource, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetResourceOptions(resource, listener, notificationCallbacks, closure); } \
  NS_IMETHOD Get(nsIWebDAVResource *resource, nsIStreamListener *listener, nsIInterfaceRequestor *notificationCallbacks) { return !_to ? NS_ERROR_NULL_POINTER : _to->Get(resource, listener, notificationCallbacks); } \
  NS_IMETHOD GetToOutputStream(nsIWebDAVResource *resource, nsIOutputStream *stream, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetToOutputStream(resource, stream, listener, notificationCallbacks, closure); } \
  NS_IMETHOD GetToString(nsIWebDAVResource *resource, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetToString(resource, listener, notificationCallbacks, closure); } \
  NS_IMETHOD Put(nsIWebDAVResource *resource, const nsACString & contentType, nsIInputStream *data, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return !_to ? NS_ERROR_NULL_POINTER : _to->Put(resource, contentType, data, listener, notificationCallbacks, closure); } \
  NS_IMETHOD PutFromString(nsIWebDAVResource *resource, const nsACString & contentType, const nsACString & data, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return !_to ? NS_ERROR_NULL_POINTER : _to->PutFromString(resource, contentType, data, listener, notificationCallbacks, closure); } \
  NS_IMETHOD Remove(nsIWebDAVResource *resource, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return !_to ? NS_ERROR_NULL_POINTER : _to->Remove(resource, listener, notificationCallbacks, closure); } \
  NS_IMETHOD MoveTo(nsIWebDAVResource *resource, const nsACString & destination, PRBool overwrite, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return !_to ? NS_ERROR_NULL_POINTER : _to->MoveTo(resource, destination, overwrite, listener, notificationCallbacks, closure); } \
  NS_IMETHOD CopyTo(nsIWebDAVResource *resource, const nsACString & destination, PRBool recursive, PRBool overwrite, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyTo(resource, destination, recursive, overwrite, listener, notificationCallbacks, closure); } \
  NS_IMETHOD MakeCollection(nsIWebDAVResource *resource, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return !_to ? NS_ERROR_NULL_POINTER : _to->MakeCollection(resource, listener, notificationCallbacks, closure); } \
  NS_IMETHOD Report(nsIWebDAVResource *resource, nsIDOMDocument *query, PRBool withDepth, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure) { return !_to ? NS_ERROR_NULL_POINTER : _to->Report(resource, query, withDepth, listener, notificationCallbacks, closure); } 

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

/* Header file */
class nsWebDAVService : public nsIWebDAVService
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBDAVSERVICE

  nsWebDAVService();

private:
  ~nsWebDAVService();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebDAVService, nsIWebDAVService)

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

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

/* void lockResources (in PRUint32 count, [array, size_is (count)] in nsIWebDAVResource resources, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
NS_IMETHODIMP nsWebDAVService::LockResources(PRUint32 count, nsIWebDAVResource **resources, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unlockResources (in PRUint32 count, [array, size_is (count)] in nsIWebDAVResource resources, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
NS_IMETHODIMP nsWebDAVService::UnlockResources(PRUint32 count, nsIWebDAVResource **resources, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getResourcePropertyNames (in nsIWebDAVResource resource, in boolean withDepth, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
NS_IMETHODIMP nsWebDAVService::GetResourcePropertyNames(nsIWebDAVResource *resource, PRBool withDepth, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getResourceProperties (in nsIWebDAVResource resource, in PRUint32 propCount, [array, size_is (propCount)] in string properties, in boolean withDepth, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
NS_IMETHODIMP nsWebDAVService::GetResourceProperties(nsIWebDAVResource *resource, PRUint32 propCount, const char **properties, PRBool withDepth, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getResourceOptions (in nsIWebDAVResource resource, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
NS_IMETHODIMP nsWebDAVService::GetResourceOptions(nsIWebDAVResource *resource, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void get (in nsIWebDAVResource resource, in nsIStreamListener listener, in nsIInterfaceRequestor notificationCallbacks); */
NS_IMETHODIMP nsWebDAVService::Get(nsIWebDAVResource *resource, nsIStreamListener *listener, nsIInterfaceRequestor *notificationCallbacks)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getToOutputStream (in nsIWebDAVResource resource, in nsIOutputStream stream, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
NS_IMETHODIMP nsWebDAVService::GetToOutputStream(nsIWebDAVResource *resource, nsIOutputStream *stream, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getToString (in nsIWebDAVResource resource, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
NS_IMETHODIMP nsWebDAVService::GetToString(nsIWebDAVResource *resource, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void put (in nsIWebDAVResource resource, in ACString contentType, in nsIInputStream data, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
NS_IMETHODIMP nsWebDAVService::Put(nsIWebDAVResource *resource, const nsACString & contentType, nsIInputStream *data, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void putFromString (in nsIWebDAVResource resource, in ACString contentType, in AUTF8String data, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
NS_IMETHODIMP nsWebDAVService::PutFromString(nsIWebDAVResource *resource, const nsACString & contentType, const nsACString & data, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void remove (in nsIWebDAVResource resource, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
NS_IMETHODIMP nsWebDAVService::Remove(nsIWebDAVResource *resource, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void moveTo (in nsIWebDAVResource resource, in ACString destination, in boolean overwrite, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
NS_IMETHODIMP nsWebDAVService::MoveTo(nsIWebDAVResource *resource, const nsACString & destination, PRBool overwrite, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void copyTo (in nsIWebDAVResource resource, in ACString destination, in boolean recursive, in boolean overwrite, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
NS_IMETHODIMP nsWebDAVService::CopyTo(nsIWebDAVResource *resource, const nsACString & destination, PRBool recursive, PRBool overwrite, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void makeCollection (in nsIWebDAVResource resource, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
NS_IMETHODIMP nsWebDAVService::MakeCollection(nsIWebDAVResource *resource, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void report (in nsIWebDAVResource resource, in nsIDOMDocument query, in boolean withDepth, in nsIWebDAVOperationListener listener, in nsIInterfaceRequestor notificationCallbacks, in nsISupports closure); */
NS_IMETHODIMP nsWebDAVService::Report(nsIWebDAVResource *resource, nsIDOMDocument *query, PRBool withDepth, nsIWebDAVOperationListener *listener, nsIInterfaceRequestor *notificationCallbacks, nsISupports *closure)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIWebDAVResourceXXX */
#define NS_IWEBDAVRESOURCEXXX_IID_STR "96c8d65a-fa17-408c-8008-1aa2b95952d4"

#define NS_IWEBDAVRESOURCEXXX_IID \
  {0x96c8d65a, 0xfa17, 0x408c, \
    { 0x80, 0x08, 0x1a, 0xa2, 0xb9, 0x59, 0x52, 0xd4 }}

class NS_NO_VTABLE nsIWebDAVResourceXXX : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IWEBDAVRESOURCEXXX_IID)

  /* readonly attribute boolean isCollection; */
  NS_IMETHOD GetIsCollection(PRBool *aIsCollection) = 0;

  /* void setProperties ([array, size_is (count)] in string propname, [array, size_is (count)] in string propvalues, in PRUint32 count); */
  NS_IMETHOD SetProperties(const char **propname, const char **propvalues, PRUint32 count) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWEBDAVRESOURCEXXX \
  NS_IMETHOD GetIsCollection(PRBool *aIsCollection); \
  NS_IMETHOD SetProperties(const char **propname, const char **propvalues, PRUint32 count); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWEBDAVRESOURCEXXX(_to) \
  NS_IMETHOD GetIsCollection(PRBool *aIsCollection) { return _to GetIsCollection(aIsCollection); } \
  NS_IMETHOD SetProperties(const char **propname, const char **propvalues, PRUint32 count) { return _to SetProperties(propname, propvalues, count); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWEBDAVRESOURCEXXX(_to) \
  NS_IMETHOD GetIsCollection(PRBool *aIsCollection) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsCollection(aIsCollection); } \
  NS_IMETHOD SetProperties(const char **propname, const char **propvalues, PRUint32 count) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetProperties(propname, propvalues, count); } 

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

/* Header file */
class nsWebDAVResourceXXX : public nsIWebDAVResourceXXX
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBDAVRESOURCEXXX

  nsWebDAVResourceXXX();

private:
  ~nsWebDAVResourceXXX();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWebDAVResourceXXX, nsIWebDAVResourceXXX)

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

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

/* readonly attribute boolean isCollection; */
NS_IMETHODIMP nsWebDAVResourceXXX::GetIsCollection(PRBool *aIsCollection)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setProperties ([array, size_is (count)] in string propname, [array, size_is (count)] in string propvalues, in PRUint32 count); */
NS_IMETHODIMP nsWebDAVResourceXXX::SetProperties(const char **propname, const char **propvalues, PRUint32 count)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIWebDAVService_h__ */
