name = $attr['name']; if (!$this->is_name($this->name)) { $this->error[] = "'$attr[name] is not a valid resource name"; } $this->payload = @$attr['payload']; $this->alloc = @$attr['alloc']; $this->destruct = $destruct; $this->description = $description; if (empty($this->payload)) { $this->payload = "void"; } } function docbook_xml($base) { return "
<literal>{$this->name}</literal> {$this->description}
"; } function minit_code() { return " le_{$this->name} = zend_register_list_destructors_ex({$this->name}_dtor, NULL, \"{$this->name}\", module_number); "; } function c_code() { $dtor = " int le_{$this->name}; void {$this->name}_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) { {$this->payload} * resource = ({$this->payload} *)(rsrc->ptr); {$this->destruct} "; if ($this->alloc === "yes") { $dtor .= " efree(resource);\n"; } $dtor .= "}\n"; return $dtor; } 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 }); "; } } ?>