Remove resolve_possible_typedefs, it was unused. Allow multiple enum
authorJohan Dahlin <johan@gnome.org>
Sat, 16 Aug 2008 22:26:55 +0000 (22:26 +0000)
committerJohan Dahlin <johan@src.gnome.org>
Sat, 16 Aug 2008 22:26:55 +0000 (22:26 +0000)
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.

svn path=/trunk/; revision=389

ChangeLog
girepository/gtypelib.c
giscanner/glibtransformer.py
giscanner/transformer.py

index aa6da16..88b11db 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+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:
index dd59844..c737120 100644 (file)
@@ -1199,6 +1199,7 @@ validate_enum_blob (GTypelib     *typelib,
                                error))
        return FALSE;
 
+#if 0
       v1 = (ValueBlob *)&typelib->data[offset + sizeof (EnumBlob) + 
                                         i * sizeof (ValueBlob)];
       for (j = 0; j < i; j++) 
@@ -1208,6 +1209,7 @@ validate_enum_blob (GTypelib     *typelib,
 
          if (v1->value == v2->value)
            {
+
              /* FIXME should this be an error ? */
              g_set_error (error,
                           G_TYPELIB_ERROR,
@@ -1216,6 +1218,7 @@ validate_enum_blob (GTypelib     *typelib,
              return FALSE;
            }
        }
+#endif      
     }
   
   return TRUE;
index 317754b..82b1958 100644 (file)
@@ -182,7 +182,8 @@ class GLibTransformer(object):
     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
 
@@ -399,7 +400,6 @@ class GLibTransformer(object):
     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
index 15039b6..72c1daa 100644 (file)
@@ -48,7 +48,6 @@ class Transformer(object):
         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
@@ -59,9 +58,6 @@ class Transformer(object):
     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():
@@ -161,7 +157,9 @@ class Transformer(object):
 
         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,