mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-25 15:06:14 +01:00
gitypeinfo: Add GI_TYPE_TAG_IS_NUMERIC macro
This is a convenience for bindings that want to perform a similar action for all numeric types. It allows more expressive code in some cases: if (GI_TYPE_TAG_IS_NUMERIC(tag)) { do_one_thing(); return; } switch (tag) { case GI_TYPE_TAG_ARRAY: do_other_thing(); return; /* ... */ default: g_assert_not_reached(); } instead of listing out all of the numeric types in the switch statement.
This commit is contained in:
parent
6583ad7f4f
commit
75b48f1dbe
10
gitypeinfo.h
10
gitypeinfo.h
@ -48,6 +48,16 @@ G_BEGIN_DECLS
|
||||
*/
|
||||
#define G_TYPE_TAG_IS_BASIC(tag) (tag < GI_TYPE_TAG_ARRAY || tag == GI_TYPE_TAG_UNICHAR)
|
||||
|
||||
/**
|
||||
* GI_TYPE_TAG_IS_NUMERIC:
|
||||
* @tag: a type tag
|
||||
*
|
||||
* Checks if @tag is a numeric type. That is, integer or floating point.
|
||||
*
|
||||
* Since: 1.72
|
||||
*/
|
||||
#define GI_TYPE_TAG_IS_NUMERIC(tag) ((tag) >= GI_TYPE_TAG_INT8 && (tag) <= GI_TYPE_TAG_DOUBLE)
|
||||
|
||||
GI_AVAILABLE_IN_ALL
|
||||
const gchar* g_type_tag_to_string (GITypeTag type);
|
||||
|
||||
|
@ -411,7 +411,7 @@ typedef enum {
|
||||
/* Basic types */
|
||||
GI_TYPE_TAG_VOID = 0,
|
||||
GI_TYPE_TAG_BOOLEAN = 1,
|
||||
GI_TYPE_TAG_INT8 = 2,
|
||||
GI_TYPE_TAG_INT8 = 2, /* Start of GI_TYPE_TAG_IS_NUMERIC types */
|
||||
GI_TYPE_TAG_UINT8 = 3,
|
||||
GI_TYPE_TAG_INT16 = 4,
|
||||
GI_TYPE_TAG_UINT16 = 5,
|
||||
@ -420,7 +420,7 @@ typedef enum {
|
||||
GI_TYPE_TAG_INT64 = 8,
|
||||
GI_TYPE_TAG_UINT64 = 9,
|
||||
GI_TYPE_TAG_FLOAT = 10,
|
||||
GI_TYPE_TAG_DOUBLE = 11,
|
||||
GI_TYPE_TAG_DOUBLE = 11, /* End of numeric types */
|
||||
GI_TYPE_TAG_GTYPE = 12,
|
||||
GI_TYPE_TAG_UTF8 = 13,
|
||||
GI_TYPE_TAG_FILENAME = 14,
|
||||
|
Loading…
Reference in New Issue
Block a user