Class UriParamsIter

All Implemented Interfaces:
PointerInterface

public class UriParamsIter extends Record
Many URI schemes include one or more attribute/value pairs as part of the URI
value. For example `scheme://server/path?query=string&is=there` has two
attributes – `query=string` and `is=there` – in its query part.

A #GUriParamsIter structure represents an iterator that can be used to
iterate over the attribute/value pairs of a URI query string. #GUriParamsIter
structures are typically allocated on the stack and then initialized with
g_uri_params_iter_init(). See the documentation for g_uri_params_iter_init()
for a usage example.

https://docs.gtk.org/glib/struct.UriParamsIter.html

  • Field Details

  • Constructor Details

  • Method Details

    • getClassHandler

      public static ClassHandler getClassHandler()
    • getFieldDummy0

      public int getFieldDummy0()
    • getFieldDummy1

      public Pointer getFieldDummy1()
    • getFieldDummy2

      public Pointer getFieldDummy2()
    • init

      public void init(@Nonnull Str params, long length, @Nonnull Str separators, int flags)
      Initializes an attribute/value pair iterator.

      The iterator keeps pointers to the @params and @separators arguments, those
      variables must thus outlive the iterator and not be modified during the
      iteration.

      If %G_URI_PARAMS_WWW_FORM is passed in @flags, `+` characters in the param
      string will be replaced with spaces in the output. For example, `foo=bar+baz`
      will give attribute `foo` with value `bar baz`. This is commonly used on the
      web (the `https` and `http` schemes only), but is deprecated in favour of
      the equivalent of encoding spaces as `%20`.

      Unlike with g_uri_parse_params(), %G_URI_PARAMS_CASE_INSENSITIVE has no
      effect if passed to @flags for g_uri_params_iter_init(). The caller is
      responsible for doing their own case-insensitive comparisons.
      <!-- language="C" -->
       GUriParamsIter iter;
       GError *error = NULL;
       gchar *unowned_attr, *unowned_value;
       
       g_uri_params_iter_init (&iter, "foo=bar&baz=bar&Foo=frob&baz=bar2", -1, "&", G_URI_PARAMS_NONE);
       while (g_uri_params_iter_next (&iter, &unowned_attr, &unowned_value, &error))
         {
           g_autofree gchar *attr = g_steal_pointer (&unowned_attr);
           g_autofree gchar *value = g_steal_pointer (&unowned_value);
           // do something with attr and value; this code will be called 4 times
           // for the params string in this example: once with attr=foo and value=bar,
           // then with baz/bar, then Foo/frob, then baz/bar2.
         }
       if (error)
         // handle parsing error
       
      Parameters:
      params - a `%`-encoded string containing `attribute=value` parameters
      length - the length of @params, or `-1` if it is nul-terminated
      separators - the separator byte character set between parameters. (usually `&`, but sometimes `;` or both `&;`). Note that this function works on bytes not characters, so it can't be used to delimit UTF-8 strings for anything but ASCII characters. You may pass an empty set, in which case no splitting will occur.
      flags - flags to modify the way the parameters are handled.
    • init

      public void init(String params, long length, String separators, int flags)
      Initializes an attribute/value pair iterator.

      The iterator keeps pointers to the @params and @separators arguments, those
      variables must thus outlive the iterator and not be modified during the
      iteration.

      If %G_URI_PARAMS_WWW_FORM is passed in @flags, `+` characters in the param
      string will be replaced with spaces in the output. For example, `foo=bar+baz`
      will give attribute `foo` with value `bar baz`. This is commonly used on the
      web (the `https` and `http` schemes only), but is deprecated in favour of
      the equivalent of encoding spaces as `%20`.

      Unlike with g_uri_parse_params(), %G_URI_PARAMS_CASE_INSENSITIVE has no
      effect if passed to @flags for g_uri_params_iter_init(). The caller is
      responsible for doing their own case-insensitive comparisons.
      <!-- language="C" -->
       GUriParamsIter iter;
       GError *error = NULL;
       gchar *unowned_attr, *unowned_value;
       
       g_uri_params_iter_init (&iter, "foo=bar&baz=bar&Foo=frob&baz=bar2", -1, "&", G_URI_PARAMS_NONE);
       while (g_uri_params_iter_next (&iter, &unowned_attr, &unowned_value, &error))
         {
           g_autofree gchar *attr = g_steal_pointer (&unowned_attr);
           g_autofree gchar *value = g_steal_pointer (&unowned_value);
           // do something with attr and value; this code will be called 4 times
           // for the params string in this example: once with attr=foo and value=bar,
           // then with baz/bar, then Foo/frob, then baz/bar2.
         }
       if (error)
         // handle parsing error
       
      Parameters:
      params - a `%`-encoded string containing `attribute=value` parameters
      length - the length of @params, or `-1` if it is nul-terminated
      separators - the separator byte character set between parameters. (usually `&`, but sometimes `;` or both `&;`). Note that this function works on bytes not characters, so it can't be used to delimit UTF-8 strings for anything but ASCII characters. You may pass an empty set, in which case no splitting will occur.
      flags - flags to modify the way the parameters are handled.