[Kde-bindings] KDE/kdebindings

Richard Dale Richard_Dale at tipitina.demon.co.uk
Tue Dec 9 15:30:53 UTC 2008


SVN commit 894897 by rdale:

* The totals of the various numbers of items in the tables in 
  smokedata.cpp were inconsistent. For instance, 'numClasses' was 
  actually the number of classes plus one. Change numTypes, numClasses,
  numMethodNames and numMethodMaps so they correspond to the number
  of items in the tables.
* Rationalize the code in the various binary chop methods that use
  the tables to avoid unnecessary tests, and make it more readable.
* Thanks to Tobias Rautenkranz for reporting these inconsistencies.

CCMAIL: kde-bindings at kde.org


 M  +3 -3      kalyptus/kalyptusCxxToSmoke.pm  
 M  +88 -74    smoke/smoke.h  


--- trunk/KDE/kdebindings/kalyptus/kalyptusCxxToSmoke.pm #894896:894897
@@ -2983,11 +2983,11 @@
     }
     print OUT "    ${libname}_Smoke = new Smoke(\n";
     print OUT "        \"${libname}\",\n";
-    print OUT "        ${libname}_classes, ".int($#moduleclasslist+1).",\n";
+    print OUT "        ${libname}_classes, ".int($#moduleclasslist).",\n";
     print OUT "        ${libname}_methods, $methodCount,\n";
-    print OUT "        ${libname}_methodMaps, $methodMapCount,\n";
+    print OUT "        ${libname}_methodMaps, ".int($methodMapCount-1).",\n";
     print OUT "        ${libname}_methodNames, $methodNameCount,\n";
-    print OUT "        ${libname}_types, $typeCount,\n";
+    print OUT "        ${libname}_types, ".int($typeCount-1).",\n";
     print OUT "        ${libname}_inheritanceList,\n";
     print OUT "        ${libname}_argumentList,\n";
     print OUT "        ${libname}_ambiguousMethodList,\n";
--- trunk/KDE/kdebindings/smoke/smoke.h #894896:894897
@@ -290,7 +290,7 @@
 		    NullModuleIndex.smoke = 0;
 		    NullModuleIndex.index = 0;
 
-		    for (Index i = 1; i < numClasses; ++i) {
+		    for (Index i = 1; i <= numClasses; ++i) {
 			if (!classes[i].external)
 			    classMap[className(i)] = this;
 		    }
@@ -319,52 +319,56 @@
     }
 
     inline Index idType(const char *t) {
-	if(!t) return 0;
-	Index imax = numTypes;
-	Index imin = 0;
-	Index icur = -1;
-	int icmp = -1;
+        if (!t) return 0;
+        Index imax = numTypes;
+        Index imin = 0;
+        Index icur = -1;
+        int icmp = -1;
 
-	while(imax >= imin) {
-	    icur = (imin + imax) / 2;
-	    if(icur > 0)
-		icmp = strcmp(types[icur].name, t);
-	    else
-		icmp = -1;
-	    if(!icmp) break;
-	    if(icmp > 0)
-		imax = icur - 1;
-	    else
-		imin = icur + 1;
-	}
+        while (imax >= imin) {
+            icur = (imin + imax) / 2;
+            icmp = strcmp(types[icur].name, t);
+            if (icmp == 0) {
+                return icur;
+            }
 
-	return (!icmp) ? icur : 0;
+            if (icmp > 0) {
+                imax = icur - 1;
+            } else {
+                imin = icur + 1;
+            }
+        }
+
+        return 0;
     }
 
     inline ModuleIndex idClass(const char *c, bool external = false) {
-	if(!c) return NullModuleIndex;
-	Index imax = numClasses;
-	Index imin = 0;
-	Index icur = -1;
-	int icmp = -1;
+        if (!c) return NullModuleIndex;
+        Index imax = numClasses;
+        Index imin = 0;
+        Index icur = -1;
+        int icmp = -1;
 
-	while(imax >= imin) {
-	    icur = (imin + imax) / 2;
-	    if(icur > 0 && icur < numClasses)
-		icmp = strcmp(classes[icur].className, c);
-	    else
-		icmp = -1;
-	    if(!icmp) break;
-	    if(icmp > 0)
-		imax = icur - 1;
-	    else
-		imin = icur + 1;
-	}
+        while (imax >= imin) {
+            icur = (imin + imax) / 2;
+            icmp = strcmp(classes[icur].className, c);
+            if (icmp == 0) {
+                if (classes[icur].external && !external) {
+                    return NullModuleIndex;
+                } else {
+                    ModuleIndex ret = { this, icur };
+                    return ret;
+                }
+            }
 
-	Index idx = (!icmp) ? icur : 0;
-	if (idx && classes[idx].external && !external) idx = 0;
-	ModuleIndex ret = { (idx) ? this : 0, idx };
-	return ret;
+            if (icmp > 0) {
+                imax = icur - 1;
+            } else {
+                imin = icur + 1;
+            }
+        }
+
+        return NullModuleIndex;
     }
 
     inline ModuleIndex findClass(const char *c) {
@@ -374,23 +378,28 @@
     }
 
     inline ModuleIndex idMethodName(const char *m) {
-	if(!m) return NullModuleIndex;
-	Index imax = numMethodNames;
-	Index imin = 0;
-	Index icur = -1;
-	int icmp = -1;
-	while(imax >= imin) {
-	    icur = (imin + imax) / 2;
-	    icmp = strcmp(methodNames[icur], m);
-	    if(!icmp) break;
-	    if(icmp > 0)
-		imax = icur - 1;
-	    else
-		imin = icur + 1;
-	}
+        if (!m) return NullModuleIndex;
+        Index imax = numMethodNames;
+        Index imin = 0;
+        Index icur = -1;
+        int icmp = -1;
 
-	ModuleIndex ret = { (!icmp) ? this : 0, (!icmp) ? icur : 0 };
-	return ret;
+        while (imax >= imin) {
+            icur = (imin + imax) / 2;
+            icmp = strcmp(methodNames[icur], m);
+            if (icmp == 0) {
+                ModuleIndex ret = { this, icur };
+                return ret;
+            }
+
+            if (icmp > 0) {
+                imax = icur - 1;
+            } else {
+                imin = icur + 1;
+            }
+        }
+
+        return NullModuleIndex;
     }
 
     inline ModuleIndex findMethodName(const char *c, const char *m) {
@@ -412,25 +421,30 @@
     }
 
     inline ModuleIndex idMethod(Index c, Index name) {
-	Index imax = numMethodMaps;
-	Index imin = 0;
-	Index icur = -1;
-	int icmp = -1;
-	while(imax >= imin) {
-	    icur = (imin + imax) / 2;
-	    icmp = leg(methodMaps[icur].classId, c);
-	    if(!icmp) {
-		icmp = leg(methodMaps[icur].name, name);
-		if(!icmp) break;
-	    }
-	    if(icmp > 0)
-		imax = icur - 1;
-	    else
-		imin = icur + 1;
-	}
+        Index imax = numMethodMaps;
+        Index imin = 0;
+        Index icur = -1;
+        int icmp = -1;
 
-	ModuleIndex ret = { (!icmp) ? this : 0, (!icmp) ? icur : 0 };
-	return ret;
+        while (imax >= imin) {
+            icur = (imin + imax) / 2;
+            icmp = leg(methodMaps[icur].classId, c);
+            if (icmp == 0) {
+                icmp = leg(methodMaps[icur].name, name);
+                if (icmp == 0) {
+                    ModuleIndex ret = { this, icur };
+                    return ret;
+                }
+            }
+
+            if (icmp > 0) {
+                imax = icur - 1;
+            } else {
+                imin = icur + 1;
+            }
+        }
+
+        return NullModuleIndex;
     }
 
     inline ModuleIndex findMethod(ModuleIndex c, ModuleIndex name) {



More information about the Kde-bindings mailing list