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

#ifndef __gen_nsIMsgOfflineImapOperation_h__
#define __gen_nsIMsgOfflineImapOperation_h__


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

#ifndef __gen_MailNewsTypes2_h__
#include "MailNewsTypes2.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
typedef PRUint16 imapMessageFlagsType;

typedef PRInt32 nsOfflineImapOperationType;


/* starting interface:    nsIMsgOfflineImapOperation */
#define NS_IMSGOFFLINEIMAPOPERATION_IID_STR "7cc7dec6-ea50-11d4-a5b7-0060b0fc04b7"

#define NS_IMSGOFFLINEIMAPOPERATION_IID \
  {0x7cc7dec6, 0xea50, 0x11d4, \
    { 0xa5, 0xb7, 0x00, 0x60, 0xb0, 0xfc, 0x04, 0xb7 }}

class NS_NO_VTABLE nsIMsgOfflineImapOperation : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMSGOFFLINEIMAPOPERATION_IID)

  enum { kFlagsChanged = 1 };

  enum { kMsgMoved = 2 };

  enum { kMsgCopy = 4 };

  enum { kMoveResult = 8 };

  enum { kAppendDraft = 16 };

  enum { kAddedHeader = 32 };

  enum { kDeletedMsg = 64 };

  enum { kMsgMarkedDeleted = 128 };

  enum { kAppendTemplate = 256 };

  enum { kDeleteAllMsgs = 512 };

  /* attribute nsOfflineImapOperationType operation; */
  NS_IMETHOD GetOperation(nsOfflineImapOperationType *aOperation) = 0;
  NS_IMETHOD SetOperation(nsOfflineImapOperationType aOperation) = 0;

  /* void clearOperation (in nsOfflineImapOperationType operation); */
  NS_IMETHOD ClearOperation(nsOfflineImapOperationType operation) = 0;

  /* attribute nsMsgKey messageKey; */
  NS_IMETHOD GetMessageKey(nsMsgKey *aMessageKey) = 0;
  NS_IMETHOD SetMessageKey(nsMsgKey aMessageKey) = 0;

  /* attribute imapMessageFlagsType flagOperation; */
  NS_IMETHOD GetFlagOperation(imapMessageFlagsType *aFlagOperation) = 0;
  NS_IMETHOD SetFlagOperation(imapMessageFlagsType aFlagOperation) = 0;

  /* attribute imapMessageFlagsType newFlags; */
  NS_IMETHOD GetNewFlags(imapMessageFlagsType *aNewFlags) = 0;
  NS_IMETHOD SetNewFlags(imapMessageFlagsType aNewFlags) = 0;

  /* attribute string destinationFolderURI; */
  NS_IMETHOD GetDestinationFolderURI(char * *aDestinationFolderURI) = 0;
  NS_IMETHOD SetDestinationFolderURI(const char * aDestinationFolderURI) = 0;

  /* attribute string sourceFolderURI; */
  NS_IMETHOD GetSourceFolderURI(char * *aSourceFolderURI) = 0;
  NS_IMETHOD SetSourceFolderURI(const char * aSourceFolderURI) = 0;

  /* readonly attribute long numberOfCopies; */
  NS_IMETHOD GetNumberOfCopies(PRInt32 *aNumberOfCopies) = 0;

  /* void addMessageCopyOperation (in string destinationBox); */
  NS_IMETHOD AddMessageCopyOperation(const char *destinationBox) = 0;

  /* string getCopyDestination (in long copyIndex); */
  NS_IMETHOD GetCopyDestination(PRInt32 copyIndex, char **_retval) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGOFFLINEIMAPOPERATION \
  NS_IMETHOD GetOperation(nsOfflineImapOperationType *aOperation); \
  NS_IMETHOD SetOperation(nsOfflineImapOperationType aOperation); \
  NS_IMETHOD ClearOperation(nsOfflineImapOperationType operation); \
  NS_IMETHOD GetMessageKey(nsMsgKey *aMessageKey); \
  NS_IMETHOD SetMessageKey(nsMsgKey aMessageKey); \
  NS_IMETHOD GetFlagOperation(imapMessageFlagsType *aFlagOperation); \
  NS_IMETHOD SetFlagOperation(imapMessageFlagsType aFlagOperation); \
  NS_IMETHOD GetNewFlags(imapMessageFlagsType *aNewFlags); \
  NS_IMETHOD SetNewFlags(imapMessageFlagsType aNewFlags); \
  NS_IMETHOD GetDestinationFolderURI(char * *aDestinationFolderURI); \
  NS_IMETHOD SetDestinationFolderURI(const char * aDestinationFolderURI); \
  NS_IMETHOD GetSourceFolderURI(char * *aSourceFolderURI); \
  NS_IMETHOD SetSourceFolderURI(const char * aSourceFolderURI); \
  NS_IMETHOD GetNumberOfCopies(PRInt32 *aNumberOfCopies); \
  NS_IMETHOD AddMessageCopyOperation(const char *destinationBox); \
  NS_IMETHOD GetCopyDestination(PRInt32 copyIndex, char **_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGOFFLINEIMAPOPERATION(_to) \
  NS_IMETHOD GetOperation(nsOfflineImapOperationType *aOperation) { return _to GetOperation(aOperation); } \
  NS_IMETHOD SetOperation(nsOfflineImapOperationType aOperation) { return _to SetOperation(aOperation); } \
  NS_IMETHOD ClearOperation(nsOfflineImapOperationType operation) { return _to ClearOperation(operation); } \
  NS_IMETHOD GetMessageKey(nsMsgKey *aMessageKey) { return _to GetMessageKey(aMessageKey); } \
  NS_IMETHOD SetMessageKey(nsMsgKey aMessageKey) { return _to SetMessageKey(aMessageKey); } \
  NS_IMETHOD GetFlagOperation(imapMessageFlagsType *aFlagOperation) { return _to GetFlagOperation(aFlagOperation); } \
  NS_IMETHOD SetFlagOperation(imapMessageFlagsType aFlagOperation) { return _to SetFlagOperation(aFlagOperation); } \
  NS_IMETHOD GetNewFlags(imapMessageFlagsType *aNewFlags) { return _to GetNewFlags(aNewFlags); } \
  NS_IMETHOD SetNewFlags(imapMessageFlagsType aNewFlags) { return _to SetNewFlags(aNewFlags); } \
  NS_IMETHOD GetDestinationFolderURI(char * *aDestinationFolderURI) { return _to GetDestinationFolderURI(aDestinationFolderURI); } \
  NS_IMETHOD SetDestinationFolderURI(const char * aDestinationFolderURI) { return _to SetDestinationFolderURI(aDestinationFolderURI); } \
  NS_IMETHOD GetSourceFolderURI(char * *aSourceFolderURI) { return _to GetSourceFolderURI(aSourceFolderURI); } \
  NS_IMETHOD SetSourceFolderURI(const char * aSourceFolderURI) { return _to SetSourceFolderURI(aSourceFolderURI); } \
  NS_IMETHOD GetNumberOfCopies(PRInt32 *aNumberOfCopies) { return _to GetNumberOfCopies(aNumberOfCopies); } \
  NS_IMETHOD AddMessageCopyOperation(const char *destinationBox) { return _to AddMessageCopyOperation(destinationBox); } \
  NS_IMETHOD GetCopyDestination(PRInt32 copyIndex, char **_retval) { return _to GetCopyDestination(copyIndex, _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_NSIMSGOFFLINEIMAPOPERATION(_to) \
  NS_IMETHOD GetOperation(nsOfflineImapOperationType *aOperation) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOperation(aOperation); } \
  NS_IMETHOD SetOperation(nsOfflineImapOperationType aOperation) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetOperation(aOperation); } \
  NS_IMETHOD ClearOperation(nsOfflineImapOperationType operation) { return !_to ? NS_ERROR_NULL_POINTER : _to->ClearOperation(operation); } \
  NS_IMETHOD GetMessageKey(nsMsgKey *aMessageKey) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMessageKey(aMessageKey); } \
  NS_IMETHOD SetMessageKey(nsMsgKey aMessageKey) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMessageKey(aMessageKey); } \
  NS_IMETHOD GetFlagOperation(imapMessageFlagsType *aFlagOperation) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFlagOperation(aFlagOperation); } \
  NS_IMETHOD SetFlagOperation(imapMessageFlagsType aFlagOperation) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFlagOperation(aFlagOperation); } \
  NS_IMETHOD GetNewFlags(imapMessageFlagsType *aNewFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNewFlags(aNewFlags); } \
  NS_IMETHOD SetNewFlags(imapMessageFlagsType aNewFlags) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNewFlags(aNewFlags); } \
  NS_IMETHOD GetDestinationFolderURI(char * *aDestinationFolderURI) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDestinationFolderURI(aDestinationFolderURI); } \
  NS_IMETHOD SetDestinationFolderURI(const char * aDestinationFolderURI) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDestinationFolderURI(aDestinationFolderURI); } \
  NS_IMETHOD GetSourceFolderURI(char * *aSourceFolderURI) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSourceFolderURI(aSourceFolderURI); } \
  NS_IMETHOD SetSourceFolderURI(const char * aSourceFolderURI) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSourceFolderURI(aSourceFolderURI); } \
  NS_IMETHOD GetNumberOfCopies(PRInt32 *aNumberOfCopies) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNumberOfCopies(aNumberOfCopies); } \
  NS_IMETHOD AddMessageCopyOperation(const char *destinationBox) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddMessageCopyOperation(destinationBox); } \
  NS_IMETHOD GetCopyDestination(PRInt32 copyIndex, char **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCopyDestination(copyIndex, _retval); } 

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

/* Header file */
class nsMsgOfflineImapOperation : public nsIMsgOfflineImapOperation
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGOFFLINEIMAPOPERATION

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMsgOfflineImapOperation, nsIMsgOfflineImapOperation)

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

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

/* attribute nsOfflineImapOperationType operation; */
NS_IMETHODIMP nsMsgOfflineImapOperation::GetOperation(nsOfflineImapOperationType *aOperation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgOfflineImapOperation::SetOperation(nsOfflineImapOperationType aOperation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void clearOperation (in nsOfflineImapOperationType operation); */
NS_IMETHODIMP nsMsgOfflineImapOperation::ClearOperation(nsOfflineImapOperationType operation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsMsgKey messageKey; */
NS_IMETHODIMP nsMsgOfflineImapOperation::GetMessageKey(nsMsgKey *aMessageKey)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgOfflineImapOperation::SetMessageKey(nsMsgKey aMessageKey)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute imapMessageFlagsType flagOperation; */
NS_IMETHODIMP nsMsgOfflineImapOperation::GetFlagOperation(imapMessageFlagsType *aFlagOperation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgOfflineImapOperation::SetFlagOperation(imapMessageFlagsType aFlagOperation)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute imapMessageFlagsType newFlags; */
NS_IMETHODIMP nsMsgOfflineImapOperation::GetNewFlags(imapMessageFlagsType *aNewFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgOfflineImapOperation::SetNewFlags(imapMessageFlagsType aNewFlags)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string destinationFolderURI; */
NS_IMETHODIMP nsMsgOfflineImapOperation::GetDestinationFolderURI(char * *aDestinationFolderURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgOfflineImapOperation::SetDestinationFolderURI(const char * aDestinationFolderURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string sourceFolderURI; */
NS_IMETHODIMP nsMsgOfflineImapOperation::GetSourceFolderURI(char * *aSourceFolderURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgOfflineImapOperation::SetSourceFolderURI(const char * aSourceFolderURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long numberOfCopies; */
NS_IMETHODIMP nsMsgOfflineImapOperation::GetNumberOfCopies(PRInt32 *aNumberOfCopies)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addMessageCopyOperation (in string destinationBox); */
NS_IMETHODIMP nsMsgOfflineImapOperation::AddMessageCopyOperation(const char *destinationBox)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* string getCopyDestination (in long copyIndex); */
NS_IMETHODIMP nsMsgOfflineImapOperation::GetCopyDestination(PRInt32 copyIndex, char **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIMsgOfflineImapOperation_h__ */
