/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM $SRCDIR/intl/uconv/nsIScriptableUConv.idl
 */

#ifndef __gen_nsIScriptableUConv_h__
#define __gen_nsIScriptableUConv_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 nsIInputStream; /* forward declaration */


/* starting interface:    nsIScriptableUnicodeConverter */
#define NS_ISCRIPTABLEUNICODECONVERTER_IID_STR "f36ee324-5c1c-437f-ba10-2b4db7a18031"

#define NS_ISCRIPTABLEUNICODECONVERTER_IID \
  {0xf36ee324, 0x5c1c, 0x437f, \
    { 0xba, 0x10, 0x2b, 0x4d, 0xb7, 0xa1, 0x80, 0x31 }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_nsIScriptableUnicodeConverter) nsIScriptableUnicodeConverter : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(NS_ISCRIPTABLEUNICODECONVERTER_IID)

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

  /* ACString ConvertFromUnicode (in AString aSrc); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIScriptableUnicodeConverter_ConvertFromUnicode)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD ConvertFromUnicode(const nsAString& aSrc, nsACString& _retval) = 0;

  /* ACString Finish (); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIScriptableUnicodeConverter_Finish)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD Finish(nsACString& _retval) = 0;

  /* AString ConvertToUnicode (in ACString aSrc); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIScriptableUnicodeConverter_ConvertToUnicode)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD ConvertToUnicode(const nsACString& aSrc, nsAString& _retval) = 0;

  /* attribute ACString charset; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIScriptableUnicodeConverter_charset)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetCharset(nsACString& aCharset) = 0;
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIScriptableUnicodeConverter_charset)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD SetCharset(const nsACString& aCharset) = 0;

  /* attribute boolean isInternal; */
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIScriptableUnicodeConverter_isInternal)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD GetIsInternal(bool *aIsInternal) = 0;
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIScriptableUnicodeConverter_isInternal)
  JS_HAZ_CAN_RUN_SCRIPT NS_IMETHOD SetIsInternal(bool aIsInternal) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSISCRIPTABLEUNICODECONVERTER \
  NS_IMETHOD ConvertFromUnicode(const nsAString& aSrc, nsACString& _retval) override; \
  NS_IMETHOD Finish(nsACString& _retval) override; \
  NS_IMETHOD ConvertToUnicode(const nsACString& aSrc, nsAString& _retval) override; \
  NS_IMETHOD GetCharset(nsACString& aCharset) override; \
  NS_IMETHOD SetCharset(const nsACString& aCharset) override; \
  NS_IMETHOD GetIsInternal(bool *aIsInternal) override; \
  NS_IMETHOD SetIsInternal(bool aIsInternal) 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_NSISCRIPTABLEUNICODECONVERTER \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIScriptableUnicodeConverter_ConvertFromUnicode)\
  nsresult ConvertFromUnicode(const nsAString& aSrc, nsACString& _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIScriptableUnicodeConverter_Finish)\
  nsresult Finish(nsACString& _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_nsIScriptableUnicodeConverter_ConvertToUnicode)\
  nsresult ConvertToUnicode(const nsACString& aSrc, nsAString& _retval); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIScriptableUnicodeConverter_charset)\
  nsresult GetCharset(nsACString& aCharset); \
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIScriptableUnicodeConverter_charset)\
  nsresult SetCharset(const nsACString& aCharset); \
  MOZ_BINDING(binding_to, idl, getter, XPIDL_nsIScriptableUnicodeConverter_isInternal)\
  nsresult GetIsInternal(bool *aIsInternal); \
  MOZ_BINDING(binding_to, idl, setter, XPIDL_nsIScriptableUnicodeConverter_isInternal)\
  nsresult SetIsInternal(bool aIsInternal); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSISCRIPTABLEUNICODECONVERTER(_to) \
  NS_IMETHOD ConvertFromUnicode(const nsAString& aSrc, nsACString& _retval) override { return _to ConvertFromUnicode(aSrc, _retval); } \
  NS_IMETHOD Finish(nsACString& _retval) override { return _to Finish(_retval); } \
  NS_IMETHOD ConvertToUnicode(const nsACString& aSrc, nsAString& _retval) override { return _to ConvertToUnicode(aSrc, _retval); } \
  NS_IMETHOD GetCharset(nsACString& aCharset) override { return _to GetCharset(aCharset); } \
  NS_IMETHOD SetCharset(const nsACString& aCharset) override { return _to SetCharset(aCharset); } \
  NS_IMETHOD GetIsInternal(bool *aIsInternal) override { return _to GetIsInternal(aIsInternal); } \
  NS_IMETHOD SetIsInternal(bool aIsInternal) override { return _to SetIsInternal(aIsInternal); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSISCRIPTABLEUNICODECONVERTER(_to) \
  NS_IMETHOD ConvertFromUnicode(const nsAString& aSrc, nsACString& _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ConvertFromUnicode(aSrc, _retval); } \
  NS_IMETHOD Finish(nsACString& _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Finish(_retval); } \
  NS_IMETHOD ConvertToUnicode(const nsACString& aSrc, nsAString& _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ConvertToUnicode(aSrc, _retval); } \
  NS_IMETHOD GetCharset(nsACString& aCharset) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCharset(aCharset); } \
  NS_IMETHOD SetCharset(const nsACString& aCharset) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCharset(aCharset); } \
  NS_IMETHOD GetIsInternal(bool *aIsInternal) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsInternal(aIsInternal); } \
  NS_IMETHOD SetIsInternal(bool aIsInternal) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIsInternal(aIsInternal); } 


#endif /* __gen_nsIScriptableUConv_h__ */
