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

#ifndef __gen_nsIMailboxUrl_h__
#define __gen_nsIMailboxUrl_h__


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

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

#ifndef __gen_nsIFileSpec_h__
#include "nsIFileSpec.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 nsIMsgDBHdr; /* forward declaration */

#include "nsIStreamListener.h"
typedef PRInt32 nsMailboxAction;


/* starting interface:    nsIMailboxUrl */
#define NS_IMAILBOXURL_IID_STR "c272a1c1-c166-11d2-804e-006008128c4e"

#define NS_IMAILBOXURL_IID \
  {0xc272a1c1, 0xc166, 0x11d2, \
    { 0x80, 0x4e, 0x00, 0x60, 0x08, 0x12, 0x8c, 0x4e }}

class NS_NO_VTABLE nsIMailboxUrl : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMAILBOXURL_IID)

  /* attribute nsIStreamListener mailboxParser; */
  NS_IMETHOD GetMailboxParser(nsIStreamListener * *aMailboxParser) = 0;
  NS_IMETHOD SetMailboxParser(nsIStreamListener * aMailboxParser) = 0;

  /* attribute nsIStreamListener mailboxCopyHandler; */
  NS_IMETHOD GetMailboxCopyHandler(nsIStreamListener * *aMailboxCopyHandler) = 0;
  NS_IMETHOD SetMailboxCopyHandler(nsIStreamListener * aMailboxCopyHandler) = 0;

  /* [noscript] readonly attribute nsFileSpecPtr fileSpec; */
  NS_IMETHOD GetFileSpec(nsFileSpec * *aFileSpec) = 0;

  /* readonly attribute nsIMsgDBHdr messageHeader; */
  NS_IMETHOD GetMessageHeader(nsIMsgDBHdr * *aMessageHeader) = 0;

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

  /* void setMoveCopyMsgKeys (out nsMsgKey keysToFlag, in long numKeys); */
  NS_IMETHOD SetMoveCopyMsgKeys(nsMsgKey *keysToFlag, PRInt32 numKeys) = 0;

  /* void getMoveCopyMsgHdrForIndex (in unsigned long msgIndex, out nsIMsgDBHdr msgHdr); */
  NS_IMETHOD GetMoveCopyMsgHdrForIndex(PRUint32 msgIndex, nsIMsgDBHdr **msgHdr) = 0;

  /* readonly attribute unsigned long numMoveCopyMsgs; */
  NS_IMETHOD GetNumMoveCopyMsgs(PRUint32 *aNumMoveCopyMsgs) = 0;

  /* attribute unsigned long curMoveCopyMsgIndex; */
  NS_IMETHOD GetCurMoveCopyMsgIndex(PRUint32 *aCurMoveCopyMsgIndex) = 0;
  NS_IMETHOD SetCurMoveCopyMsgIndex(PRUint32 aCurMoveCopyMsgIndex) = 0;

  /* attribute unsigned long messageSize; */
  NS_IMETHOD GetMessageSize(PRUint32 *aMessageSize) = 0;
  NS_IMETHOD SetMessageSize(PRUint32 aMessageSize) = 0;

  /* attribute nsMailboxAction mailboxAction; */
  NS_IMETHOD GetMailboxAction(nsMailboxAction *aMailboxAction) = 0;
  NS_IMETHOD SetMailboxAction(nsMailboxAction aMailboxAction) = 0;

  enum { ActionParseMailbox = 0 };

  enum { ActionFetchMessage = 1 };

  enum { ActionCopyMessage = 2 };

  enum { ActionMoveMessage = 3 };

  enum { ActionSaveMessageToDisk = 4 };

  enum { ActionAppendMessageToDisk = 5 };

  enum { ActionFetchPart = 6 };

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMAILBOXURL \
  NS_IMETHOD GetMailboxParser(nsIStreamListener * *aMailboxParser); \
  NS_IMETHOD SetMailboxParser(nsIStreamListener * aMailboxParser); \
  NS_IMETHOD GetMailboxCopyHandler(nsIStreamListener * *aMailboxCopyHandler); \
  NS_IMETHOD SetMailboxCopyHandler(nsIStreamListener * aMailboxCopyHandler); \
  NS_IMETHOD GetFileSpec(nsFileSpec * *aFileSpec); \
  NS_IMETHOD GetMessageHeader(nsIMsgDBHdr * *aMessageHeader); \
  NS_IMETHOD GetMessageKey(nsMsgKey *aMessageKey); \
  NS_IMETHOD SetMoveCopyMsgKeys(nsMsgKey *keysToFlag, PRInt32 numKeys); \
  NS_IMETHOD GetMoveCopyMsgHdrForIndex(PRUint32 msgIndex, nsIMsgDBHdr **msgHdr); \
  NS_IMETHOD GetNumMoveCopyMsgs(PRUint32 *aNumMoveCopyMsgs); \
  NS_IMETHOD GetCurMoveCopyMsgIndex(PRUint32 *aCurMoveCopyMsgIndex); \
  NS_IMETHOD SetCurMoveCopyMsgIndex(PRUint32 aCurMoveCopyMsgIndex); \
  NS_IMETHOD GetMessageSize(PRUint32 *aMessageSize); \
  NS_IMETHOD SetMessageSize(PRUint32 aMessageSize); \
  NS_IMETHOD GetMailboxAction(nsMailboxAction *aMailboxAction); \
  NS_IMETHOD SetMailboxAction(nsMailboxAction aMailboxAction); \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMAILBOXURL(_to) \
  NS_IMETHOD GetMailboxParser(nsIStreamListener * *aMailboxParser) { return _to GetMailboxParser(aMailboxParser); } \
  NS_IMETHOD SetMailboxParser(nsIStreamListener * aMailboxParser) { return _to SetMailboxParser(aMailboxParser); } \
  NS_IMETHOD GetMailboxCopyHandler(nsIStreamListener * *aMailboxCopyHandler) { return _to GetMailboxCopyHandler(aMailboxCopyHandler); } \
  NS_IMETHOD SetMailboxCopyHandler(nsIStreamListener * aMailboxCopyHandler) { return _to SetMailboxCopyHandler(aMailboxCopyHandler); } \
  NS_IMETHOD GetFileSpec(nsFileSpec * *aFileSpec) { return _to GetFileSpec(aFileSpec); } \
  NS_IMETHOD GetMessageHeader(nsIMsgDBHdr * *aMessageHeader) { return _to GetMessageHeader(aMessageHeader); } \
  NS_IMETHOD GetMessageKey(nsMsgKey *aMessageKey) { return _to GetMessageKey(aMessageKey); } \
  NS_IMETHOD SetMoveCopyMsgKeys(nsMsgKey *keysToFlag, PRInt32 numKeys) { return _to SetMoveCopyMsgKeys(keysToFlag, numKeys); } \
  NS_IMETHOD GetMoveCopyMsgHdrForIndex(PRUint32 msgIndex, nsIMsgDBHdr **msgHdr) { return _to GetMoveCopyMsgHdrForIndex(msgIndex, msgHdr); } \
  NS_IMETHOD GetNumMoveCopyMsgs(PRUint32 *aNumMoveCopyMsgs) { return _to GetNumMoveCopyMsgs(aNumMoveCopyMsgs); } \
  NS_IMETHOD GetCurMoveCopyMsgIndex(PRUint32 *aCurMoveCopyMsgIndex) { return _to GetCurMoveCopyMsgIndex(aCurMoveCopyMsgIndex); } \
  NS_IMETHOD SetCurMoveCopyMsgIndex(PRUint32 aCurMoveCopyMsgIndex) { return _to SetCurMoveCopyMsgIndex(aCurMoveCopyMsgIndex); } \
  NS_IMETHOD GetMessageSize(PRUint32 *aMessageSize) { return _to GetMessageSize(aMessageSize); } \
  NS_IMETHOD SetMessageSize(PRUint32 aMessageSize) { return _to SetMessageSize(aMessageSize); } \
  NS_IMETHOD GetMailboxAction(nsMailboxAction *aMailboxAction) { return _to GetMailboxAction(aMailboxAction); } \
  NS_IMETHOD SetMailboxAction(nsMailboxAction aMailboxAction) { return _to SetMailboxAction(aMailboxAction); } \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMAILBOXURL(_to) \
  NS_IMETHOD GetMailboxParser(nsIStreamListener * *aMailboxParser) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMailboxParser(aMailboxParser); } \
  NS_IMETHOD SetMailboxParser(nsIStreamListener * aMailboxParser) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMailboxParser(aMailboxParser); } \
  NS_IMETHOD GetMailboxCopyHandler(nsIStreamListener * *aMailboxCopyHandler) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMailboxCopyHandler(aMailboxCopyHandler); } \
  NS_IMETHOD SetMailboxCopyHandler(nsIStreamListener * aMailboxCopyHandler) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMailboxCopyHandler(aMailboxCopyHandler); } \
  NS_IMETHOD GetFileSpec(nsFileSpec * *aFileSpec) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFileSpec(aFileSpec); } \
  NS_IMETHOD GetMessageHeader(nsIMsgDBHdr * *aMessageHeader) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMessageHeader(aMessageHeader); } \
  NS_IMETHOD GetMessageKey(nsMsgKey *aMessageKey) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMessageKey(aMessageKey); } \
  NS_IMETHOD SetMoveCopyMsgKeys(nsMsgKey *keysToFlag, PRInt32 numKeys) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMoveCopyMsgKeys(keysToFlag, numKeys); } \
  NS_IMETHOD GetMoveCopyMsgHdrForIndex(PRUint32 msgIndex, nsIMsgDBHdr **msgHdr) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMoveCopyMsgHdrForIndex(msgIndex, msgHdr); } \
  NS_IMETHOD GetNumMoveCopyMsgs(PRUint32 *aNumMoveCopyMsgs) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNumMoveCopyMsgs(aNumMoveCopyMsgs); } \
  NS_IMETHOD GetCurMoveCopyMsgIndex(PRUint32 *aCurMoveCopyMsgIndex) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCurMoveCopyMsgIndex(aCurMoveCopyMsgIndex); } \
  NS_IMETHOD SetCurMoveCopyMsgIndex(PRUint32 aCurMoveCopyMsgIndex) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCurMoveCopyMsgIndex(aCurMoveCopyMsgIndex); } \
  NS_IMETHOD GetMessageSize(PRUint32 *aMessageSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMessageSize(aMessageSize); } \
  NS_IMETHOD SetMessageSize(PRUint32 aMessageSize) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMessageSize(aMessageSize); } \
  NS_IMETHOD GetMailboxAction(nsMailboxAction *aMailboxAction) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMailboxAction(aMailboxAction); } \
  NS_IMETHOD SetMailboxAction(nsMailboxAction aMailboxAction) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMailboxAction(aMailboxAction); } \

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

/* Header file */
class nsMailboxUrl : public nsIMailboxUrl
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMAILBOXURL

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsMailboxUrl, nsIMailboxUrl)

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

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

/* attribute nsIStreamListener mailboxParser; */
NS_IMETHODIMP nsMailboxUrl::GetMailboxParser(nsIStreamListener * *aMailboxParser)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMailboxUrl::SetMailboxParser(nsIStreamListener * aMailboxParser)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIStreamListener mailboxCopyHandler; */
NS_IMETHODIMP nsMailboxUrl::GetMailboxCopyHandler(nsIStreamListener * *aMailboxCopyHandler)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMailboxUrl::SetMailboxCopyHandler(nsIStreamListener * aMailboxCopyHandler)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] readonly attribute nsFileSpecPtr fileSpec; */
NS_IMETHODIMP nsMailboxUrl::GetFileSpec(nsFileSpec * *aFileSpec)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMsgDBHdr messageHeader; */
NS_IMETHODIMP nsMailboxUrl::GetMessageHeader(nsIMsgDBHdr * *aMessageHeader)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

/* void setMoveCopyMsgKeys (out nsMsgKey keysToFlag, in long numKeys); */
NS_IMETHODIMP nsMailboxUrl::SetMoveCopyMsgKeys(nsMsgKey *keysToFlag, PRInt32 numKeys)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMoveCopyMsgHdrForIndex (in unsigned long msgIndex, out nsIMsgDBHdr msgHdr); */
NS_IMETHODIMP nsMailboxUrl::GetMoveCopyMsgHdrForIndex(PRUint32 msgIndex, nsIMsgDBHdr **msgHdr)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long numMoveCopyMsgs; */
NS_IMETHODIMP nsMailboxUrl::GetNumMoveCopyMsgs(PRUint32 *aNumMoveCopyMsgs)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long curMoveCopyMsgIndex; */
NS_IMETHODIMP nsMailboxUrl::GetCurMoveCopyMsgIndex(PRUint32 *aCurMoveCopyMsgIndex)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMailboxUrl::SetCurMoveCopyMsgIndex(PRUint32 aCurMoveCopyMsgIndex)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long messageSize; */
NS_IMETHODIMP nsMailboxUrl::GetMessageSize(PRUint32 *aMessageSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMailboxUrl::SetMessageSize(PRUint32 aMessageSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsMailboxAction mailboxAction; */
NS_IMETHODIMP nsMailboxUrl::GetMailboxAction(nsMailboxAction *aMailboxAction)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMailboxUrl::SetMailboxAction(nsMailboxAction aMailboxAction)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIMailboxUrl_h__ */
