/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM $SRCDIR/js/xpconnect/idl/mozIJSSubScriptLoader.idl
 */

#ifndef __gen_mozIJSSubScriptLoader_h__
#define __gen_mozIJSSubScriptLoader_h__


#include "nsISupports.h"

#include "js/Value.h"

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

class nsIPrincipal; /* forward declaration */

class nsIObserver; /* forward declaration */


/* starting interface:    mozIJSSubScriptLoader */
#define MOZIJSSUBSCRIPTLOADER_IID_STR "19533e7b-f321-4ef1-bc59-6e812dc2a733"

#define MOZIJSSUBSCRIPTLOADER_IID \
  {0x19533e7b, 0xf321, 0x4ef1, \
    { 0xbc, 0x59, 0x6e, 0x81, 0x2d, 0xc2, 0xa7, 0x33 }}

class NS_NO_VTABLE MOZ_BINDING(binding_to, idl, class, XPIDL_mozIJSSubScriptLoader) mozIJSSubScriptLoader : public nsISupports {
 public:

  NS_INLINE_DECL_STATIC_IID(MOZIJSSUBSCRIPTLOADER_IID)

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

  /* [implicit_jscontext] jsval loadSubScript (in AString url, [optional] in jsval obj); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_mozIJSSubScriptLoader_loadSubScript)
  NS_IMETHOD LoadSubScript(const nsAString& url, JS::Handle<JS::Value> obj, JSContext* cx, JS::MutableHandle<JS::Value> _retval) = 0;

  /* [implicit_jscontext] jsval loadSubScriptWithOptions (in AString url, in jsval options); */
  MOZ_BINDING(binding_to, idl, method, XPIDL_mozIJSSubScriptLoader_loadSubScriptWithOptions)
  NS_IMETHOD LoadSubScriptWithOptions(const nsAString& url, JS::Handle<JS::Value> options, JSContext* cx, JS::MutableHandle<JS::Value> _retval) = 0;

};


/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_MOZIJSSUBSCRIPTLOADER \
  NS_IMETHOD LoadSubScript(const nsAString& url, JS::Handle<JS::Value> obj, JSContext* cx, JS::MutableHandle<JS::Value> _retval) override; \
  NS_IMETHOD LoadSubScriptWithOptions(const nsAString& url, JS::Handle<JS::Value> options, JSContext* cx, JS::MutableHandle<JS::Value> _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_MOZIJSSUBSCRIPTLOADER \
  MOZ_BINDING(binding_to, idl, method, XPIDL_mozIJSSubScriptLoader_loadSubScript)\
  nsresult LoadSubScript(const nsAString& url, JS::Handle<JS::Value> obj, JSContext* cx, JS::MutableHandle<JS::Value> _retval); \
  MOZ_BINDING(binding_to, idl, method, XPIDL_mozIJSSubScriptLoader_loadSubScriptWithOptions)\
  nsresult LoadSubScriptWithOptions(const nsAString& url, JS::Handle<JS::Value> options, JSContext* cx, JS::MutableHandle<JS::Value> _retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_MOZIJSSUBSCRIPTLOADER(_to) \
  NS_IMETHOD LoadSubScript(const nsAString& url, JS::Handle<JS::Value> obj, JSContext* cx, JS::MutableHandle<JS::Value> _retval) override { return _to LoadSubScript(url, obj, cx, _retval); } \
  NS_IMETHOD LoadSubScriptWithOptions(const nsAString& url, JS::Handle<JS::Value> options, JSContext* cx, JS::MutableHandle<JS::Value> _retval) override { return _to LoadSubScriptWithOptions(url, options, cx, _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_MOZIJSSUBSCRIPTLOADER(_to) \
  NS_IMETHOD LoadSubScript(const nsAString& url, JS::Handle<JS::Value> obj, JSContext* cx, JS::MutableHandle<JS::Value> _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->LoadSubScript(url, obj, cx, _retval); } \
  NS_IMETHOD LoadSubScriptWithOptions(const nsAString& url, JS::Handle<JS::Value> options, JSContext* cx, JS::MutableHandle<JS::Value> _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->LoadSubScriptWithOptions(url, options, cx, _retval); } 


#endif /* __gen_mozIJSSubScriptLoader_h__ */
