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

#ifndef __gen_nsIMsgCopyService_h__
#define __gen_nsIMsgCopyService_h__


#ifndef __gen_nsrootidl_h__
#include "nsrootidl.h"
#endif

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

#ifndef __gen_nsIMsgFolder_h__
#include "nsIMsgFolder.h"
#endif

#ifndef __gen_nsIMsgCopyServiceListener_h__
#include "nsIMsgCopyServiceListener.h"
#endif

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

#include "nsITransactionManager.h"
class nsITransactionManager; /* forward declaration */

class nsIMsgWindow; /* forward declaration */

class nsIFile; /* forward declaration */

class nsIArray; /* forward declaration */


/* starting interface:    nsIMsgCopyService */
#define NS_IMSGCOPYSERVICE_IID_STR "f21e428b-73c5-4607-993b-d37325b33722"

#define NS_IMSGCOPYSERVICE_IID \
  {0xf21e428b, 0x73c5, 0x4607, \
    { 0x99, 0x3b, 0xd3, 0x73, 0x25, 0xb3, 0x37, 0x22 }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIMsgCopyService : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGCOPYSERVICE_IID)

  /* void CopyMessages (in nsIMsgFolder srcFolder, in nsIArray messages, in nsIMsgFolder dstFolder, in boolean isMove, in nsIMsgCopyServiceListener listener, in nsIMsgWindow msgWindow, in boolean allowUndo); */
  NS_SCRIPTABLE NS_IMETHOD CopyMessages(nsIMsgFolder *srcFolder, nsIArray *messages, nsIMsgFolder *dstFolder, PRBool isMove, nsIMsgCopyServiceListener *listener, nsIMsgWindow *msgWindow, PRBool allowUndo) = 0;

  /* void CopyFolders (in nsIArray folders, in nsIMsgFolder dstFolder, in boolean isMove, in nsIMsgCopyServiceListener listener, in nsIMsgWindow msgWindow); */
  NS_SCRIPTABLE NS_IMETHOD CopyFolders(nsIArray *folders, nsIMsgFolder *dstFolder, PRBool isMove, nsIMsgCopyServiceListener *listener, nsIMsgWindow *msgWindow) = 0;

  /* void CopyFileMessage (in nsIFile aFile, in nsIMsgFolder dstFolder, in nsIMsgDBHdr msgToReplace, in boolean isDraftOrTemplate, in unsigned long aMsgFlags, in ACString aMsgKeywords, in nsIMsgCopyServiceListener listener, in nsIMsgWindow msgWindow); */
  NS_SCRIPTABLE NS_IMETHOD CopyFileMessage(nsIFile *aFile, nsIMsgFolder *dstFolder, nsIMsgDBHdr *msgToReplace, PRBool isDraftOrTemplate, PRUint32 aMsgFlags, const nsACString & aMsgKeywords, nsIMsgCopyServiceListener *listener, nsIMsgWindow *msgWindow) = 0;

  /* void NotifyCompletion (in nsISupports aSupport, in nsIMsgFolder dstFolder, in nsresult result); */
  NS_SCRIPTABLE NS_IMETHOD NotifyCompletion(nsISupports *aSupport, nsIMsgFolder *dstFolder, nsresult result) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgCopyService, NS_IMSGCOPYSERVICE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGCOPYSERVICE \
  NS_SCRIPTABLE NS_IMETHOD CopyMessages(nsIMsgFolder *srcFolder, nsIArray *messages, nsIMsgFolder *dstFolder, PRBool isMove, nsIMsgCopyServiceListener *listener, nsIMsgWindow *msgWindow, PRBool allowUndo); \
  NS_SCRIPTABLE NS_IMETHOD CopyFolders(nsIArray *folders, nsIMsgFolder *dstFolder, PRBool isMove, nsIMsgCopyServiceListener *listener, nsIMsgWindow *msgWindow); \
  NS_SCRIPTABLE NS_IMETHOD CopyFileMessage(nsIFile *aFile, nsIMsgFolder *dstFolder, nsIMsgDBHdr *msgToReplace, PRBool isDraftOrTemplate, PRUint32 aMsgFlags, const nsACString & aMsgKeywords, nsIMsgCopyServiceListener *listener, nsIMsgWindow *msgWindow); \
  NS_SCRIPTABLE NS_IMETHOD NotifyCompletion(nsISupports *aSupport, nsIMsgFolder *dstFolder, nsresult result); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGCOPYSERVICE(_to) \
  NS_SCRIPTABLE NS_IMETHOD CopyMessages(nsIMsgFolder *srcFolder, nsIArray *messages, nsIMsgFolder *dstFolder, PRBool isMove, nsIMsgCopyServiceListener *listener, nsIMsgWindow *msgWindow, PRBool allowUndo) { return _to CopyMessages(srcFolder, messages, dstFolder, isMove, listener, msgWindow, allowUndo); } \
  NS_SCRIPTABLE NS_IMETHOD CopyFolders(nsIArray *folders, nsIMsgFolder *dstFolder, PRBool isMove, nsIMsgCopyServiceListener *listener, nsIMsgWindow *msgWindow) { return _to CopyFolders(folders, dstFolder, isMove, listener, msgWindow); } \
  NS_SCRIPTABLE NS_IMETHOD CopyFileMessage(nsIFile *aFile, nsIMsgFolder *dstFolder, nsIMsgDBHdr *msgToReplace, PRBool isDraftOrTemplate, PRUint32 aMsgFlags, const nsACString & aMsgKeywords, nsIMsgCopyServiceListener *listener, nsIMsgWindow *msgWindow) { return _to CopyFileMessage(aFile, dstFolder, msgToReplace, isDraftOrTemplate, aMsgFlags, aMsgKeywords, listener, msgWindow); } \
  NS_SCRIPTABLE NS_IMETHOD NotifyCompletion(nsISupports *aSupport, nsIMsgFolder *dstFolder, nsresult result) { return _to NotifyCompletion(aSupport, dstFolder, result); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGCOPYSERVICE(_to) \
  NS_SCRIPTABLE NS_IMETHOD CopyMessages(nsIMsgFolder *srcFolder, nsIArray *messages, nsIMsgFolder *dstFolder, PRBool isMove, nsIMsgCopyServiceListener *listener, nsIMsgWindow *msgWindow, PRBool allowUndo) { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyMessages(srcFolder, messages, dstFolder, isMove, listener, msgWindow, allowUndo); } \
  NS_SCRIPTABLE NS_IMETHOD CopyFolders(nsIArray *folders, nsIMsgFolder *dstFolder, PRBool isMove, nsIMsgCopyServiceListener *listener, nsIMsgWindow *msgWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyFolders(folders, dstFolder, isMove, listener, msgWindow); } \
  NS_SCRIPTABLE NS_IMETHOD CopyFileMessage(nsIFile *aFile, nsIMsgFolder *dstFolder, nsIMsgDBHdr *msgToReplace, PRBool isDraftOrTemplate, PRUint32 aMsgFlags, const nsACString & aMsgKeywords, nsIMsgCopyServiceListener *listener, nsIMsgWindow *msgWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyFileMessage(aFile, dstFolder, msgToReplace, isDraftOrTemplate, aMsgFlags, aMsgKeywords, listener, msgWindow); } \
  NS_SCRIPTABLE NS_IMETHOD NotifyCompletion(nsISupports *aSupport, nsIMsgFolder *dstFolder, nsresult result) { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyCompletion(aSupport, dstFolder, result); } 

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

/* Header file */
class nsMsgCopyService : public nsIMsgCopyService
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGCOPYSERVICE

  nsMsgCopyService();

private:
  ~nsMsgCopyService();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgCopyService, nsIMsgCopyService)

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

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

/* void CopyMessages (in nsIMsgFolder srcFolder, in nsIArray messages, in nsIMsgFolder dstFolder, in boolean isMove, in nsIMsgCopyServiceListener listener, in nsIMsgWindow msgWindow, in boolean allowUndo); */
NS_IMETHODIMP nsMsgCopyService::CopyMessages(nsIMsgFolder *srcFolder, nsIArray *messages, nsIMsgFolder *dstFolder, PRBool isMove, nsIMsgCopyServiceListener *listener, nsIMsgWindow *msgWindow, PRBool allowUndo)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void CopyFolders (in nsIArray folders, in nsIMsgFolder dstFolder, in boolean isMove, in nsIMsgCopyServiceListener listener, in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgCopyService::CopyFolders(nsIArray *folders, nsIMsgFolder *dstFolder, PRBool isMove, nsIMsgCopyServiceListener *listener, nsIMsgWindow *msgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void CopyFileMessage (in nsIFile aFile, in nsIMsgFolder dstFolder, in nsIMsgDBHdr msgToReplace, in boolean isDraftOrTemplate, in unsigned long aMsgFlags, in ACString aMsgKeywords, in nsIMsgCopyServiceListener listener, in nsIMsgWindow msgWindow); */
NS_IMETHODIMP nsMsgCopyService::CopyFileMessage(nsIFile *aFile, nsIMsgFolder *dstFolder, nsIMsgDBHdr *msgToReplace, PRBool isDraftOrTemplate, PRUint32 aMsgFlags, const nsACString & aMsgKeywords, nsIMsgCopyServiceListener *listener, nsIMsgWindow *msgWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void NotifyCompletion (in nsISupports aSupport, in nsIMsgFolder dstFolder, in nsresult result); */
NS_IMETHODIMP nsMsgCopyService::NotifyCompletion(nsISupports *aSupport, nsIMsgFolder *dstFolder, nsresult result)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIMsgCopyService_h__ */
