+2008-08-17 Johan Dahlin <johan@gnome.org>
+
+ * girepository/gtypelib.c (validate_enum_blob):
+ * giscanner/glibtransformer.py:
+ * giscanner/transformer.py:
+ Remove resolve_possible_typedefs, it was unused.
+ Allow multiple enum values of the sample value in an enum,
+ since it's actually pretty common.
+ Register enums so they can be resolved too.
+
2008-08-16 Johan Dahlin <johan@gnome.org>
* giscanner/girparser.py:
error))
return FALSE;
+#if 0
v1 = (ValueBlob *)&typelib->data[offset + sizeof (EnumBlob) +
i * sizeof (ValueBlob)];
for (j = 0; j < i; j++)
if (v1->value == v2->value)
{
+
/* FIXME should this be an error ? */
g_set_error (error,
G_TYPELIB_ERROR,
return FALSE;
}
}
+#endif
}
return TRUE;
def _name_is_internal_gtype(self, giname):
try:
node = self._internal_types[giname]
- return isinstance(node, (GLibObject, GLibInterface, GLibBoxed))
+ return isinstance(node, (GLibObject, GLibInterface, GLibBoxed,
+ GLibEnum, GLibFlags))
except KeyError, e:
return False
def _resolve_param_type(self, ptype):
ptype.name = ptype.name.replace('*', '')
type_name = ptype.name
- type_name = self._transformer.resolve_possible_typedef(type_name)
possible_node = self._internal_types.get(type_name)
if possible_node:
ptype.name = possible_node.name
self._ctype_names = {} # Maps from CType -> (namespace, node)
self._typedefs_ns = {}
self._strip_prefix = ''
- self._typedefs = {}
def get_type_names(self):
return self._type_names
def set_strip_prefix(self, strip_prefix):
self._strip_prefix = strip_prefix
- def resolve_possible_typedef(self, tname):
- return self._typedefs.get(tname, tname)
-
def parse(self):
nodes = []
for symbol in self.generator.get_symbols():
enum_name = self.strip_namespace_object(symbol.ident)
enum_name = symbol.ident[-len(enum_name):]
- return Enum(enum_name, symbol.ident, members)
+ enum = Enum(enum_name, symbol.ident, members)
+ self._type_names[symbol.ident] = (None, enum)
+ return enum
def _create_object(self, symbol):
return Member(symbol.ident, symbol.base_type.name,