diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | giscanner/glibtransformer.py | 15 | ||||
-rw-r--r-- | giscanner/utils.py | 2 |
3 files changed, 20 insertions, 5 deletions
@@ -1,5 +1,13 @@ 2008-08-31 Johan Dahlin <johan@gnome.org> + * giscanner/glibtransformer.py: + Clean up a huge if. Do not add methods or constructors + to enums/flags. + * giscanner/utils.py: + second might be longer than first, check that. + +2008-08-31 Johan Dahlin <johan@gnome.org> + * gir/Makefile.am: Add a GModule.gir diff --git a/giscanner/glibtransformer.py b/giscanner/glibtransformer.py index fc1437e6..b01505d6 100644 --- a/giscanner/glibtransformer.py +++ b/giscanner/glibtransformer.py @@ -328,10 +328,15 @@ class GLibTransformer(object): klass = None def valid_matching_klass(tclass): - return (tclass is not None and - isinstance(tclass, (GLibObject, GLibBoxed, - GLibInterface)) and - not isinstance(tclass, GLibEnum)) + if tclass is None: + return False + elif isinstance(klass, (GLibEnum, GLibFlags)): + return False + elif not isinstance(tclass, (GLibObject, GLibBoxed, + GLibInterface)): + return False + else: + return True # First look for an exact match; klass = self._uscore_type_names.get(prefix) @@ -348,6 +353,8 @@ class GLibTransformer(object): print "NOTE: No valid matching class for likely "+\ "method or constructor: %r" % (func.symbol, ) return + if isinstance(klass, (GLibEnum, GLibFlags)): + return None if not is_method: # Interfaces can't have constructors, punt to global scope diff --git a/giscanner/utils.py b/giscanner/utils.py index bd292f1e..275e73ba 100644 --- a/giscanner/utils.py +++ b/giscanner/utils.py @@ -51,6 +51,6 @@ def extract_libtool(libname): def strip_common_prefix(first, second): second = second.replace('_', '') for i, c in enumerate(first.upper()): - if c != second[i]: + if c != second[i] or c > len(second): break return second[i:] |