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

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


/* starting interface:    nsMsgMessageFlags */
#define NS_MSGMESSAGEFLAGS_IID_STR "1ea3acdb-7b9f-4e35-9513-76e0a0cc6baa"

#define NS_MSGMESSAGEFLAGS_IID \
  {0x1ea3acdb, 0x7b9f, 0x4e35, \
    { 0x95, 0x13, 0x76, 0xe0, 0xa0, 0xcc, 0x6b, 0xaa }}

class NS_NO_VTABLE NS_SCRIPTABLE nsMsgMessageFlags {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_MSGMESSAGEFLAGS_IID)

  enum { Read = 1U };

  enum { Replied = 2U };

  enum { Marked = 4U };

  /**
   * This message has already gone, but the folder hasn't been compacted yet.
   * Since actually removing a message from a folder is a semi-expensive
   * operation, we tend to delay it; messages with this bit set will be removed
   * the next time folder compaction is done.  Once this bit is set, it never
   * gets un-set.
   */
  enum { Expunged = 8U };

  /**
   * The subject of this message has "Re:" on the front.  The folder summary
   * uniquifies all of the strings in it, and to help this, any string which
   * begins with "Re:" has that stripped first.  This bit is then set, so that
   * when presenting the message, we know to put it back (since the "Re:" is
   * not itself stored in the file.)
   */
  enum { HasRe = 16U };

  enum { Elided = 32U };

  enum { Offline = 128U };

  enum { Watched = 256U };

  enum { SenderAuthed = 512U };

  /**
   * This message's body is only the first ten or so of the message, and we
   * need to add a link to let the user download the rest of it from the POP
   * server.
   */
  enum { Partial = 1024U };

  /**
   * This message is queued for delivery.  This only ever gets set on messages
   * in the queue folder, but is used to protect against the case of othe
   * messages having made their way in there somehow -- if some other program
   * put a message in the queue, we don't want to later deliver it!
   */
  enum { Queued = 2048U };

  enum { Forwarded = 4096U };

  /**
   * These are used to remember the message priority in the mozilla status
   * flags, so we can regenerate a priority after a rule (or user) has changed
   * it. They are not returned in MSG_MessageLine.flags, just in mozilla-status,
   * so if you need more non-persistent flags, you could share these bits. But
   * it would be wrong.
   */
  enum { Priorities = 57344U };

  enum { New = 65536U };

  enum { Ignored = 262144U };

  enum { IMAPDeleted = 2097152U };

  /**
   * This message has requested to send a message delivery notification to its
   * sender
   */
  enum { MDNReportNeeded = 4194304U };

  /**
   * A message delivery notification has been sent for this message. No more
   * reports should be sent.
   */
  enum { MDNReportSent = 8388608U };

  enum { Template = 16777216U };

  enum { Attachment = 268435456U };

  /**
   * These are used to remember the message labels in the mozilla status2
   * flags. so we can regenerate a priority after a  rule (or user) has changed
   * it. They are not returned in nsMsgHdr.flags, just in mozilla-status2, so
   * if you need more non-persistent flags, you could share these bits. But it
   * would be wrong.
   */
  enum { Labels = 234881024U };

  enum { RuntimeOnly = 32U };

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsMsgMessageFlags, NS_MSGMESSAGEFLAGS_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSMSGMESSAGEFLAGS \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSMSGMESSAGEFLAGS(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSMSGMESSAGEFLAGS(_to) \

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

/* Header file */
class _MYCLASS_ : public nsMsgMessageFlags
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSMSGMESSAGEFLAGS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, nsMsgMessageFlags)

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

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

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

typedef PRUint32  nsMsgProcessingFlagType;


/* starting interface:    nsMsgProcessingFlags */
#define NS_MSGPROCESSINGFLAGS_IID_STR "1f7d642b-de2a-45f0-a27f-9c9ce0b741d8"

#define NS_MSGPROCESSINGFLAGS_IID \
  {0x1f7d642b, 0xde2a, 0x45f0, \
    { 0xa2, 0x7f, 0x9c, 0x9c, 0xe0, 0xb7, 0x41, 0xd8 }}

/**
 * Definitions of processing flags. These flags are not saved to the database.
 * They are used to define states for message processing. Any changes
 * to these flags need to be supported in the key sets in nsMsgDBFolder
 */
class NS_NO_VTABLE NS_SCRIPTABLE nsMsgProcessingFlags {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_MSGPROCESSINGFLAGS_IID)

  enum { ClassifyJunk = 1U };

  enum { ClassifyTraits = 2U };

  enum { TraitsDone = 4U };

  enum { FiltersDone = 8U };

  enum { FilterToMove = 16U };

  /**
   * This message is new to the folder and has yet to be reported via the
   *  msgsClassified notification. This flag is required because the previously
   *  used mechanism relied on the database's list of new messages and its
   *  concept of 'new' is overloaded and has user-visible ramifications.  This
   *  led to messages potentially being considered multiple times.
   *
   * Unfortunately none of the Done processing flags above are suitable for our
   *  needs because they are not consistently applied and basically constitute
   *  memory leaks (which makes the not consistently applied thing a good
   *  thing.)
   *
   * I suspect we cannot reliably convert the Done flags above to our use case
   *  either because of the situation where the user quits the program after the
   *  messages are added but before the messages are processed.  Since the
   *  processing flags are suppression flags, assuming the 'new' status is
   *  persisted to the next time we are run, then this would represent a
   *  change in behaviour.  I would need to exactly understand the new semantics
   *  to know for sure though.
   */
  enum { NotReportedClassified = 32U };

  enum { NumberOfFlags = 6U };

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsMsgProcessingFlags, NS_MSGPROCESSINGFLAGS_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSMSGPROCESSINGFLAGS \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSMSGPROCESSINGFLAGS(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSMSGPROCESSINGFLAGS(_to) \

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

/* Header file */
class _MYCLASS_ : public nsMsgProcessingFlags
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSMSGPROCESSINGFLAGS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, nsMsgProcessingFlags)

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

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

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


#endif /* __gen_nsMsgMessageFlags_h__ */
