]> granicus.if.org Git - php/commitdiff
forgot to add these two on my last commit :(
authorHartmut Holzgraefe <hholzgra@php.net>
Wed, 26 Feb 2003 10:06:47 +0000 (10:06 +0000)
committerHartmut Holzgraefe <hholzgra@php.net>
Wed, 26 Feb 2003 10:06:47 +0000 (10:06 +0000)
scripts/ext_skel_ng/php_logo.php [new file with mode: 0644]
scripts/ext_skel_ng/php_resource.php [new file with mode: 0644]

diff --git a/scripts/ext_skel_ng/php_logo.php b/scripts/ext_skel_ng/php_logo.php
new file mode 100644 (file)
index 0000000..5d2adf6
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+
+       class php_logo extends php_element {
+               function php_logo($name, $attr) {
+                       $this->name = $name;
+                       $this->attr = $attr;
+                       $this->id = '"'.strtoupper($name).'_LOGO_ID"';
+
+                       $this->data = file_get_contents($attr['src']);
+                       $this->size = strlen($this->data);
+
+                       $this->mime_type = "image/gif";
+               } 
+               
+               function docbook_xml($base) {
+                       return "";
+               }
+
+               function minit_code() {
+                       return "  php_register_info_logo({$this->id}, \"{$this->mime_type}\", {$this->name}_logo, {$this->size});\n";
+               }
+
+               function c_code() {
+                       return "
+static unsigned char {$this->name}_logo[] = {
+#include \"{$this->name}_logo.h\"
+}; 
+";
+               }
+
+               function h_code() {
+                       $len = strlen($this->data);
+                       $code = " ";
+                       $i=0;
+                       for($n = 0; $n < $len; $n++) {
+                               $code .= sprintf(" %3d",ord($this->data[$n]));
+                               if($n == $len - 1) break;
+                               $code .=  ",";
+                               if(++$i==8) {
+                                       $code .= "\n ";
+                                       $i=0;
+                               }
+                       }
+                       
+                       $code .= "\n";
+                       
+                       return $code;
+               }
+       }
+
+?>
\ No newline at end of file
diff --git a/scripts/ext_skel_ng/php_resource.php b/scripts/ext_skel_ng/php_resource.php
new file mode 100644 (file)
index 0000000..ea99405
--- /dev/null
@@ -0,0 +1,65 @@
+<?php
+
+       class php_resource extends php_element {
+               function php_resource($name, $payload, $destruct, $description) {
+                       $this->name = $name;
+                       $this->payload = $payload;
+                       $this->destruct = $destruct;
+                       $this->description = $description;
+
+                       if (empty($this->destruct) && strstr($this->payload, "*")) {
+                               $this->destruct = "  free(resource);\n";
+                       }
+
+                       if(empty($this->payload)) {
+                               $this->payload = "int";
+                       }
+               } 
+               
+               function docbook_xml($base) {
+                       return "
+    <section id='$base.resources.{$this->name}'>
+     <title><litera>{$this->name}</literal></title>
+     <para>
+      {$this->description}
+     </para>
+    </section>
+";
+               }
+
+               function minit_code() {
+                       return "
+le_{$this->name} = zend_register_list_destructors_ex({$this->name}_dtor, 
+                                                     NULL, 
+                                                     \"{$this->name}\", 
+                                                     module_number);
+
+";
+               }
+
+               function c_code() {
+                       return "
+int le_{$this->name};
+
+void {$this->name}_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC)
+{
+  {$this->payload} resource = ({$this->payload})(rsrc->ptr);
+
+  {$this->destruct}
+}
+";
+               }
+
+               function h_code() {
+      $upname = strtoupper($this->name);
+
+                       return "
+#define {$upname}_FETCH(r, z)   ZEND_FETCH_RESOURCE(r, {$this->payload}, z, -1, ${$this->name}, le_{$this->nameĀ }); \
+                                    if(!r) { RETURN_FALSE; }
+
+#define {$upname}_REGISTER(r)   ZEND_REGISTER_RESOURCE(return_value, r, le_{$this->nameĀ });
+";
+               }
+       }
+
+?>
\ No newline at end of file