[Lsb-messages] /var/www/bzr/lsb/devel/dbadmin r241: Use AIreturn instead of Ireturn

Denis Silakov denis.silakov at rosalab.ru
Fri Mar 23 12:37:45 UTC 2012


------------------------------------------------------------
revno: 241
committer: Denis Silakov <denis.silakov at rosalab.ru>
branch nick: dbadmin
timestamp: Fri 2012-03-23 16:37:45 +0400
message:
  Use AIreturn instead of Ireturn
modified:
  admin/interface.php
  consistency/consistency.php
  consistency/foreign_keys.php
  consistency/queries.php
  int_single.inc
  interface.inc
  type_single.inc
-------------- next part --------------
=== modified file 'admin/interface.php'
--- a/admin/interface.php	2011-08-29 07:50:40 +0000
+++ b/admin/interface.php	2012-03-23 12:37:45 +0000
@@ -84,7 +84,6 @@
         $update = "UPDATE Interface SET ";
         $update.= "Itype = '".$_REQUEST['Itype'][0]."', ";
         $update.= "Iheader = ".$_REQUEST['Iheader'][0].", ";
-        $update.= "Ireturn = ".$_REQUEST['Ireturn'][0].", ";
         $update.= "Idocumented = '".$_REQUEST['Idocumented'][0]."', ";
         $update.= "Istatic = '".$_REQUEST['Istatic'][0]."', ";
         $update.= "Ivirtual = '".$_REQUEST['Ivirtual'][0]."', ";
@@ -201,7 +200,6 @@
         $insert.= "'".$_REQUEST['Iname']."',";
         $insert.= "'".$_REQUEST['Itype'][0]."',";
         $insert.= $_REQUEST['Iheader'][0].",";
-        $insert.= $_REQUEST['Ireturn'][0].",";
         $insert.= "'".$_REQUEST['Idocumented'][0]."',";
         if( $_REQUEST['Icomment'] ) {
             $insert.= "'".$_REQUEST['Icomment']."',";

=== modified file 'consistency/consistency.php'
--- a/consistency/consistency.php	2011-12-12 07:59:00 +0000
+++ b/consistency/consistency.php	2012-03-23 12:37:45 +0000
@@ -445,10 +445,11 @@
 print("</tr><tr>");
 
 print("<td>Constructors and destructors with non-zero return value</td>");
-$select = "SELECT COUNT(Iid)
+$select = "SELECT COUNT(DISTINCT Iid)
             FROM Interface
+            JOIN ArchInt ON AIint=Iid
             WHERE (Ifkind='Destructor' OR Ifkind='Constructor')
-            AND Ireturn<>0";
+            AND AIreturn<>0";
 $num = Query_value($select);
 print_colored_td($num, "queries.php?cmd=constr-with-ret", "cosmetic");
 print("</tr><tr>");
@@ -509,7 +510,7 @@
 print("<td>Included interfaces without a return type</td>");
 $select ="SELECT COUNT(DISTINCT Iid) FROM Interface
             LEFT JOIN ArchInt ON AIint=Iid
-            WHERE Ireturn=0
+            WHERE AIreturn=0
             AND AIappearedin > ''
             AND AIwithdrawnin IS NULL
             AND (Iunmangled IS NULL
@@ -664,7 +665,8 @@
 
 print("<td>'anon' types used as return types</td>");
 $select = "SELECT COUNT(DISTINCT Iid) FROM Interface
-            LEFT JOIN Type ON Ireturn=Tid
+	    JOIN ArchInt ON AIint=Iid
+            JOIN Type ON AIreturn=Tid
             WHERE Tname LIKE 'anon%'";
 $num = Query_value($select);
 print_colored_td($num, "queries.php?cmd=anon-rettypes", "secondary");
@@ -690,7 +692,7 @@
 
 print("<td>Unused function pointers and anonymous types (excluding anon enums)</td>");
 Query("CREATE TEMPORARY TABLE tmp_1 (KEY tid(Tid)) SELECT Tid FROM Type WHERE Tid NOT IN (SELECT Ptype FROM Parameter)");
-Query("CREATE TEMPORARY TABLE tmp_2 (KEY tid(Tid)) SELECT Tid FROM tmp_1 WHERE Tid NOT IN (SELECT Ireturn FROM Interface)");
+Query("CREATE TEMPORARY TABLE tmp_2 (KEY tid(Tid)) SELECT Tid FROM tmp_1 WHERE Tid NOT IN (SELECT AIreturn FROM ArchInt)");
 Query("CREATE TEMPORARY TABLE tmp_3 (KEY tid(Tid)) SELECT Tid FROM tmp_2 WHERE Tid NOT IN (SELECT ATbasetype FROM ArchType)");
 Query("CREATE TEMPORARY TABLE tmp_4 (KEY tid(Tid)) SELECT Tid FROM tmp_3 WHERE Tid NOT IN (SELECT TMtypeid FROM TypeMember)");
 $select = "SELECT COUNT(Tid) FROM tmp_4
@@ -740,8 +742,8 @@
 
 print("<td>Excluded types used as return types of included interfaces</td>");
 $createRettypes = "CREATE TEMPORARY TABLE tmp_Rettypes
-                    (KEY `Ireturn`(`Ireturn`))
-                    SELECT Ireturn FROM Interface
+                    (KEY `AIreturn`(`AIreturn`))
+                    SELECT AIreturn FROM Interface
                     LEFT JOIN ArchInt ON Iid=AIint
                     WHERE AIappearedin > ''
                     AND AIwithdrawnin IS NULL
@@ -749,7 +751,7 @@
 Query($createRettypes);
 
 $select = "SELECT COUNT(DISTINCT Tid) FROM tmp_Rettypes
-            LEFT JOIN Type ON Tid=Ireturn
+            LEFT JOIN Type ON Tid=AIreturn
             LEFT JOIN tmp_IncTypes ON ATtid=Tid
             WHERE Ttype IN ('Struct','Typedef','Enum','Union')
             AND ATappearedin IS NULL ";

=== modified file 'consistency/foreign_keys.php'
--- a/consistency/foreign_keys.php	2011-08-29 07:50:40 +0000
+++ b/consistency/foreign_keys.php	2012-03-23 12:37:45 +0000
@@ -56,7 +56,7 @@
     array('IntStd', 'ISsid', 'Standard', 'Sid'),
     array('IntStd', 'ISrefspec', 'Standard', 'Sid'),
     array('Interface', 'Iheader', 'Header', 'Hid'),
-    array('Interface', 'Ireturn', 'Type', 'Tid'),
+    array('ArchInt', 'AIreturn', 'Type', 'Tid'),
     array('Interface', 'Ilibrary', 'Library', 'Lname'),
     array('Interface', 'Iclass', 'Type', 'Tid'),
     array('InterfaceAttribute', 'IAiname', 'RawInterface', 'RIname'),

=== modified file 'consistency/queries.php'
--- a/consistency/queries.php	2011-12-12 07:59:00 +0000
+++ b/consistency/queries.php	2012-03-23 12:37:45 +0000
@@ -1537,11 +1537,11 @@
     print("<h3>$desc</h3>\n");
     if ($numrows) {
         print("<table class='wikitable'>\n");
-        print_table_header('Iid', 'Ireturn');
+        print_table_header('Iid', 'AIreturn');
         while( $row = mysqli_fetch_array($res) ) {
             print("<tr>\n");
             print("<td>".$row['Iid']."</td>");
-            print("<td>".$row['Ireturn']."</td>");
+            print("<td>".$row['AIreturn']."</td>");
             print("</tr>\n");
         }
         print("</table>\n");
@@ -1632,21 +1632,21 @@
     $i=1;
     $res=Query($query);
     $numrows = mysqli_num_rows($res);
-    $fix_tmpl='UPDATE Interface SET Ireturn=0 WHERE Iid={$1}';
+    $fix_tmpl='UPDATE ArchInt SET AIreturn=0 WHERE AIint={$1}';
     $numFields = mysqli_num_fields($res);
 
     print("<h1>$title ($numrows ".entry($numrows).")</h1>\n");
     print("<h3>$desc</h3>\n");
     if ($numrows) {
         print("<table class='wikitable'>\n");
-        print_table_header('Iid', 'Iname', 'Ifkind', 'Ireturn', 'Possible Fix');
+        print_table_header('Iid', 'Iname', 'Ifkind', 'AIreturn', 'Possible Fix');
         while( $row = mysqli_fetch_array($res) ) {
             print("<tr>\n");
             print("<td>".$row['Iid']."</td>");
             print("<td><a href=\"../browse/interface.php?cmd=display&amp;id=".$row['Iid']."\">"
                     .htmlspecialchars($row['Iname'])."</a> (Iid=".$row['Iid'].")</td>");
             print("<td>".$row['Ifkind']."</td>");
-            print("<td>".$row['Ireturn']."</td>");
+            print("<td>".$row['AIreturn']."</td>");
             $recommendation=form_recommendation($fix_tmpl, $row, $numFields);
             print("<td>".$recommendation."</td>");
             $rec[$i++] = $recommendation;
@@ -1716,7 +1716,7 @@
         $numFields = mysqli_num_fields($res);
         $fix_tmpl = 'UPDATE Interface SET Iheader=0, Idocumented=\'Yes\', Itestable=\'No\' WHERE Iid={$1}';
         print("<table class='wikitable'>\n");
-        print_table_header('Iid', 'Iname', 'Iheader', 'Iunmangled', 'Ireturn', 'Idocumented', 'Itestable', 'Possible Fix');
+        print_table_header('Iid', 'Iname', 'Iheader', 'Iunmangled', 'AIreturn', 'Idocumented', 'Itestable', 'Possible Fix');
         while( $row = mysqli_fetch_array($res) ) {
             print("<tr>\n");
             print("<td>".$row['Iid']."</td>");
@@ -1724,7 +1724,7 @@
                     .htmlspecialchars($row['Iname'])."</a> (Iid=".$row['Iid'].")</td>");
             print("<td>".$row['Iheader']."</td>");
             print("<td>".htmlspecialchars($row['Iunmangled'])."</td>");
-            print("<td>".$row['Ireturn']."</td>");
+            print("<td>".$row['AIreturn']."</td>");
             print("<td>".$row['Idocumented']."</td>");
             print("<td>".$row['Itestable']."</td>");
             $recommendation = form_recommendation($fix_tmpl, $row, $numFields);
@@ -1857,8 +1857,8 @@
  */
 function output_excluded_rettypes()
 {
-    $select = "CREATE TEMPORARY TABLE tmp_Rettypes (KEY `Ireturn`(`Ireturn`))
-                SELECT DISTINCT Ireturn FROM Interface
+    $select = "CREATE TEMPORARY TABLE tmp_Rettypes (KEY `AIreturn`(`AIreturn`))
+                SELECT DISTINCT AIreturn FROM Interface
                 LEFT JOIN ArchInt ON Iid=AIint
                 WHERE AIappearedin > ''
                 AND AIwithdrawnin IS NULL
@@ -1872,7 +1872,7 @@
     $res = Query($select);
 
     $select= "SELECT DISTINCT Tname, Ttype, Tlibrary, Hname FROM tmp_Rettypes
-                LEFT JOIN Type ON Tid=Ireturn
+                LEFT JOIN Type ON Tid=AIreturn
                 LEFT JOIN tmp_IncTypes ON ATtid=Tid
                 LEFT JOIN HeaderGroup ON Theadgroup=HGid
                 LEFT JOIN Header ON Hid=HGheader
@@ -2338,7 +2338,7 @@
         $fix_tmpl='DELETE FROM Type WHERE Tid={$1}';
         $title="Unused Function Pointers and Anonymous Types (Excluding Enums)";
         Query("CREATE TEMPORARY TABLE IF NOT EXISTS tmp_1 (KEY tid(Tid)) SELECT Tid FROM Type WHERE Tid NOT IN (SELECT Ptype FROM Parameter)");
-        Query("CREATE TEMPORARY TABLE tmp2 (KEY tid(Tid)) SELECT Tid FROM tmp_1 WHERE Tid NOT IN (SELECT Ireturn FROM Interface)");
+        Query("CREATE TEMPORARY TABLE tmp2 (KEY tid(Tid)) SELECT Tid FROM tmp_1 WHERE Tid NOT IN (SELECT AIreturn FROM ArchInt)");
         Query("CREATE TEMPORARY TABLE tmp3 (KEY tid(Tid)) SELECT Tid FROM tmp_2 WHERE Tid NOT IN (SELECT ATbasetype FROM ArchType)");
         Query("CREATE TEMPORARY TABLE tmp4 (KEY tid(Tid)) SELECT Tid FROM tmp_3 WHERE Tid NOT IN (SELECT TMtypeid FROM TypeMember)");
         $query="SELECT Tid,Tname FROM tmp_4
@@ -2435,7 +2435,7 @@
                     LEFT JOIN ArchInt ON AIint=Iid
                     LEFT JOIN IntStd ON ISiid=Iid
                     LEFT JOIN Standard ON Sid=ISsid
-                    WHERE Ireturn=0
+                    WHERE AIreturn=0
                     AND AIappearedin > ''
                     AND AIwithdrawnin IS NULL
                     AND (Iunmangled IS NULL
@@ -2579,8 +2579,9 @@
         $title = "C++-specific Symbols with Incorrect Iheader/Idocumented/Itestable Values";
         $desc = "'typeinfo', 'vtable', 'guard variable' and 'thunk' symbols should not be assigned to any header. "
                 ."They all should be marked as documented but not subjected to tests.";
-        $select = "SELECT Iid,Iname,Iheader,Iunmangled, Ireturn, Idocumented, Itestable
+        $select = "SELECT Iid, Iname, Iheader, Iunmangled, AIreturn, Idocumented, Itestable
                     FROM Interface
+                    JOIN ArchInt ON AIint=Iid
                     WHERE (Iunmangled LIKE '%thunk%' OR Iunmangled LIKE '%typeinfo%'
                     OR Iunmangled like '%guard variable%' OR Iunmangled LIKE '%vtable%')
                     AND (Iheader<>0 OR Idocumented<>'Yes' OR Itestable<>'No')";
@@ -2588,10 +2589,11 @@
         break;
     case "constr-with-ret" :
         $title = "Constructors and Destructors with Non-Zero Return Value";
-        $desc = "Constructors and destructors should have Ireturn=0";
-        $select = "SELECT Iid,Iname,Ifkind,Ireturn
+        $desc = "Constructors and destructors should have AIreturn=0";
+        $select = "SELECT Iid,Iname,Ifkind,AIreturn
                     FROM Interface
-                    WHERE (Ifkind LIKE '%destructor%' OR Ifkind LIKE '%constructor%') AND Ireturn<>0";
+                    JOIN ArchInt ON AIint=Iid
+                    WHERE (Ifkind LIKE '%destructor%' OR Ifkind LIKE '%constructor%') AND AIreturn<>0";
         output_constr_with_ret($select, $title, $desc);
         break;
     case "int-mis-doc" :
@@ -2632,8 +2634,8 @@
     case "anon-rettypes" :
         $title = "'anon' Types Used as Return Types";
         $desc = "Anon types used as return types";
-        $select = "SELECT Iid, Ireturn FROM Interface
-                    LEFT JOIN Type ON Ireturn=Tid
+        $select = "SELECT AIint AS Iid, AIreturn FROM ArchInt
+                    LEFT JOIN Type ON AIreturn=Tid
                     WHERE Tname LIKE 'anon%'";
         output_anon_rettypes($select, $title, $desc);
         break;

=== modified file 'int_single.inc'
--- a/int_single.inc	2012-02-22 17:47:45 +0000
+++ b/int_single.inc	2012-03-23 12:37:45 +0000
@@ -1287,9 +1287,10 @@
         }
     }
 
-    $select = "SELECT Vname,Itype,Iid,AIappearedin,AIwithdrawnin,AIarch,Icandidatefor,AIdeprecatedsince,Iclass FROM Interface
+    $select = "SELECT Vname,Itype,Iid,AIappearedin,AIwithdrawnin,AIarch,Icandidatefor,AIdeprecatedsince,Iclass,Tid,Tname,Ttype FROM Interface
                 LEFT JOIN ArchInt ON AIint=Iid
                 LEFT JOIN Version ON AIversion=Vid
+                LEFT JOIN Type ON AIreturn=Tid
                 WHERE Iid=$Iid
                 AND (AIappearedin >'' OR Icandidatefor IS NOT NULL)
                 GROUP BY AIarch, AIappearedin
@@ -1329,7 +1330,7 @@
                             AND AIint=$Iid";
         $printWithdrawn = Query_value($selectWithdrawn);
 
-        $selectMinAppeared = "SELECT min(AIappearedin) FROM ArchInt
+        $selectMinAppeared = "SELECT MIN(AIappearedin) FROM ArchInt
                                 WHERE AIint=$Iid
                                 AND AIappearedin > '' ";
         $resMinAppeared = Query($selectMinAppeared);
@@ -1342,11 +1343,13 @@
 
         $appearedin_max = "";
 
+        // If interface is currently included
         $presented = false;
-        $selectPresented = "SELECT AIint FROM ArchInt
+        $selectPresented = "SELECT 1 FROM ArchInt
                                 WHERE AIint=$Iid
                                 AND AIappearedin > ''
-                                AND AIwithdrawnin IS NULL";
+                                AND AIwithdrawnin IS NULL
+                                LIMIT 1";
         $resPresented = Query($selectPresented);
         if( mysqli_num_rows($resPresented) > 0 ) {
             $presented = true;
@@ -1378,6 +1381,7 @@
         if( isset($withdrawnin) and $appearedin_max >= $withdrawnin and $withdrawnin != "" ) {
             // Interface was added more than once
             // Not perfect now - we'll catch only first and last appearances
+            // But we don't have other cases in the current DB, so that's ok atm
 
             $selectVersions = "SELECT DISTINCT Vname FROM ArchInt
                                 LEFT JOIN Version ON Vid=AIversion
@@ -1405,6 +1409,32 @@
                 $version2 = "Arch specific";
             }
 
+            $selectRetTypes = "SELECT DISTINCT Tid, Tname, Ttype FROM ArchInt
+                                LEFT JOIN Type ON Tid=AIreturn
+                                WHERE AIint=$Iid
+                                AND AIappearedin > '' AND AIappearedin < '$withdrawnin'
+                                AND AIwithdrawnin = '$withdrawnin'
+                                ORDER BY AIarch, AIappearedin ";
+            $resRetTypes = Query($selectRetTypes);
+            if( mysqli_num_rows($resRetTypes) == 1 ) {
+                $rowRetTypes = mysqli_fetch_array($resRetTypes);
+                $retType = form_return_type($rowRetTypes['Tid'], $rowRetTypes['Ttype'], $rowRetTypes['Tname'], $Iname);
+            }
+            else {
+                $retType = "Specific to LSB version";
+            }
+
+            $selectRetTypes = str_replace( "AND AIappearedin < '$withdrawnin'", "AND AIappearedin >= '$withdrawnin'", $selectRetTypes );
+            $selectRetTypes = str_replace( "AND AIwithdrawnin = '$withdrawnin'", "AND AIwithdrawnin IS NULL", $selectRetTypes );
+            $resRetTypes = Query($selectRetTypes);
+            if( mysqli_num_rows($resRetTypes) == 1 ) {
+                $rowRetTypes = mysqli_fetch_array($resRetTypes);
+                $retType2 = form_return_type($rowRetTypes['Tid'], $rowRetTypes['Ttype'], $rowRetTypes['Tname'], $Iname);
+            }
+            else {
+                $retType2 = "Specific to LSB version";
+            }
+
             $selectGeneric = "SELECT AIint FROM ArchInt WHERE AIarch=1
                                 AND AIappearedin > '' AND AIappearedin < '$withdrawnin'
                                 AND AIwithdrawnin = '$withdrawnin'
@@ -1444,6 +1474,22 @@
                 $version = "<i>See details</i>";
             }
 
+            $selectRetTypes = "SELECT DISTINCT Tid, Tname, Ttype FROM ArchInt
+                                LEFT JOIN Type ON Tid=AIreturn
+                                WHERE AIint=$Iid ";
+            if( $appearedin > "" and (!isset($withdrawnin) or $withdrawnin == "") ) {
+                $selectRetTypes.= "AND AIappearedin > '' AND AIwithdrawnin IS NULL ";
+            }
+            $selectRetTypes.= "ORDER BY AIarch ";
+            $resRetTypes = Query($selectRetTypes);
+            if( mysqli_num_rows($resRetTypes) == 1 ) {
+                $rowRetTypes = mysqli_fetch_array($resRetTypes);
+                $retType = form_return_type($rowRetTypes['Tid'], $rowRetTypes['Ttype'], $rowRetTypes['Tname'], $Iname);
+            }
+            else {
+                $retType = "<i>See details</i>";
+            }
+
             if( $presented ) {
                 $selectGeneric = "SELECT AIint FROM ArchInt WHERE AIarch=1 AND AIappearedin > '' AND AIwithdrawnin IS NULL ";
             }
@@ -1478,7 +1524,7 @@
             $MandatorySince = '';
         }
 
-        print( "<table class='wikitable'><tr><th>Architecture</th><th>Version</th><th>Appeared in</th>" );
+        print( "<table class='wikitable'><tr><th>Architecture</th><th>Version</th><th>Return Type</th><th>Appeared in</th>" );
         if( !$MandatorySince or $MandatorySince > $appearedin ) {
             print( "<th>Mandatory since</th>" );
         }
@@ -1494,6 +1540,7 @@
         }
         print( "<td>$generic</td>" );
         print( "<td>$version</td>\n" );
+        print( "<td>$retType</td>\n" );
         print( "<td align='center'>$appearedin</td>\n" );
         if( !$MandatorySince or $MandatorySince > $appearedin ) {
             print( "<td align='center'>$MandatorySince</td>\n" );
@@ -1502,7 +1549,7 @@
             print( "<td align='center'>$withdrawnin</td>\n" );
         }
 
-        $colspan = $printWithdrawn ? 4 : 3;
+        $colspan = $printWithdrawn ? 5 : 4;
         if( !$MandatorySince or $MandatorySince > $appearedin ) {
             $colspan++;
         }
@@ -1514,6 +1561,7 @@
             print( "<tr>" );
             print( "<td>$generic2</td>" );
             print( "<td>$version2</td>\n" );
+            print( "<td>$retType2</td>\n" );
             print( "<td align='center'>$appearedin_max</td>\n" );
             if( !$MandatorySince or $MandatorySince > $appearedin_max ) {
                 print( "<td align='center'>$MandatorySince</td>\n" );
@@ -1538,7 +1586,7 @@
 
             $depr_field = $displayDepr ? "Deprecated since" : "";
             $withdrawn_field = $printWithdrawn ? "Withdrawn in" : "";
-            print_table_header( 'Architecture', 'Version', 'Appearedin', $depr_field, $withdrawn_field );
+            print_table_header( 'Architecture', 'Version', 'Return Type', 'Appearedin', $depr_field, $withdrawn_field );
 
             while( $row ) {
                 if( $row['AIappearedin'] > '' ) {
@@ -1551,6 +1599,7 @@
                     print("<tr>\n");
                     print("<td>$font_start".$Architecture[$row["AIarch"]]."$font_close</td>\n");
                     print("<td>$font_start".$row["Vname"]."$font_close</td>\n");
+                    print("<td>$font_start".$row["Tname"]."$font_close</td>\n");
                     print("<td align='center'>$font_start".$row["AIappearedin"]."$font_close</td>\n");
                     if( $displayDepr ) {
                         print( " <td align='center'>$font_start".$row['AIdeprecatedsince']."$font_close</td>\n" );
@@ -1925,9 +1974,8 @@
         print "<h3>$Title</h3>\n";
     }
 
-    $select = "SELECT Iid,Iname,Itype,Hname,Hid,Tid,Tname,Ttype,Tunmangled,Iunmangled FROM Interface
+    $select = "SELECT Iid,Iname,Itype,Hname,Hid,Iunmangled FROM Interface
                 LEFT JOIN Header ON Hid=Iheader
-                LEFT JOIN Type ON Tid=Ireturn
                 WHERE Iname='$Iname' ";
     if( $Ilibrary ) {
         $select.= "AND Ilibrary='$Ilibrary' ";
@@ -1947,10 +1995,18 @@
             return;
         }
 
-/*
-        print "<div style='padding:1em;border:1px dashed #2f6fab;color:black;background-color:#f9f9f9;line-height: 1.1em; ";
-        print "font-size:105%;font-family: Courier, sans-serif;'>\n" ;
-*/
+        $selectRetType = "SELECT Tid,Tname,Ttype FROM ArchInt
+                            JOIN Type ON Tid=AIreturn
+                            WHERE AIint=".$row['Iid']."
+                            AND AIappearedin=(
+                                SELECT MAX(AIappearedin) FROM ArchInt WHERE AIint=".$row['Iid']."
+                            )";
+        $resRetType = Query($selectRetType);
+        $rowRetType = mysqli_fetch_array($resRetType);
+        $row['Tid'] = $rowRetType['Tid'];
+        $row['Ttype'] = $rowRetType['Ttype'];
+        $row['Tname'] = $rowRetType['Tname'];
+
         print "<div class='synopsis'>\n";
 
         if( $row["Hname"] ) {
@@ -1959,40 +2015,15 @@
             print htmlspecialchars(">\n\n")."<br/><br/>";
         }
         if( $row["Tname"] ) {
-            $fptrName = "";
-            if( $row["Ttype"] == "Struct" ) {
-                print "struct ";
-            }
-            else if( $row["Ttype"] == "Union" ) {
-                print "union ";
-            }
-            else if( $row["Ttype"] == "Enum" ) {
-                print "enum ";
-            }
-            else if( $row["Ttype"] == "Volatile" ) {
-                print "volatile ";
-            }
-            else if( $row["Ttype"] == "Const" ) {
-//              print "const ";
-            }
-            else if( $row["Ttype"] == "FuncPtr" ) {
-                $fptrName = $row['Iname'];
-            }
-
-            $sql = "SELECT * FROM Type
-                    LEFT JOIN ArchType ON ATtid=Tid
-                    WHERE Tid=".$row['Tid'];
-            $res2 = Query($sql);
-            $row2 = mysqli_fetch_array($res2);
-
-            $dbtype = displaytyperef($row2,1,$fptrName);
-            if( $dbtype == "" ) {
+            $rettype = form_return_type($row['Tid'], $row['Ttype'], $row['Tname'], $row['Iname']);
+            if( $rettype ) {
+                print $rettype;
+                // A little hack for unmangled tricks below...
+                $rettype = $row['Tname'];
+            }
+            else {
                 print "void ";
             }
-            else {
-                print $dbtype." ";
-                $rettype = $row['Tname'];
-            }
         }
     }
     else {
@@ -2120,6 +2151,50 @@
     print "</div><p/>\n";
 }
 
+/*
+ * Form a string with interface return type into interface synopsis
+ *
+ * If everythin is ok and return type is formed, then the string to be displayed is returned.
+ * Otherwise the function returns an empty string
+ */
+function form_return_type($Tid, $Ttype, $Tname, $Iname)
+{
+    $fptrName = "";
+    $prefix = "";
+    if( $Ttype == "Struct" ) {
+        $prefix = "struct ";
+    }
+    else if( $Ttype == "Union" ) {
+        $prefix = "union ";
+    }
+    else if( $Ttype == "Enum" ) {
+        $prefix = "enum ";
+    }
+    else if( $Ttype == "Volatile" ) {
+        $prefix = "volatile ";
+    }
+    else if( $Ttype == "Const" ) {
+//              print "const ";
+    }
+    else if( $Ttype == "FuncPtr" ) {
+        $fptrName = $Iname;
+    }
+
+    $sql = "SELECT * FROM Type
+            LEFT JOIN ArchType ON ATtid=Tid
+            WHERE Tid=".$Tid;
+    $res2 = Query($sql);
+    $row2 = mysqli_fetch_array($res2);
+
+    $dbtype = displaytyperef($row2,1,$fptrName);
+    if( $dbtype == "" ) {
+        return "";
+    }
+    else {
+        return $prefix.$dbtype." ";
+    }
+}
+
 // The same as fill_lib_loaded_deps (implemented in SQL),
 // but for libraries from a given component
 function create_dep_list_for_library($Did, $Cid, $RIlibrary)
@@ -2187,19 +2262,6 @@
 {
     global $Architecture, $standard, $tmpComponent;
 
-    $select = "SELECT Iid,RIname,Hname,Tname,Iunmangled FROM Interface
-                LEFT JOIN Header ON Hid=Iheader
-                LEFT JOIN Type ON Tid=Ireturn
-                LEFT JOIN RawInterface ON Iname=RIname
-                WHERE RIname='$RIname' ";
-    if( $RIlibrary ) {
-        $select.= "AND RIlibrary='$RIlibrary' ";
-    }
-    $select.= "GROUP BY RIname";
-    $res=Query($select);
-
-    $row=mysqli_fetch_array($res);
-
     print("<h1>Interface '$RIname'");
     if( $RIlibrary ) {
         print " ($RIlibrary)";

=== modified file 'interface.inc'
--- a/interface.inc	2011-08-29 07:50:40 +0000
+++ b/interface.inc	2012-03-23 12:37:45 +0000
@@ -70,9 +70,9 @@
     if( !isset($int['AIwithdrawnin']) ) { $int['AIwithdrawnin'] = ''; }
     if( !isset($int['ISrefspec']) ) { $int['ISrefspec'] = 0; }
 
-    $RetName = Query_value("SELECT IFNULL(Tunmangled,Tname) FROM Type WHERE Tid=".$int['Ireturn']);
+    $RetName = Query_value("SELECT IFNULL(Tunmangled,Tname) FROM Type WHERE Tid=".$int['AIreturn']);
     if( $RetName ) {
-        $baseTid = calcBaseTid($int['Ireturn']);
+        $baseTid = calcBaseTid($int['AIreturn']);
         $rettype = "<a href=\"type_single.php?cmd=display&amp;Tid=".$baseTid."\">".htmlspecialchars($RetName)."</a>";
     }
     else {
@@ -211,10 +211,6 @@
     print("<td>");
     outputindexselect("Iheader",$int["Iheader"],$Header, false, $width);
     print("</td></tr>\n");
-    print("<tr><th class='left'>Return Type</th>\n");
-    print("<td>");
-    outputindexselect_from_table("Ireturn",$int["Ireturn"],"Type", "Tid", "Tname", "Tunmangled", false, $width);
-    print("</td></tr>\n");
     print("<tr><th class='left'>LibGroup</th>\n");
     print("<td>");
     outputindexselect("Ilibgroup",$int["LGid"],$LibGroup, false, $width, false);
@@ -305,8 +301,6 @@
     print("</td><td></td><td>\n");
     outputtemplateselect("Iheader");
     print("</td><td>\n");
-    outputtemplateselect("Ireturn");
-    print("</td><td>\n");
     outputtemplateselect("Ilibgroup");
     print("</td><td>\n");
     outputtemplateselect("Idocumented");
@@ -360,9 +354,6 @@
     print( "<tr><th class='left'>Interface Type</th><td>" );
     outputselect("Itype","",$inttype);
     print( "</td></tr>\n" );
-    print( "<tr><th class='left'>Return Type</th><td>" );
-    outputindexselect("Ireturn","",$TypeLegal, false, $width);
-    print( "</td></tr>\n" );
     print( "<tr><th class='left'>Class</th><td>" );
     outputindexselect("Iclass",0,$TypeClass, false, $width);
     print( "</td></tr>\n" );

=== modified file 'type_single.inc'
--- a/type_single.inc	2010-10-26 13:31:43 +0000
+++ b/type_single.inc	2012-03-23 12:37:45 +0000
@@ -500,9 +500,9 @@
                         GROUP BY Ptype
                         HAVING par_cnt > 0 ";
 
-    $selectReturns = "SELECT Ireturn, COUNT(Iid) AS ret_cnt FROM Interface
-                        WHERE Ireturn IN ($DerivedTypes)
-                        GROUP BY Ireturn
+    $selectReturns = "SELECT AIreturn, COUNT(DISTINCT AIint) AS ret_cnt FROM ArchInt
+                        WHERE AIreturn IN ($DerivedTypes)
+                        GROUP BY AIreturn
                         HAVING ret_cnt > 0";
 
     $resParams = Query($selectParams);
@@ -518,7 +518,7 @@
     }
 
     while( $rowReturns = mysqli_fetch_array($resReturns) ) {
-        $UsedReturns[$rowReturns['Ireturn']] = $rowReturns['ret_cnt'];
+        $UsedReturns[$rowReturns['AIreturn']] = $rowReturns['ret_cnt'];
     }
 
     print "<table class='wikitable'>";
@@ -555,7 +555,7 @@
     }
 
     if( $kind == 'return' ) {
-        $num = Query_value("SELECT COUNT(Iid) FROM Interface WHERE Ireturn=$Tid");
+        $num = Query_value("SELECT COUNT(DISTINCT AIint) FROM ArchInt WHERE AIreturn=$Tid");
     }
     else {
         $num = Query_value("SELECT COUNT(DISTINCT Pint) FROM Parameter WHERE Ptype=$Tid");
@@ -575,8 +575,9 @@
     }
 
     if( $kind == 'return' ) {
-        $select = "SELECT Iid,Iname,Iunmangled,Ilibrary FROM Interface
-                    WHERE Ireturn=$Tid
+        $select = "SELECT DISTINCT Iid,Iname,Iunmangled,Ilibrary FROM Interface
+    		    JOIN ArchInt ON AIint=Iid
+                    WHERE AIreturn=$Tid
                     ORDER BY Iname ";
     }
     else {
@@ -1358,7 +1359,7 @@
             $entry = mysqli_fetch_array($res_t);
             displaytype($entry, $AppVer, $WithdrawnVer, 1);
             print $tmentry['TMname'];
-            if( $tmentry['Ttype'] == 'Array' ) {
+            if( $entry['Ttype'] == 'Array' ) {
                 if( $tmentry['TMarray'] ) {
                     print "[".$tmentry['TMarray']."]";
                 } else if( $entry['ATsize'] ) {



More information about the lsb-messages mailing list