summaryrefslogtreecommitdiff
path: root/tests/scanner/regress.h
diff options
context:
space:
mode:
authorOwen W. Taylor <otaylor@fishsoup.net>2010-09-14 11:59:03 -0400
committerOwen W. Taylor <otaylor@fishsoup.net>2010-11-01 17:25:45 -0400
commit8916db0a3831cb5e6c3b714125f7596f43d6aa6a (patch)
treec4d523a925a666be85bfdaea804407ca782778f7 /tests/scanner/regress.h
parent29ec4294d9232dcfd7cfec4e20c0e302a5ff3e80 (diff)
downloadgobject-introspection-8916db0a3831cb5e6c3b714125f7596f43d6aa6a.tar.gz
Handle enumerations with the full range of signed and unsigned values
The C compiler will pick an enumeration type that accomodates the specified values for the enumeration, so ignoring 64-bit enumerations, we can have enumeration values from MININT32 to MAXUINT32. To handle this properly: - Use gint64 for holding eumeration values when scanning - Add a 'unsigned_value' bit to ValueBlob so we can distinguish the int32 vs. uint32 cases in the typelib - Change the return value of g_value_info_get_value() to gint64. https://bugzilla.gnome.org/show_bug.cgi?id=629704
Diffstat (limited to 'tests/scanner/regress.h')
-rw-r--r--tests/scanner/regress.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/tests/scanner/regress.h b/tests/scanner/regress.h
index 8426a95e..6d729f1e 100644
--- a/tests/scanner/regress.h
+++ b/tests/scanner/regress.h
@@ -136,11 +136,17 @@ typedef enum
{
REGRESS_TEST_VALUE1,
REGRESS_TEST_VALUE2,
- REGRESS_TEST_VALUE3 = 42
+ REGRESS_TEST_VALUE3 = -1
} RegressTestEnum;
typedef enum
{
+ REGRESS_TEST_UNSIGNED_VALUE1 = 1,
+ REGRESS_TEST_UNSIGNED_VALUE2 = 0x80000000
+} RegressTestEnumUnsigned;
+
+typedef enum
+{
REGRESS_TEST_FLAG1 = 1 << 0,
REGRESS_TEST_FLAG2 = 1 << 1,
REGRESS_TEST_FLAG3 = 1 << 2,
@@ -148,10 +154,13 @@ typedef enum
GType regress_test_enum_get_type (void) G_GNUC_CONST;
#define REGRESS_TEST_TYPE_ENUM (regress_test_enum_get_type ())
+GType regress_test_enum_unsigned_get_type (void) G_GNUC_CONST;
+#define REGRESS_TEST_TYPE_ENUM_UNSIGNED (regress_test_enum_unsigned_get_type ())
GType regress_test_flags_get_type (void) G_GNUC_CONST;
#define REGRESS_TEST_TYPE_FLAGS (regress_test_flags_get_type ())
const gchar * regress_test_enum_param(RegressTestEnum e);
+const gchar * regress_test_unsigned_enum_param(RegressTestEnumUnsigned e);
/* constants */