summaryrefslogtreecommitdiff
path: root/gir
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2020-01-07 14:23:04 +0100
committerRico Tzschichholz <ricotz@ubuntu.com>2020-01-07 14:23:16 +0100
commitfbc3657b769bfa156927a6a116d5967d58b5e75e (patch)
treee78a47f92ba226177bfef92c84641773f0a3343a /gir
parent1f9284228092b2a7200e8a78bc0ea6702231c6db (diff)
downloadgobject-introspection-fbc3657b769bfa156927a6a116d5967d58b5e75e.tar.gz
Update glib annotations
Diffstat (limited to 'gir')
-rw-r--r--gir/gio-2.0.c61
-rw-r--r--gir/glib-2.0.c127
-rw-r--r--gir/gobject-2.0.c72
3 files changed, 221 insertions, 39 deletions
diff --git a/gir/gio-2.0.c b/gir/gio-2.0.c
index e6d9da15..e3605843 100644
--- a/gir/gio-2.0.c
+++ b/gir/gio-2.0.c
@@ -10538,7 +10538,7 @@
* The return value (if non-%NULL) should be freed with
* g_variant_unref() when it is no longer required.
*
- * Returns: (nullable): the current state of the action
+ * Returns: (nullable) (transfer full): the current state of the action
* Since: 2.28
*/
@@ -20465,15 +20465,15 @@
*
* On the client side, it is never necessary to call this method;
* although the connection needs to perform a handshake after
- * connecting (or after sending a "STARTTLS"-type command) and may
- * need to rehandshake later if the server requests it,
- * #GDtlsConnection will handle this for you automatically when you try
- * to send or receive data on the connection. However, you can call
- * g_dtls_connection_handshake() manually if you want to know for sure
- * whether the initial handshake succeeded or failed (as opposed to
- * just immediately trying to write to @conn, in which
- * case if it fails, it may not be possible to tell if it failed
- * before or after completing the handshake).
+ * connecting, #GDtlsConnection will handle this for you automatically
+ * when you try to send or receive data on the connection. You can call
+ * g_dtls_connection_handshake() manually if you want to know whether
+ * the initial handshake succeeded or failed (as opposed to just
+ * immediately trying to use @conn to read or write, in which case,
+ * if it fails, it may not be possible to tell if it failed before
+ * or after completing the handshake), but beware that servers may reject
+ * client authentication after the handshake has completed, so a
+ * successful handshake does not indicate the connection will be usable.
*
* Likewise, on the server side, although a handshake is necessary at
* the beginning of the communication, you do not need to call this
@@ -27144,6 +27144,43 @@
/**
+ * g_list_store_find:
+ * @store: a #GListStore
+ * @item: (type GObject): an item
+ * @position: (out) (optional): the first position of @item, if it was found.
+ *
+ * Looks up the given @item in the list store by looping over the items until
+ * the first occurrence of @item. If @item was not found, then @position will
+ * not be set, and this method will return %FALSE.
+ *
+ * If you need to compare the two items with a custom comparison function, use
+ * g_list_store_find_with_equal_func() with a custom #GEqualFunc instead.
+ *
+ * Returns: Whether @store contains @item. If it was found, @position will be
+ * set to the position where @item occurred for the first time.
+ * Since: 2.64
+ */
+
+
+/**
+ * g_list_store_find_with_equal_func:
+ * @store: a #GListStore
+ * @item: (type GObject): an item
+ * @equal_func: (scope call): A custom equality check function
+ * @position: (out) (optional): the first position of @item, if it was found.
+ *
+ * Looks up the given @item in the list store by looping over the items and
+ * comparing them with @compare_func until the first occurrence of @item which
+ * matches. If @item was not found, then @position will not be set, and this
+ * method will return %FALSE.
+ *
+ * Returns: Whether @store contains @item. If it was found, @position will be
+ * set to the position where @item occurred for the first time.
+ * Since: 2.64
+ */
+
+
+/**
* g_list_store_insert:
* @store: a #GListStore
* @position: the position at which to insert the new item
@@ -32992,7 +33029,7 @@
* database: those located at the path returned by this function.
*
* Relocatable schemas can be referenced by other schemas and can
- * threfore describe multiple sets of keys at different locations. For
+ * therefore describe multiple sets of keys at different locations. For
* relocatable schemas, this function will return %NULL.
*
* Returns: (transfer none): the path of the schema, or %NULL
@@ -38145,7 +38182,7 @@
/**
* g_task_propagate_value:
* @task: a #GTask
- * @value: (out) (caller-allocates): return location for the #GValue
+ * @value: (out caller-allocates): return location for the #GValue
* @error: return location for a #GError
*
* Gets the result of @task as a #GValue, and transfers ownership of
diff --git a/gir/glib-2.0.c b/gir/glib-2.0.c
index 9ac6f669..fc111256 100644
--- a/gir/glib-2.0.c
+++ b/gir/glib-2.0.c
@@ -13103,6 +13103,19 @@
/**
+ * g_clear_list: (skip)
+ * @list_ptr: (not nullable): a #GList return location
+ * @destroy: (nullable): the function to pass to g_list_free_full() or %NULL to not free elements
+ *
+ * Clears a pointer to a #GList, freeing it and, optionally, freeing its elements using @destroy.
+ *
+ * @list_ptr must be a valid pointer. If @list_ptr points to a null #GList, this does nothing.
+ *
+ * Since: 2.64
+ */
+
+
+/**
* g_clear_pointer: (skip)
* @pp: (not nullable): a pointer to a variable, struct member etc. holding a
* pointer
@@ -13128,6 +13141,19 @@
/**
+ * g_clear_slist: (skip)
+ * @slist_ptr: (not nullable): a #GSList return location
+ * @destroy: (nullable): the function to pass to g_slist_free_full() or %NULL to not free elements
+ *
+ * Clears a pointer to a #GSList, freeing it and, optionally, freeing its elements using @destroy.
+ *
+ * @slist_ptr must be a valid pointer. If @slist_ptr points to a null #GSList, this does nothing.
+ *
+ * Since: 2.64
+ */
+
+
+/**
* g_close:
* @fd: A file descriptor
* @error: a #GError
@@ -16460,19 +16486,24 @@
* (UTF-8 on Windows)
* @mode: a string describing the mode in which the file should be opened
*
- * A wrapper for the stdio fopen() function. The fopen() function
+ * A wrapper for the stdio `fopen()` function. The `fopen()` function
* opens a file and associates a new stream with it.
*
* Because file descriptors are specific to the C library on Windows,
- * and a file descriptor is part of the FILE struct, the FILE* returned
+ * and a file descriptor is part of the `FILE` struct, the `FILE*` returned
* by this function makes sense only to functions in the same C library.
* Thus if the GLib-using code uses a different C library than GLib does,
* the FILE* returned by this function cannot be passed to C library
- * functions like fprintf() or fread().
+ * functions like `fprintf()` or `fread()`.
*
- * See your C library manual for more details about fopen().
+ * See your C library manual for more details about `fopen()`.
*
- * Returns: A FILE* if the file was successfully opened, or %NULL if
+ * As `close()` and `fclose()` are part of the C library, this implies that it is
+ * currently impossible to close a file if the application C library and the C library
+ * used by GLib are different. Convenience functions like g_file_set_contents()
+ * avoid this problem.
+ *
+ * Returns: A `FILE*` if the file was successfully opened, or %NULL if
* an error occurred
* Since: 2.6
*/
@@ -25161,6 +25192,39 @@
* on the current contents of the array and the caller is
* responsible for freeing the array elements.
*
+ * An example of use:
+ * |[<!-- language="C" -->
+ * g_autoptr(GPtrArray) chunk_buffer = g_ptr_array_new_with_free_func (g_bytes_unref);
+ *
+ * // Some part of your application appends a number of chunks to the pointer array.
+ * g_ptr_array_add (chunk_buffer, g_bytes_new_static ("hello", 5));
+ * g_ptr_array_add (chunk_buffer, g_bytes_new_static ("world", 5));
+ *
+ * …
+ *
+ * // Periodically, the chunks need to be sent as an array-and-length to some
+ * // other part of the program.
+ * GBytes **chunks;
+ * gsize n_chunks;
+ *
+ * chunks = g_ptr_array_steal (chunk_buffer, &n_chunks);
+ * for (gsize i = 0; i < n_chunks; i++)
+ * {
+ * // Do something with each chunk here, and then free them, since
+ * // g_ptr_array_steal() transfers ownership of all the elements and the
+ * // array to the caller.
+ * …
+ *
+ * g_bytes_unref (chunks[i]);
+ * }
+ *
+ * g_free (chunks);
+ *
+ * // After calling g_ptr_array_steal(), the pointer array can be reused for the
+ * // next set of chunks.
+ * g_assert (chunk_buffer->len == 0);
+ * ]|
+ *
* Returns: (transfer full): the element data, which should be
* freed using g_free().
* Since: 2.64
@@ -29686,6 +29750,32 @@
/**
+ * g_source_set_dispose_function:
+ * @source: A #GSource to set the dispose function on
+ * @dispose: #GSourceDisposeFunc to set on the source
+ *
+ * Set @dispose as dispose function on @source. @dispose will be called once
+ * the reference count of @source reaches 0 but before any of the state of the
+ * source is freed, especially before the finalize function is called.
+ *
+ * This means that at this point @source is still a valid #GSource and it is
+ * allow for the reference count to increase again until @dispose returns.
+ *
+ * The dispose function can be used to clear any "weak" references to the
+ * @source in other data structures in a thread-safe way where it is possible
+ * for another thread to increase the reference count of @source again while
+ * it is being freed.
+ *
+ * The finalize function can not be used for this purpose as at that point
+ * @source is already partially freed and not valid anymore.
+ *
+ * This should only ever be called from #GSource implementations.
+ *
+ * Since: 2.64
+ */
+
+
+/**
* g_source_set_funcs:
* @source: a #GSource
* @funcs: the new #GSourceFuncs
@@ -35089,6 +35179,29 @@
/**
+ * g_unix_get_passwd_entry:
+ * @user_name: the username to get the passwd file entry for
+ * @error: return location for a #GError, or %NULL
+ *
+ * Get the `passwd` file entry for the given @user_name using `getpwnam_r()`.
+ * This can fail if the given @user_name doesn’t exist.
+ *
+ * The returned `struct passwd` has been allocated using g_malloc() and should
+ * be freed using g_free(). The strings referenced by the returned struct are
+ * included in the same allocation, so are valid until the `struct passwd` is
+ * freed.
+ *
+ * This function is safe to call from multiple threads concurrently.
+ *
+ * You will need to include `pwd.h` to get the definition of `struct passwd`.
+ *
+ * Returns: (transfer full): passwd entry, or %NULL on error; free the returned
+ * value with g_free()
+ * Since: 2.64
+ */
+
+
+/**
* g_unix_open_pipe:
* @fds: Array of two integers
* @flags: Bitfield of file descriptor flags, as for fcntl()
@@ -35965,7 +36078,9 @@
/**
* g_uuid_string_random:
*
- * Generates a random UUID (RFC 4122 version 4) as a string.
+ * Generates a random UUID (RFC 4122 version 4) as a string. It has the same
+ * randomness guarantees as #GRand, so must not be used for cryptographic
+ * purposes such as key generation, nonces, salts or one-time pads.
*
* Returns: (transfer full): A string that should be freed with g_free().
* Since: 2.52
diff --git a/gir/gobject-2.0.c b/gir/gobject-2.0.c
index 66d4c29f..9ea50c91 100644
--- a/gir/gobject-2.0.c
+++ b/gir/gobject-2.0.c
@@ -24,7 +24,10 @@
* GBinding:source-property:
*
* The name of the property of #GBinding:source that should be used
- * as the source of the binding
+ * as the source of the binding.
+ *
+ * This should be in [canonical form][canonical-parameter-names] to get the
+ * best performance.
*
* Since: 2.26
*/
@@ -43,7 +46,10 @@
* GBinding:target-property:
*
* The name of the property of #GBinding:target that should be used
- * as the target of the binding
+ * as the target of the binding.
+ *
+ * This should be in [canonical form][canonical-parameter-names] to get the
+ * best performance.
*
* Since: 2.26
*/
@@ -413,11 +419,14 @@
*
* ## Parameter names # {#canonical-parameter-names}
*
- * Parameter names need to start with a letter (a-z or A-Z).
- * Subsequent characters can be letters, numbers or a '-'.
- * All other characters are replaced by a '-' during construction.
- * The result of this replacement is called the canonical name of
- * the parameter.
+ * A property name consists of segments consisting of ASCII letters and
+ * digits, separated by either the `-` or `_` character. The first
+ * character of a property name must be a letter. These are the same rules as
+ * for signal naming (see g_signal_new()).
+ *
+ * When creating and looking up a #GParamSpec, either separator can be
+ * used, but they cannot be mixed. Using `-` is considerably more
+ * efficient, and is the ‘canonical form’. Using `_` is discouraged.
*/
@@ -735,6 +744,10 @@
* detail part of the signal specification upon connection) serves as a
* wildcard and matches any detail argument passed in to emission.
*
+ * While the @detail argument is typically used to pass an object property name
+ * (as with #GObject::notify), no specific format is mandated for the detail
+ * string, other than that it must be non-empty.
+ *
* ## Memory management of signal handlers # {#signal-memory-management}
*
* If you are connecting handlers to signals and using a #GObject instance as
@@ -2768,20 +2781,22 @@
* of three properties: an integer, a string and an object:
* |[<!-- language="C" -->
* gint intval;
+ * guint64 uint64val;
* gchar *strval;
* GObject *objval;
*
* g_object_get (my_object,
* "int-property", &intval,
+ * "uint64-property", &uint64val,
* "str-property", &strval,
* "obj-property", &objval,
* NULL);
*
- * // Do something with intval, strval, objval
+ * // Do something with intval, uint64val, strval, objval
*
* g_free (strval);
* g_object_unref (objval);
- * ]|
+ * ]|
*/
@@ -2957,6 +2972,20 @@
* Construction parameters (see #G_PARAM_CONSTRUCT, #G_PARAM_CONSTRUCT_ONLY)
* which are not explicitly specified are set to their default values.
*
+ * Note that in C, small integer types in variable argument lists are promoted
+ * up to #gint or #guint as appropriate, and read back accordingly. #gint is 32
+ * bits on every platform on which GLib is currently supported. This means that
+ * you can use C expressions of type #gint with g_object_new() and properties of
+ * type #gint or #guint or smaller. Specifically, you can use integer literals
+ * with these property types.
+ *
+ * When using property types of #gint64 or #guint64, you must ensure that the
+ * value that you provide is 64 bit. This means that you should use a cast or
+ * make use of the %G_GINT64_CONSTANT or %G_GUINT64_CONSTANT macros.
+ *
+ * Similarly, #gfloat is promoted to #gdouble, so you must ensure that the value
+ * you provide is a #gdouble, even for a property of type #gfloat.
+ *
* Returns: (transfer full) (type GObject.Object): a new instance of
* @object_type
*/
@@ -3226,6 +3255,11 @@
*
* Sets properties on an object.
*
+ * The same caveats about passing integer literals as varargs apply as with
+ * g_object_new(). In particular, any integer literals set as the values for
+ * properties of type #gint64 or #guint64 must be 64 bits wide, using the
+ * %G_GINT64_CONSTANT or %G_GUINT64_CONSTANT macros.
+ *
* Note that the "notify" signals are queued and only emitted (in
* reverse order) after all properties have been set. See
* g_object_freeze_notify().
@@ -3747,15 +3781,9 @@
*
* Creates a new #GParamSpec instance.
*
- * A property name consists of segments consisting of ASCII letters and
- * digits, separated by either the '-' or '_' character. The first
- * character of a property name must be a letter. Names which violate these
- * rules lead to undefined behaviour.
- *
- * When creating and looking up a #GParamSpec, either separator can be
- * used, but they cannot be mixed. Using '-' is considerably more
- * efficient and in fact required when using property names as detail
- * strings for signals.
+ * See [canonical parameter names][canonical-parameter-names] for details of
+ * the rules for @name. Names which violate these rules lead to undefined
+ * behaviour.
*
* Beyond the name, #GParamSpecs have two more descriptive
* strings associated with them, the @nick, which should be suitable
@@ -4759,12 +4787,14 @@
* Creates a new signal. (This is usually done in the class initializer.)
*
* A signal name consists of segments consisting of ASCII letters and
- * digits, separated by either the '-' or '_' character. The first
+ * digits, separated by either the `-` or `_` character. The first
* character of a signal name must be a letter. Names which violate these
- * rules lead to undefined behaviour of the GSignal system.
+ * rules lead to undefined behaviour. These are the same rules as for property
+ * naming (see g_param_spec_internal()).
*
* When registering a signal and looking up a signal, either separator can
- * be used, but they cannot be mixed.
+ * be used, but they cannot be mixed. Using `-` is considerably more efficient.
+ * Using `_` is discouraged.
*
* If 0 is used for @class_offset subclasses cannot override the class handler
* in their class_init method by doing super_class->signal_handler = my_signal_handler.