hholzgra Fri Feb 28 01:37:05 2003 EDT
Modified files:
/php4/scripts/ext_skel_ng extension_parser.php php_function.php
Log:
- support for "callback" type
- proto syntax errors are now passed back to the top level parser
Index: php4/scripts/ext_skel_ng/extension_parser.php
diff -u php4/scripts/ext_skel_ng/extension_parser.php:1.5
php4/scripts/ext_skel_ng/extension_parser.php:1.6
--- php4/scripts/ext_skel_ng/extension_parser.php:1.5 Mon Feb 24 05:57:48 2003
+++ php4/scripts/ext_skel_ng/extension_parser.php Fri Feb 28 01:37:04 2003
@@ -196,6 +196,7 @@
$this->private_functions[$attr['name']] = $function;
break;
case "public":
+ if(is_string($function->status))
$this->error($function->status." in prototype");
$this->functions[$attr['name']] = $function;
break;
default:
@@ -282,7 +283,7 @@
$fp = fopen("$docdir/reference.xml", "w");
fputs($fp,
"<?xml version='1.0' encoding='iso-8859-1'?>
-<!-- \$Revision: 1.5 $ -->
+<!-- \$Revision: 1.6 $ -->
<reference id='ref.{$this->name}'>
<title>{$this->summary}</title>
<titleabbrev>{$this->name}</titleabbrev>
Index: php4/scripts/ext_skel_ng/php_function.php
diff -u php4/scripts/ext_skel_ng/php_function.php:1.4
php4/scripts/ext_skel_ng/php_function.php:1.5
--- php4/scripts/ext_skel_ng/php_function.php:1.4 Mon Feb 24 05:57:48 2003
+++ php4/scripts/ext_skel_ng/php_function.php Fri Feb 28 01:37:05 2003
@@ -8,7 +8,7 @@
$this->desc = empty($desc) ? "&warn.undocumented.func;" :
$desc;
$this->code = $code;
$this->role = empty($role) ? "public" : $role;
- if($this->role === "public") $this->parse_proto($proto);
+ if($this->role === "public") $this->status =
$this->parse_proto($proto);
}
function parse_proto($proto) {
@@ -32,9 +32,9 @@
$opts=0;
$params=array();
$return_type = ($this->is_type($tokens[$n])) ? $tokens[$n++] :
"void";
- if(! $this->is_name($tokens[$n])) die("$tokens[$n] is not a
valid function name");
+ if(! $this->is_name($tokens[$n])) return("$tokens[$n] is not a
valid function name");
$function_name = $tokens[$n++];
- if($tokens[$n]!='(') die("'(' expected instead of
'$tokens[$n]'");
+ if($tokens[$n]!='(') return("'(' expected instead of
'$tokens[$n]'");
if($tokens[++$n]!=')') {
for($param=0;$tokens[$n];$n++,$param++) {
if($tokens[$n]=='[') {
@@ -42,11 +42,11 @@
$opts++;
$n++;
if($param>0) {
- if ($tokens[$n]!=',') die("','
expected after '[' instead of $token[$n]");
+ if ($tokens[$n]!=',')
return("',' expected after '[' instead of '$token[$n]'");
$n++;
}
}
- if(!$this->is_type($tokens[$n])) die("type
name expected instead of $tokens[$n]");
+ if(!$this->is_type($tokens[$n])) return("type
name expected instead of '$tokens[$n]'");
$params[$param]['type']=$tokens[$n];
$n++;
if($this->is_name($tokens[$n])) {
@@ -67,13 +67,15 @@
$n++;
$opts--;
}
- if($opts!=0) die ("'[' / ']' count mismatch");
- if($tokens[$n] != ')') die ("')' expected instead of
$tokens[$n]");
+ if($opts!=0) return ("'[' / ']' count mismatch");
+ if($tokens[$n] != ')') return("')' expected instead of
'$tokens[$n]'");
$this->name = $function_name;
$this->returns = $return_type;
$this->params = $params;
$this->optional = $numopts;
+
+ return true;
}
function c_code() {
@@ -154,6 +156,7 @@
." }\n";
break;
case "mixed":
+ case "callback":
$arg_string.="z";
$code .= " zval * $name = NULL;\n";
break;
@@ -189,7 +192,7 @@
function docbook_xml() {
$xml =
'<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.4 $ -->
+<!-- $Revision: 1.5 $ -->
<refentry id="function.'.strtolower(str_replace("_","-",$this->name)).'">
<refnamediv>
<refname>'.$this->name.'</refname>
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php