[gobject-introspection] gitypeinfo: Add GI_TYPE_TAG_IS_NUMERIC macro
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gobject-introspection] gitypeinfo: Add GI_TYPE_TAG_IS_NUMERIC macro
- Date: Sun, 13 Feb 2022 12:32:17 +0000 (UTC)
commit d553ef85919732f8f79401f77ac5bd7a00ae3fb9
Author: Philip Chimento <philip chimento gmail com>
Date: Fri Jan 28 13:19:59 2022 -0800
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.
girepository/gitypeinfo.h | 10 ++++++++++
girepository/gitypes.h | 4 ++--
2 files changed, 12 insertions(+), 2 deletions(-)
---
diff --git a/girepository/gitypeinfo.h b/girepository/gitypeinfo.h
index fd7d5be6..69d0dad6 100644
--- a/girepository/gitypeinfo.h
+++ b/girepository/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);
diff --git a/girepository/gitypes.h b/girepository/gitypes.h
index 83268e89..47df7903 100644
--- a/girepository/gitypes.h
+++ b/girepository/gitypes.h
@@ -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,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]