diff options
author | Rico Tzschichholz <ricotz@ubuntu.com> | 2020-01-07 14:23:04 +0100 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2020-01-07 14:23:16 +0100 |
commit | fbc3657b769bfa156927a6a116d5967d58b5e75e (patch) | |
tree | e78a47f92ba226177bfef92c84641773f0a3343a /gir | |
parent | 1f9284228092b2a7200e8a78bc0ea6702231c6db (diff) | |
download | gobject-introspection-fbc3657b769bfa156927a6a116d5967d58b5e75e.tar.gz |
Update glib annotations
Diffstat (limited to 'gir')
-rw-r--r-- | gir/gio-2.0.c | 61 | ||||
-rw-r--r-- | gir/glib-2.0.c | 127 | ||||
-rw-r--r-- | gir/gobject-2.0.c | 72 |
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. |