<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository xmlns="http://www.gtk.org/introspection/core/1.0" xmlns:c="http://www.gtk.org/introspection/c/1.0" xmlns:glib="http://www.gtk.org/introspection/glib/1.0" version="1.2">
  <include name="GObject" version="2.0"/>
  <package name="javascriptcoregtk-4.0"/>
  <c:include name="JavaScriptCore/JavaScript.h"/>
  <namespace name="JavaScriptCore" version="4.0" shared-library="libjavascriptcoregtk-4.0.so.18" c:identifier-prefixes="JS" c:symbol-prefixes="JS">
    <!-- Patches for incomplete type information in glib-compatible javascriptcore. -->
    <callback name="Constructor" c:type="JSCConstructor">
      <return-value transfer-ownership="full">
        <type name="gpointer" c:type="gpointer"/>
      </return-value>
      <parameters>
        <parameter name="args" transfer-ownership="none">
          <type name="GLib.PtrArray" c:type="GPtrArray*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" nullable="1" allow-none="1" closure="1">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="ClassVariadicFunction" c:type="JSCClassVariadicFunction">
      <return-value transfer-ownership="full">
        <type name="Value" c:type="JSCValue*"/>
      </return-value>
      <parameters>
        <parameter name="instance" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="args" transfer-ownership="none">
          <type name="GLib.PtrArray" c:type="GPtrArray*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" nullable="1" allow-none="1" closure="1">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="PropertyGetter" c:type="JSCPropertyGetter">
      <return-value transfer-ownership="full">
        <type name="Value" c:type="JSCValue*"/>
      </return-value>
      <parameters>
        <parameter name="instance" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" nullable="1" allow-none="1" closure="1">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="PropertySetter" c:type="JSCPropertySetter">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="instance" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <type name="Value" c:type="JSCValue*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" nullable="1" allow-none="1" closure="1">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="VariadicFunction" c:type="JSCVariadicFunction">
      <return-value transfer-ownership="full">
        <type name="Value" c:type="JSCValue*"/>
      </return-value>
      <parameters>
        <parameter name="args" transfer-ownership="none">
          <type name="GLib.PtrArray" c:type="GPtrArray*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" nullable="1" allow-none="1" closure="1">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="Getter" c:type="JSCGetter">
      <return-value transfer-ownership="full">
        <type name="Value" c:type="JSCValue*"/>
      </return-value>
      <parameters>
        <parameter name="user_data" transfer-ownership="none" nullable="1" allow-none="1" closure="1">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="Setter" c:type="JSCSetter">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="value" transfer-ownership="none">
          <type name="Value" c:type="JSCValue*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" nullable="1" allow-none="1" closure="1">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <!-- Patches for non-glib javascriptcore that deprecated webkitgtk functions still reference. -->
    <record name="GlobalContextRef" c:type="JSGlobalContextRef" deprecated="1" deprecated-version="2.22" disguised="1" foreign="1">
      <method name="ref" c:identifier="JSGlobalContextRetain">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <type name="GlobalContextRef" c:type="JSGlobalContextRef"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="JSGlobalContextRelease">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <type name="GlobalContextRef" c:type="JSGlobalContextRef"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="ValueRef" c:type="JSValueRef" deprecated="1" deprecated-version="2.22" disguised="1">
      <function name="ValueIsArray" c:identifier="JSValueIsArray" deprecated="1" deprecated-version="2.22">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="ctx" transfer-ownership="none">
            <type name="GlobalContextRef" c:type="JSGlobalContextRef"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="ValueRef" c:type="JSValueRef"/>
          </parameter>
        </parameters>
      </function>
      <function name="ValueProtect" c:type="JSValueProtect">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <type name="GlobalContextRef" c:type="JSGlobalContextRef"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="ValueRef" c:type="JSValueRef"/>
          </parameter>
        </parameters>
      </function>
      <function name="ValueUnprotect" c:type="JSValueUnprotect">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <type name="GlobalContextRef" c:type="JSGlobalContextRef"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="ValueRef" c:type="JSValueRef"/>
          </parameter>
        </parameters>
      </function>
      <function name="ValueIsBoolean" c:identifier="JSValueIsBoolean" deprecated="1" deprecated-version="2.22">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="ctx" transfer-ownership="none">
            <type name="GlobalContextRef" c:type="JSGlobalContextRef"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="ValueRef" c:type="JSValueRef"/>
          </parameter>
        </parameters>
      </function>
      <function name="ValueIsDate" c:identifier="JSValueIsDate" deprecated="1" deprecated-version="2.22">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="ctx" transfer-ownership="none">
            <type name="GlobalContextRef" c:type="JSGlobalContextRef"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="ValueRef" c:type="JSValueRef"/>
          </parameter>
        </parameters>
      </function>
      <function name="ValueIsObject" c:identifier="JSValueIsObject" deprecated="1" deprecated-version="2.22">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="ctx" transfer-ownership="none">
            <type name="GlobalContextRef" c:type="JSGlobalContextRef"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="ValueRef" c:type="JSValueRef"/>
          </parameter>
        </parameters>
      </function>
      <function name="ValueIsNull" c:identifier="JSValueIsNull" deprecated="1" deprecated-version="2.22">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="ctx" transfer-ownership="none">
            <type name="GlobalContextRef" c:type="JSGlobalContextRef"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="ValueRef" c:type="JSValueRef"/>
          </parameter>
        </parameters>
      </function>
      <function name="ValueIsNumber" c:identifier="JSValueIsNumber" deprecated="1" deprecated-version="2.22">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="ctx" transfer-ownership="none">
            <type name="GlobalContextRef" c:type="JSGlobalContextRef"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="ValueRef" c:type="JSValueRef"/>
          </parameter>
        </parameters>
      </function>
      <function name="ValueIsString" c:identifier="JSValueIsString" deprecated="1" deprecated-version="2.22">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="ctx" transfer-ownership="none">
            <type name="GlobalContextRef" c:type="JSGlobalContextRef"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="ValueRef" c:type="JSValueRef"/>
          </parameter>
        </parameters>
      </function>
      <function name="ValueIsUndefined" c:identifier="JSValueIsUndefined" deprecated="1" deprecated-version="2.22">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="ctx" transfer-ownership="none">
            <type name="GlobalContextRef" c:type="JSGlobalContextRef"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="ValueRef" c:type="JSValueRef"/>
          </parameter>
        </parameters>
      </function>
      <function name="ValueToBoolean" c:identifier="JSValueToBoolean" deprecated="1" deprecated-version="2.22">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="ctx" transfer-ownership="none">
            <type name="GlobalContextRef" c:type="JSGlobalContextRef"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="ValueRef" c:type="JSValueRef"/>
          </parameter>
        </parameters>
      </function>
      <function name="ValueToNumber" c:identifier="JSValueToNumber" deprecated="1" deprecated-version="2.22">
        <return-value transfer-ownership="none">
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
        <parameters>
          <parameter name="ctx" transfer-ownership="none">
            <type name="GlobalContextRef" c:type="JSGlobalContextRef"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="ValueRef" c:type="JSValueRef"/>
          </parameter>
          <parameter name="exception" direction="out" caller-allocates="0" transfer-ownership="full" optional="1" allow-none="1">
            <doc xml:space="preserve">return location for a #JSCException, or %NULL to ignore</doc>
            <type name="Exception" c:type="JSCException**"/>
          </parameter>
        </parameters>
      </function>
      <function name="ValueToStringCopy" c:identifier="JSValueToStringCopy">
        <return-value transfer-ownership="none">
          <type name="StringRef" c:type="JSStringRef"/>
        </return-value>
        <parameters>
          <parameter name="ctx" transfer-ownership="none">
            <type name="GlobalContextRef" c:type="JSGlobalContextRef"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="ValueRef" c:type="JSValueRef"/>
          </parameter>
          <parameter name="exception" direction="out" caller-allocates="0" transfer-ownership="full" optional="1" allow-none="1">
            <type name="ValueRef" c:type="JSValueRef*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <record name="StringRef" c:type="JSStringRef" deprecated="1" deprecated-version="2.22" disguised="1" foreign="1">
      <method name="ref" c:identifier="JSStringRetain">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="string" transfer-ownership="none">
            <type name="StringRef" c:type="JSStringRef"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="JSStringRelease">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="string" transfer-ownership="none">
            <type name="StringRef" c:type="JSStringRef"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="GetMaximumUTF8CStringSize" c:identifier="JSStringGetMaximumUTF8CStringSize">
        <return-value transfer-ownership="none">
          <type name="gsize" c:type="gsize"/>
        </return-value>
        <parameters>
          <instance-parameter name="string" transfer-ownership="none">
            <type name="StringRef" c:type="JSStringRef"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="GetUTF8CStringJSStringGetUTF8CString" c:identifier="JSStringGetUTF8CString">
        <return-value transfer-ownership="none">
          <type name="gsize" c:type="gsize"/>
        </return-value>
        <parameters>
          <instance-parameter name="string" transfer-ownership="none">
            <type name="StringRef" c:type="JSStringRef"/>
          </instance-parameter>
          <parameter name="buffer" direction="inout" caller-allocates="1" transfer-ownership="none">
            <type name="utf8" c:type="char**"/>
          </parameter>
          <parameter name="buffer_size" transfer-ownership="none">
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </method>
    </record>
  </namespace>
</repository>
