if not isinstance(enum, ast.Enum):
continue
type_name = enum.ctype
- uscored = to_underscores(type_name).lower()
+ uscored = to_underscores_noprefix(type_name).lower()
uscore_enums[uscored] = enum
def to_underscores(name):
"""Converts a typename to the equivalent underscores name.
This is used to form the type conversion macros and enum/flag
- name variables"""
+ name variables.
+ In particular, and differently from to_underscores_noprefix(),
+ this function treats the first character differently if it is
+ uppercase and followed by another uppercase letter."""
name = _upperstr_pat1.sub(r'\1_\2', name)
name = _upperstr_pat2.sub(r'\1_\2', name)
name = _upperstr_pat3.sub(r'\1_\2', name, count=1)
<doc xml:whitespace="preserve">Typedef'd va_list for additional reasons</doc>
<type name="va_list" c:type="va_list"/>
</alias>
+ <enumeration name="ATestError"
+ c:type="RegressATestError"
+ glib:error-domain="regress-atest-error">
+ <member name="code0" value="0" c:identifier="REGRESS_ATEST_ERROR_CODE0"/>
+ <member name="code1" value="1" c:identifier="REGRESS_ATEST_ERROR_CODE1"/>
+ <member name="code2" value="2" c:identifier="REGRESS_ATEST_ERROR_CODE2"/>
+ </enumeration>
<constant name="DOUBLE_CONSTANT"
value="44.220000"
c:type="REGRESS_DOUBLE_CONSTANT">
<type name="gdouble" c:type="double"/>
</field>
</record>
+ <enumeration name="TestABCError"
+ glib:type-name="RegressTestABCError"
+ glib:get-type="regress_test_abc_error_get_type"
+ c:type="RegressTestABCError"
+ glib:error-domain="regress-test-abc-error">
+ <member name="code1"
+ value="1"
+ c:identifier="REGRESS_TEST_ABC_ERROR_CODE1"
+ glib:nick="code1"/>
+ <member name="code2"
+ value="2"
+ c:identifier="REGRESS_TEST_ABC_ERROR_CODE2"
+ glib:nick="code2"/>
+ <member name="code3"
+ value="3"
+ c:identifier="REGRESS_TEST_ABC_ERROR_CODE3"
+ glib:nick="code3"/>
+ <function name="quark" c:identifier="regress_test_abc_error_quark">
+ <return-value transfer-ownership="none">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ </enumeration>
<record name="TestBoxed"
c:type="RegressTestBoxed"
glib:type-name="RegressTestBoxed"
</parameter>
</parameters>
</callback>
+ <enumeration name="TestDEFError"
+ c:type="RegressTestDEFError"
+ glib:error-domain="regress-test-def-error">
+ <member name="code0"
+ value="0"
+ c:identifier="REGRESS_TEST_DEF_ERROR_CODE0"/>
+ <member name="code1"
+ value="1"
+ c:identifier="REGRESS_TEST_DEF_ERROR_CODE1"/>
+ <member name="code2"
+ value="2"
+ c:identifier="REGRESS_TEST_DEF_ERROR_CODE2"/>
+ </enumeration>
<enumeration name="TestEnum"
glib:type-name="RegressTestEnum"
glib:get-type="regress_test_enum_get_type"
c:identifier="REGRESS_TEST_UNSIGNED_VALUE2"
glib:nick="value2"/>
</enumeration>
+ <enumeration name="TestError"
+ glib:type-name="RegressTestError"
+ glib:get-type="regress_test_error_get_type"
+ c:type="RegressTestError"
+ glib:error-domain="regress-test-error">
+ <member name="code1"
+ value="1"
+ c:identifier="REGRESS_TEST_ERROR_CODE1"
+ glib:nick="code1"/>
+ <member name="code2"
+ value="2"
+ c:identifier="REGRESS_TEST_ERROR_CODE2"
+ glib:nick="code2"/>
+ <member name="code3"
+ value="3"
+ c:identifier="REGRESS_TEST_ERROR_CODE3"
+ glib:nick="code3"/>
+ <function name="quark" c:identifier="regress_test_error_quark">
+ <return-value transfer-ownership="none">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ </enumeration>
<bitfield name="TestFlags"
glib:type-name="RegressTestFlags"
glib:get-type="regress_test_flags_get_type"
</callback>
</field>
</record>
+ <enumeration name="TestOtherError"
+ glib:type-name="RegressTestOtherError"
+ glib:get-type="regress_test_unconventional_error_get_type"
+ c:type="RegressTestOtherError"
+ glib:error-domain="regress-test-other-error">
+ <member name="code1"
+ value="1"
+ c:identifier="REGRESS_TEST_OTHER_ERROR_CODE1"
+ glib:nick="code1"/>
+ <member name="code2"
+ value="2"
+ c:identifier="REGRESS_TEST_OTHER_ERROR_CODE2"
+ glib:nick="code2"/>
+ <member name="code3"
+ value="3"
+ c:identifier="REGRESS_TEST_OTHER_ERROR_CODE3"
+ glib:nick="code3"/>
+ <function name="quark"
+ c:identifier="regress_test_unconventional_error_quark">
+ <return-value transfer-ownership="none">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ </enumeration>
<bitfield name="TestPrivateEnum" c:type="RegressTestPrivateEnum">
<member name="public_enum_before"
value="1"
</parameter>
</parameters>
</function>
+ <function name="atest_error_quark"
+ c:identifier="regress_atest_error_quark">
+ <return-value transfer-ownership="none">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
<function name="func_obj_null_in" c:identifier="regress_func_obj_null_in">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</parameter>
</parameters>
</function>
+ <function name="test_abc_error_quark"
+ c:identifier="regress_test_abc_error_quark"
+ moved-to="TestABCError.quark">
+ <return-value transfer-ownership="none">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
<function name="test_array_callback"
c:identifier="regress_test_array_callback">
<return-value transfer-ownership="none">
<type name="GObject.Value" c:type="GValue*"/>
</return-value>
</function>
+ <function name="test_def_error_quark"
+ c:identifier="regress_test_def_error_quark">
+ <return-value transfer-ownership="none">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
<function name="test_double" c:identifier="regress_test_double">
<return-value transfer-ownership="none">
<type name="gdouble" c:type="gdouble"/>
</parameter>
</parameters>
</function>
+ <function name="test_error_quark"
+ c:identifier="regress_test_error_quark"
+ moved-to="TestError.quark">
+ <return-value transfer-ownership="none">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
<function name="test_filename_return"
c:identifier="regress_test_filename_return">
<return-value transfer-ownership="full">
</parameter>
</parameters>
</function>
+ <function name="test_unconventional_error_quark"
+ c:identifier="regress_test_unconventional_error_quark"
+ moved-to="TestOtherError.quark">
+ <return-value transfer-ownership="none">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
<function name="test_unichar" c:identifier="regress_test_unichar">
<return-value transfer-ownership="none">
<type name="gunichar" c:type="gunichar"/>
*v = REGRESS_TEST_FLAG1 | REGRESS_TEST_FLAG3;
}
+/* error domains */
+
+GType
+regress_test_error_get_type (void)
+{
+ static GType etype = 0;
+ if (G_UNLIKELY(etype == 0)) {
+ static const GEnumValue values[] = {
+ { REGRESS_TEST_ERROR_CODE1, "REGRESS_TEST_ERROR_CODE1", "code1" },
+ { REGRESS_TEST_ERROR_CODE2, "REGRESS_TEST_ERROR_CODE2", "code2" },
+ { REGRESS_TEST_ERROR_CODE3, "REGRESS_TEST_ERROR_CODE3", "code3" },
+ { 0, NULL, NULL }
+ };
+ etype = g_enum_register_static (g_intern_static_string ("RegressTestError"), values);
+ }
+
+ return etype;
+}
+
+GQuark
+regress_test_error_quark (void)
+{
+ return g_quark_from_static_string ("regress-test-error");
+}
+
+GType
+regress_test_abc_error_get_type (void)
+{
+ static GType etype = 0;
+ if (G_UNLIKELY(etype == 0)) {
+ static const GEnumValue values[] = {
+ { REGRESS_TEST_ABC_ERROR_CODE1, "REGRESS_TEST_ABC_ERROR_CODE1", "code1" },
+ { REGRESS_TEST_ABC_ERROR_CODE2, "REGRESS_TEST_ABC_ERROR_CODE2", "code2" },
+ { REGRESS_TEST_ABC_ERROR_CODE3, "REGRESS_TEST_ABC_ERROR_CODE3", "code3" },
+ { 0, NULL, NULL }
+ };
+ etype = g_enum_register_static (g_intern_static_string ("RegressTestABCError"), values);
+ }
+
+ return etype;
+}
+
+GQuark
+regress_test_abc_error_quark (void)
+{
+ return g_quark_from_static_string ("regress-test-abc-error");
+}
+
+GType
+regress_test_unconventional_error_get_type (void)
+{
+ static GType etype = 0;
+ if (G_UNLIKELY(etype == 0)) {
+ static const GEnumValue values[] = {
+ { REGRESS_TEST_OTHER_ERROR_CODE1, "REGRESS_TEST_OTHER_ERROR_CODE1", "code1" },
+ { REGRESS_TEST_OTHER_ERROR_CODE2, "REGRESS_TEST_OTHER_ERROR_CODE2", "code2" },
+ { REGRESS_TEST_OTHER_ERROR_CODE3, "REGRESS_TEST_OTHER_ERROR_CODE3", "code3" },
+ { 0, NULL, NULL }
+ };
+ etype = g_enum_register_static (g_intern_static_string ("RegressTestOtherError"), values);
+ }
+
+ return etype;
+}
+
+GQuark
+regress_test_unconventional_error_quark (void)
+{
+ return g_quark_from_static_string ("regress-test-other-error");
+}
+
+
+GQuark
+regress_test_def_error_quark (void)
+{
+ return g_quark_from_static_string ("regress-test-def-error");
+}
+
+GQuark
+regress_atest_error_quark (void)
+{
+ return g_quark_from_static_string ("regress-atest-error");
+}
+
/* structures */
/**
void regress_global_get_flags_out (RegressTestFlags *v);
+/* error domains */
+
+typedef enum
+{
+ REGRESS_TEST_ERROR_CODE1 = 1,
+ REGRESS_TEST_ERROR_CODE2 = 2,
+ REGRESS_TEST_ERROR_CODE3 = 3
+} RegressTestError;
+
+GType regress_test_error_get_type (void);
+GQuark regress_test_error_quark (void);
+
+/* Test weird names, with and without
+ c_symbol_prefix given by a GType
+*/
+typedef enum
+{
+ REGRESS_TEST_ABC_ERROR_CODE1 = 1,
+ REGRESS_TEST_ABC_ERROR_CODE2 = 2,
+ REGRESS_TEST_ABC_ERROR_CODE3 = 3
+} RegressTestABCError;
+
+GType regress_test_abc_error_get_type (void);
+GQuark regress_test_abc_error_quark (void);
+
+typedef enum
+{
+ REGRESS_TEST_OTHER_ERROR_CODE1 = 1,
+ REGRESS_TEST_OTHER_ERROR_CODE2 = 2,
+ REGRESS_TEST_OTHER_ERROR_CODE3 = 3
+} RegressTestOtherError;
+
+/* This returns a GType for RegressTestOtherError.
+ The difference is intentional, although it
+ is mainly meant for capitalization problems.
+*/
+GType regress_test_unconventional_error_get_type (void);
+GQuark regress_test_unconventional_error_quark (void);
+
+typedef enum
+{
+ REGRESS_TEST_DEF_ERROR_CODE0 = 0,
+ REGRESS_TEST_DEF_ERROR_CODE1 = 1,
+ REGRESS_TEST_DEF_ERROR_CODE2 = 2
+} RegressTestDEFError;
+
+GQuark regress_test_def_error_quark (void);
+
+/* the scanner used to have problem
+ with two uppercase letter right after
+ the identifier prefix, that's why
+ we break the RegressTest convention */
+typedef enum
+{
+ REGRESS_ATEST_ERROR_CODE0 = 0,
+ REGRESS_ATEST_ERROR_CODE1 = 1,
+ REGRESS_ATEST_ERROR_CODE2 = 2
+} RegressATestError;
+
+GQuark regress_atest_error_quark (void);
+
+
/* constants */
#define REGRESS_INT_CONSTANT 4422