nlopess         Sun Jul 23 19:49:46 2006 UTC

  Modified files:              
    /phpdoc/scripts     xml_proto.php 
  Log:
  also rewrite the constant handling, that should now catch more constants
  
http://cvs.php.net/viewvc.cgi/phpdoc/scripts/xml_proto.php?r1=1.44&r2=1.45&diff_format=u
Index: phpdoc/scripts/xml_proto.php
diff -u phpdoc/scripts/xml_proto.php:1.44 phpdoc/scripts/xml_proto.php:1.45
--- phpdoc/scripts/xml_proto.php:1.44   Sun Jul 23 19:31:23 2006
+++ phpdoc/scripts/xml_proto.php        Sun Jul 23 19:49:46 2006
@@ -16,7 +16,7 @@
   | Authors:   Brad House <[EMAIL PROTECTED]>                             |
   +----------------------------------------------------------------------+
  
-  $Id: xml_proto.php,v 1.44 2006/07/23 19:31:23 nlopess Exp $
+  $Id: xml_proto.php,v 1.45 2006/07/23 19:49:46 nlopess Exp $
 */
 
 /*
@@ -453,74 +453,30 @@
   $constlist[$num_const]["name"]=$name;
   $constlist[$num_const]["type"]=$type;
 
-  $num_const++;
-  return(1);
-}
-
-function add_constant($varlist, $type)
-{
-    $on_name=0;
-    $len=strlen($varlist);
-    for ($i=0; $i<$len; $i++) {
-        $c=substr($varlist, $i, 1);
-        switch($c) {
-        case '"';
-            if (!$on_name) {
-              $on_name=1;
-              $name="";
-            } else {
-                $on_name=0;
-                add_constant_to_list($name, $type);
-                return(1);
-            }
-            break;
-
-        case ',':
-            return(0);
-            break;
-
-        default:
-            if ($on_name) {
-              $name .= $c;
-            }
-            break;
-
-        }
-     }
-     return(0);
+  ++$num_const;
 }
 
-function scan_for_constants_byref($buffer, $string, $type)
+function scan_for_constants($buffer)
 {
-  $ptr=$buffer;
+  preg_match_all('/REGISTER_(?:MAIN_)?([A-Z]+)_CONSTANT\("(\S+)"/', $buffer, 
$matches, PREG_SET_ORDER);
 
-  while (1) {
-    $temp=stristr($ptr, $string);
-    if (!$temp) { return(1); }
-    $temp2=substr($temp, strlen($string), strlen($temp)-strlen($string));
-    $temp3=stristr($temp2, "(");
-    if (!$temp3) { return(1); }
-    $temp4=substr($temp3, 1, strlen($temp3)-1);
-    $temp5=stristr($temp4, ")");
-    if (!$temp5) { return(1); }
-    $varlist=substr($temp4, 0, strlen($temp4)-strlen($temp5));
-    if (!add_constant($varlist, $type)) {
-      echo "Invalid constant definition: ";
-      $str=substr($temp, 0, strlen($temp)-strlen($temp5)+1);
-      echo $str;
-      echo "\n";
+  foreach ($matches as $const) {
+    switch ($const[1]) {
+      case 'LONG':
+        $type = 'integer'; break;
+      case 'DOUBLE':
+        $type = 'float'; break;
+      case 'STRINGL':
+      case 'STRING':
+        $type = 'string'; break;
+
+      default:
+        echo "unknown type: $const[1]\n";
+        print_r($const);
+        continue;
     }
-    $ptr=$temp5;
+    add_constant_to_list($const[2], $type);
   }
-  return(0);
-}
-
-function scan_for_constants($buffer)
-{
-var_dump($buffer);exit;
-  scan_for_constants_byref($buffer, "REGISTER_LONG_CONSTANT", "integer");
-  scan_for_constants_byref($buffer, "REGISTER_DOUBLE_CONSTANT", "float");
-  scan_for_constants_byref($buffer, "REGISTER_STRING_CONSTANT", "string");
 }
 
 function write_constants_xml()

Reply via email to