/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM $SRCDIR/dom/serializers/nsIDocumentEncoder.idl
 */

#ifndef __gen_nsIDocumentEncoder_h__
#define __gen_nsIDocumentEncoder_h__


#include "nsISupports.h"

#include "js/GCAnnotations.h"

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

namespace mozilla {
namespace dom {
class Document; /* webidl Document */
} // namespace dom
} // namespace mozilla

class nsINode; /* webidl Node */

namespace mozilla {
namespace dom {
class Range; /* webidl Range */
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace dom {
class Selection; /* webidl Selection */
} // namespace dom
} // namespace mozilla


/* starting interface:    nsIDocumentEncoderNodeFixup */
#define NS_IDOCUMENTENCODERNODEFIXUP_IID_STR "3d9371d8-a2ad-403e-8b0e-8885ad3562e3"

#define NS_IDOCUMENTENCODERNODEFIXUP_IID \
  {0x3d9371d8, 0xa2ad, 0x403e, \
    { 0x8b, 0x0e, 0x88, 0x85, 0xad, 0x35, 0x62, 0xe3 }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsIDocumentEncoderNodeFixup) nsIDocumentEncoderNodeFixup : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_IDOCUMENTENCODERNODEFIXUP_IID)

  /* Used by ToJSValue to check which scriptable interface is implemented. */
  using ScriptableInterfaceType = nsIDocumentEncoderNodeFixup;

  /* Node fixupNode (in Node aNode, out boolean aSerializeCloneKids); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoderNodeFixup_fixupNode)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD FixupNode(nsINode *aNode, bool *aSerializeCloneKids, nsINode **_retval) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIDOCUMENTENCODERNODEFIXUP \
  NS_IMETHOD FixupNode(nsINode *aNode, bool *aSerializeCloneKids, nsINode **_retval) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_NSIDOCUMENTENCODERNODEFIXUP \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoderNodeFixup_fixupNode)\
  nsresult FixupNode(nsINode *aNode, bool *aSerializeCloneKids, nsINode **_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIDOCUMENTENCODERNODEFIXUP(_to) \
  NS_IMETHOD FixupNode(nsINode *aNode, bool *aSerializeCloneKids, nsINode **_retval) override { return _to FixupNode(aNode, aSerializeCloneKids, _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_NSIDOCUMENTENCODERNODEFIXUP(_to) \
  NS_IMETHOD FixupNode(nsINode *aNode, bool *aSerializeCloneKids, nsINode **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->FixupNode(aNode, aSerializeCloneKids, _retval); } 


/* starting interface:    nsIDocumentEncoder */
#define NS_IDOCUMENTENCODER_IID_STR "21f112df-d96f-47da-bfcb-5331273003d1"

#define NS_IDOCUMENTENCODER_IID \
  {0x21f112df, 0xd96f, 0x47da, \
    { 0xbf, 0xcb, 0x53, 0x31, 0x27, 0x30, 0x03, 0xd1 }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsIDocumentEncoder) nsIDocumentEncoder : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_IDOCUMENTENCODER_IID)

  /* Used by ToJSValue to check which scriptable interface is implemented. */
  using ScriptableInterfaceType = nsIDocumentEncoder;

  enum {
    OutputSelectionOnly MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputSelectionOnly) = 1U,
    OutputFormatted MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputFormatted) = 2U,
    OutputRaw MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputRaw) = 4U,
    OutputBodyOnly MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputBodyOnly) = 8U,
    OutputPreformatted MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputPreformatted) = 16U,
    OutputWrap MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputWrap) = 32U,
    OutputFormatFlowed MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputFormatFlowed) = 64U,
    OutputAbsoluteLinks MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputAbsoluteLinks) = 128U,
    OutputCRLineBreak MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputCRLineBreak) = 512U,
    OutputLFLineBreak MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputLFLineBreak) = 1024U,
    OutputNoScriptContent MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputNoScriptContent) = 2048U,
    OutputNoFramesContent MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputNoFramesContent) = 4096U,
    OutputNoFormattingInPre MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputNoFormattingInPre) = 8192U,
    OutputEncodeBasicEntities MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputEncodeBasicEntities) = 16384U,
    OutputPersistNBSP MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputPersistNBSP) = 131072U,
    OutputDontRewriteEncodingDeclaration MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputDontRewriteEncodingDeclaration) = 262144U,
    SkipInvisibleContent MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_SkipInvisibleContent) = 524288U,
    OutputFormatDelSp MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputFormatDelSp) = 1048576U,
    OutputDropInvisibleBreak MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputDropInvisibleBreak) = 2097152U,
    OutputIgnoreMozDirty MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputIgnoreMozDirty) = 4194304U,
    OutputForPlainTextClipboardCopy MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputForPlainTextClipboardCopy) = 33554432U,
    OutputRubyAnnotation MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputRubyAnnotation) = 67108864U,
    OutputDisallowLineBreaking MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_OutputDisallowLineBreaking) = 134217728U,
    RequiresReinitAfterOutput MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_RequiresReinitAfterOutput) = 268435456U,
    AllowCrossShadowBoundary MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_AllowCrossShadowBoundary) = 536870912U,
    MimicChromeToStringBehaviour MOZ_BINDING(binding_to, idl, const, XPIDL_nsIDocumentEncoder_MimicChromeToStringBehaviour) = 1073741824U
  };

  /* void init (in Document aDocument, in AString aMimeType, in unsigned long aFlags); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_init)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD Init(mozilla::dom::Document *aDocument, const nsAString& aMimeType, uint32_t aFlags) = 0;

  /* void setSelection (in Selection aSelection); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_setSelection)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD SetSelection(mozilla::dom::Selection *aSelection) = 0;

  /* void setRange (in Range aRange); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_setRange)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD SetRange(mozilla::dom::Range *aRange) = 0;

  /* void setNode (in Node aNode); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_setNode)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD SetNode(nsINode *aNode) = 0;

  /* void setContainerNode (in Node aContainer); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_setContainerNode)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD SetContainerNode(nsINode *aContainer) = 0;

  /* void setCharset (in ACString aCharset); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_setCharset)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD SetCharset(const nsACString& aCharset) = 0;

  /* void setWrapColumn (in unsigned long aWrapColumn); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_setWrapColumn)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD SetWrapColumn(uint32_t aWrapColumn) = 0;

  /* readonly attribute AString mimeType; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIDocumentEncoder_mimeType)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetMimeType(nsAString& aMimeType) = 0;

  /* void encodeToStream (in nsIOutputStream aStream); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_encodeToStream)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD EncodeToStream(nsIOutputStream *aStream) = 0;

  /* AString encodeToString (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_encodeToString)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD EncodeToString(nsAString& _retval) = 0;

  /* AString encodeToStringWithContext (out AString aContextString, out AString aInfoString); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_encodeToStringWithContext)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD EncodeToStringWithContext(nsAString& aContextString, nsAString& aInfoString, nsAString& _retval) = 0;

  /* AString encodeToStringWithMaxLength (in unsigned long aMaxLength); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_encodeToStringWithMaxLength)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD EncodeToStringWithMaxLength(uint32_t aMaxLength, nsAString& _retval) = 0;

  /* void setNodeFixup (in nsIDocumentEncoderNodeFixup aFixup); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_setNodeFixup)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD SetNodeFixup(nsIDocumentEncoderNodeFixup *aFixup) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIDOCUMENTENCODER \
  NS_IMETHOD Init(mozilla::dom::Document *aDocument, const nsAString& aMimeType, uint32_t aFlags) override; \
  NS_IMETHOD SetSelection(mozilla::dom::Selection *aSelection) override; \
  NS_IMETHOD SetRange(mozilla::dom::Range *aRange) override; \
  NS_IMETHOD SetNode(nsINode *aNode) override; \
  NS_IMETHOD SetContainerNode(nsINode *aContainer) override; \
  NS_IMETHOD SetCharset(const nsACString& aCharset) override; \
  NS_IMETHOD SetWrapColumn(uint32_t aWrapColumn) override; \
  NS_IMETHOD GetMimeType(nsAString& aMimeType) override; \
  NS_IMETHOD EncodeToStream(nsIOutputStream *aStream) override; \
  NS_IMETHOD EncodeToString(nsAString& _retval) override; \
  NS_IMETHOD EncodeToStringWithContext(nsAString& aContextString, nsAString& aInfoString, nsAString& _retval) override; \
  NS_IMETHOD EncodeToStringWithMaxLength(uint32_t aMaxLength, nsAString& _retval) override; \
  NS_IMETHOD SetNodeFixup(nsIDocumentEncoderNodeFixup *aFixup) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_NSIDOCUMENTENCODER \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_init)\
  nsresult Init(mozilla::dom::Document *aDocument, const nsAString& aMimeType, uint32_t aFlags); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_setSelection)\
  nsresult SetSelection(mozilla::dom::Selection *aSelection); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_setRange)\
  nsresult SetRange(mozilla::dom::Range *aRange); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_setNode)\
  nsresult SetNode(nsINode *aNode); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_setContainerNode)\
  nsresult SetContainerNode(nsINode *aContainer); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_setCharset)\
  nsresult SetCharset(const nsACString& aCharset); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_setWrapColumn)\
  nsresult SetWrapColumn(uint32_t aWrapColumn); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIDocumentEncoder_mimeType)\
  nsresult GetMimeType(nsAString& aMimeType); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_encodeToStream)\
  nsresult EncodeToStream(nsIOutputStream *aStream); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_encodeToString)\
  nsresult EncodeToString(nsAString& _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_encodeToStringWithContext)\
  nsresult EncodeToStringWithContext(nsAString& aContextString, nsAString& aInfoString, nsAString& _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_encodeToStringWithMaxLength)\
  nsresult EncodeToStringWithMaxLength(uint32_t aMaxLength, nsAString& _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIDocumentEncoder_setNodeFixup)\
  nsresult SetNodeFixup(nsIDocumentEncoderNodeFixup *aFixup); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIDOCUMENTENCODER(_to) \
  NS_IMETHOD Init(mozilla::dom::Document *aDocument, const nsAString& aMimeType, uint32_t aFlags) override { return _to Init(aDocument, aMimeType, aFlags); } \
  NS_IMETHOD SetSelection(mozilla::dom::Selection *aSelection) override { return _to SetSelection(aSelection); } \
  NS_IMETHOD SetRange(mozilla::dom::Range *aRange) override { return _to SetRange(aRange); } \
  NS_IMETHOD SetNode(nsINode *aNode) override { return _to SetNode(aNode); } \
  NS_IMETHOD SetContainerNode(nsINode *aContainer) override { return _to SetContainerNode(aContainer); } \
  NS_IMETHOD SetCharset(const nsACString& aCharset) override { return _to SetCharset(aCharset); } \
  NS_IMETHOD SetWrapColumn(uint32_t aWrapColumn) override { return _to SetWrapColumn(aWrapColumn); } \
  NS_IMETHOD GetMimeType(nsAString& aMimeType) override { return _to GetMimeType(aMimeType); } \
  NS_IMETHOD EncodeToStream(nsIOutputStream *aStream) override { return _to EncodeToStream(aStream); } \
  NS_IMETHOD EncodeToString(nsAString& _retval) override { return _to EncodeToString(_retval); } \
  NS_IMETHOD EncodeToStringWithContext(nsAString& aContextString, nsAString& aInfoString, nsAString& _retval) override { return _to EncodeToStringWithContext(aContextString, aInfoString, _retval); } \
  NS_IMETHOD EncodeToStringWithMaxLength(uint32_t aMaxLength, nsAString& _retval) override { return _to EncodeToStringWithMaxLength(aMaxLength, _retval); } \
  NS_IMETHOD SetNodeFixup(nsIDocumentEncoderNodeFixup *aFixup) override { return _to SetNodeFixup(aFixup); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIDOCUMENTENCODER(_to) \
  NS_IMETHOD Init(mozilla::dom::Document *aDocument, const nsAString& aMimeType, uint32_t aFlags) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(aDocument, aMimeType, aFlags); } \
  NS_IMETHOD SetSelection(mozilla::dom::Selection *aSelection) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSelection(aSelection); } \
  NS_IMETHOD SetRange(mozilla::dom::Range *aRange) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRange(aRange); } \
  NS_IMETHOD SetNode(nsINode *aNode) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNode(aNode); } \
  NS_IMETHOD SetContainerNode(nsINode *aContainer) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetContainerNode(aContainer); } \
  NS_IMETHOD SetCharset(const nsACString& aCharset) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCharset(aCharset); } \
  NS_IMETHOD SetWrapColumn(uint32_t aWrapColumn) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetWrapColumn(aWrapColumn); } \
  NS_IMETHOD GetMimeType(nsAString& aMimeType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMimeType(aMimeType); } \
  NS_IMETHOD EncodeToStream(nsIOutputStream *aStream) override { return !_to ? NS_ERROR_NULL_POINTER : _to->EncodeToStream(aStream); } \
  NS_IMETHOD EncodeToString(nsAString& _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->EncodeToString(_retval); } \
  NS_IMETHOD EncodeToStringWithContext(nsAString& aContextString, nsAString& aInfoString, nsAString& _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->EncodeToStringWithContext(aContextString, aInfoString, _retval); } \
  NS_IMETHOD EncodeToStringWithMaxLength(uint32_t aMaxLength, nsAString& _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->EncodeToStringWithMaxLength(aMaxLength, _retval); } \
  NS_IMETHOD SetNodeFixup(nsIDocumentEncoderNodeFixup *aFixup) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNodeFixup(aFixup); } 

// %{C++:359-366
template<class T> struct already_AddRefed;

bool
do_getDocumentTypeSupportedForEncoding(const char* aContentType);
already_AddRefed<nsIDocumentEncoder>
do_createDocumentEncoder(const char* aContentType);
already_AddRefed<nsIDocumentEncoder>
do_createHTMLCopyEncoder();
// %}

#endif /* __gen_nsIDocumentEncoder_h__ */
