summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--giscanner/glibtransformer.py15
-rw-r--r--giscanner/utils.py2
3 files changed, 20 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 4ed7858e..066dd4a7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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:]