def _enum_common_prefix(self, symbol):
def common_prefix(a, b):
- alen = len(a)
- blen = len(b)
- l = min(alen, blen)
- for i in xrange(l):
- if a[i] != b[i]:
- return a[:i]
- if alen > blen:
- return b
- return a
+ commonparts = []
+ for aword, bword in zip(a.split('_'), b.split('_')):
+ if aword != bword:
+ return '_'.join(commonparts) + '_'
+ commonparts.append(aword)
+ return min(a, b)
+
# Nothing less than 2 has a common prefix
if len(list(symbol.base_type.child_list)) < 2:
return None
value="0"
c:identifier="FOO_SOME_SINGLE_ENUM"/>
</enumeration>
+ <enumeration name="AddressType" c:type="FooAddressType">
+ <member name="invalid" value="0" c:identifier="FOO_ADDRESS_INVALID"/>
+ <member name="ipv4" value="1" c:identifier="FOO_ADDRESS_IPV4"/>
+ <member name="ipv6" value="2" c:identifier="FOO_ADDRESS_IPV6"/>
+ </enumeration>
<record name="BRect"
c:type="FooBRect"
glib:type-name="FooBRect"
<enumeration name="ASingle">
<member name="some_single_enum" value="0"/>
</enumeration>
+ <enumeration name="AddressType">
+ <member name="invalid" value="0"/>
+ <member name="ipv4" value="1"/>
+ <member name="ipv6" value="2"/>
+ </enumeration>
<record name="BRect" glib:type-name="FooBRect" glib:get-type="foo_brect_get_type">
<field name="x" writable="1">
<type name="double"/>
FOO_ENUM_FULLNAME_THREE
} FooEnumFullname;
+typedef enum
+{
+ FOO_ADDRESS_INVALID,
+ FOO_ADDRESS_IPV4,
+ FOO_ADDRESS_IPV6
+} FooAddressType;
+
typedef struct _FooBoxed FooBoxed;
GType foo_boxed_get_type (void) G_GNUC_CONST;