]> granicus.if.org Git - php/commitdiff
reorganized code generation
authorHartmut Holzgraefe <hholzgra@php.net>
Wed, 23 Apr 2003 16:38:22 +0000 (16:38 +0000)
committerHartmut Holzgraefe <hholzgra@php.net>
Wed, 23 Apr 2003 16:38:22 +0000 (16:38 +0000)
- source file includes generated header only,
  generated header includes anything else
and is able to prepend include statements
to files that need to be included *before*
any php delivered header files
- 'private' functions are now moved up in the
  generated source file so we do not add extra
C protos for them before use

scripts/ext_skel_ng/extension_parser.php

index 4750ad636e7347c9d72fbb312b8bd01d89691de0..023169a261742a5b0ff6f60dbac53a13ab7cf6b2 100644 (file)
@@ -588,6 +588,40 @@ ZEND_GET_MODULE('.$this->name.')
 
                        fputs($fp, "#ifndef PHP_HAVE_{$upname}\n\n");
 
+                       if(isset($this->headers)) {
+                               foreach($this->headers as $header) {
+                                       if (@$header["prepend"] === "yes") {
+                                               fputs($fp, "#include <$header[name]>\n");
+                                       }
+                               }
+                       }
+
+                       fputs($fp, '
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <php.h>
+#include <php_ini.h>
+#include <SAPI.h>
+#include <ext/standard/info.h>
+
+');
+
+                       if(isset($this->headers)) {
+                               foreach($this->headers as $header) {
+                                       if (@$header["prepend"] !== "yes") {
+                                               fputs($fp, "#include <$header[name]>\n");
+                                       }
+                               }
+                       }
+
+                       if(isset($this->code["header"])) {
+                               foreach($this->code["header"] as $code) {
+                                       fputs($fp, $code);
+                               }
+                       }
+
                        fputs($fp, "
 extern zend_module_entry {$this->name}_module_entry;
 #define phpext_{$this->name}_ptr &{$this->name}_module_entry
@@ -825,7 +859,7 @@ $code .= "
                $code = "";
 
     foreach($this->functions as $function) {
-      $code .= $function->c_code();
+      $code .= $function->c_code(&$this);
     }
                
                return $code;
@@ -846,17 +880,6 @@ $code .= "
                        
                        fputs($fp, $this->get_license());
 
-                       fputs($fp, '
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <php.h>
-#include <php_ini.h>
-#include <SAPI.h>
-#include <ext/standard/info.h>
-
-');
                        fputs($fp, "#include \"php_{$this->name}.h\"\n\n");
                                                
       if (isset($this->logo)) {
@@ -867,6 +890,8 @@ $code .= "
                                fputs($fp, "ZEND_DECLARE_MODULE_GLOBALS({$this->name})\n\n");
                        }
 
+                       fputs($fp, $this->private_functions_c());
+
                        if (!empty($this->resources)) {
                                foreach ($this->resources as $resource) {
                                        fputs($fp, $resource->c_code());
@@ -889,8 +914,6 @@ $code .= "
 
                        fputs($fp, $this->internal_functions_c());
 
-                       fputs($fp, $this->private_functions_c());
-
                        fputs($fp, $this->public_functions_c());
 
                        fputs($fp, $this->editor_config_c());