<?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 version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:doc="http://www.gtk.org/introspection/doc/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="Gtk" version="4.0"/>
  <doc:format name="unknown"/>
  <namespace name="Hex"
             version="4"
             shared-library="libgtkhex-4.so.1.1"
             c:identifier-prefixes="Hex"
             c:symbol-prefixes="hex">
    <interface name="Buffer"
               c:symbol-prefix="buffer"
               c:type="HexBuffer"
               glib:type-name="HexBuffer"
               glib:get-type="hex_buffer_get_type"
               glib:type-struct="BufferInterface">
      <doc xml:space="preserve"
           filename="src/hex-buffer-iface.c"
           line="29">#HexBuffer is an interface which can be implemented to act as a buffer
for [class@Hex.Document] data. This allows for a #HexDocument to be
manipulated by different backends.

Once a file has been loaded into the buffer, it can be read, written
to file, etc.

#HexBuffer makes reference to the "payload," which is the size of the
substantive data in the buffer, not counting items like padding, a gap,
etc. (all dependent upon the underlying implementation).

Most clients who just want to create an spin up a #HexBuffer object should
look to the [func@Hex.Buffer.util_new] utility function as a starting
point, and then manipulate the returned #HexBuffer object with the methods
documented herein.</doc>
      <source-position filename="src/hex-buffer-iface.h" line="103"/>
      <function name="util_get_file_size"
                c:identifier="hex_buffer_util_get_file_size">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="431">Utility function to obtain the size of a #GFile.

Since 4.6, this function will return an unspecified negative value if the
file size was unable to be obtained, as opposed to 0 as it previously did.
This is to distinguish between valid zero-length files and files for which
the size was not able to be obtained (eg, if it was unreadable). In the
future, these negative values may be defined as specific enums which have a
more specific meaning. But presently and going forward, testing for a
negative value is sufficient to determine that the file size was
unobtainable.</doc>
        <source-position filename="src/hex-buffer-iface.h" line="148"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="446">the size of the file, in bytes</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="433">file to obtain size of</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </function>
      <function name="util_new" c:identifier="hex_buffer_util_new">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="336">Utility function to create an on object which implements the HexBuffer
interface.

The `plugin` parameter will be the unique part of the plugin file name (eg,
if the file name is libhex-buffer-mmap.so, you would specify "mmap"). If
`NULL` is passed, the fallback (presently the "malloc" backend, but this is
an implementation detail and may be subject to change) will be used.

The `file` parameter is a valid #GFile if you would like the buffer
pre-loaded, or %NULL for an empty buffer.</doc>
        <source-position filename="src/hex-buffer-iface.h" line="149"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="352">a pointer to a valid implementation of a
[iface@Hex.Buffer] interface, pre-cast as type #HexBuffer, or %NULL if
the operation failed. Starting with 4.2, if a specific backend is requested,
and the system supports plugins as a whole but cannot load that specified
plugin, %NULL will be returned as though the operation failed, so as to
customize the fallback scheme programmatically.</doc>
          <type name="Buffer" c:type="HexBuffer*"/>
        </return-value>
        <parameters>
          <parameter name="plugin"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="338">the name of the plugin, or %NULL</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="file"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="339">file to initialize the buffer with, or %NULL</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="get_byte" invoker="get_byte">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="91">Get a single byte at a particular offset within the buffer.</doc>
        <source-position filename="src/hex-buffer-iface.h" line="60"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="97">the 8-bit character located at `offset` within the payload, or
'\0'</doc>
          <type name="gchar" c:type="char"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="93">offset position of the data being requested within the payload</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_data" invoker="get_data">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="67">Get data of a particular size at a particular offset within the buffer.</doc>
        <source-position filename="src/hex-buffer-iface.h" line="56"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="74">a pointer to the data requested, to be freed
with g_free().</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="69">offset position of the data being requested within the payload</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="70">size in bytes of the requested data</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_file" introspectable="0">
        <source-position filename="src/hex-buffer-iface.h" line="69"/>
        <return-value>
          <type name="Gio.File" c:type="GFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_payload_size" invoker="get_payload_size">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="315">Get the size of the payload of the buffer, in bytes.</doc>
        <source-position filename="src/hex-buffer-iface.h" line="98"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="320">the size in bytes of the payload of the buffer</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="read" invoker="read" glib:async-func="read_async">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="167">Read the #GFile, previously set, into the buffer. This method will block
until the operation is complete. For a non-blocking version, use
[method@Hex.Buffer.read_async].</doc>
        <source-position filename="src/hex-buffer-iface.h" line="74"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="174">%TRUE if the operation was successful; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="read_async"
                      invoker="read_async"
                      glib:finish-func="read_finish"
                      glib:sync-func="read">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="188">Read the #GFile, previously set, into the buffer. This is the non-blocking
version of [method@Hex.Buffer.read].</doc>
        <source-position filename="src/hex-buffer-iface.h" line="76"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="190">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="191">function to be called when the operation is
  complete</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     closure="2">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="read_finish" invoker="read_finish" throws="1">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="212">Obtain the result of a completed file read operation.

This method is typically called from the #GAsyncReadyCallback function
passed to [method@Hex.Buffer.read_async] to obtain the result of the
operation.</doc>
        <source-position filename="src/hex-buffer-iface.h" line="81"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="224">%TRUE if the operation was successful; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="214">result of the task</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_data" invoker="set_data">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="113">Set data at of the buffer at a particular offset, replacing some, all or
none of the existing data in the buffer as desired.

As `data` will be copied to the recipient, it should be freed with
g_free() after being passed to this method, to avoid a memory leak.</doc>
        <source-position filename="src/hex-buffer-iface.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="127">%TRUE if the operation was successful; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="115">offset position of the data being requested within the payload</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="116">size in bytes of the input data being provided</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="rep_len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="117">amount of bytes to replace/overwrite (if any)</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="118">a pointer to
  the data being provided</doc>
            <array length="1" zero-terminated="0" c:type="char*">
              <type name="gint8"/>
            </array>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_file" invoker="set_file">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="145">Set the #GFile to be utilized by the buffer. Once it has been set,
you can read it into the buffer with [method@Hex.Buffer.read] or
[method@Hex.Buffer.read_async].</doc>
        <source-position filename="src/hex-buffer-iface.h" line="71"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="153">%TRUE if the operation was successful; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="147">the file to be utilized by the buffer</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="write_to_file"
                      invoker="write_to_file"
                      glib:async-func="write_to_file_async">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="240">Write the buffer to the #GFile specified. This operation will block. For a
non-blocking version, use [method@Hex.Buffer.write_to_file_async].</doc>
        <source-position filename="src/hex-buffer-iface.h" line="85"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="247">%TRUE if the operation was successful; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="242">#GFile to write to</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="write_to_file_async"
                      invoker="write_to_file_async"
                      glib:finish-func="write_to_file_finish"
                      glib:sync-func="write_to_file">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="261">Write the buffer to the #GFile specified. This is the non-blocking
version of [method@Hex.Buffer.write_to_file].</doc>
        <source-position filename="src/hex-buffer-iface.h" line="88"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="263">#GFile to write to</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="264">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="265">function to be called when the operation is
  complete</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     closure="3">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="write_to_file_finish"
                      invoker="write_to_file_finish"
                      throws="1">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="287">Obtain the result of a completed write-to-file operation.

This method is typically called from the #GAsyncReadyCallback function
passed to [method@Hex.Buffer.write_to_file_async] to obtain the result of
the operation.</doc>
        <source-position filename="src/hex-buffer-iface.h" line="94"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="299">%TRUE if the operation was successful; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="289">result of the task</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_byte" c:identifier="hex_buffer_get_byte">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="91">Get a single byte at a particular offset within the buffer.</doc>
        <source-position filename="src/hex-buffer-iface.h" line="111"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="97">the 8-bit character located at `offset` within the payload, or
'\0'</doc>
          <type name="gchar" c:type="char"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="93">offset position of the data being requested within the payload</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_data" c:identifier="hex_buffer_get_data">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="67">Get data of a particular size at a particular offset within the buffer.</doc>
        <source-position filename="src/hex-buffer-iface.h" line="107"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="74">a pointer to the data requested, to be freed
with g_free().</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="69">offset position of the data being requested within the payload</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="70">size in bytes of the requested data</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_payload_size"
              c:identifier="hex_buffer_get_payload_size">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="315">Get the size of the payload of the buffer, in bytes.</doc>
        <source-position filename="src/hex-buffer-iface.h" line="144"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="320">the size in bytes of the payload of the buffer</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="read"
              c:identifier="hex_buffer_read"
              glib:async-func="read_async">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="167">Read the #GFile, previously set, into the buffer. This method will block
until the operation is complete. For a non-blocking version, use
[method@Hex.Buffer.read_async].</doc>
        <source-position filename="src/hex-buffer-iface.h" line="123"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="174">%TRUE if the operation was successful; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="read_async"
              c:identifier="hex_buffer_read_async"
              glib:finish-func="read_finish"
              glib:sync-func="read">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="188">Read the #GFile, previously set, into the buffer. This is the non-blocking
version of [method@Hex.Buffer.read].</doc>
        <source-position filename="src/hex-buffer-iface.h" line="125"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="buf" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="190">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="191">function to be called when the operation is
  complete</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="read_finish"
              c:identifier="hex_buffer_read_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="212">Obtain the result of a completed file read operation.

This method is typically called from the #GAsyncReadyCallback function
passed to [method@Hex.Buffer.read_async] to obtain the result of the
operation.</doc>
        <source-position filename="src/hex-buffer-iface.h" line="128"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="224">%TRUE if the operation was successful; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="buf" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="214">result of the task</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_data" c:identifier="hex_buffer_set_data">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="113">Set data at of the buffer at a particular offset, replacing some, all or
none of the existing data in the buffer as desired.

As `data` will be copied to the recipient, it should be freed with
g_free() after being passed to this method, to avoid a memory leak.</doc>
        <source-position filename="src/hex-buffer-iface.h" line="114"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="127">%TRUE if the operation was successful; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="115">offset position of the data being requested within the payload</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="116">size in bytes of the input data being provided</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="rep_len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="117">amount of bytes to replace/overwrite (if any)</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="118">a pointer to
  the data being provided</doc>
            <array length="1" zero-terminated="0" c:type="char*">
              <type name="gint8"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="set_file"
              c:identifier="hex_buffer_set_file"
              glib:set-property="file">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="145">Set the #GFile to be utilized by the buffer. Once it has been set,
you can read it into the buffer with [method@Hex.Buffer.read] or
[method@Hex.Buffer.read_async].</doc>
        <source-position filename="src/hex-buffer-iface.h" line="120"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="153">%TRUE if the operation was successful; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="147">the file to be utilized by the buffer</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_to_file"
              c:identifier="hex_buffer_write_to_file"
              glib:async-func="write_to_file_async">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="240">Write the buffer to the #GFile specified. This operation will block. For a
non-blocking version, use [method@Hex.Buffer.write_to_file_async].</doc>
        <source-position filename="src/hex-buffer-iface.h" line="131"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="247">%TRUE if the operation was successful; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="242">#GFile to write to</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_to_file_async"
              c:identifier="hex_buffer_write_to_file_async"
              glib:finish-func="write_to_file_finish"
              glib:sync-func="write_to_file">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="261">Write the buffer to the #GFile specified. This is the non-blocking
version of [method@Hex.Buffer.write_to_file].</doc>
        <source-position filename="src/hex-buffer-iface.h" line="134"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="263">#GFile to write to</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="264">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="265">function to be called when the operation is
  complete</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_to_file_finish"
              c:identifier="hex_buffer_write_to_file_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="287">Obtain the result of a completed write-to-file operation.

This method is typically called from the #GAsyncReadyCallback function
passed to [method@Hex.Buffer.write_to_file_async] to obtain the result of
the operation.</doc>
        <source-position filename="src/hex-buffer-iface.h" line="140"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="299">%TRUE if the operation was successful; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Buffer" c:type="HexBuffer*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="289">result of the task</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <property name="file"
                writable="1"
                transfer-ownership="none"
                setter="set_file">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="53">This property is the file (as #GFile) being utilized by the buffer.</doc>
        <type name="Gio.File"/>
      </property>
    </interface>
    <record name="BufferInterface"
            c:type="HexBufferInterface"
            glib:is-gtype-struct-for="Buffer">
      <source-position filename="src/hex-buffer-iface.h" line="103"/>
      <field name="parent_iface">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_data">
        <callback name="get_data">
          <source-position filename="src/hex-buffer-iface.h" line="56"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="74">a pointer to the data requested, to be freed
with g_free().</doc>
            <type name="utf8" c:type="char*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Buffer" c:type="HexBuffer*"/>
            </parameter>
            <parameter name="offset" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/hex-buffer-iface.c"
                   line="69">offset position of the data being requested within the payload</doc>
              <type name="gint64" c:type="gint64"/>
            </parameter>
            <parameter name="len" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/hex-buffer-iface.c"
                   line="70">size in bytes of the requested data</doc>
              <type name="gsize" c:type="size_t"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_byte">
        <callback name="get_byte">
          <source-position filename="src/hex-buffer-iface.h" line="60"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="97">the 8-bit character located at `offset` within the payload, or
'\0'</doc>
            <type name="gchar" c:type="char"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Buffer" c:type="HexBuffer*"/>
            </parameter>
            <parameter name="offset" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/hex-buffer-iface.c"
                   line="93">offset position of the data being requested within the payload</doc>
              <type name="gint64" c:type="gint64"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_data">
        <callback name="set_data">
          <source-position filename="src/hex-buffer-iface.h" line="63"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="127">%TRUE if the operation was successful; %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Buffer" c:type="HexBuffer*"/>
            </parameter>
            <parameter name="offset" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/hex-buffer-iface.c"
                   line="115">offset position of the data being requested within the payload</doc>
              <type name="gint64" c:type="gint64"/>
            </parameter>
            <parameter name="len" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/hex-buffer-iface.c"
                   line="116">size in bytes of the input data being provided</doc>
              <type name="gsize" c:type="size_t"/>
            </parameter>
            <parameter name="rep_len" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/hex-buffer-iface.c"
                   line="117">amount of bytes to replace/overwrite (if any)</doc>
              <type name="gsize" c:type="size_t"/>
            </parameter>
            <parameter name="data" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/hex-buffer-iface.c"
                   line="118">a pointer to
  the data being provided</doc>
              <array length="2" zero-terminated="0" c:type="char*">
                <type name="gint8"/>
              </array>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_file" introspectable="0">
        <callback name="get_file" introspectable="0">
          <source-position filename="src/hex-buffer-iface.h" line="69"/>
          <return-value>
            <type name="Gio.File" c:type="GFile*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Buffer" c:type="HexBuffer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_file">
        <callback name="set_file">
          <source-position filename="src/hex-buffer-iface.h" line="71"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="153">%TRUE if the operation was successful; %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Buffer" c:type="HexBuffer*"/>
            </parameter>
            <parameter name="file" transfer-ownership="full">
              <doc xml:space="preserve"
                   filename="src/hex-buffer-iface.c"
                   line="147">the file to be utilized by the buffer</doc>
              <type name="Gio.File" c:type="GFile*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="read">
        <callback name="read">
          <source-position filename="src/hex-buffer-iface.h" line="74"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="174">%TRUE if the operation was successful; %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Buffer" c:type="HexBuffer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="read_async">
        <callback name="read_async">
          <source-position filename="src/hex-buffer-iface.h" line="76"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Buffer" c:type="HexBuffer*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="src/hex-buffer-iface.c"
                   line="190">a #GCancellable</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       scope="async"
                       closure="3">
              <doc xml:space="preserve"
                   filename="src/hex-buffer-iface.c"
                   line="191">function to be called when the operation is
  complete</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="3">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="read_finish">
        <callback name="read_finish" throws="1">
          <source-position filename="src/hex-buffer-iface.h" line="81"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="224">%TRUE if the operation was successful; %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Buffer" c:type="HexBuffer*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/hex-buffer-iface.c"
                   line="214">result of the task</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="write_to_file">
        <callback name="write_to_file">
          <source-position filename="src/hex-buffer-iface.h" line="85"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="247">%TRUE if the operation was successful; %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Buffer" c:type="HexBuffer*"/>
            </parameter>
            <parameter name="file" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/hex-buffer-iface.c"
                   line="242">#GFile to write to</doc>
              <type name="Gio.File" c:type="GFile*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="write_to_file_async">
        <callback name="write_to_file_async">
          <source-position filename="src/hex-buffer-iface.h" line="88"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Buffer" c:type="HexBuffer*"/>
            </parameter>
            <parameter name="file" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/hex-buffer-iface.c"
                   line="263">#GFile to write to</doc>
              <type name="Gio.File" c:type="GFile*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="src/hex-buffer-iface.c"
                   line="264">a #GCancellable</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       scope="async"
                       closure="4">
              <doc xml:space="preserve"
                   filename="src/hex-buffer-iface.c"
                   line="265">function to be called when the operation is
  complete</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="4">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="write_to_file_finish">
        <callback name="write_to_file_finish" throws="1">
          <source-position filename="src/hex-buffer-iface.h" line="94"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="299">%TRUE if the operation was successful; %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Buffer" c:type="HexBuffer*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/hex-buffer-iface.c"
                   line="289">result of the task</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_payload_size">
        <callback name="get_payload_size">
          <source-position filename="src/hex-buffer-iface.h" line="98"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-buffer-iface.c"
                 line="320">the size in bytes of the payload of the buffer</doc>
            <type name="gint64" c:type="gint64"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Buffer" c:type="HexBuffer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="padding">
        <array zero-terminated="0" fixed-size="12">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <callback name="BufferNewFunc"
              c:type="HexBufferNewFunc"
              introspectable="0">
      <doc xml:space="preserve"
           filename="src/hex-buffer-iface.h"
           line="39">Specifies the type of function which the `_new` method of a #HexBuffer
interface implementation must comply with.</doc>
      <source-position filename="src/hex-buffer-iface.h" line="50"/>
      <return-value>
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.h"
             line="46">a pointer to a valid implementaion of a #HexBuffer interface,
pre-cast as the #HexBuffer type.</doc>
        <type name="Buffer" c:type="HexBuffer*"/>
      </return-value>
      <parameters>
        <parameter name="file" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.h"
               line="41">#GFile to pass to the function</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
      </parameters>
    </callback>
    <record name="ChangeData"
            c:type="HexChangeData"
            glib:type-name="HexChangeData"
            glib:get-type="hex_change_data_get_type"
            c:symbol-prefix="change_data">
      <doc xml:space="preserve"
           filename="src/hex-document.h"
           line="115">A structure containing metadata about a change made to a
[class@Hex.Document].</doc>
      <source-position filename="src/hex-document.h" line="157"/>
      <field name="start" writable="1">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="117">start offset of the payload, in bytes</doc>
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="end" writable="1">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="118">end offset of the payload, in bytes</doc>
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="rep_len" writable="1">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="119">amount of data to replace at @start, or 0 for data to be inserted
  without any overwriting</doc>
        <type name="gsize" c:type="size_t"/>
      </field>
      <field name="lower_nibble" writable="1">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="121">%TRUE if targetting the lower nibble (2nd hex digit) %FALSE
  if targetting the upper nibble (1st hex digit)</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="insert" writable="1">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="123">%TRUE if the operation should be insert mode, %FALSE if in
  overwrite mode</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="type" writable="1">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="125">[enum@Hex.ChangeType] representing the type of change (ie, a string
  or a single byte)</doc>
        <type name="ChangeType" c:type="HexChangeType"/>
      </field>
      <field name="v_string" writable="1">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="127">string of the data representing a change, or %NULL</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="v_byte" writable="1">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="128">character representing a single byte to be changed, if applicable</doc>
        <type name="gchar" c:type="char"/>
      </field>
      <field name="padding1" readable="0" private="1">
        <array zero-terminated="0" fixed-size="5">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="padding2" readable="0" private="1">
        <array zero-terminated="0" fixed-size="5">
          <type name="gint64" c:type="gint64"/>
        </array>
      </field>
      <field name="external_file_change" writable="1">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="129">whether the change came externally (typically from
  another program) (Since: 4.10)</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="padding3" readable="0" private="1">
        <array zero-terminated="0" fixed-size="4">
          <type name="gint" c:type="int"/>
        </array>
      </field>
    </record>
    <enumeration name="ChangeType" c:type="HexChangeType">
      <doc xml:space="preserve"
           filename="src/hex-document.h"
           line="45">Type of change operation.</doc>
      <source-position filename="src/hex-document.h" line="56"/>
      <member name="string" value="0" c:identifier="HEX_CHANGE_STRING">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="47">the change is a string</doc>
      </member>
      <member name="byte" value="1" c:identifier="HEX_CHANGE_BYTE">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="48">the change is a single byte/character</doc>
      </member>
    </enumeration>
    <class name="Document"
           c:symbol-prefix="document"
           c:type="HexDocument"
           parent="GObject.Object"
           glib:type-name="HexDocument"
           glib:get-type="hex_document_get_type"
           glib:type-struct="DocumentClass">
      <doc xml:space="preserve"
           filename="src/hex-document.c"
           line="155">`HexDocument` is an object which allows raw data to be loaded,
saved and manipulated, intended primarily to be used with the `HexWidget`
widget.</doc>
      <source-position filename="src/hex-document.h" line="43"/>
      <constructor name="new" c:identifier="hex_document_new">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="487">Create a new empty [class@Hex.Document] object.

Since 4.6, the HEX_BUFFER environment variable can optionally be set to
specify which backend should be tried first as the default. Otherwise, the
`mmap` buffer will be attempted to be loaded if available, and if it is not,
it will fall back to the `malloc` buffer backend.</doc>
        <source-position filename="src/hex-document.h" line="160"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="497">a new [class@Hex.Document] object.</doc>
          <type name="Document" c:type="HexDocument*"/>
        </return-value>
      </constructor>
      <constructor name="new_from_file"
                   c:identifier="hex_document_new_from_file">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="601">A convenience method to create a new [class@Hex.Document] from file.</doc>
        <source-position filename="src/hex-document.h" line="161"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="607">a [class@Hex.Document] pre-loaded with a #GFile ready for a
`read` operation, or %NULL if the operation failed.</doc>
          <type name="Document" c:type="HexDocument*"/>
        </return-value>
        <parameters>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="603">a #GFile pointing to a valid file on the system</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="can_redo" c:identifier="hex_document_can_redo">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="1986">Determine whether a redo operation is possible.</doc>
        <source-position filename="src/hex-document.h" line="232"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="1992">%TRUE if a redo operation is possible; %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1988">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="can_undo" c:identifier="hex_document_can_undo">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="1967">Determine whether an undo operation is possible.</doc>
        <source-position filename="src/hex-document.h" line="231"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="1973">%TRUE if an undo operation is possible; %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1969">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="changed" c:identifier="hex_document_changed">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="1090">Convenience method to emit the [signal@Hex.Document::document-changed]
signal. This method is mostly only useful for widgets utilizing
#HexDocument.</doc>
        <source-position filename="src/hex-document.h" line="192"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1092">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="change_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1093">pointer to a [struct@Hex.ChangeData] structure</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="push_undo" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1094">whether the undo stack should be pushed to</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="compare_data" c:identifier="hex_document_compare_data">
        <source-position filename="src/hex-document.h" line="197"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="1446">0 if the comparison is an exact match; otherwise, a non-zero
  value comparable to strcmp().</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1440">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="what" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1441">a pointer to the data to
  compare to data within the #HexDocument</doc>
            <array length="2" zero-terminated="0" c:type="const char*">
              <type name="gint8"/>
            </array>
          </parameter>
          <parameter name="pos" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1443">offset position of the #HexDocument data to compare with @what</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1444">size of the #HexDocument data to compare with @what, in bytes</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
        </parameters>
      </method>
      <method name="compare_data_full"
              c:identifier="hex_document_compare_data_full"
              version="4.2">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="1322">Full version of [method@Hex.Document.compare_data] to allow data
comparisons broader than byte-for-byte matches only. However, it is
less convenient than the above since it requires the caller to allocate
and free a #HexDocumentFindData structure.</doc>
        <source-position filename="src/hex-document.h" line="199"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="1333">0 if the comparison is an exact match; otherwise, a non-zero
  value is returned.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="find_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1324">a #HexDocumentFindData structure</doc>
            <type name="DocumentFindData" c:type="HexDocumentFindData*"/>
          </parameter>
          <parameter name="pos" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1325">offset position of the #HexDocument data to compare with the
  string contained in the `find_data` structure</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="delete_data" c:identifier="hex_document_delete_data">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="766">Delete data at `offset` of `length` within the buffer.</doc>
        <source-position filename="src/hex-document.h" line="168"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="768">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="769">offset in bytes within the payload</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="770">length in bytes of the data to be set</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="undoable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="771">whether the operation should be undoable</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="export_html" c:identifier="hex_document_export_html">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="1139">Export the #HexDocument to HTML.</doc>
        <source-position filename="src/hex-document.h" line="188"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="1153">%TRUE if the operation was successful; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1141">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="html_path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1142">path to the directory in which the HTML file will be saved</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="base_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1143">the base name of the filename to be saved, without the .html
  extension.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="start" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1145">starting offset byte of the payload in the range to save</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="end" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1146">ending offset byte of the payload in the range to save</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="cpl" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1147">columns per line</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="lpp" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1148">lines per page</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="cpw" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1149">characters per word (for grouping of nibbles)</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_backward" c:identifier="hex_document_find_backward">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="1741">Find a string backwards in a #HexDocument.

This method will block. For a non-blocking version, use
[method@Hex.Document.find_backward_async], which is also recommended
for GUI operations, as it, unlike this method, allows for easy passing-in
of found/not-found strings to be passed back to the interface.</doc>
        <source-position filename="src/hex-document.h" line="215"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="1757">%TRUE if @what was found by the requested operation; %FALSE
  otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1743">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="start" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1744">starting offset byte of the payload to commence the search</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="what" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1745">a pointer to the data to
  search within the #HexDocument</doc>
            <array length="2" zero-terminated="0" c:type="const char*">
              <type name="gint8"/>
            </array>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1747">length in bytes of the data to be searched for</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="offset"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1748">offset of the found string, if the method returns %TRUE</doc>
            <type name="gint64" c:type="gint64*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_backward_async"
              c:identifier="hex_document_find_backward_async"
              glib:finish-func="find_finish">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="1813">Non-blocking version of [method@Hex.Document.find_backward]. This is the
function that should generally be used by a GUI client to find a string
backwards in a #HexDocument.</doc>
        <source-position filename="src/hex-document.h" line="220"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1815">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="start" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1816">starting offset byte of the payload to commence the search</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="what" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1817">a pointer to the data to
  search within the #HexDocument</doc>
            <array length="2" zero-terminated="0" c:type="const char*">
              <type name="gint8"/>
            </array>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1819">length in bytes of the data to be searched for</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="offset"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1820">offset of the found string, if the method returns %TRUE</doc>
            <type name="gint64" c:type="gint64*"/>
          </parameter>
          <parameter name="found_msg" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1821">message intended to be displayed by the client if the string
  is found</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="not_found_msg" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1823">message intended to be displayed by the client if the string
  is not found</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="8">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1825">function to be called when the operation is
  complete</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_backward_full"
              c:identifier="hex_document_find_backward_full"
              version="4.2">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="1717">Full version of [method@Hex.Document.find_backward] which allows for
more flexibility than the above, which is only for a byte-by-byte exact
match. However, it is less convenient to call since the caller must
create and and free a #HexDocumentFindData structure manually.

This method will block. For a non-blocking version, use
[method@Hex.Document.find_backward_full_async].</doc>
        <source-position filename="src/hex-document.h" line="218"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="1729">%TRUE if the search string contained in `find_data` was found by
  the requested operation; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="find_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1719">a #HexDocumentFindData structure</doc>
            <type name="DocumentFindData" c:type="HexDocumentFindData*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_backward_full_async"
              c:identifier="hex_document_find_backward_full_async"
              version="4.2"
              glib:finish-func="find_finish">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="1799">Non-blocking version of [method@Hex.Document.find_backward_full].</doc>
        <source-position filename="src/hex-document.h" line="224"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="find_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1801">a #HexDocumentFindData structure</doc>
            <type name="DocumentFindData" c:type="HexDocumentFindData*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1802">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1803">function to be called when the operation is
  complete</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_finish" c:identifier="hex_document_find_finish">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="1556">Obtain the result of a completed asynchronous find operation (forwards or
backwards).</doc>
        <source-position filename="src/hex-document.h" line="229"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="1564">a pointer to a [struct@Hex.DocumentFindData] structure, or %NULL</doc>
          <type name="DocumentFindData" c:type="HexDocumentFindData*"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1558">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1559">result of the task</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_forward" c:identifier="hex_document_find_forward">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="1517">Find a string forwards in a #HexDocument.

This method will block. For a non-blocking version, use
[method@Hex.Document.find_forward_async], which is also recommended
for GUI operations, as it, unlike this method, allows for easy passing-in
of found/not-found strings to be passed back to the interface.</doc>
        <source-position filename="src/hex-document.h" line="201"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="1533">%TRUE if @what was found by the requested operation; %FALSE
  otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1519">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="start" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1520">starting offset byte of the payload to commence the search</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="what" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1521">a pointer to the data to
  search within the #HexDocument</doc>
            <array length="2" zero-terminated="0" c:type="const char*">
              <type name="gint8"/>
            </array>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1523">length in bytes of the data to be searched for</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="offset"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1524">offset of the found string, if the method returns %TRUE</doc>
            <type name="gint64" c:type="gint64*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_forward_async"
              c:identifier="hex_document_find_forward_async"
              glib:finish-func="find_finish">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="1641">Non-blocking version of [method@Hex.Document.find_forward]. This is the
function that should generally be used by a GUI client to find a string
forwards in a #HexDocument.</doc>
        <source-position filename="src/hex-document.h" line="206"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1643">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="start" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1644">starting offset byte of the payload to commence the search</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="what" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1645">a pointer to the data to
  search within the #HexDocument</doc>
            <array length="2" zero-terminated="0" c:type="const char*">
              <type name="gint8"/>
            </array>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1647">length in bytes of the data to be searched for</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="offset"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1648">offset of the found string, if the method returns %TRUE</doc>
            <type name="gint64" c:type="gint64*"/>
          </parameter>
          <parameter name="found_msg" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1649">message intended to be displayed by the client if the string
  is found</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="not_found_msg" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1651">message intended to be displayed by the client if the string
  is not found</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="8">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1653">function to be called when the operation is
  complete</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_forward_full"
              c:identifier="hex_document_find_forward_full"
              version="4.2">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="1493">Full version of [method@Hex.Document.find_forward] which allows for
more flexibility than the above, which is only for a byte-by-byte exact
match. However, it is less convenient to call since the caller must
create and and free a #HexDocumentFindData structure manually.

This method will block. For a non-blocking version, use
[method@Hex.Document.find_forward_async].</doc>
        <source-position filename="src/hex-document.h" line="203"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="1505">%TRUE if the search string contained in `find_data` was found by
  the requested operation; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="find_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1495">a #HexDocumentFindData structure</doc>
            <type name="DocumentFindData" c:type="HexDocumentFindData*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_forward_full_async"
              c:identifier="hex_document_find_forward_full_async"
              version="4.2"
              glib:finish-func="find_finish">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="1627">Non-blocking version of [method@Hex.Document.find_forward_full].</doc>
        <source-position filename="src/hex-document.h" line="211"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="find_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1629">a #HexDocumentFindData structure</doc>
            <type name="DocumentFindData" c:type="HexDocumentFindData*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1630">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1631">function to be called when the operation is
  complete</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_buffer"
              c:identifier="hex_document_get_buffer"
              glib:get-property="buffer">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="2020">Get the [iface@Hex.Buffer] connected with the #HexDocument.</doc>
        <source-position filename="src/hex-document.h" line="237"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="2026">a pointer to the [iface@Hex.Buffer] connected
with the #HexDocument, or %NULL if no such interface is so connected.</doc>
          <type name="Buffer" c:type="HexBuffer*"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="2022">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_file"
              c:identifier="hex_document_get_file"
              glib:get-property="file">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="2037">Get the #GFile connected with the #HexDocument.</doc>
        <source-position filename="src/hex-document.h" line="234"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="2043">the #GFile connected with the #HexDocument,
or %NULL if no such object is so connected.</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="2039">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_file_size" c:identifier="hex_document_get_file_size">
        <source-position filename="src/hex-document.h" line="233"/>
        <return-value transfer-ownership="none">
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_undo_data" c:identifier="hex_document_get_undo_data">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="2005">Get the undo data at the top of the undo stack of a #HexDocument, if any.</doc>
        <source-position filename="src/hex-document.h" line="236"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="2011">a pointer to the [struct@Hex.ChangeData]
  structure at the top of the undo stack, or %NULL</doc>
          <type name="ChangeData" c:type="HexChangeData*"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="2007">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="has_changed" c:identifier="hex_document_has_changed">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="1108">Method to check whether the #HexDocument has changed.</doc>
        <source-position filename="src/hex-document.h" line="191"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="1114">%TRUE if the document has changed, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1110">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="read_async"
              c:identifier="hex_document_read_async"
              glib:finish-func="read_finish">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="856">Read the #GFile into the buffer connected to the #HexDocument object.

This method is mostly a wrapper around [method@Hex.Buffer.read_async]
but will allow additional steps and appropriate signals to be emitted
applicable to the document object above and beyond the buffer, when
the operation completes.</doc>
        <source-position filename="src/hex-document.h" line="172"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="858">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="859">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="860">function to be called when the operation is
  complete</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="read_finish"
              c:identifier="hex_document_read_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="782">Obtain the result of a completed file read operation.

This method is mostly a wrapper around [method@Hex.Buffer.read_finish]
but takes some additional steps and emits the appropriate signals
applicable to the document object above and beyond the buffer.

This method is typically called from the #GAsyncReadyCallback function
passed to [method@Hex.Document.read_async] to obtain the result of the
operation.</doc>
        <source-position filename="src/hex-document.h" line="174"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="799">%TRUE if the operation was successful; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="784">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="785">result of the task</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="redo" c:identifier="hex_document_redo">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="1901">Perform a redo operation.</doc>
        <source-position filename="src/hex-document.h" line="196"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="1907">%TRUE if the operation was successful; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1903">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_buffer"
              c:identifier="hex_document_set_buffer"
              glib:set-property="buffer"
              version="4.2">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="2054">Set the [iface@Hex.Buffer] connected with the #HexDocument.</doc>
        <source-position filename="src/hex-document.h" line="238"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="2061">%TRUE if the operation was successful; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="2056">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="buf" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="2057">[iface@Hex.Buffer]</doc>
            <type name="Buffer" c:type="HexBuffer*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_byte" c:identifier="hex_document_set_byte">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="683">Set a particular byte of a #HexDocument at position `offset` within
the payload.</doc>
        <source-position filename="src/hex-document.h" line="164"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="685">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="val" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="686">a character to set the byte as</doc>
            <type name="gchar" c:type="char"/>
          </parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="687">offset in bytes within the payload</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="insert" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="688">%TRUE if the operation should be insert mode, %FALSE if in
  overwrite mode</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="undoable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="690">whether the operation should be undoable</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_data" c:identifier="hex_document_set_data">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="724">A convenience wrapper for [method@Hex.Buffer.set_data]. See the
description of that method for details.</doc>
        <source-position filename="src/hex-document.h" line="162"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="726">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="727">offset in bytes within the payload</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="728">length in bytes of the data to be set</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="rep_len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="729">amount of bytes to replace/overwrite (if any)</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="730">a pointer to the data being
  provided</doc>
            <array length="1" zero-terminated="0" c:type="char*">
              <type name="gint8"/>
            </array>
          </parameter>
          <parameter name="undoable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="732">whether the operation should be undoable</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_file"
              c:identifier="hex_document_set_file"
              glib:set-property="file">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="523">Set the file of a [class@Hex.Document] object by #GFile.</doc>
        <source-position filename="src/hex-document.h" line="235"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="530">%TRUE if the operation was successful; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="525">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="526">a #GFile pointing to a valid file on the system</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_max_undo" c:identifier="hex_document_set_max_undo">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="1122">Set the maximum size of the #HexDocument undo stack.</doc>
        <source-position filename="src/hex-document.h" line="194"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1124">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="max_undo" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1125">the new maximum size of the undo stack</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_nibble" c:identifier="hex_document_set_nibble">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="628">Set a particular nibble of a #HexDocument.</doc>
        <source-position filename="src/hex-document.h" line="166"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="630">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="val" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="631">a character to set the nibble as</doc>
            <type name="gchar" c:type="char"/>
          </parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="632">offset in bytes within the payload</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="lower_nibble" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="633">%TRUE if targetting the lower nibble (2nd hex digit) %FALSE
  if targetting the upper nibble (1st hex digit)</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="insert" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="635">%TRUE if the operation should be insert mode, %FALSE if in
  overwrite mode</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="undoable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="637">whether the operation should be undoable</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="undo" c:identifier="hex_document_undo">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="1835">Perform an undo operation.</doc>
        <source-position filename="src/hex-document.h" line="195"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="1841">%TRUE if the operation was successful; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1837">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="write"
              c:identifier="hex_document_write"
              glib:async-func="write_async">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="905">Write the buffer to the pre-existing #GFile connected to the #HexDocument
object. This can be used for a 'Save (in place)' operation.</doc>
        <source-position filename="src/hex-document.h" line="177"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="912">%TRUE if the operation was successful; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="907">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="write_async"
              c:identifier="hex_document_write_async"
              glib:finish-func="write_finish"
              glib:sync-func="write">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="1009">Write the buffer to the pre-existing #GFile connected to the #HexDocument
object. This can be used for a 'Save (in place)' operation. This is the
non-blocking version of [method@Hex.Document.write].

Note that for both this method and
[method@Hex.Document.write_to_file_async],
[method@Hex.Document.write_finish] is the method to retrieve the return
value in your #GAsyncReadyCallback function.</doc>
        <source-position filename="src/hex-document.h" line="182"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1011">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1012">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1013">function to be called when the operation is
  complete</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_finish"
              c:identifier="hex_document_write_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="943">Obtain the result of a completed write-to-file operation.

Currently, this method is mostly a wrapper around
[method@Hex.Buffer.write_to_file_finish].

This method is typically called from the #GAsyncReadyCallback function
passed to [method@Hex.Document.write_async] or
[method@Hex.Document.write_to_file_async] to obtain the result of the
operation.</doc>
        <source-position filename="src/hex-document.h" line="185"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="960">%TRUE if the operation was successful; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="945">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="946">result of the task</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_to_file"
              c:identifier="hex_document_write_to_file"
              glib:async-func="write_to_file_async">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="888">Write the buffer to `file`. This can be used for a 'Save As' operation.

This operation will block.</doc>
        <source-position filename="src/hex-document.h" line="178"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="897">%TRUE if the operation was successful; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="890">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="891">#GFile to be written to</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_to_file_async"
              c:identifier="hex_document_write_to_file_async"
              glib:finish-func="write_finish"
              glib:sync-func="write_to_file">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="1054">Write the buffer to `file` asynchronously. This can be used for a 'Save As'
operation.  This is the non-blocking version of
[method@Hex.Document.write_to_file].

Note that for both this method and [method@Hex.Document.write_async],
[method@Hex.Document.write_finish] is the method to retrieve the return
value in your #GAsyncReadyCallback function.</doc>
        <source-position filename="src/hex-document.h" line="179"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1056">a [class@Hex.Document] object</doc>
            <type name="Document" c:type="HexDocument*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1057">#GFile to be written to</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1058">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="src/hex-document.c"
                 line="1059">function to be called when the operation is
  complete</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <property name="buffer"
                writable="1"
                transfer-ownership="none"
                setter="set_buffer"
                getter="get_buffer">
        <type name="Buffer"/>
      </property>
      <property name="file"
                writable="1"
                transfer-ownership="none"
                setter="set_file"
                getter="get_file">
        <type name="Gio.File"/>
      </property>
      <glib:signal name="document-changed" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="file-loaded" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="file-name-changed" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="file-read-started" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="file-save-started" when="first" version="4.6.1">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="file-saved" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="redo" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="undo" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="undo-stack-forget" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="DocumentClass"
            c:type="HexDocumentClass"
            glib:is-gtype-struct-for="Document">
      <source-position filename="src/hex-document.h" line="43"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="DocumentFindData"
            c:type="HexDocumentFindData"
            glib:type-name="HexDocumentFindData"
            glib:get-type="hex_document_find_data_get_type"
            c:symbol-prefix="document_find_data">
      <doc xml:space="preserve"
           filename="src/hex-document.h"
           line="75">A structure containing metadata about a find operation in a
[class@Hex.Document].</doc>
      <source-position filename="src/hex-document.h" line="113"/>
      <field name="found" writable="1">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="77">whether the string was found</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="start" writable="1">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="78">start offset of the payload, in bytes</doc>
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="what" writable="1">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="79">a pointer to the data to
  search within the #HexDocument</doc>
        <array length="3" zero-terminated="0" c:type="const char*">
          <type name="gint8"/>
        </array>
      </field>
      <field name="len" writable="1">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="81">length in bytes of the data to be searched for</doc>
        <type name="gsize" c:type="size_t"/>
      </field>
      <field name="flags" writable="1">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="82">[flags@Hex.SearchFlags] search flags (Since: 4.2)</doc>
        <type name="SearchFlags" c:type="HexSearchFlags"/>
      </field>
      <field name="offset" writable="1">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="83">offset of the found string</doc>
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="found_len" writable="1">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="84">length of the found string (may be different from the search
  string when dealing with regular expressions, for example) (Since: 4.2)</doc>
        <type name="gsize" c:type="size_t"/>
      </field>
      <field name="found_msg" writable="1">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="86">message intended to be displayed by the client if the string
  is found</doc>
        <type name="utf8" c:type="const char*"/>
      </field>
      <field name="not_found_msg" writable="1">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="88">message intended to be displayed by the client if the string
  is not found</doc>
        <type name="utf8" c:type="const char*"/>
      </field>
      <field name="padding1" readable="0" private="1">
        <array zero-terminated="0" fixed-size="5">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="padding2" readable="0" private="1">
        <array zero-terminated="0" fixed-size="5">
          <type name="gint64" c:type="gint64"/>
        </array>
      </field>
      <field name="padding3" readable="0" private="1">
        <array zero-terminated="0" fixed-size="5">
          <type name="gint" c:type="int"/>
        </array>
      </field>
      <constructor name="new"
                   c:identifier="hex_document_find_data_new"
                   version="4.2">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="90">Create a new empty [struct@Hex.DocumentFindData] structure.</doc>
        <source-position filename="src/hex-document.h" line="242"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="95">a new #HexDocumentFindData structure. Can be freed with
  `g_free ()`.</doc>
          <type name="DocumentFindData" c:type="HexDocumentFindData*"/>
        </return-value>
      </constructor>
      <method name="copy"
              c:identifier="hex_document_find_data_copy"
              version="4.2">
        <doc xml:space="preserve"
             filename="src/hex-document.c"
             line="106">Copy a [struct@Hex.DocumentFindData] structure. This function is likely
only useful for language bindings.</doc>
        <source-position filename="src/hex-document.h" line="243"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/hex-document.c"
               line="112">a newly allocated #HexDocumentFindData structure. Can be freed with
  `g_free ()`.</doc>
          <type name="DocumentFindData" c:type="HexDocumentFindData*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data" transfer-ownership="none">
            <type name="DocumentFindData" c:type="HexDocumentFindData*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <bitfield name="SearchFlags" version="4.2" c:type="HexSearchFlags">
      <doc xml:space="preserve"
           filename="src/hex-document.h"
           line="58">Bitwise flags for search options that can be combined as desired.</doc>
      <source-position filename="src/hex-document.h" line="73"/>
      <member name="none" value="0" c:identifier="HEX_SEARCH_NONE">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="60">no search flags (byte-for-byte match)</doc>
      </member>
      <member name="regex" value="1" c:identifier="HEX_SEARCH_REGEX">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="61">regular expression search</doc>
      </member>
      <member name="ignore_case"
              value="2"
              c:identifier="HEX_SEARCH_IGNORE_CASE">
        <doc xml:space="preserve"
             filename="src/hex-document.h"
             line="62">case-insensitive search</doc>
      </member>
    </bitfield>
    <class name="Widget"
           c:symbol-prefix="widget"
           c:type="HexWidget"
           parent="Gtk.Widget"
           glib:type-name="HexWidget"
           glib:get-type="hex_widget_get_type"
           glib:type-struct="WidgetClass">
      <doc xml:space="preserve"
           filename="src/gtkhex.c"
           line="387">#HexWidget is a widget which can display #HexDocument data as a
side-by-side representation of offets, hexadecimal nibbles, and ASCII
characters.</doc>
      <source-position filename="src/gtkhex.h" line="64"/>
      <implements name="Gtk.Accessible"/>
      <implements name="Gtk.Buildable"/>
      <implements name="Gtk.ConstraintTarget"/>
      <constructor name="new" c:identifier="hex_widget_new">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="3688">Create a new `HexWidget` object.</doc>
        <source-position filename="src/gtkhex.h" line="77"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/gtkhex.c"
               line="3695">a newly created `HexWidget` object, or %NULL</doc>
          <type name="Gtk.Widget" c:type="GtkWidget*"/>
        </return-value>
        <parameters>
          <parameter name="document" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="3690">the [class@Hex.Document] object to be associated
  with the newly created `HexWidget`</doc>
            <type name="Document" c:type="HexDocument*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="add_mark" c:identifier="hex_widget_add_mark" version="4.8">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4329">Add a mark for a `HexWidget` object at the specified absolute `start` and
`end` offsets.

Although the mark obtains an index within the widget internally, this index
numeral is private and is not retrievable. As a result, it is recommended
that applications wishing to manipulate marks retain the pointer returned by
this function, and implement their own tracking mechanism for the marks.</doc>
        <source-position filename="src/gtkhex.h" line="124"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/gtkhex.c"
               line="4344">A pointer to a `HexWidgetMark` object, owned by
the `HexWidget`.</doc>
          <type name="WidgetMark" c:type="HexWidgetMark*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
          <parameter name="start" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4331">The start offset of the mark</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="end" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4332">The start offset of the mark</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="color"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4333">A custom color to set for the mark, or `NULL` to use the
  default</doc>
            <type name="Gdk.RGBA" c:type="GdkRGBA*"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear_selection" c:identifier="hex_widget_clear_selection">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="3830">Clear the selection (if any). Any autohighlights will remain intact.</doc>
        <source-position filename="src/gtkhex.h" line="104"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="copy_to_clipboard"
              c:identifier="hex_widget_copy_to_clipboard">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="3713">Copy selection to clipboard.</doc>
        <source-position filename="src/gtkhex.h" line="98"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="cut_to_clipboard"
              c:identifier="hex_widget_cut_to_clipboard">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="3724">Cut selection to clipboard.</doc>
        <source-position filename="src/gtkhex.h" line="99"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="delete_autohighlight"
              c:identifier="hex_widget_delete_autohighlight">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4256">Delete the requested autohighlight.</doc>
        <source-position filename="src/gtkhex.h" line="119"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
          <parameter name="ahl" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4258">the autohighlight to be deleted</doc>
            <type name="WidgetAutoHighlight" c:type="HexWidgetAutoHighlight*"/>
          </parameter>
        </parameters>
      </method>
      <method name="delete_mark"
              c:identifier="hex_widget_delete_mark"
              version="4.8">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4369">Delete a `HexWidgetMark` from a `HexWidget`.</doc>
        <source-position filename="src/gtkhex.h" line="126"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
          <parameter name="mark" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4371">The `HexWidgetMark` to delete</doc>
            <type name="WidgetMark" c:type="HexWidgetMark*"/>
          </parameter>
        </parameters>
      </method>
      <method name="delete_selection"
              c:identifier="hex_widget_delete_selection">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="3841">Delete the current selection. The resulting action will be undoable.</doc>
        <source-position filename="src/gtkhex.h" line="105"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_adjustment" c:identifier="hex_widget_get_adjustment">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4418">Get the [class@Gtk.Adjustment] of the #HexWidget.</doc>
        <source-position filename="src/gtkhex.h" line="121"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/gtkhex.c"
               line="4423">#GtkAdjustment of the widget.</doc>
          <type name="Gtk.Adjustment" c:type="GtkAdjustment*"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_byte" c:identifier="hex_widget_get_byte">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4080">Get the value of the byte at requested offset position.</doc>
        <source-position filename="src/gtkhex.h" line="84"/>
        <return-value transfer-ownership="none">
          <type name="guint8" c:type="guchar"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4082">index of the requested byte within the whole of the buffer</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_cursor" c:identifier="hex_widget_get_cursor">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4064">Get the cursor position.</doc>
        <source-position filename="src/gtkhex.h" line="83"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/gtkhex.c"
               line="4069">the cursor position, as index within the whole of the buffer</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_display_control_characters"
              c:identifier="hex_widget_get_display_control_characters"
              glib:get-property="display-control-characters"
              version="4.10">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4532">Retrieve whether ASCII control characters are shown in the ASCII display.</doc>
        <source-position filename="src/gtkhex.h" line="112"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/gtkhex.c"
               line="4537">`TRUE` if control characters are displayed; `FALSE` otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_document"
              c:identifier="hex_widget_get_document"
              glib:get-property="document">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4447">Get the [class@Hex.Document] owned by the #HexWidget.</doc>
        <source-position filename="src/gtkhex.h" line="122"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/gtkhex.c"
               line="4452">the #HexDocument owned by the #HexWidget, or
  %NULL.</doc>
          <type name="Document" c:type="HexDocument*"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_fade_zeroes"
              c:identifier="hex_widget_get_fade_zeroes"
              glib:get-property="fade-zeroes"
              version="4.8">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4496">Retrieve whether zeroes (`00`) are faded in the hex display.</doc>
        <source-position filename="src/gtkhex.h" line="109"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/gtkhex.c"
               line="4501">`TRUE` if zeroes are faded; `FALSE` otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_group_type" c:identifier="hex_widget_get_group_type">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4480">Get the group type of the data of the #HexWidget.</doc>
        <source-position filename="src/gtkhex.h" line="87"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/gtkhex.c"
               line="4485">the group type of the data of the #HexWidget, by
  [enum@Hex.WidgetGroupType]</doc>
          <type name="WidgetGroupType" c:type="HexWidgetGroupType"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_insert_mode"
              c:identifier="hex_widget_get_insert_mode"
              glib:get-property="insert-mode">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4464">Get whether the widget is insert mode.</doc>
        <source-position filename="src/gtkhex.h" line="93"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/gtkhex.c"
               line="4469">%TRUE if the #HexWidget is in insert mode; %FALSE if it is in
  overwrite mode.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_selection" c:identifier="hex_widget_get_selection">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="3795">Get the current widget selection (highlights).</doc>
        <source-position filename="src/gtkhex.h" line="103"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/gtkhex.c"
               line="3804">%TRUE if there is an active selection (start and end are
different), and %FALSE if there is no selection (start and end are the
same).</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
          <parameter name="start"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="3797">where to store the start of the current selection,
  as offset by byte within the buffer</doc>
            <type name="gint64" c:type="gint64*"/>
          </parameter>
          <parameter name="end"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="3799">where to store the end of the current selection, as
  offset by byte within the buffer</doc>
            <type name="gint64" c:type="gint64*"/>
          </parameter>
        </parameters>
      </method>
      <method name="goto_mark"
              c:identifier="hex_widget_goto_mark"
              version="4.8">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4387">Jump the cursor in the `HexWidget` specified to the mark in question.</doc>
        <source-position filename="src/gtkhex.h" line="127"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
          <parameter name="mark" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4389">The mark to jump to</doc>
            <type name="WidgetMark" c:type="HexWidgetMark*"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert_autohighlight"
              c:identifier="hex_widget_insert_autohighlight">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4235">Insert an auto-highlight of a given search string.</doc>
        <source-position filename="src/gtkhex.h" line="115"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/gtkhex.c"
               line="4243">a newly created [struct@Hex.WidgetAutoHighlight]
  structure, owned by the `HexWidget`</doc>
          <type name="WidgetAutoHighlight" c:type="HexWidgetAutoHighlight*"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
          <parameter name="search" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4237">search
  string to auto-highlight</doc>
            <array length="1" zero-terminated="0" c:type="const char*">
              <type name="gint8"/>
            </array>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4239">length of the @search string</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert_autohighlight_full"
              c:identifier="hex_widget_insert_autohighlight_full"
              version="4.2">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4198">Full version of [method@Hex.Widget.insert_autohighlight] which allows
for specifying string match types for auto-highlights over and above
exact byte-for-byte string matches.</doc>
        <source-position filename="src/gtkhex.h" line="117"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/gtkhex.c"
               line="4209">a newly created [struct@Hex.WidgetAutoHighlight]
  structure, owned by the `HexWidget`</doc>
          <type name="WidgetAutoHighlight" c:type="HexWidgetAutoHighlight*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
          <parameter name="search" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4200">search
  string to auto-highlight</doc>
            <array length="1" zero-terminated="0" c:type="const char*">
              <type name="gint8"/>
            </array>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4202">length of the @search string</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4203">#HexSearchFlags to specify match type</doc>
            <type name="SearchFlags" c:type="HexSearchFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="paste_from_clipboard"
              c:identifier="hex_widget_paste_from_clipboard">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="3735">Paste clipboard data to widget at position of cursor.

Since 4.6, the behaviour of this method has changed. With 4.4 and earlier,
paste operations always inserted data into the payload, even if insert mode
was disabled.

Commencing in 4.6, if insert mode is not enabled, data will be overwritten
by default with a paste operation, and possibly truncated in the event the
payload is not large enough to absorb the paste data. This is to avoid
increasing the payload size of a hex document when insert mode is disabled.</doc>
        <source-position filename="src/gtkhex.h" line="100"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_cursor" c:identifier="hex_widget_set_cursor">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="3936">Move cursor to @index.</doc>
        <source-position filename="src/gtkhex.h" line="79"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="3938">where the cursor should be moved to, as offset by byte within
  the buffer</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_cursor_by_row_and_col"
              c:identifier="hex_widget_set_cursor_by_row_and_col">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4006">Move the cursor by row and column, as absolute values.</doc>
        <source-position filename="src/gtkhex.h" line="80"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
          <parameter name="col_x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4008">column to which the cursor should be moved</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="line_y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4009">line to which the cursor should be moved, by absolute value, within
  the whole buffer (not just the currently visible part)</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_display_control_characters"
              c:identifier="hex_widget_set_display_control_characters"
              glib:set-property="display-control-characters"
              version="4.10">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4549">Set whether ASCII control characters are shown in the ASCII display.</doc>
        <source-position filename="src/gtkhex.h" line="111"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
          <parameter name="display" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4551">Whether ASCII control characters should be displayed</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_fade_zeroes"
              c:identifier="hex_widget_set_fade_zeroes"
              glib:set-property="fade-zeroes"
              version="4.8">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4513">Set whether zeroes (`00`) are faded in the hex display.</doc>
        <source-position filename="src/gtkhex.h" line="108"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
          <parameter name="fade" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4515">Whether zeroes (`00` in the hex display) should be faded</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_geometry" c:identifier="hex_widget_set_geometry">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4405">Set the geometry of the widget to specified dimensions.</doc>
        <source-position filename="src/gtkhex.h" line="96"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
          <parameter name="cpl" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4407">columns per line which should be displayed, or 0 for default</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="vis_lines" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4408">number of lines which should be displayed, or 0 for default</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_group_type" c:identifier="hex_widget_set_group_type">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4097">Set the group type of the #HexWidget.</doc>
        <source-position filename="src/gtkhex.h" line="86"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
          <parameter name="gt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4099">group type</doc>
            <type name="WidgetGroupType" c:type="HexWidgetGroupType"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_insert_mode"
              c:identifier="hex_widget_set_insert_mode"
              glib:set-property="insert-mode">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4175">Set whether the #HexWidget should be in insert or overwrite mode.</doc>
        <source-position filename="src/gtkhex.h" line="94"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
          <parameter name="insert" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4177">%TRUE if insert mode should be enabled, %FALSE if overwrite mode
  should be enabled</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_mark_custom_color"
              c:identifier="hex_widget_set_mark_custom_color"
              version="4.8">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4278">Set a custom color for a `HexWidgetMark` object.</doc>
        <source-position filename="src/gtkhex.h" line="128"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
          <parameter name="mark" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4280">The `HexWidgetMark` for which the custom color will be set</doc>
            <type name="WidgetMark" c:type="HexWidgetMark*"/>
          </parameter>
          <parameter name="color" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4281">The custom color to be set for the mark</doc>
            <type name="Gdk.RGBA" c:type="GdkRGBA*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_nibble" c:identifier="hex_widget_set_nibble">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="3906">Move the cursor to upper nibble or lower nibble of the current byte.</doc>
        <source-position filename="src/gtkhex.h" line="81"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
          <parameter name="lower_nibble" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="3908">%TRUE if the lower nibble of the current byte should be
  selected; %FALSE for the upper nibble</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_selection" c:identifier="hex_widget_set_selection">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="3755">Set the widget selection (highlights).</doc>
        <source-position filename="src/gtkhex.h" line="102"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
          <parameter name="start" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="3757">starting offset by byte within the buffer</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="end" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="3758">ending offset by byte within the buffer</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="show_ascii_column"
              c:identifier="hex_widget_show_ascii_column"
              version="4.2">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4155">Set whether the ASCII column of the widget should be shown.</doc>
        <source-position filename="src/gtkhex.h" line="91"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
          <parameter name="show" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4157">%TRUE if the ASCII column should be shown, %FALSE if it should
  be hidden</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="show_hex_column"
              c:identifier="hex_widget_show_hex_column"
              version="4.2">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4135">Set whether the hex column of the widget should be shown.</doc>
        <source-position filename="src/gtkhex.h" line="90"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
          <parameter name="show" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4137">%TRUE if the hex column should be shown, %FALSE if it should
  be hidden</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="show_offsets" c:identifier="hex_widget_show_offsets">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="4119">Set whether the offsets column of the widget should be shown.</doc>
        <source-position filename="src/gtkhex.h" line="89"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
          <parameter name="show" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="4121">%TRUE if the offsets column should be shown, %FALSE if it should
  be hidden</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="zero_selection"
              c:identifier="hex_widget_zero_selection"
              version="4.4">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="3868">Set the current selection to zero. The resulting action will be undoable.</doc>
        <source-position filename="src/gtkhex.h" line="106"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="gh" transfer-ownership="none">
            <type name="Widget" c:type="HexWidget*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="display-control-characters"
                version="4.10"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_display_control_characters"
                getter="get_display_control_characters"
                default-value="FALSE">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="3081">Whether ASCII control characters (ASCII characters 0x0 through
0x1F) will be rendered as unicode symbols on the ASCII side of the
`HexWidget`.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="document"
                version="4.2"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_document">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="3059">`HexDocument` affiliated with and owned by the `HexWidget`.</doc>
        <type name="Document"/>
      </property>
      <property name="fade-zeroes"
                version="4.8"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_fade_zeroes"
                getter="get_fade_zeroes"
                default-value="FALSE">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="3070">Whether zeroes (`00`) will be faded on the hex side of the `HexWidget`.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="insert-mode"
                version="4.10"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_insert_mode"
                getter="get_insert_mode"
                default-value="FALSE">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="3094">Whether insert-mode (versus overwrite) is currently engaged.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <glib:signal name="copy-clipboard" when="first">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="3168">Emitted when a copy-to-clipboard operation has occurred.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="cursor-moved" when="first">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="3118">Emitted when the cursor has moved.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="cut-clipboard" when="first">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="3153">Emitted when a cut-to-clipboard operation has occurred.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="data-changed" when="first">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="3139">Emitted when data has changed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="draw-complete" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="paste-clipboard" when="first">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="3183">Emitted when a paste-from-clipboard operation has occurred.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="WidgetAutoHighlight"
            c:type="HexWidgetAutoHighlight"
            opaque="1"
            glib:type-name="HexWidgetAutoHighlight"
            glib:get-type="hex_widget_autohighlight_get_type"
            c:symbol-prefix="widget_autohighlight">
      <doc xml:space="preserve"
           filename="src/gtkhex.c"
           line="125">A structure used to automatically highlight all visible occurrences
of a given string.</doc>
      <source-position filename="src/gtkhex.h" line="70"/>
    </record>
    <record name="WidgetClass"
            c:type="HexWidgetClass"
            glib:is-gtype-struct-for="Widget">
      <source-position filename="src/gtkhex.h" line="64"/>
      <field name="parent_class">
        <type name="Gtk.WidgetClass" c:type="GtkWidgetClass"/>
      </field>
    </record>
    <enumeration name="WidgetGroupType" c:type="HexWidgetGroupType">
      <doc xml:space="preserve"
           filename="src/gtkhex.h"
           line="44">Specifies how data is to be grouped by the #HexWidget.</doc>
      <source-position filename="src/gtkhex.h" line="59"/>
      <member name="byte" value="1" c:identifier="HEX_WIDGET_GROUP_BYTE">
        <doc xml:space="preserve"
             filename="src/gtkhex.h"
             line="46">group data by byte (8-bit)</doc>
      </member>
      <member name="word" value="2" c:identifier="HEX_WIDGET_GROUP_WORD">
        <doc xml:space="preserve"
             filename="src/gtkhex.h"
             line="47">group data by word (16-bit)</doc>
      </member>
      <member name="long" value="4" c:identifier="HEX_WIDGET_GROUP_LONG">
        <doc xml:space="preserve"
             filename="src/gtkhex.h"
             line="48">group data by long (32-bit)</doc>
      </member>
      <member name="quad" value="8" c:identifier="HEX_WIDGET_GROUP_QUAD">
        <doc xml:space="preserve"
             filename="src/gtkhex.h"
             line="49">group data by quadword (64-bit)</doc>
      </member>
    </enumeration>
    <class name="WidgetMark"
           c:symbol-prefix="widget_mark"
           c:type="HexWidgetMark"
           parent="GObject.Object"
           glib:type-name="HexWidgetMark"
           glib:get-type="hex_widget_mark_get_type"
           glib:type-struct="WidgetMarkClass">
      <doc xml:space="preserve"
           filename="src/gtkhex.c"
           line="162">`HexWidgetMark` is a `GObject` which contains the metadata associated with a
mark for a hex document.

To instantiate a `HexWidgetMark` object, use the [method@HexWidget.add_mark]
method.</doc>
      <source-position filename="src/gtkhex.h" line="73"/>
      <method name="get_custom_color"
              c:identifier="hex_widget_mark_get_custom_color"
              glib:get-property="custom-color"
              version="4.8">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="200">Obtains the custom color associated with a `HexWidgetMark` object, if
any.</doc>
        <source-position filename="src/gtkhex.h" line="130"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mark" transfer-ownership="none">
            <type name="WidgetMark" c:type="HexWidgetMark*"/>
          </instance-parameter>
          <parameter name="color"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/gtkhex.c"
                 line="202">A `GdkRGBA` structure to be set with the custom color
  associated with the `HexWidgetMark`, if applicable</doc>
            <type name="Gdk.RGBA" c:type="GdkRGBA*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_end_offset"
              c:identifier="hex_widget_mark_get_end_offset"
              version="4.8">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="249">Obtains the end offset of a `HexWidgetMark`.</doc>
        <source-position filename="src/gtkhex.h" line="133"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/gtkhex.c"
               line="254">The end offset of the mark</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="mark" transfer-ownership="none">
            <type name="WidgetMark" c:type="HexWidgetMark*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_have_custom_color"
              c:identifier="hex_widget_mark_get_have_custom_color"
              glib:get-property="have-custom-color"
              version="4.8">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="182">Returns whether the `HexWidgetMark` has a custom color associated with it.</doc>
        <source-position filename="src/gtkhex.h" line="131"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/gtkhex.c"
               line="187">`TRUE` if the `HexWidgetMark` has a custom color associated with
  it; `FALSE` otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="mark" transfer-ownership="none">
            <type name="WidgetMark" c:type="HexWidgetMark*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_start_offset"
              c:identifier="hex_widget_mark_get_start_offset"
              version="4.8">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="232">Obtains the start offset of a `HexWidgetMark`.</doc>
        <source-position filename="src/gtkhex.h" line="132"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/gtkhex.c"
               line="237">The start offset of the mark</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="mark" transfer-ownership="none">
            <type name="WidgetMark" c:type="HexWidgetMark*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="custom-color"
                writable="1"
                transfer-ownership="none"
                getter="get_custom_color">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="337">The custom color of the `HexWidgetMark`, if applicable.</doc>
        <type name="Gdk.RGBA"/>
      </property>
      <property name="have-custom-color"
                transfer-ownership="none"
                getter="get_have_custom_color"
                default-value="FALSE">
        <doc xml:space="preserve"
             filename="src/gtkhex.c"
             line="328">Whether the `HexWidgetMark` has a custom color.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
    </class>
    <record name="WidgetMarkClass"
            c:type="HexWidgetMarkClass"
            glib:is-gtype-struct-for="WidgetMark">
      <source-position filename="src/gtkhex.h" line="73"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <function name="buffer_util_get_file_size"
              c:identifier="hex_buffer_util_get_file_size"
              moved-to="Buffer.util_get_file_size">
      <doc xml:space="preserve"
           filename="src/hex-buffer-iface.c"
           line="431">Utility function to obtain the size of a #GFile.

Since 4.6, this function will return an unspecified negative value if the
file size was unable to be obtained, as opposed to 0 as it previously did.
This is to distinguish between valid zero-length files and files for which
the size was not able to be obtained (eg, if it was unreadable). In the
future, these negative values may be defined as specific enums which have a
more specific meaning. But presently and going forward, testing for a
negative value is sufficient to determine that the file size was
unobtainable.</doc>
      <source-position filename="src/hex-buffer-iface.h" line="148"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="446">the size of the file, in bytes</doc>
        <type name="gint64" c:type="gint64"/>
      </return-value>
      <parameters>
        <parameter name="file" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="433">file to obtain size of</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
      </parameters>
    </function>
    <function name="buffer_util_new"
              c:identifier="hex_buffer_util_new"
              moved-to="Buffer.util_new">
      <doc xml:space="preserve"
           filename="src/hex-buffer-iface.c"
           line="336">Utility function to create an on object which implements the HexBuffer
interface.

The `plugin` parameter will be the unique part of the plugin file name (eg,
if the file name is libhex-buffer-mmap.so, you would specify "mmap"). If
`NULL` is passed, the fallback (presently the "malloc" backend, but this is
an implementation detail and may be subject to change) will be used.

The `file` parameter is a valid #GFile if you would like the buffer
pre-loaded, or %NULL for an empty buffer.</doc>
      <source-position filename="src/hex-buffer-iface.h" line="149"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="src/hex-buffer-iface.c"
             line="352">a pointer to a valid implementation of a
[iface@Hex.Buffer] interface, pre-cast as type #HexBuffer, or %NULL if
the operation failed. Starting with 4.2, if a specific backend is requested,
and the system supports plugins as a whole but cannot load that specified
plugin, %NULL will be returned as though the operation failed, so as to
customize the fallback scheme programmatically.</doc>
        <type name="Buffer" c:type="HexBuffer*"/>
      </return-value>
      <parameters>
        <parameter name="plugin"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="338">the name of the plugin, or %NULL</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="file"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="src/hex-buffer-iface.c"
               line="339">file to initialize the buffer with, or %NULL</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
