You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@axis.apache.org by Samisa Abeysinghe <sa...@gmail.com> on 2005/12/03 12:38:27 UTC
[AXIS2] PHP extension for axis2 - automake/autoconf problems
I have been looking into getting this PHP binding code working on Linux.
The PHP source depends on autoconf-2.13 and automake-1.5.
Our build system is based on autoconf-2.59 and automake-1.9
This is a problem when it comes to working on both axis2c and PHP
extentions on the same machine :(
Thanks,
Samisa...
nandika jayawardana wrote:
> Hi all,
>
> I have started writing a php extension for axis2c starting with om.
>
> For that I have added axis2_xml_reader api in this extension.
> Lot has to be done before everything in axis2 is supported.
>
> Pls commit this code.
> I think we can put it in a folder named c/bindings/php .
>
> Thanks
> nandika
>
>------------------------------------------------------------------------
>
>#ifndef AXIS2_CE_H
>#define AXIS2_CE_H
>
>zend_class_entry *axis2_xml_reader_class_entry;
>zend_class_entry *axis2_xml_writer_class_entry;
>zend_class_entry *axis2_om_element_class_entry;
>zend_class_entry *axis2_om_comment_class_entry;
>zend_class_entry *axis2_om_text_class_entry;
>zend_class_entry *axis2_om_pi_entry;
>zend_class_entry *axis2_om_stax_builder_class_entry;
>zend_class_entry *axis2_om_document_class_entry;
>zend_class_entry *axis2_om_attribute_class_entry;
>zend_class_entry *axis2_om_namespace_class_entry;
>
>
>#endif /* AXIS2_CE_H */
>
>------------------------------------------------------------------------
>
>#ifndef AXIS2_PROPERTIES_H
>#define AXIS2_PROPERTIES_H
>
>#endif /* AXIS2_PROPERTIES_H */
>
>------------------------------------------------------------------------
>
>/*
> +----------------------------------------------------------------------+
> | PHP Version 5 |
> +----------------------------------------------------------------------+
> | Copyright (c) 1997-2004 The PHP Group |
> +----------------------------------------------------------------------+
> | This source file is subject to version 3.0 of the PHP license, |
> | that is bundled with this package in the file LICENSE, and is |
> | available through the world-wide-web at the following url: |
> | http://www.php.net/license/3_0.txt. |
> | If you did not receive a copy of the PHP license and are unable to |
> | obtain it through the world-wide-web, please send a note to |
> | license@php.net so we can mail you a copy immediately. |
> +----------------------------------------------------------------------+
> | Author: |
> +----------------------------------------------------------------------+
>*/
>
>/* $Id: header,v 1.15 2004/01/08 16:46:52 sniper Exp $ */
>
>#ifdef HAVE_CONFIG_H
>#include "config.h"
>#endif
>
>#include "php.h"
>#include "php_ini.h"
>#include "ext/standard/info.h"
>#include "php_axis2.h"
>#include "axis2_env.h"
>#include "axis2_error_default.h"
>#include "axis2_stream_default.h"
>#include "axis2_log_default.h"
>
>
>zend_object_value axis2_objects_new(zend_class_entry *class_type TSRMLS_DC );
>
>
>
>/* If you declare any globals in php_axis2.h uncomment this:
>*/
>ZEND_DECLARE_MODULE_GLOBALS(axis2)
>
>
>/* True global resources - no need for thread safety here */
>static int le_axis2;
>
>static zend_object_handlers axis2_object_handlers;
>
>/* {{{ axis2_functions[]
> *
> * Every user visible function must have an entry in axis2_functions[].
> */
>function_entry axis2_functions[] = {
> PHP_FE(axis2_helloworld, NULL)
> {NULL, NULL, NULL} /* Must be the last line in axis2_functions[] */
>};
>/* }}} */
>
>/* {{{ axis2_module_entry
> */
>zend_module_entry axis2_module_entry = {
>#if ZEND_MODULE_API_NO >= 20010901
> STANDARD_MODULE_HEADER,
>#endif
> "axis2",
> axis2_functions,
> PHP_MINIT(axis2),
> PHP_MSHUTDOWN(axis2),
> PHP_RINIT(axis2), /* Replace with NULL if there's nothing to do at request start */
> PHP_RSHUTDOWN(axis2), /* Replace with NULL if there's nothing to do at request end */
> PHP_MINFO(axis2),
>#if ZEND_MODULE_API_NO >= 20010901
> "0.1", /* Replace with version number for your extension */
>#endif
> STANDARD_MODULE_PROPERTIES
>};
>/* }}} */
>
>#ifdef COMPILE_DL_AXIS2
>ZEND_GET_MODULE(axis2)
>#endif
>
>/* {{{ PHP_INI
> */
>/* Remove comments and fill if you need to have entries in php.ini
>PHP_INI_BEGIN()
> STD_PHP_INI_ENTRY("axis2.global_value", "42", PHP_INI_ALL, OnUpdateLong, global_value, zend_axis2_globals, axis2_globals)
> STD_PHP_INI_ENTRY("axis2.global_string", "foobar", PHP_INI_ALL, OnUpdateString, global_string, zend_axis2_globals, axis2_globals)
>PHP_INI_END()
>*/
>/* }}} */
>
>/* {{{ php_axis2_init_globals
> */
>
>static void php_axis2_init_globals(zend_axis2_globals *axis2_globals)
>{
> axis2_allocator_t *allocator = NULL;
> axis2_error_t *err = NULL;
> axis2_log_t *log = NULL;
> axis2_stream_t *stream = NULL;
> axis2_env_t *environment = NULL;
> allocator = axis2_allocator_init (NULL);
> log = axis2_log_create(allocator, NULL);
> stream = axis2_stream_create(allocator, NULL);
> err = axis2_error_create(allocator);
>
> environment= axis2_env_create_with_error_stream_log(allocator, err,stream, log);
>
> axis2_globals->global_value = 0;
> axis2_globals->global_string = NULL;
> axis2_globals->env = environment;
> axis2_globals->allocator = allocator;
>}
>
>/* }}} */
>
>/* {{{ PHP_MINIT_FUNCTION
> */
>PHP_MINIT_FUNCTION(axis2)
>{
> zend_class_entry ce;
>
> ZEND_INIT_MODULE_GLOBALS(axis2, php_axis2_init_globals, NULL);
> /* If you have INI entries, uncomment these lines
> REGISTER_INI_ENTRIES();
> */
>
>
> memcpy(&axis2_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
> axis2_object_handlers.clone_obj = NULL;
>
> REGISTER_AXIS2_CLASS(ce,"Axis2XMLReader",NULL, php_axis2_xml_reader_class_functions, axis2_xml_reader_class_entry);
>
>
>
>
>
> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_START_DOCUMENT", AXIS2_XML_READER_START_DOCUMENT, CONST_CS | CONST_PERSISTENT);
> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_START_ELEMENT", AXIS2_XML_READER_START_ELEMENT , CONST_CS | CONST_PERSISTENT);
> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_END_ELEMENT", AXIS2_XML_READER_END_ELEMENT, CONST_CS | CONST_PERSISTENT);
> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_SPACE", AXIS2_XML_READER_SPACE, CONST_CS | CONST_PERSISTENT);
> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_EMPTY_ELEMENT", AXIS2_XML_READER_EMPTY_ELEMENT, CONST_CS | CONST_PERSISTENT);
> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_CHARACTER", AXIS2_XML_READER_CHARACTER, CONST_CS | CONST_PERSISTENT);
> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_ENTITY_REFERANCE", AXIS2_XML_READER_ENTITY_REFERANCE, CONST_CS | CONST_PERSISTENT);
> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_COMMENT", AXIS2_XML_READER_COMMENT, CONST_CS | CONST_PERSISTENT);
> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_PROCESSING_INSTRUCTION", AXIS2_XML_READER_PROCESSING_INSTRUCTION, CONST_CS | CONST_PERSISTENT);
> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_CDATA", AXIS2_XML_READER_CDATA, CONST_CS | CONST_PERSISTENT);
> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_DOCUMENT_TYPE", AXIS2_XML_READER_DOCUMENT_TYPE, CONST_CS | CONST_PERSISTENT);
>
>
>
> return SUCCESS;
>}
>/* }}} */
>
>/* {{{ PHP_MSHUTDOWN_FUNCTION
> */
>PHP_MSHUTDOWN_FUNCTION(axis2)
>{
> /* uncomment this line if you have INI entries
> UNREGISTER_INI_ENTRIES();
> */
> php_axis2_destroy_env();
> return SUCCESS;
>}
>/* }}} */
>
>
>
>void php_axis2_objects_free_storage(void *object TSRMLS_DC)
>{
> axis2_object *intern = (axis2_object_ptr)object;
> zend_hash_destroy(intern->std.properties);
> FREE_HASHTABLE(intern->std.properties);
>
> if(intern->node_list)
> {
> zend_hash_destroy(intern->node_list);
> FREE_HASHTABLE(intern->node_list);
>
> }
> /*TODO individaul objects must be freed */
> if(intern->ptr)
> {
>
>
> }
>
>
>}
>
>
>static zend_object_value axis2_objects_new(zend_class_entry *class_type TSRMLS_DC )
>{
> zend_object_value retval;
> axis2_object *intern = NULL;
> zval *tmp = NULL;
>
> intern = emalloc(sizeof(axis2_object));
> intern->std.ce = class_type;
> intern->std.in_get = 0;
> intern->std.in_set = 0;
>
> intern->ptr = NULL;
> intern->prop_handler = NULL;
> ALLOC_HASHTABLE(intern->std.properties);
> zend_hash_init(intern->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
> zend_hash_copy(intern->std.properties, &class_type->default_properties,
> (copy_ctor_func_t)zval_add_ref, (void*)tmp, sizeof(zval *));
> retval.handle = zend_objects_store_put(intern, NULL,
> ( zend_objects_free_object_storage_t)php_axis2_objects_free_storage,NULL TSRMLS_CC);
>
> intern->handle = retval.handle;
> retval.handlers = &axis2_object_handlers;
> return retval;
>}
>
>
>
>
>
>
>
>
>
>
>
>
>
>/* Remove if there's nothing to do at request start */
>/* {{{ PHP_RINIT_FUNCTION
> */
>PHP_RINIT_FUNCTION(axis2)
>{
> return SUCCESS;
>}
>/* }}} */
>
>/* Remove if there's nothing to do at request end */
>/* {{{ PHP_RSHUTDOWN_FUNCTION
> */
>PHP_RSHUTDOWN_FUNCTION(axis2)
>{
> return SUCCESS;
>}
>/* }}} */
>
>/* {{{ PHP_MINFO_FUNCTION
> */
>PHP_MINFO_FUNCTION(axis2)
>{
> php_info_print_table_start();
> php_info_print_table_header(2, "axis2 support", "enabled");
> php_info_print_table_end();
>
> /* Remove comments if you have entries in php.ini
> DISPLAY_INI_ENTRIES();
> */
>}
>/* }}} */
>
>
>
>
>
>/* {{{ proto string axis2_helloworld()
> say welcome note */
>PHP_FUNCTION(axis2_helloworld)
>{
> php_printf(" welcome axis2");
>}
>/* }}} */
>
>
>
>void php_axis2_destroy_env()
>{
> TSRMLS_FETCH();
> axis2_env_free(AXIS2_G(env));
> AXIS2_G(env) = NULL;
> AXIS2_G(allocator) = NULL;
>}
>
>axis2_env_t *php_axis2_get_env()
>{
> TSRMLS_FETCH();
> return AXIS2_G(env);
>}
>
>/*
> * Local variables:
> * tab-width: 4
> * c-basic-offset: 4
> * End:
> * vim600: noet sw=4 ts=4 fdm=marker
> * vim<600: noet sw=4 ts=4
> */
>
>
>------------------------------------------------------------------------
>
>#ifndef AXIS2_FE_H
>#define AXIS2_FE_H
>
>extern zend_function_entry php_axis2_xml_reader_class_functions[];
>extern zend_function_entry php_axis2_xml_writer_class_functions[];
>extern zend_function_entry php_axis2_om_element_class_functions[];
>extern zend_function_entry php_axis2_om_comment_class_functions[];
>extern zend_function_entry php_axis2_om_text_class_functions[];
>extern zend_function_entry php_axis2_om_pi_class_functions[];
>extern zend_function_entry php_axis2_om_stax_builder_class_functions[];
>extern zend_function_entry php_axis2_om_document_class_functions[];
>extern zend_function_entry php_axis2_om_attribute_class_functions[];
>extern zend_function_entry php_axis2_om_namespace_class_functions[];
>
>/** axis2_xml_reader functions */
>PHP_METHOD(xml_reader, __construct);
>PHP_FUNCTION(axis2_xml_reader_next);
>PHP_FUNCTION(axis2_xml_reader_get_attribute_count);
>PHP_FUNCTION(axis2_xml_reader_get_attribute_name_by_number);
>PHP_FUNCTION(axis2_xml_reader_get_attribute_prefix_by_number);
>PHP_FUNCTION(axis2_xml_reader_get_attribute_namespace_by_number);
>PHP_FUNCTION(axis2_xml_reader_get_attribute_value_by_number);
>PHP_FUNCTION(axis2_xml_reader_get_name);
>PHP_FUNCTION(axis2_xml_reader_get_value);
>PHP_FUNCTION(axis2_xml_reader_get_prefix);
>PHP_FUNCTION(axis2_xml_reader_get_namespace_count);
>PHP_FUNCTION(axis2_xml_reader_get_namespace_uri_by_number);
>PHP_FUNCTION(axis2_xml_reader_get_namespace_prefix_by_number);
>PHP_FUNCTION(axis2_xml_reader_get_pi_target);
>PHP_FUNCTION(axis2_xml_reader_get_pi_data);
>
>
>typedef enum {
>
> OM_ELEMENT = 0,
> OM_NODE,
> OM_PI,
> OM_COMMENT,
> OM_TEXT,
> OM_DOCTYPE,
> AXIS2_XML_READER,
> AXIS2_XML_WRITER,
> OM_DOCUMENT,
> OM_STAX_BUILDER
>}om_obj_types;
>
>
>#endif /* AXIS2_FE_H */
>
>------------------------------------------------------------------------
>
>/*
> +----------------------------------------------------------------------+
> | PHP Version 5 |
> +----------------------------------------------------------------------+
> | Copyright (c) 1997-2004 The PHP Group |
> +----------------------------------------------------------------------+
> | This source file is subject to version 3.0 of the PHP license, |
> | that is bundled with this package in the file LICENSE, and is |
> | available through the world-wide-web at the following url: |
> | http://www.php.net/license/3_0.txt. |
> | If you did not receive a copy of the PHP license and are unable to |
> | obtain it through the world-wide-web, please send a note to |
> | license@php.net so we can mail you a copy immediately. |
> +----------------------------------------------------------------------+
> | Author: |
> +----------------------------------------------------------------------+
>*/
>
>/* $Id: header,v 1.15 2004/01/08 16:46:52 sniper Exp $ */
>
>#ifndef PHP_AXIS2_H
>#define PHP_AXIS2_H
>
>extern zend_module_entry axis2_module_entry;
>#define phpext_axis2_ptr &axis2_module_entry
>
>#ifdef PHP_WIN32
>#define PHP_AXIS2_API __declspec(dllexport)
>#else
>#define PHP_AXIS2_API
>#endif
>
>#ifdef ZTS
>#include "TSRM.h"
>#endif
>
>#include "axis2_ce.h"
>#include "axis2_fe.h"
>#include "axis2_common.h"
>
>#include <axis2.h>
>#include <axis2_env.h>
>
>
>
>
>
>PHP_MINIT_FUNCTION(axis2);
>PHP_MSHUTDOWN_FUNCTION(axis2);
>PHP_RINIT_FUNCTION(axis2);
>PHP_RSHUTDOWN_FUNCTION(axis2);
>PHP_MINFO_FUNCTION(axis2);
>
>PHP_FUNCTION(axis2_helloworld); /* For testing, remove later. */
>
>
>
>typedef struct axis2_object{
> zend_object std;
> void *ptr;
> int obj_type;
> HashTable *prop_handler;
> zend_object_handle handle;
> HashTable *node_list;
>}axis2_object;
>
>typedef axis2_object *axis2_object_ptr;
>
>void php_axis2_objects_free_storage(void *object TSRMLS_DC);
>void php_axis2_destroy_env();
>axis2_env_t *php_axis2_get_env();
>
>/*
> Declare any global variables you may need between the BEGIN
> and END macros here: */
>
>ZEND_BEGIN_MODULE_GLOBALS(axis2)
> long global_value;
> char *global_string;
> axis2_env_t *env;
> axis2_allocator_t *allocator;
>ZEND_END_MODULE_GLOBALS(axis2)
>
>
>/* In every utility function you add that needs to use variables
> in php_axis2_globals, call TSRMLS_FETCH(); after declaring other
> variables used by that function, or better yet, pass in TSRMLS_CC
> after the last function argument and declare your utility function
> with TSRMLS_DC after the last declared argument. Always refer to
> the globals in your function as AXIS2_G(variable). You are
> encouraged to rename these macros something shorter, see
> examples in any other php module directory.
>*/
>
>#ifdef ZTS
>#define AXIS2_G(v) TSRMG(axis2_globals_id, zend_axis2_globals *, v)
>#else
>#define AXIS2_G(v) (axis2_globals.v)
>#endif
>
>#endif /* PHP_AXIS2_H */
>
>
>/*
> * Local variables:
> * tab-width: 4
> * c-basic-offset: 4
> * End:
> * vim600: noet sw=4 ts=4 fdm=marker
> * vim<600: noet sw=4 ts=4
> */
>
>
>------------------------------------------------------------------------
>
>
>#include "php.h"
>#include "php_axis2.h"
>#include "axis2_xml_reader.h"
>
>zend_function_entry php_axis2_xml_reader_class_functions[]=
>{
> PHP_FALIAS(next, axis2_xml_reader_next, NULL)
> PHP_FALIAS(getAttributeCount, axis2_xml_reader_get_attribute_count, NULL)
> PHP_FALIAS(getAttributeName , axis2_xml_reader_get_attribute_name_by_number, NULL)
> PHP_FALIAS(getAttributePrefix, axis2_xml_reader_get_attribute_prefix_by_number, NULL)
> PHP_FALIAS(getAttributeNamespace, axis2_xml_reader_get_attribute_namespace_by_number, NULL)
> PHP_FALIAS(getAttributeValue, axis2_xml_reader_get_attribute_value_by_number, NULL)
> PHP_FALIAS(getName, axis2_xml_reader_get_name, NULL)
> PHP_FALIAS(getValue, axis2_xml_reader_get_value, NULL)
> PHP_FALIAS(getPrefix, axis2_xml_reader_get_prefix, NULL)
> PHP_FALIAS(getNamespaceCount, axis2_xml_reader_get_namespace_count, NULL)
> PHP_FALIAS(getNamespaceUri, axis2_xml_reader_get_namespace_uri_by_number, NULL)
> PHP_FALIAS(getNamespacePrefix, axis2_xml_reader_get_namespace_prefix_by_number, NULL)
> PHP_FALIAS(getPITarget , axis2_xml_reader_get_pi_target, NULL)
> PHP_FALIAS(getPIData, axis2_xml_reader_get_pi_data, NULL)
> PHP_ME(xml_reader, __construct, NULL, ZEND_ACC_PUBLIC)
> {NULL, NULL, NULL}
>};
>
>PHP_METHOD(xml_reader , __construct)
>{
> zval *object = NULL;
> axis2_object_ptr axis2_obj = NULL;
> om_object_ptr om_obj = NULL;
> char *path;
> int length;
> axis2_env_t *env;
>
>
>
> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &object, axis2_xml_reader_class_entry, &path, &length) == FAILURE)
> {
> php_std_error_handling();
> return;
> }
> env = php_axis2_get_env();
>
> om_obj = emalloc(sizeof(om_object));
> om_obj->ptr = NULL;
> om_obj->obj_type = AXIS2_XML_READER;
> om_obj->ptr = axis2_xml_reader_create_for_file(&env, path, NULL);
> om_obj->ref_count = 1;
> if(om_obj->ptr == NULL)
> {
> php_printf("reader null");
>
> }
>
> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(object TSRMLS_CC);
> axis2_obj->ptr = om_obj;
>
>}
>
>PHP_FUNCTION(axis2_xml_reader_next)
>{
> axis2_object_ptr axis2_obj = NULL;
> zval *obj = NULL;
> axis2_xml_reader_t *reader = NULL;
> axis2_env_t *env = NULL;
> long i = 0;
>
> obj = getThis();
> env = php_axis2_get_env();
> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj TSRMLS_CC);
> reader =(axis2_xml_reader_t*) (((om_object_ptr)(axis2_obj->ptr))->ptr);
> i = AXIS2_XML_READER_NEXT(reader, &env);
> RETURN_LONG(i);
>}
>PHP_FUNCTION(axis2_xml_reader_get_attribute_count)
>{
> axis2_object_ptr axis2_obj = NULL;
> zval *obj = NULL;
> axis2_xml_reader_t *reader = NULL;
> axis2_env_t *env = NULL;
> int i = 0;
>
> obj = getThis();
> env = php_axis2_get_env();
> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj TSRMLS_CC);
> reader =(axis2_xml_reader_t*) (((om_object_ptr)(axis2_obj->ptr))->ptr);
> i = AXIS2_XML_READER_GET_ATTRIBUTE_COUNT(reader, &env);
> RETURN_LONG(i);
>}
>PHP_FUNCTION(axis2_xml_reader_get_attribute_name_by_number)
>{
> axis2_object_ptr axis2_obj = NULL;
> zval *obj = NULL;
> axis2_xml_reader_t *reader = NULL;
> axis2_env_t *env = NULL;
> char *attr_name = NULL;
> char *name;
> long i = 0;
>
> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
> {
> php_std_error_handling();
> return;
> }
> env = php_axis2_get_env();
> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj TSRMLS_CC);
> reader =(axis2_xml_reader_t*) (((om_object_ptr)(axis2_obj->ptr))->ptr);
> attr_name = AXIS2_XML_READER_GET_ATTRIBUTE_NAME_BY_NUMBER(reader, &env, i);
> if(!attr_name)
> {
> RETURN_NULL();
> }
> else
> {
> name = estrdup(attr_name);
> AXIS2_XML_READER_XML_FREE(reader, &env, attr_name);
> }
> RETURN_STRING(name, 0);
>}
>PHP_FUNCTION(axis2_xml_reader_get_attribute_prefix_by_number)
>{
> axis2_object_ptr axis2_obj = NULL;
> zval *obj = NULL;
> axis2_xml_reader_t *reader = NULL;
> axis2_env_t *env = NULL;
> char *attr_prefix = NULL;
> char *prefix;
> long i = 0;
>
> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
> {
> php_std_error_handling();
> return;
> }
> env = php_axis2_get_env();
> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj TSRMLS_CC);
> reader =(axis2_xml_reader_t*) (((om_object_ptr)(axis2_obj->ptr))->ptr);
> attr_prefix = AXIS2_XML_READER_GET_ATTRIBUTE_PREFIX_BY_NUMBER(reader, &env, i);
> if(!attr_prefix)
> {
> RETURN_NULL();
> }
> else
> {
> prefix = estrdup(attr_prefix);
> AXIS2_XML_READER_XML_FREE(reader, &env, attr_prefix);
> }
> RETURN_STRING(prefix, 0);
>
>}
>PHP_FUNCTION(axis2_xml_reader_get_attribute_namespace_by_number)
>{
> axis2_object_ptr axis2_obj = NULL;
> zval *obj = NULL;
> axis2_xml_reader_t *reader = NULL;
> axis2_env_t *env = NULL;
> char *attr_ns_uri = NULL;
> char *uri;
> long i = 0;
>
> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
> {
> php_std_error_handling();
> return;
> }
> env = php_axis2_get_env();
> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj TSRMLS_CC);
> reader =(axis2_xml_reader_t*) (((om_object_ptr)(axis2_obj->ptr))->ptr);
> attr_ns_uri = AXIS2_XML_READER_GET_ATTRIBUTE_NAMESPACE_BY_NUMBER(reader, &env, i);
> if(!attr_ns_uri)
> {
> RETURN_NULL();
> }
> else
> {
> uri = estrdup(attr_ns_uri);
> AXIS2_XML_READER_XML_FREE(reader, &env, attr_ns_uri);
> }
> RETURN_STRING(uri, 0);
>}
>PHP_FUNCTION(axis2_xml_reader_get_attribute_value_by_number)
>{
> axis2_object_ptr axis2_obj = NULL;
> zval *obj = NULL;
> axis2_xml_reader_t *reader = NULL;
> axis2_env_t *env = NULL;
> char *attr_value = NULL;
> char *value;
> long i = 0;
>
> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
> {
> php_std_error_handling();
> return;
> }
> env = php_axis2_get_env();
> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj TSRMLS_CC);
> reader =(axis2_xml_reader_t*) (((om_object_ptr)(axis2_obj->ptr))->ptr);
> attr_value = AXIS2_XML_READER_GET_ATTRIBUTE_VALUE_BY_NUMBER(reader, &env, i);
> if(!attr_value)
> {
> RETURN_NULL();
> }
> else
> {
> value = estrdup(attr_value);
> AXIS2_XML_READER_XML_FREE(reader, &env, attr_value);
> }
> RETURN_STRING(value, 0);
>
>}
>PHP_FUNCTION(axis2_xml_reader_get_name)
>{
> axis2_object_ptr axis2_obj = NULL;
> zval *obj = NULL;
> axis2_xml_reader_t *reader = NULL;
> axis2_env_t *env = NULL;
> char *name = NULL;
> char *na = NULL;
>
> obj = getThis();
> env = php_axis2_get_env();
> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj TSRMLS_CC);
> reader =(axis2_xml_reader_t*) (((om_object_ptr)(axis2_obj->ptr))->ptr);
> name = AXIS2_XML_READER_GET_NAME(reader, &env);
> if(!name)
> {
> RETURN_NULL();
> }
> else
> {
> na = estrdup(name);
> if(name)
> AXIS2_XML_READER_XML_FREE(reader, &env, name);
> }
> RETURN_STRING(na, 0);
>
>}
>PHP_FUNCTION(axis2_xml_reader_get_value)
>{
> axis2_object_ptr axis2_obj = NULL;
> zval *obj = NULL;
> axis2_xml_reader_t *reader = NULL;
> axis2_env_t *env = NULL;
> char *value = NULL;
> char *val = NULL;
>
> obj = getThis();
> env = php_axis2_get_env();
> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj TSRMLS_CC);
> reader =(axis2_xml_reader_t*) (((om_object_ptr)(axis2_obj->ptr))->ptr);
> value = AXIS2_XML_READER_GET_VALUE(reader, &env);
> if(!value)
> {
> RETURN_NULL();
> }
> else
> {
> val = estrdup(value);
> if(value)
> AXIS2_XML_READER_XML_FREE(reader, &env, value);
> }
> RETURN_STRING(val, 0);
>
>}
>PHP_FUNCTION(axis2_xml_reader_get_prefix)
>{
> axis2_object_ptr axis2_obj = NULL;
> zval *obj = NULL;
> axis2_xml_reader_t *reader = NULL;
> axis2_env_t *env = NULL;
> char *prefix = NULL;
> char *pre = NULL;
>
> obj = getThis();
> env = php_axis2_get_env();
> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj TSRMLS_CC);
> reader =(axis2_xml_reader_t*) (((om_object_ptr)(axis2_obj->ptr))->ptr);
> prefix = AXIS2_XML_READER_GET_PREFIX(reader, &env);
> if(!prefix)
> {
> RETURN_NULL();
> }
> else
> {
> pre = estrdup(prefix);
> if(prefix)
> AXIS2_XML_READER_XML_FREE(reader, &env, prefix);
> }
> RETURN_STRING(pre, 0);
>
>}
>PHP_FUNCTION(axis2_xml_reader_get_namespace_count)
>{
> axis2_object_ptr axis2_obj = NULL;
> zval *obj = NULL;
> axis2_xml_reader_t *reader = NULL;
> axis2_env_t *env = NULL;
> long i =0;
>
> obj = getThis();
> env = php_axis2_get_env();
> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj TSRMLS_CC);
> reader =(axis2_xml_reader_t*) (((om_object_ptr)(axis2_obj->ptr))->ptr);
> i = AXIS2_XML_READER_GET_NAMESPACE_COUNT(reader, &env);
> RETURN_LONG(i);
>
>}
>PHP_FUNCTION(axis2_xml_reader_get_namespace_uri_by_number)
>{
> axis2_object_ptr axis2_obj = NULL;
> zval *obj = NULL;
> axis2_xml_reader_t *reader = NULL;
> axis2_env_t *env = NULL;
> char *ns_uri = NULL;
> char *uri = NULL;
> long i = 0;
>
> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
> {
> php_std_error_handling();
> return;
> }
> env = php_axis2_get_env();
> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj TSRMLS_CC);
> reader =(axis2_xml_reader_t*) (((om_object_ptr)(axis2_obj->ptr))->ptr);
> ns_uri = AXIS2_XML_READER_GET_NAMESPACE_URI_BY_NUMBER(reader, &env, i);
> if(!ns_uri)
> {
> RETURN_NULL();
> }
> else
> {
> uri = estrdup(ns_uri);
> AXIS2_XML_READER_XML_FREE(reader, &env, ns_uri);
> }
> RETURN_STRING(uri, 0);
>
>}
>PHP_FUNCTION(axis2_xml_reader_get_namespace_prefix_by_number)
>{
> axis2_object_ptr axis2_obj = NULL;
> zval *obj = NULL;
> axis2_xml_reader_t *reader = NULL;
> axis2_env_t *env = NULL;
> char *ns_prefix = NULL;
> char *prefix = NULL;
> long i = 0;
>
> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
> {
> php_std_error_handling();
> return;
> }
> env = php_axis2_get_env();
> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj TSRMLS_CC);
> reader =(axis2_xml_reader_t*) (((om_object_ptr)(axis2_obj->ptr))->ptr);
> ns_prefix = AXIS2_XML_READER_GET_NAMESPACE_PREFIX_BY_NUMBER(reader, &env, i);
> if(!ns_prefix)
> {
> RETURN_NULL();
> }
> else
> {
> prefix = estrdup(ns_prefix);
> AXIS2_XML_READER_XML_FREE(reader, &env, ns_prefix);
> }
> RETURN_STRING(prefix, 0);
>}
>PHP_FUNCTION(axis2_xml_reader_get_pi_target)
>{
> axis2_object_ptr axis2_obj = NULL;
> zval *obj = NULL;
> axis2_xml_reader_t *reader = NULL;
> axis2_env_t *env = NULL;
> char *pi_target = NULL;
> char *target = NULL;
>
> obj = getThis();
> env = php_axis2_get_env();
> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj TSRMLS_CC);
> reader =(axis2_xml_reader_t*) (((om_object_ptr)(axis2_obj->ptr))->ptr);
> pi_target = AXIS2_XML_READER_GET_PI_TARGET(reader, &env);
> if(!pi_target)
> {
> RETURN_NULL();
> }
> else
> {
> target = estrdup(pi_target);
> if(pi_target)
> AXIS2_XML_READER_XML_FREE(reader, &env, pi_target);
> }
> RETURN_STRING(target, 0);
>
>}
>PHP_FUNCTION(axis2_xml_reader_get_pi_data)
>{
> axis2_object_ptr axis2_obj = NULL;
> zval *obj = NULL;
> axis2_xml_reader_t *reader = NULL;
> axis2_env_t *env = NULL;
> char *pi_data = NULL;
> char *data = NULL;
>
> obj = getThis();
> env = php_axis2_get_env();
> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj TSRMLS_CC);
> reader =(axis2_xml_reader_t*) (((om_object_ptr)(axis2_obj->ptr))->ptr);
> pi_data = AXIS2_XML_READER_GET_PI_DATA(reader, &env);
> if(!pi_data)
> {
> RETURN_NULL();
> }
> else
> {
> data = estrdup(pi_data);
> if(pi_data)
> AXIS2_XML_READER_XML_FREE(reader, &env, pi_data);
> }
> RETURN_STRING(data, 0);
>}
>
Re: [AXIS2] PHP extension for axis2 - building on Linux
Posted by Samisa Abeysinghe <sa...@gmail.com>.
Despite the autoconf/automake version problem, I have been able to get
the php binding to building on Linux with a very simple config.m4 script.
I could test the php script and it ran successfully.
Samisa...
Samisa Abeysinghe wrote:
> Samisa Abeysinghe wrote:
>
>> I have been looking into getting this PHP binding code working on Linux.
>> The PHP source depends on autoconf-2.13 and automake-1.5.
>>
>> Our build system is based on autoconf-2.59 and automake-1.9
>
>
> Changing the line in configure.ac
> AC_PREREQ(2.59) to
> AC_PREREQ(2.13)
> does *not* solve this problem. :(
>
> autoconf 2.13 requres a different syntax in configure.ac.
>
> Samisa...
>
>>
>> This is a problem when it comes to working on both axis2c and PHP
>> extentions on the same machine :(
>>
>> Thanks,
>> Samisa...
>>
>> nandika jayawardana wrote:
>>
>>> Hi all,
>>>
>>> I have started writing a php extension for axis2c starting with om.
>>>
>>> For that I have added axis2_xml_reader api in this extension.
>>> Lot has to be done before everything in axis2 is supported.
>>>
>>> Pls commit this code.
>>> I think we can put it in a folder named c/bindings/php .
>>>
>>> Thanks
>>> nandika
>>>
>>> ------------------------------------------------------------------------
>>>
>>>
>>> #ifndef AXIS2_CE_H
>>> #define AXIS2_CE_H
>>>
>>> zend_class_entry *axis2_xml_reader_class_entry;
>>> zend_class_entry *axis2_xml_writer_class_entry;
>>> zend_class_entry *axis2_om_element_class_entry;
>>> zend_class_entry *axis2_om_comment_class_entry;
>>> zend_class_entry *axis2_om_text_class_entry;
>>> zend_class_entry *axis2_om_pi_entry;
>>> zend_class_entry *axis2_om_stax_builder_class_entry;
>>> zend_class_entry *axis2_om_document_class_entry;
>>> zend_class_entry *axis2_om_attribute_class_entry;
>>> zend_class_entry *axis2_om_namespace_class_entry;
>>>
>>>
>>> #endif /* AXIS2_CE_H */
>>>
>>> ------------------------------------------------------------------------
>>>
>>>
>>> #ifndef AXIS2_PROPERTIES_H
>>> #define AXIS2_PROPERTIES_H
>>>
>>> #endif /* AXIS2_PROPERTIES_H */
>>>
>>> ------------------------------------------------------------------------
>>>
>>>
>>> /*
>>> +----------------------------------------------------------------------+
>>>
>>> | PHP Version
>>> 5 |
>>> +----------------------------------------------------------------------+
>>>
>>> | Copyright (c) 1997-2004 The PHP
>>> Group |
>>> +----------------------------------------------------------------------+
>>>
>>> | This source file is subject to version 3.0 of the PHP
>>> license, |
>>> | that is bundled with this package in the file LICENSE, and
>>> is |
>>> | available through the world-wide-web at the following
>>> url: |
>>> |
>>> http://www.php.net/license/3_0.txt. |
>>> | If you did not receive a copy of the PHP license and are unable
>>> to |
>>> | obtain it through the world-wide-web, please send a note
>>> to |
>>> | license@php.net so we can mail you a copy
>>> immediately. |
>>> +----------------------------------------------------------------------+
>>>
>>> |
>>> Author: |
>>> +----------------------------------------------------------------------+
>>>
>>> */
>>>
>>> /* $Id: header,v 1.15 2004/01/08 16:46:52 sniper Exp $ */
>>>
>>> #ifdef HAVE_CONFIG_H
>>> #include "config.h"
>>> #endif
>>>
>>> #include "php.h"
>>> #include "php_ini.h"
>>> #include "ext/standard/info.h"
>>> #include "php_axis2.h"
>>> #include "axis2_env.h"
>>> #include "axis2_error_default.h"
>>> #include "axis2_stream_default.h"
>>> #include "axis2_log_default.h"
>>>
>>>
>>> zend_object_value axis2_objects_new(zend_class_entry *class_type
>>> TSRMLS_DC );
>>>
>>>
>>>
>>> /* If you declare any globals in php_axis2.h uncomment this:
>>> */
>>> ZEND_DECLARE_MODULE_GLOBALS(axis2)
>>>
>>>
>>> /* True global resources - no need for thread safety here */
>>> static int le_axis2;
>>>
>>> static zend_object_handlers axis2_object_handlers;
>>>
>>> /* {{{ axis2_functions[]
>>> *
>>> * Every user visible function must have an entry in axis2_functions[].
>>> */
>>> function_entry axis2_functions[] = {
>>> PHP_FE(axis2_helloworld, NULL) {NULL, NULL,
>>> NULL} /* Must be the last line in axis2_functions[] */
>>> };
>>> /* }}} */
>>>
>>> /* {{{ axis2_module_entry
>>> */
>>> zend_module_entry axis2_module_entry = {
>>> #if ZEND_MODULE_API_NO >= 20010901
>>> STANDARD_MODULE_HEADER,
>>> #endif
>>> "axis2",
>>> axis2_functions,
>>> PHP_MINIT(axis2),
>>> PHP_MSHUTDOWN(axis2),
>>> PHP_RINIT(axis2), /* Replace with NULL if there's nothing
>>> to do at request start */
>>> PHP_RSHUTDOWN(axis2), /* Replace with NULL if there's nothing
>>> to do at request end */
>>> PHP_MINFO(axis2),
>>> #if ZEND_MODULE_API_NO >= 20010901
>>> "0.1", /* Replace with version number for your extension */
>>> #endif
>>> STANDARD_MODULE_PROPERTIES
>>> };
>>> /* }}} */
>>>
>>> #ifdef COMPILE_DL_AXIS2
>>> ZEND_GET_MODULE(axis2)
>>> #endif
>>>
>>> /* {{{ PHP_INI
>>> */
>>> /* Remove comments and fill if you need to have entries in php.ini
>>> PHP_INI_BEGIN()
>>> STD_PHP_INI_ENTRY("axis2.global_value", "42", PHP_INI_ALL,
>>> OnUpdateLong, global_value, zend_axis2_globals, axis2_globals)
>>> STD_PHP_INI_ENTRY("axis2.global_string", "foobar", PHP_INI_ALL,
>>> OnUpdateString, global_string, zend_axis2_globals, axis2_globals)
>>> PHP_INI_END()
>>> */
>>> /* }}} */
>>>
>>> /* {{{ php_axis2_init_globals
>>> */
>>>
>>> static void php_axis2_init_globals(zend_axis2_globals *axis2_globals)
>>> {
>>> axis2_allocator_t *allocator = NULL;
>>> axis2_error_t *err = NULL;
>>> axis2_log_t *log = NULL;
>>> axis2_stream_t *stream = NULL;
>>> axis2_env_t *environment = NULL;
>>> allocator = axis2_allocator_init (NULL);
>>> log = axis2_log_create(allocator, NULL);
>>> stream = axis2_stream_create(allocator, NULL);
>>> err = axis2_error_create(allocator);
>>> environment= axis2_env_create_with_error_stream_log(allocator,
>>> err,stream, log);
>>> axis2_globals->global_value = 0;
>>> axis2_globals->global_string = NULL;
>>> axis2_globals->env = environment;
>>> axis2_globals->allocator = allocator;
>>> }
>>>
>>> /* }}} */
>>>
>>> /* {{{ PHP_MINIT_FUNCTION
>>> */
>>> PHP_MINIT_FUNCTION(axis2)
>>> {
>>> zend_class_entry ce;
>>> ZEND_INIT_MODULE_GLOBALS(axis2, php_axis2_init_globals, NULL);
>>> /* If you have INI entries, uncomment these lines
>>> REGISTER_INI_ENTRIES();
>>> */
>>> memcpy(&axis2_object_handlers,
>>> zend_get_std_object_handlers(), sizeof(zend_object_handlers));
>>> axis2_object_handlers.clone_obj = NULL;
>>> REGISTER_AXIS2_CLASS(ce,"Axis2XMLReader",NULL,
>>> php_axis2_xml_reader_class_functions, axis2_xml_reader_class_entry);
>>>
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_START_DOCUMENT",
>>> AXIS2_XML_READER_START_DOCUMENT, CONST_CS | CONST_PERSISTENT);
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_START_ELEMENT",
>>> AXIS2_XML_READER_START_ELEMENT , CONST_CS | CONST_PERSISTENT);
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_END_ELEMENT",
>>> AXIS2_XML_READER_END_ELEMENT, CONST_CS | CONST_PERSISTENT);
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_SPACE",
>>> AXIS2_XML_READER_SPACE, CONST_CS |
>>> CONST_PERSISTENT);
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_EMPTY_ELEMENT",
>>> AXIS2_XML_READER_EMPTY_ELEMENT, CONST_CS |
>>> CONST_PERSISTENT);
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_CHARACTER",
>>> AXIS2_XML_READER_CHARACTER, CONST_CS |
>>> CONST_PERSISTENT);
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_ENTITY_REFERANCE",
>>> AXIS2_XML_READER_ENTITY_REFERANCE, CONST_CS | CONST_PERSISTENT);
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_COMMENT",
>>> AXIS2_XML_READER_COMMENT, CONST_CS | CONST_PERSISTENT);
>>>
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_PROCESSING_INSTRUCTION",
>>> AXIS2_XML_READER_PROCESSING_INSTRUCTION, CONST_CS |
>>> CONST_PERSISTENT);
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_CDATA",
>>> AXIS2_XML_READER_CDATA, CONST_CS | CONST_PERSISTENT);
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_DOCUMENT_TYPE",
>>> AXIS2_XML_READER_DOCUMENT_TYPE, CONST_CS | CONST_PERSISTENT);
>>> return SUCCESS;
>>> }
>>> /* }}} */
>>>
>>> /* {{{ PHP_MSHUTDOWN_FUNCTION
>>> */
>>> PHP_MSHUTDOWN_FUNCTION(axis2)
>>> {
>>> /* uncomment this line if you have INI entries
>>> UNREGISTER_INI_ENTRIES();
>>> */
>>> php_axis2_destroy_env();
>>> return SUCCESS;
>>> }
>>> /* }}} */
>>>
>>>
>>>
>>> void php_axis2_objects_free_storage(void *object TSRMLS_DC)
>>> {
>>> axis2_object *intern = (axis2_object_ptr)object;
>>> zend_hash_destroy(intern->std.properties);
>>> FREE_HASHTABLE(intern->std.properties);
>>> if(intern->node_list)
>>> {
>>> zend_hash_destroy(intern->node_list);
>>> FREE_HASHTABLE(intern->node_list);
>>> }
>>> /*TODO individaul objects must be freed */
>>> if(intern->ptr)
>>> {
>>> }
>>> }
>>>
>>>
>>> static zend_object_value axis2_objects_new(zend_class_entry
>>> *class_type TSRMLS_DC )
>>> {
>>> zend_object_value retval;
>>> axis2_object *intern = NULL;
>>> zval *tmp = NULL;
>>> intern = emalloc(sizeof(axis2_object));
>>> intern->std.ce = class_type;
>>> intern->std.in_get = 0;
>>> intern->std.in_set = 0;
>>> intern->ptr = NULL;
>>> intern->prop_handler = NULL;
>>> ALLOC_HASHTABLE(intern->std.properties);
>>> zend_hash_init(intern->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
>>> zend_hash_copy(intern->std.properties,
>>> &class_type->default_properties,
>>> (copy_ctor_func_t)zval_add_ref, (void*)tmp, sizeof(zval
>>> *));
>>> retval.handle = zend_objects_store_put(intern, NULL,
>>> (
>>> zend_objects_free_object_storage_t)php_axis2_objects_free_storage,NULL
>>> TSRMLS_CC);
>>> intern->handle = retval.handle;
>>> retval.handlers = &axis2_object_handlers; return
>>> retval;
>>> }
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> /* Remove if there's nothing to do at request start */
>>> /* {{{ PHP_RINIT_FUNCTION
>>> */
>>> PHP_RINIT_FUNCTION(axis2)
>>> {
>>> return SUCCESS;
>>> }
>>> /* }}} */
>>>
>>> /* Remove if there's nothing to do at request end */
>>> /* {{{ PHP_RSHUTDOWN_FUNCTION
>>> */
>>> PHP_RSHUTDOWN_FUNCTION(axis2)
>>> {
>>> return SUCCESS;
>>> }
>>> /* }}} */
>>>
>>> /* {{{ PHP_MINFO_FUNCTION
>>> */
>>> PHP_MINFO_FUNCTION(axis2)
>>> {
>>> php_info_print_table_start();
>>> php_info_print_table_header(2, "axis2 support", "enabled");
>>> php_info_print_table_end();
>>>
>>> /* Remove comments if you have entries in php.ini
>>> DISPLAY_INI_ENTRIES();
>>> */
>>> }
>>> /* }}} */
>>>
>>>
>>>
>>>
>>>
>>> /* {{{ proto string axis2_helloworld()
>>> say welcome note */
>>> PHP_FUNCTION(axis2_helloworld)
>>> {
>>> php_printf(" welcome axis2");
>>> }
>>> /* }}} */
>>>
>>>
>>>
>>> void php_axis2_destroy_env()
>>> {
>>> TSRMLS_FETCH();
>>> axis2_env_free(AXIS2_G(env));
>>> AXIS2_G(env) = NULL;
>>> AXIS2_G(allocator) = NULL;
>>> }
>>>
>>> axis2_env_t *php_axis2_get_env()
>>> {
>>> TSRMLS_FETCH();
>>> return AXIS2_G(env);
>>> }
>>>
>>> /*
>>> * Local variables:
>>> * tab-width: 4
>>> * c-basic-offset: 4
>>> * End:
>>> * vim600: noet sw=4 ts=4 fdm=marker
>>> * vim<600: noet sw=4 ts=4
>>> */
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>>
>>> #ifndef AXIS2_FE_H
>>> #define AXIS2_FE_H
>>>
>>> extern zend_function_entry php_axis2_xml_reader_class_functions[];
>>> extern zend_function_entry php_axis2_xml_writer_class_functions[];
>>> extern zend_function_entry php_axis2_om_element_class_functions[];
>>> extern zend_function_entry php_axis2_om_comment_class_functions[];
>>> extern zend_function_entry php_axis2_om_text_class_functions[];
>>> extern zend_function_entry php_axis2_om_pi_class_functions[];
>>> extern zend_function_entry php_axis2_om_stax_builder_class_functions[];
>>> extern zend_function_entry php_axis2_om_document_class_functions[];
>>> extern zend_function_entry php_axis2_om_attribute_class_functions[];
>>> extern zend_function_entry php_axis2_om_namespace_class_functions[];
>>>
>>> /** axis2_xml_reader functions */
>>> PHP_METHOD(xml_reader, __construct);
>>> PHP_FUNCTION(axis2_xml_reader_next);
>>> PHP_FUNCTION(axis2_xml_reader_get_attribute_count);
>>> PHP_FUNCTION(axis2_xml_reader_get_attribute_name_by_number);
>>> PHP_FUNCTION(axis2_xml_reader_get_attribute_prefix_by_number);
>>> PHP_FUNCTION(axis2_xml_reader_get_attribute_namespace_by_number);
>>> PHP_FUNCTION(axis2_xml_reader_get_attribute_value_by_number);
>>> PHP_FUNCTION(axis2_xml_reader_get_name);
>>> PHP_FUNCTION(axis2_xml_reader_get_value);
>>> PHP_FUNCTION(axis2_xml_reader_get_prefix);
>>> PHP_FUNCTION(axis2_xml_reader_get_namespace_count);
>>> PHP_FUNCTION(axis2_xml_reader_get_namespace_uri_by_number);
>>> PHP_FUNCTION(axis2_xml_reader_get_namespace_prefix_by_number);
>>> PHP_FUNCTION(axis2_xml_reader_get_pi_target);
>>> PHP_FUNCTION(axis2_xml_reader_get_pi_data);
>>>
>>>
>>> typedef enum {
>>>
>>> OM_ELEMENT = 0,
>>> OM_NODE,
>>> OM_PI,
>>> OM_COMMENT,
>>> OM_TEXT,
>>> OM_DOCTYPE,
>>> AXIS2_XML_READER,
>>> AXIS2_XML_WRITER,
>>> OM_DOCUMENT,
>>> OM_STAX_BUILDER
>>> }om_obj_types;
>>>
>>>
>>> #endif /* AXIS2_FE_H */
>>>
>>> ------------------------------------------------------------------------
>>>
>>>
>>> /*
>>> +----------------------------------------------------------------------+
>>>
>>> | PHP Version
>>> 5 |
>>> +----------------------------------------------------------------------+
>>>
>>> | Copyright (c) 1997-2004 The PHP
>>> Group |
>>> +----------------------------------------------------------------------+
>>>
>>> | This source file is subject to version 3.0 of the PHP
>>> license, |
>>> | that is bundled with this package in the file LICENSE, and
>>> is |
>>> | available through the world-wide-web at the following
>>> url: |
>>> |
>>> http://www.php.net/license/3_0.txt. |
>>> | If you did not receive a copy of the PHP license and are unable
>>> to |
>>> | obtain it through the world-wide-web, please send a note
>>> to |
>>> | license@php.net so we can mail you a copy
>>> immediately. |
>>> +----------------------------------------------------------------------+
>>>
>>> |
>>> Author: |
>>> +----------------------------------------------------------------------+
>>>
>>> */
>>>
>>> /* $Id: header,v 1.15 2004/01/08 16:46:52 sniper Exp $ */
>>>
>>> #ifndef PHP_AXIS2_H
>>> #define PHP_AXIS2_H
>>>
>>> extern zend_module_entry axis2_module_entry;
>>> #define phpext_axis2_ptr &axis2_module_entry
>>>
>>> #ifdef PHP_WIN32
>>> #define PHP_AXIS2_API __declspec(dllexport)
>>> #else
>>> #define PHP_AXIS2_API
>>> #endif
>>>
>>> #ifdef ZTS
>>> #include "TSRM.h"
>>> #endif
>>>
>>> #include "axis2_ce.h"
>>> #include "axis2_fe.h"
>>> #include "axis2_common.h"
>>>
>>> #include <axis2.h>
>>> #include <axis2_env.h>
>>>
>>>
>>>
>>>
>>>
>>> PHP_MINIT_FUNCTION(axis2);
>>> PHP_MSHUTDOWN_FUNCTION(axis2);
>>> PHP_RINIT_FUNCTION(axis2);
>>> PHP_RSHUTDOWN_FUNCTION(axis2);
>>> PHP_MINFO_FUNCTION(axis2);
>>>
>>> PHP_FUNCTION(axis2_helloworld); /* For testing, remove later. */
>>>
>>>
>>>
>>> typedef struct axis2_object{
>>> zend_object std;
>>> void *ptr;
>>> int obj_type;
>>> HashTable *prop_handler;
>>> zend_object_handle handle;
>>> HashTable *node_list;
>>> }axis2_object;
>>>
>>> typedef axis2_object *axis2_object_ptr;
>>>
>>> void php_axis2_objects_free_storage(void *object TSRMLS_DC);
>>> void php_axis2_destroy_env();
>>> axis2_env_t *php_axis2_get_env();
>>>
>>> /* Declare any global variables you may need between the BEGIN
>>> and END macros here: */
>>>
>>> ZEND_BEGIN_MODULE_GLOBALS(axis2)
>>> long global_value;
>>> char *global_string;
>>> axis2_env_t *env;
>>> axis2_allocator_t *allocator;
>>> ZEND_END_MODULE_GLOBALS(axis2)
>>>
>>>
>>> /* In every utility function you add that needs to use variables
>>> in php_axis2_globals, call TSRMLS_FETCH(); after declaring other
>>> variables used by that function, or better yet, pass in TSRMLS_CC
>>> after the last function argument and declare your utility function
>>> with TSRMLS_DC after the last declared argument. Always refer to
>>> the globals in your function as AXIS2_G(variable). You are
>>> encouraged to rename these macros something shorter, see
>>> examples in any other php module directory.
>>> */
>>>
>>> #ifdef ZTS
>>> #define AXIS2_G(v) TSRMG(axis2_globals_id, zend_axis2_globals *, v)
>>> #else
>>> #define AXIS2_G(v) (axis2_globals.v)
>>> #endif
>>>
>>> #endif /* PHP_AXIS2_H */
>>>
>>>
>>> /*
>>> * Local variables:
>>> * tab-width: 4
>>> * c-basic-offset: 4
>>> * End:
>>> * vim600: noet sw=4 ts=4 fdm=marker
>>> * vim<600: noet sw=4 ts=4
>>> */
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>>
>>>
>>> #include "php.h"
>>> #include "php_axis2.h"
>>> #include "axis2_xml_reader.h"
>>>
>>> zend_function_entry php_axis2_xml_reader_class_functions[]=
>>> {
>>> PHP_FALIAS(next, axis2_xml_reader_next, NULL)
>>> PHP_FALIAS(getAttributeCount,
>>> axis2_xml_reader_get_attribute_count, NULL)
>>> PHP_FALIAS(getAttributeName ,
>>> axis2_xml_reader_get_attribute_name_by_number, NULL)
>>> PHP_FALIAS(getAttributePrefix,
>>> axis2_xml_reader_get_attribute_prefix_by_number, NULL)
>>> PHP_FALIAS(getAttributeNamespace,
>>> axis2_xml_reader_get_attribute_namespace_by_number, NULL)
>>> PHP_FALIAS(getAttributeValue,
>>> axis2_xml_reader_get_attribute_value_by_number, NULL)
>>> PHP_FALIAS(getName, axis2_xml_reader_get_name, NULL)
>>> PHP_FALIAS(getValue, axis2_xml_reader_get_value, NULL)
>>> PHP_FALIAS(getPrefix, axis2_xml_reader_get_prefix, NULL)
>>> PHP_FALIAS(getNamespaceCount,
>>> axis2_xml_reader_get_namespace_count, NULL)
>>> PHP_FALIAS(getNamespaceUri,
>>> axis2_xml_reader_get_namespace_uri_by_number, NULL)
>>> PHP_FALIAS(getNamespacePrefix,
>>> axis2_xml_reader_get_namespace_prefix_by_number, NULL)
>>> PHP_FALIAS(getPITarget , axis2_xml_reader_get_pi_target, NULL)
>>> PHP_FALIAS(getPIData, axis2_xml_reader_get_pi_data, NULL)
>>> PHP_ME(xml_reader, __construct, NULL, ZEND_ACC_PUBLIC)
>>> {NULL, NULL, NULL} };
>>>
>>> PHP_METHOD(xml_reader , __construct)
>>> {
>>> zval *object = NULL;
>>> axis2_object_ptr axis2_obj = NULL;
>>> om_object_ptr om_obj = NULL;
>>> char *path;
>>> int length;
>>> axis2_env_t *env;
>>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
>>> getThis(), "Os", &object, axis2_xml_reader_class_entry, &path,
>>> &length) == FAILURE)
>>> {
>>> php_std_error_handling();
>>> return;
>>> }
>>> env = php_axis2_get_env();
>>> om_obj = emalloc(sizeof(om_object));
>>> om_obj->ptr = NULL;
>>> om_obj->obj_type = AXIS2_XML_READER;
>>> om_obj->ptr = axis2_xml_reader_create_for_file(&env, path, NULL);
>>> om_obj->ref_count = 1;
>>> if(om_obj->ptr == NULL)
>>> {
>>> php_printf("reader null");
>>> }
>>> axis2_obj =
>>> (axis2_object_ptr)zend_object_store_get_object(object TSRMLS_CC);
>>> axis2_obj->ptr = om_obj;
>>> }
>>>
>>> PHP_FUNCTION(axis2_xml_reader_next)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> long i = 0;
>>> obj = getThis();
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> i = AXIS2_XML_READER_NEXT(reader, &env);
>>> RETURN_LONG(i);
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_attribute_count)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> int i = 0;
>>> obj = getThis();
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> i = AXIS2_XML_READER_GET_ATTRIBUTE_COUNT(reader, &env);
>>> RETURN_LONG(i);
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_attribute_name_by_number)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *attr_name = NULL;
>>> char *name;
>>> long i = 0;
>>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
>>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
>>> {
>>> php_std_error_handling();
>>> return;
>>> }
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> attr_name = AXIS2_XML_READER_GET_ATTRIBUTE_NAME_BY_NUMBER(reader,
>>> &env, i);
>>> if(!attr_name)
>>> {
>>> RETURN_NULL();
>>> }
>>> else
>>> {
>>> name = estrdup(attr_name);
>>> AXIS2_XML_READER_XML_FREE(reader, &env, attr_name);
>>> }
>>> RETURN_STRING(name, 0);
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_attribute_prefix_by_number)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *attr_prefix = NULL;
>>> char *prefix;
>>> long i = 0;
>>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
>>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
>>> {
>>> php_std_error_handling();
>>> return;
>>> }
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> attr_prefix =
>>> AXIS2_XML_READER_GET_ATTRIBUTE_PREFIX_BY_NUMBER(reader, &env, i);
>>> if(!attr_prefix)
>>> {
>>> RETURN_NULL();
>>> }
>>> else
>>> {
>>> prefix = estrdup(attr_prefix);
>>> AXIS2_XML_READER_XML_FREE(reader, &env, attr_prefix);
>>> }
>>> RETURN_STRING(prefix, 0);
>>>
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_attribute_namespace_by_number)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *attr_ns_uri = NULL;
>>> char *uri;
>>> long i = 0;
>>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
>>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
>>> {
>>> php_std_error_handling();
>>> return;
>>> }
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> attr_ns_uri =
>>> AXIS2_XML_READER_GET_ATTRIBUTE_NAMESPACE_BY_NUMBER(reader, &env, i);
>>> if(!attr_ns_uri)
>>> {
>>> RETURN_NULL();
>>> } else
>>> {
>>> uri = estrdup(attr_ns_uri);
>>> AXIS2_XML_READER_XML_FREE(reader, &env, attr_ns_uri);
>>> }
>>> RETURN_STRING(uri, 0);
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_attribute_value_by_number)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *attr_value = NULL;
>>> char *value;
>>> long i = 0;
>>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
>>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
>>> {
>>> php_std_error_handling();
>>> return;
>>> }
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> attr_value =
>>> AXIS2_XML_READER_GET_ATTRIBUTE_VALUE_BY_NUMBER(reader, &env, i);
>>> if(!attr_value)
>>> {
>>> RETURN_NULL();
>>> }
>>> else
>>> { value = estrdup(attr_value);
>>> AXIS2_XML_READER_XML_FREE(reader, &env, attr_value);
>>> }
>>> RETURN_STRING(value, 0);
>>>
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_name)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *name = NULL;
>>> char *na = NULL;
>>> obj = getThis();
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> name = AXIS2_XML_READER_GET_NAME(reader, &env);
>>> if(!name)
>>> {
>>> RETURN_NULL();
>>> }
>>> else
>>> { na = estrdup(name);
>>> if(name)
>>> AXIS2_XML_READER_XML_FREE(reader, &env, name);
>>> }
>>> RETURN_STRING(na, 0);
>>>
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_value)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *value = NULL;
>>> char *val = NULL;
>>> obj = getThis();
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> value = AXIS2_XML_READER_GET_VALUE(reader, &env);
>>> if(!value)
>>> {
>>> RETURN_NULL();
>>> }
>>> else
>>> {
>>> val = estrdup(value);
>>> if(value)
>>> AXIS2_XML_READER_XML_FREE(reader, &env, value);
>>> }
>>> RETURN_STRING(val, 0);
>>>
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_prefix)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *prefix = NULL;
>>> char *pre = NULL;
>>> obj = getThis();
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> prefix = AXIS2_XML_READER_GET_PREFIX(reader, &env);
>>> if(!prefix)
>>> {
>>> RETURN_NULL();
>>> }
>>> else
>>> {
>>> pre = estrdup(prefix);
>>> if(prefix)
>>> AXIS2_XML_READER_XML_FREE(reader, &env, prefix);
>>> }
>>> RETURN_STRING(pre, 0);
>>>
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_namespace_count)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> long i =0;
>>> obj = getThis();
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> i = AXIS2_XML_READER_GET_NAMESPACE_COUNT(reader, &env);
>>> RETURN_LONG(i);
>>>
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_namespace_uri_by_number)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *ns_uri = NULL;
>>> char *uri = NULL;
>>> long i = 0;
>>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
>>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
>>> {
>>> php_std_error_handling();
>>> return;
>>> }
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> ns_uri = AXIS2_XML_READER_GET_NAMESPACE_URI_BY_NUMBER(reader,
>>> &env, i);
>>> if(!ns_uri)
>>> {
>>> RETURN_NULL();
>>> }
>>> else
>>> {
>>> uri = estrdup(ns_uri);
>>> AXIS2_XML_READER_XML_FREE(reader, &env, ns_uri);
>>> }
>>> RETURN_STRING(uri, 0);
>>>
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_namespace_prefix_by_number)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *ns_prefix = NULL;
>>> char *prefix = NULL;
>>> long i = 0;
>>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
>>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
>>> {
>>> php_std_error_handling();
>>> return;
>>> }
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> ns_prefix =
>>> AXIS2_XML_READER_GET_NAMESPACE_PREFIX_BY_NUMBER(reader, &env, i);
>>> if(!ns_prefix)
>>> {
>>> RETURN_NULL();
>>> }
>>> else
>>> {
>>> prefix = estrdup(ns_prefix);
>>> AXIS2_XML_READER_XML_FREE(reader, &env, ns_prefix);
>>> }
>>> RETURN_STRING(prefix, 0);
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_pi_target)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *pi_target = NULL;
>>> char *target = NULL;
>>> obj = getThis();
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> pi_target = AXIS2_XML_READER_GET_PI_TARGET(reader, &env);
>>> if(!pi_target)
>>> {
>>> RETURN_NULL();
>>> }
>>> else
>>> {
>>> target = estrdup(pi_target);
>>> if(pi_target)
>>> AXIS2_XML_READER_XML_FREE(reader, &env, pi_target);
>>> }
>>> RETURN_STRING(target, 0);
>>>
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_pi_data)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *pi_data = NULL;
>>> char *data = NULL;
>>> obj = getThis();
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> pi_data = AXIS2_XML_READER_GET_PI_DATA(reader, &env);
>>> if(!pi_data)
>>> {
>>> RETURN_NULL();
>>> }
>>> else
>>> {
>>> data = estrdup(pi_data);
>>> if(pi_data)
>>> AXIS2_XML_READER_XML_FREE(reader, &env, pi_data);
>>> }
>>> RETURN_STRING(data, 0);
>>> }
>>>
>>
>>
>
>
Re: [AXIS2] PHP extension for axis2 - automake/autoconf problems
Posted by Samisa Abeysinghe <sa...@gmail.com>.
On 12/5/05, Damitha Kumarage <da...@gmail.com> wrote:
> Hi Samisa
> Samisa Abeysinghe wrote:
>
> > Samisa Abeysinghe wrote:
> >
> >> I have been looking into getting this PHP binding code working on Linux.
> >> The PHP source depends on autoconf-2.13 and automake-1.5.
> >>
> >> Our build system is based on autoconf-2.59 and automake-1.9
> >
> >
> > Changing the line in configure.ac
> > AC_PREREQ(2.59) to
> > AC_PREREQ(2.13)
> > does *not* solve this problem. :(
> >
> > autoconf 2.13 requres a different syntax in configure.ac.
>
> I'll see whether it is possible to change configure.ac to work with any
> version
> from 2.13
Cool. :)
Thanks,
Samisa...
>
> damitha
>
> >
> > Samisa...
> >
> >>
> >> This is a problem when it comes to working on both axis2c and PHP
> >> extentions on the same machine :(
> >>
> >> Thanks,
> >> Samisa...
> >>
> >> nandika jayawardana wrote:
> >>
> >>> Hi all,
> >>>
> >>> I have started writing a php extension for axis2c starting with om.
> >>>
> >>> For that I have added axis2_xml_reader api in this extension.
> >>> Lot has to be done before everything in axis2 is supported.
> >>>
> >>> Pls commit this code.
> >>> I think we can put it in a folder named c/bindings/php .
> >>>
> >>> Thanks
> >>> nandika
> >>>
> >>> ------------------------------------------------------------------------
> >>>
> >>>
> >>> #ifndef AXIS2_CE_H
> >>> #define AXIS2_CE_H
> >>>
> >>> zend_class_entry *axis2_xml_reader_class_entry;
> >>> zend_class_entry *axis2_xml_writer_class_entry;
> >>> zend_class_entry *axis2_om_element_class_entry;
> >>> zend_class_entry *axis2_om_comment_class_entry;
> >>> zend_class_entry *axis2_om_text_class_entry;
> >>> zend_class_entry *axis2_om_pi_entry;
> >>> zend_class_entry *axis2_om_stax_builder_class_entry;
> >>> zend_class_entry *axis2_om_document_class_entry;
> >>> zend_class_entry *axis2_om_attribute_class_entry;
> >>> zend_class_entry *axis2_om_namespace_class_entry;
> >>>
> >>>
> >>> #endif /* AXIS2_CE_H */
> >>>
> >>> ------------------------------------------------------------------------
> >>>
> >>>
> >>> #ifndef AXIS2_PROPERTIES_H
> >>> #define AXIS2_PROPERTIES_H
> >>>
> >>> #endif /* AXIS2_PROPERTIES_H */
> >>>
> >>> ------------------------------------------------------------------------
> >>>
> >>>
> >>> /*
> >>> +----------------------------------------------------------------------+
> >>>
> >>> | PHP Version
> >>> 5 |
> >>> +----------------------------------------------------------------------+
> >>>
> >>> | Copyright (c) 1997-2004 The PHP
> >>> Group |
> >>> +----------------------------------------------------------------------+
> >>>
> >>> | This source file is subject to version 3.0 of the PHP
> >>> license, |
> >>> | that is bundled with this package in the file LICENSE, and
> >>> is |
> >>> | available through the world-wide-web at the following
> >>> url: |
> >>> |
> >>> http://www.php.net/license/3_0.txt. |
> >>> | If you did not receive a copy of the PHP license and are unable
> >>> to |
> >>> | obtain it through the world-wide-web, please send a note
> >>> to |
> >>> | license@php.net so we can mail you a copy
> >>> immediately. |
> >>> +----------------------------------------------------------------------+
> >>>
> >>> |
> >>> Author: |
> >>> +----------------------------------------------------------------------+
> >>>
> >>> */
> >>>
> >>> /* $Id: header,v 1.15 2004/01/08 16:46:52 sniper Exp $ */
> >>>
> >>> #ifdef HAVE_CONFIG_H
> >>> #include "config.h"
> >>> #endif
> >>>
> >>> #include "php.h"
> >>> #include "php_ini.h"
> >>> #include "ext/standard/info.h"
> >>> #include "php_axis2.h"
> >>> #include "axis2_env.h"
> >>> #include "axis2_error_default.h"
> >>> #include "axis2_stream_default.h"
> >>> #include "axis2_log_default.h"
> >>>
> >>>
> >>> zend_object_value axis2_objects_new(zend_class_entry *class_type
> >>> TSRMLS_DC );
> >>>
> >>>
> >>>
> >>> /* If you declare any globals in php_axis2.h uncomment this:
> >>> */
> >>> ZEND_DECLARE_MODULE_GLOBALS(axis2)
> >>>
> >>>
> >>> /* True global resources - no need for thread safety here */
> >>> static int le_axis2;
> >>>
> >>> static zend_object_handlers axis2_object_handlers;
> >>>
> >>> /* {{{ axis2_functions[]
> >>> *
> >>> * Every user visible function must have an entry in axis2_functions[].
> >>> */
> >>> function_entry axis2_functions[] = {
> >>> PHP_FE(axis2_helloworld, NULL) {NULL, NULL,
> >>> NULL} /* Must be the last line in axis2_functions[] */
> >>> };
> >>> /* }}} */
> >>>
> >>> /* {{{ axis2_module_entry
> >>> */
> >>> zend_module_entry axis2_module_entry = {
> >>> #if ZEND_MODULE_API_NO >= 20010901
> >>> STANDARD_MODULE_HEADER,
> >>> #endif
> >>> "axis2",
> >>> axis2_functions,
> >>> PHP_MINIT(axis2),
> >>> PHP_MSHUTDOWN(axis2),
> >>> PHP_RINIT(axis2), /* Replace with NULL if there's nothing
> >>> to do at request start */
> >>> PHP_RSHUTDOWN(axis2), /* Replace with NULL if there's nothing
> >>> to do at request end */
> >>> PHP_MINFO(axis2),
> >>> #if ZEND_MODULE_API_NO >= 20010901
> >>> "0.1", /* Replace with version number for your extension */
> >>> #endif
> >>> STANDARD_MODULE_PROPERTIES
> >>> };
> >>> /* }}} */
> >>>
> >>> #ifdef COMPILE_DL_AXIS2
> >>> ZEND_GET_MODULE(axis2)
> >>> #endif
> >>>
> >>> /* {{{ PHP_INI
> >>> */
> >>> /* Remove comments and fill if you need to have entries in php.ini
> >>> PHP_INI_BEGIN()
> >>> STD_PHP_INI_ENTRY("axis2.global_value", "42", PHP_INI_ALL,
> >>> OnUpdateLong, global_value, zend_axis2_globals, axis2_globals)
> >>> STD_PHP_INI_ENTRY("axis2.global_string", "foobar", PHP_INI_ALL,
> >>> OnUpdateString, global_string, zend_axis2_globals, axis2_globals)
> >>> PHP_INI_END()
> >>> */
> >>> /* }}} */
> >>>
> >>> /* {{{ php_axis2_init_globals
> >>> */
> >>>
> >>> static void php_axis2_init_globals(zend_axis2_globals *axis2_globals)
> >>> {
> >>> axis2_allocator_t *allocator = NULL;
> >>> axis2_error_t *err = NULL;
> >>> axis2_log_t *log = NULL;
> >>> axis2_stream_t *stream = NULL;
> >>> axis2_env_t *environment = NULL;
> >>> allocator = axis2_allocator_init (NULL);
> >>> log = axis2_log_create(allocator, NULL);
> >>> stream = axis2_stream_create(allocator, NULL);
> >>> err = axis2_error_create(allocator);
> >>> environment= axis2_env_create_with_error_stream_log(allocator,
> >>> err,stream, log);
> >>> axis2_globals->global_value = 0;
> >>> axis2_globals->global_string = NULL;
> >>> axis2_globals->env = environment;
> >>> axis2_globals->allocator = allocator;
> >>> }
> >>>
> >>> /* }}} */
> >>>
> >>> /* {{{ PHP_MINIT_FUNCTION
> >>> */
> >>> PHP_MINIT_FUNCTION(axis2)
> >>> {
> >>> zend_class_entry ce;
> >>> ZEND_INIT_MODULE_GLOBALS(axis2, php_axis2_init_globals, NULL);
> >>> /* If you have INI entries, uncomment these lines
> >>> REGISTER_INI_ENTRIES();
> >>> */
> >>> memcpy(&axis2_object_handlers,
> >>> zend_get_std_object_handlers(), sizeof(zend_object_handlers));
> >>> axis2_object_handlers.clone_obj = NULL;
> >>> REGISTER_AXIS2_CLASS(ce,"Axis2XMLReader",NULL,
> >>> php_axis2_xml_reader_class_functions, axis2_xml_reader_class_entry);
> >>>
> >>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_START_DOCUMENT",
> >>> AXIS2_XML_READER_START_DOCUMENT, CONST_CS | CONST_PERSISTENT);
> >>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_START_ELEMENT",
> >>> AXIS2_XML_READER_START_ELEMENT , CONST_CS | CONST_PERSISTENT);
> >>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_END_ELEMENT",
> >>> AXIS2_XML_READER_END_ELEMENT, CONST_CS | CONST_PERSISTENT);
> >>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_SPACE",
> >>> AXIS2_XML_READER_SPACE, CONST_CS |
> >>> CONST_PERSISTENT);
> >>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_EMPTY_ELEMENT",
> >>> AXIS2_XML_READER_EMPTY_ELEMENT, CONST_CS |
> >>> CONST_PERSISTENT);
> >>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_CHARACTER",
> >>> AXIS2_XML_READER_CHARACTER, CONST_CS |
> >>> CONST_PERSISTENT);
> >>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_ENTITY_REFERANCE",
> >>> AXIS2_XML_READER_ENTITY_REFERANCE, CONST_CS | CONST_PERSISTENT);
> >>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_COMMENT",
> >>> AXIS2_XML_READER_COMMENT, CONST_CS | CONST_PERSISTENT);
> >>>
> >>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_PROCESSING_INSTRUCTION",
> >>> AXIS2_XML_READER_PROCESSING_INSTRUCTION, CONST_CS |
> >>> CONST_PERSISTENT);
> >>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_CDATA",
> >>> AXIS2_XML_READER_CDATA, CONST_CS | CONST_PERSISTENT);
> >>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_DOCUMENT_TYPE",
> >>> AXIS2_XML_READER_DOCUMENT_TYPE, CONST_CS | CONST_PERSISTENT);
> >>> return SUCCESS;
> >>> }
> >>> /* }}} */
> >>>
> >>> /* {{{ PHP_MSHUTDOWN_FUNCTION
> >>> */
> >>> PHP_MSHUTDOWN_FUNCTION(axis2)
> >>> {
> >>> /* uncomment this line if you have INI entries
> >>> UNREGISTER_INI_ENTRIES();
> >>> */
> >>> php_axis2_destroy_env();
> >>> return SUCCESS;
> >>> }
> >>> /* }}} */
> >>>
> >>>
> >>>
> >>> void php_axis2_objects_free_storage(void *object TSRMLS_DC)
> >>> {
> >>> axis2_object *intern = (axis2_object_ptr)object;
> >>> zend_hash_destroy(intern->std.properties);
> >>> FREE_HASHTABLE(intern->std.properties);
> >>> if(intern->node_list)
> >>> {
> >>> zend_hash_destroy(intern->node_list);
> >>> FREE_HASHTABLE(intern->node_list);
> >>> }
> >>> /*TODO individaul objects must be freed */
> >>> if(intern->ptr)
> >>> {
> >>> }
> >>> }
> >>>
> >>>
> >>> static zend_object_value axis2_objects_new(zend_class_entry
> >>> *class_type TSRMLS_DC )
> >>> {
> >>> zend_object_value retval;
> >>> axis2_object *intern = NULL;
> >>> zval *tmp = NULL;
> >>> intern = emalloc(sizeof(axis2_object));
> >>> intern->std.ce = class_type;
> >>> intern->std.in_get = 0;
> >>> intern->std.in_set = 0;
> >>> intern->ptr = NULL;
> >>> intern->prop_handler = NULL;
> >>> ALLOC_HASHTABLE(intern->std.properties);
> >>> zend_hash_init(intern->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
> >>> zend_hash_copy(intern->std.properties,
> >>> &class_type->default_properties,
> >>> (copy_ctor_func_t)zval_add_ref, (void*)tmp, sizeof(zval
> >>> *));
> >>> retval.handle = zend_objects_store_put(intern, NULL,
> >>> (
> >>> zend_objects_free_object_storage_t)php_axis2_objects_free_storage,NULL
> >>> TSRMLS_CC);
> >>> intern->handle = retval.handle;
> >>> retval.handlers = &axis2_object_handlers; return
> >>> retval;
> >>> }
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> /* Remove if there's nothing to do at request start */
> >>> /* {{{ PHP_RINIT_FUNCTION
> >>> */
> >>> PHP_RINIT_FUNCTION(axis2)
> >>> {
> >>> return SUCCESS;
> >>> }
> >>> /* }}} */
> >>>
> >>> /* Remove if there's nothing to do at request end */
> >>> /* {{{ PHP_RSHUTDOWN_FUNCTION
> >>> */
> >>> PHP_RSHUTDOWN_FUNCTION(axis2)
> >>> {
> >>> return SUCCESS;
> >>> }
> >>> /* }}} */
> >>>
> >>> /* {{{ PHP_MINFO_FUNCTION
> >>> */
> >>> PHP_MINFO_FUNCTION(axis2)
> >>> {
> >>> php_info_print_table_start();
> >>> php_info_print_table_header(2, "axis2 support", "enabled");
> >>> php_info_print_table_end();
> >>>
> >>> /* Remove comments if you have entries in php.ini
> >>> DISPLAY_INI_ENTRIES();
> >>> */
> >>> }
> >>> /* }}} */
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> /* {{{ proto string axis2_helloworld()
> >>> say welcome note */
> >>> PHP_FUNCTION(axis2_helloworld)
> >>> {
> >>> php_printf(" welcome axis2");
> >>> }
> >>> /* }}} */
> >>>
> >>>
> >>>
> >>> void php_axis2_destroy_env()
> >>> {
> >>> TSRMLS_FETCH();
> >>> axis2_env_free(AXIS2_G(env));
> >>> AXIS2_G(env) = NULL;
> >>> AXIS2_G(allocator) = NULL;
> >>> }
> >>>
> >>> axis2_env_t *php_axis2_get_env()
> >>> {
> >>> TSRMLS_FETCH();
> >>> return AXIS2_G(env);
> >>> }
> >>>
> >>> /*
> >>> * Local variables:
> >>> * tab-width: 4
> >>> * c-basic-offset: 4
> >>> * End:
> >>> * vim600: noet sw=4 ts=4 fdm=marker
> >>> * vim<600: noet sw=4 ts=4
> >>> */
> >>>
> >>>
> >>> ------------------------------------------------------------------------
> >>>
> >>>
> >>> #ifndef AXIS2_FE_H
> >>> #define AXIS2_FE_H
> >>>
> >>> extern zend_function_entry php_axis2_xml_reader_class_functions[];
> >>> extern zend_function_entry php_axis2_xml_writer_class_functions[];
> >>> extern zend_function_entry php_axis2_om_element_class_functions[];
> >>> extern zend_function_entry php_axis2_om_comment_class_functions[];
> >>> extern zend_function_entry php_axis2_om_text_class_functions[];
> >>> extern zend_function_entry php_axis2_om_pi_class_functions[];
> >>> extern zend_function_entry php_axis2_om_stax_builder_class_functions[];
> >>> extern zend_function_entry php_axis2_om_document_class_functions[];
> >>> extern zend_function_entry php_axis2_om_attribute_class_functions[];
> >>> extern zend_function_entry php_axis2_om_namespace_class_functions[];
> >>>
> >>> /** axis2_xml_reader functions */
> >>> PHP_METHOD(xml_reader, __construct);
> >>> PHP_FUNCTION(axis2_xml_reader_next);
> >>> PHP_FUNCTION(axis2_xml_reader_get_attribute_count);
> >>> PHP_FUNCTION(axis2_xml_reader_get_attribute_name_by_number);
> >>> PHP_FUNCTION(axis2_xml_reader_get_attribute_prefix_by_number);
> >>> PHP_FUNCTION(axis2_xml_reader_get_attribute_namespace_by_number);
> >>> PHP_FUNCTION(axis2_xml_reader_get_attribute_value_by_number);
> >>> PHP_FUNCTION(axis2_xml_reader_get_name);
> >>> PHP_FUNCTION(axis2_xml_reader_get_value);
> >>> PHP_FUNCTION(axis2_xml_reader_get_prefix);
> >>> PHP_FUNCTION(axis2_xml_reader_get_namespace_count);
> >>> PHP_FUNCTION(axis2_xml_reader_get_namespace_uri_by_number);
> >>> PHP_FUNCTION(axis2_xml_reader_get_namespace_prefix_by_number);
> >>> PHP_FUNCTION(axis2_xml_reader_get_pi_target);
> >>> PHP_FUNCTION(axis2_xml_reader_get_pi_data);
> >>>
> >>>
> >>> typedef enum {
> >>>
> >>> OM_ELEMENT = 0,
> >>> OM_NODE,
> >>> OM_PI,
> >>> OM_COMMENT,
> >>> OM_TEXT,
> >>> OM_DOCTYPE,
> >>> AXIS2_XML_READER,
> >>> AXIS2_XML_WRITER,
> >>> OM_DOCUMENT,
> >>> OM_STAX_BUILDER
> >>> }om_obj_types;
> >>>
> >>>
> >>> #endif /* AXIS2_FE_H */
> >>>
> >>> ------------------------------------------------------------------------
> >>>
> >>>
> >>> /*
> >>> +----------------------------------------------------------------------+
> >>>
> >>> | PHP Version
> >>> 5 |
> >>> +----------------------------------------------------------------------+
> >>>
> >>> | Copyright (c) 1997-2004 The PHP
> >>> Group |
> >>> +----------------------------------------------------------------------+
> >>>
> >>> | This source file is subject to version 3.0 of the PHP
> >>> license, |
> >>> | that is bundled with this package in the file LICENSE, and
> >>> is |
> >>> | available through the world-wide-web at the following
> >>> url: |
> >>> |
> >>> http://www.php.net/license/3_0.txt. |
> >>> | If you did not receive a copy of the PHP license and are unable
> >>> to |
> >>> | obtain it through the world-wide-web, please send a note
> >>> to |
> >>> | license@php.net so we can mail you a copy
> >>> immediately. |
> >>> +----------------------------------------------------------------------+
> >>>
> >>> |
> >>> Author: |
> >>> +----------------------------------------------------------------------+
> >>>
> >>> */
> >>>
> >>> /* $Id: header,v 1.15 2004/01/08 16:46:52 sniper Exp $ */
> >>>
> >>> #ifndef PHP_AXIS2_H
> >>> #define PHP_AXIS2_H
> >>>
> >>> extern zend_module_entry axis2_module_entry;
> >>> #define phpext_axis2_ptr &axis2_module_entry
> >>>
> >>> #ifdef PHP_WIN32
> >>> #define PHP_AXIS2_API __declspec(dllexport)
> >>> #else
> >>> #define PHP_AXIS2_API
> >>> #endif
> >>>
> >>> #ifdef ZTS
> >>> #include "TSRM.h"
> >>> #endif
> >>>
> >>> #include "axis2_ce.h"
> >>> #include "axis2_fe.h"
> >>> #include "axis2_common.h"
> >>>
> >>> #include <axis2.h>
> >>> #include <axis2_env.h>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> PHP_MINIT_FUNCTION(axis2);
> >>> PHP_MSHUTDOWN_FUNCTION(axis2);
> >>> PHP_RINIT_FUNCTION(axis2);
> >>> PHP_RSHUTDOWN_FUNCTION(axis2);
> >>> PHP_MINFO_FUNCTION(axis2);
> >>>
> >>> PHP_FUNCTION(axis2_helloworld); /* For testing, remove later. */
> >>>
> >>>
> >>>
> >>> typedef struct axis2_object{
> >>> zend_object std;
> >>> void *ptr;
> >>> int obj_type;
> >>> HashTable *prop_handler;
> >>> zend_object_handle handle;
> >>> HashTable *node_list;
> >>> }axis2_object;
> >>>
> >>> typedef axis2_object *axis2_object_ptr;
> >>>
> >>> void php_axis2_objects_free_storage(void *object TSRMLS_DC);
> >>> void php_axis2_destroy_env();
> >>> axis2_env_t *php_axis2_get_env();
> >>>
> >>> /* Declare any global variables you may need between the BEGIN
> >>> and END macros here: */
> >>>
> >>> ZEND_BEGIN_MODULE_GLOBALS(axis2)
> >>> long global_value;
> >>> char *global_string;
> >>> axis2_env_t *env;
> >>> axis2_allocator_t *allocator;
> >>> ZEND_END_MODULE_GLOBALS(axis2)
> >>>
> >>>
> >>> /* In every utility function you add that needs to use variables
> >>> in php_axis2_globals, call TSRMLS_FETCH(); after declaring other
> >>> variables used by that function, or better yet, pass in TSRMLS_CC
> >>> after the last function argument and declare your utility function
> >>> with TSRMLS_DC after the last declared argument. Always refer to
> >>> the globals in your function as AXIS2_G(variable). You are
> >>> encouraged to rename these macros something shorter, see
> >>> examples in any other php module directory.
> >>> */
> >>>
> >>> #ifdef ZTS
> >>> #define AXIS2_G(v) TSRMG(axis2_globals_id, zend_axis2_globals *, v)
> >>> #else
> >>> #define AXIS2_G(v) (axis2_globals.v)
> >>> #endif
> >>>
> >>> #endif /* PHP_AXIS2_H */
> >>>
> >>>
> >>> /*
> >>> * Local variables:
> >>> * tab-width: 4
> >>> * c-basic-offset: 4
> >>> * End:
> >>> * vim600: noet sw=4 ts=4 fdm=marker
> >>> * vim<600: noet sw=4 ts=4
> >>> */
> >>>
> >>>
> >>> ------------------------------------------------------------------------
> >>>
> >>>
> >>>
> >>> #include "php.h"
> >>> #include "php_axis2.h"
> >>> #include "axis2_xml_reader.h"
> >>>
> >>> zend_function_entry php_axis2_xml_reader_class_functions[]=
> >>> {
> >>> PHP_FALIAS(next, axis2_xml_reader_next, NULL)
> >>> PHP_FALIAS(getAttributeCount,
> >>> axis2_xml_reader_get_attribute_count, NULL)
> >>> PHP_FALIAS(getAttributeName ,
> >>> axis2_xml_reader_get_attribute_name_by_number, NULL)
> >>> PHP_FALIAS(getAttributePrefix,
> >>> axis2_xml_reader_get_attribute_prefix_by_number, NULL)
> >>> PHP_FALIAS(getAttributeNamespace,
> >>> axis2_xml_reader_get_attribute_namespace_by_number, NULL)
> >>> PHP_FALIAS(getAttributeValue,
> >>> axis2_xml_reader_get_attribute_value_by_number, NULL)
> >>> PHP_FALIAS(getName, axis2_xml_reader_get_name, NULL)
> >>> PHP_FALIAS(getValue, axis2_xml_reader_get_value, NULL)
> >>> PHP_FALIAS(getPrefix, axis2_xml_reader_get_prefix, NULL)
> >>> PHP_FALIAS(getNamespaceCount,
> >>> axis2_xml_reader_get_namespace_count, NULL)
> >>> PHP_FALIAS(getNamespaceUri,
> >>> axis2_xml_reader_get_namespace_uri_by_number, NULL)
> >>> PHP_FALIAS(getNamespacePrefix,
> >>> axis2_xml_reader_get_namespace_prefix_by_number, NULL)
> >>> PHP_FALIAS(getPITarget , axis2_xml_reader_get_pi_target, NULL)
> >>> PHP_FALIAS(getPIData, axis2_xml_reader_get_pi_data, NULL)
> >>> PHP_ME(xml_reader, __construct, NULL, ZEND_ACC_PUBLIC)
> >>> {NULL, NULL, NULL} };
> >>>
> >>> PHP_METHOD(xml_reader , __construct)
> >>> {
> >>> zval *object = NULL;
> >>> axis2_object_ptr axis2_obj = NULL;
> >>> om_object_ptr om_obj = NULL;
> >>> char *path;
> >>> int length;
> >>> axis2_env_t *env;
> >>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
> >>> getThis(), "Os", &object, axis2_xml_reader_class_entry, &path,
> >>> &length) == FAILURE)
> >>> {
> >>> php_std_error_handling();
> >>> return;
> >>> }
> >>> env = php_axis2_get_env();
> >>> om_obj = emalloc(sizeof(om_object));
> >>> om_obj->ptr = NULL;
> >>> om_obj->obj_type = AXIS2_XML_READER;
> >>> om_obj->ptr = axis2_xml_reader_create_for_file(&env, path, NULL);
> >>> om_obj->ref_count = 1;
> >>> if(om_obj->ptr == NULL)
> >>> {
> >>> php_printf("reader null");
> >>> }
> >>> axis2_obj =
> >>> (axis2_object_ptr)zend_object_store_get_object(object TSRMLS_CC);
> >>> axis2_obj->ptr = om_obj;
> >>> }
> >>>
> >>> PHP_FUNCTION(axis2_xml_reader_next)
> >>> {
> >>> axis2_object_ptr axis2_obj = NULL;
> >>> zval *obj = NULL;
> >>> axis2_xml_reader_t *reader = NULL;
> >>> axis2_env_t *env = NULL;
> >>> long i = 0;
> >>> obj = getThis();
> >>> env = php_axis2_get_env();
> >>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
> >>> TSRMLS_CC);
> >>> reader =(axis2_xml_reader_t*)
> >>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
> >>> i = AXIS2_XML_READER_NEXT(reader, &env);
> >>> RETURN_LONG(i);
> >>> }
> >>> PHP_FUNCTION(axis2_xml_reader_get_attribute_count)
> >>> {
> >>> axis2_object_ptr axis2_obj = NULL;
> >>> zval *obj = NULL;
> >>> axis2_xml_reader_t *reader = NULL;
> >>> axis2_env_t *env = NULL;
> >>> int i = 0;
> >>> obj = getThis();
> >>> env = php_axis2_get_env();
> >>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
> >>> TSRMLS_CC);
> >>> reader =(axis2_xml_reader_t*)
> >>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
> >>> i = AXIS2_XML_READER_GET_ATTRIBUTE_COUNT(reader, &env);
> >>> RETURN_LONG(i);
> >>> }
> >>> PHP_FUNCTION(axis2_xml_reader_get_attribute_name_by_number)
> >>> {
> >>> axis2_object_ptr axis2_obj = NULL;
> >>> zval *obj = NULL;
> >>> axis2_xml_reader_t *reader = NULL;
> >>> axis2_env_t *env = NULL;
> >>> char *attr_name = NULL;
> >>> char *name;
> >>> long i = 0;
> >>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
> >>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
> >>> {
> >>> php_std_error_handling();
> >>> return;
> >>> }
> >>> env = php_axis2_get_env();
> >>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
> >>> TSRMLS_CC);
> >>> reader =(axis2_xml_reader_t*)
> >>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
> >>> attr_name = AXIS2_XML_READER_GET_ATTRIBUTE_NAME_BY_NUMBER(reader,
> >>> &env, i);
> >>> if(!attr_name)
> >>> {
> >>> RETURN_NULL();
> >>> }
> >>> else
> >>> {
> >>> name = estrdup(attr_name);
> >>> AXIS2_XML_READER_XML_FREE(reader, &env, attr_name);
> >>> }
> >>> RETURN_STRING(name, 0);
> >>> }
> >>> PHP_FUNCTION(axis2_xml_reader_get_attribute_prefix_by_number)
> >>> {
> >>> axis2_object_ptr axis2_obj = NULL;
> >>> zval *obj = NULL;
> >>> axis2_xml_reader_t *reader = NULL;
> >>> axis2_env_t *env = NULL;
> >>> char *attr_prefix = NULL;
> >>> char *prefix;
> >>> long i = 0;
> >>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
> >>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
> >>> {
> >>> php_std_error_handling();
> >>> return;
> >>> }
> >>> env = php_axis2_get_env();
> >>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
> >>> TSRMLS_CC);
> >>> reader =(axis2_xml_reader_t*)
> >>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
> >>> attr_prefix =
> >>> AXIS2_XML_READER_GET_ATTRIBUTE_PREFIX_BY_NUMBER(reader, &env, i);
> >>> if(!attr_prefix)
> >>> {
> >>> RETURN_NULL();
> >>> }
> >>> else
> >>> {
> >>> prefix = estrdup(attr_prefix);
> >>> AXIS2_XML_READER_XML_FREE(reader, &env, attr_prefix);
> >>> }
> >>> RETURN_STRING(prefix, 0);
> >>>
> >>> }
> >>> PHP_FUNCTION(axis2_xml_reader_get_attribute_namespace_by_number)
> >>> {
> >>> axis2_object_ptr axis2_obj = NULL;
> >>> zval *obj = NULL;
> >>> axis2_xml_reader_t *reader = NULL;
> >>> axis2_env_t *env = NULL;
> >>> char *attr_ns_uri = NULL;
> >>> char *uri;
> >>> long i = 0;
> >>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
> >>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
> >>> {
> >>> php_std_error_handling();
> >>> return;
> >>> }
> >>> env = php_axis2_get_env();
> >>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
> >>> TSRMLS_CC);
> >>> reader =(axis2_xml_reader_t*)
> >>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
> >>> attr_ns_uri =
> >>> AXIS2_XML_READER_GET_ATTRIBUTE_NAMESPACE_BY_NUMBER(reader, &env, i);
> >>> if(!attr_ns_uri)
> >>> {
> >>> RETURN_NULL();
> >>> } else
> >>> {
> >>> uri = estrdup(attr_ns_uri);
> >>> AXIS2_XML_READER_XML_FREE(reader, &env, attr_ns_uri);
> >>> }
> >>> RETURN_STRING(uri, 0);
> >>> }
> >>> PHP_FUNCTION(axis2_xml_reader_get_attribute_value_by_number)
> >>> {
> >>> axis2_object_ptr axis2_obj = NULL;
> >>> zval *obj = NULL;
> >>> axis2_xml_reader_t *reader = NULL;
> >>> axis2_env_t *env = NULL;
> >>> char *attr_value = NULL;
> >>> char *value;
> >>> long i = 0;
> >>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
> >>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
> >>> {
> >>> php_std_error_handling();
> >>> return;
> >>> }
> >>> env = php_axis2_get_env();
> >>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
> >>> TSRMLS_CC);
> >>> reader =(axis2_xml_reader_t*)
> >>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
> >>> attr_value =
> >>> AXIS2_XML_READER_GET_ATTRIBUTE_VALUE_BY_NUMBER(reader, &env, i);
> >>> if(!attr_value)
> >>> {
> >>> RETURN_NULL();
> >>> }
> >>> else
> >>> { value = estrdup(attr_value);
> >>> AXIS2_XML_READER_XML_FREE(reader, &env, attr_value);
> >>> }
> >>> RETURN_STRING(value, 0);
> >>>
> >>> }
> >>> PHP_FUNCTION(axis2_xml_reader_get_name)
> >>> {
> >>> axis2_object_ptr axis2_obj = NULL;
> >>> zval *obj = NULL;
> >>> axis2_xml_reader_t *reader = NULL;
> >>> axis2_env_t *env = NULL;
> >>> char *name = NULL;
> >>> char *na = NULL;
> >>> obj = getThis();
> >>> env = php_axis2_get_env();
> >>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
> >>> TSRMLS_CC);
> >>> reader =(axis2_xml_reader_t*)
> >>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
> >>> name = AXIS2_XML_READER_GET_NAME(reader, &env);
> >>> if(!name)
> >>> {
> >>> RETURN_NULL();
> >>> }
> >>> else
> >>> { na = estrdup(name);
> >>> if(name)
> >>> AXIS2_XML_READER_XML_FREE(reader, &env, name);
> >>> }
> >>> RETURN_STRING(na, 0);
> >>>
> >>> }
> >>> PHP_FUNCTION(axis2_xml_reader_get_value)
> >>> {
> >>> axis2_object_ptr axis2_obj = NULL;
> >>> zval *obj = NULL;
> >>> axis2_xml_reader_t *reader = NULL;
> >>> axis2_env_t *env = NULL;
> >>> char *value = NULL;
> >>> char *val = NULL;
> >>> obj = getThis();
> >>> env = php_axis2_get_env();
> >>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
> >>> TSRMLS_CC);
> >>> reader =(axis2_xml_reader_t*)
> >>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
> >>> value = AXIS2_XML_READER_GET_VALUE(reader, &env);
> >>> if(!value)
> >>> {
> >>> RETURN_NULL();
> >>> }
> >>> else
> >>> {
> >>> val = estrdup(value);
> >>> if(value)
> >>> AXIS2_XML_READER_XML_FREE(reader, &env, value);
> >>> }
> >>> RETURN_STRING(val, 0);
> >>>
> >>> }
> >>> PHP_FUNCTION(axis2_xml_reader_get_prefix)
> >>> {
> >>> axis2_object_ptr axis2_obj = NULL;
> >>> zval *obj = NULL;
> >>> axis2_xml_reader_t *reader = NULL;
> >>> axis2_env_t *env = NULL;
> >>> char *prefix = NULL;
> >>> char *pre = NULL;
> >>> obj = getThis();
> >>> env = php_axis2_get_env();
> >>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
> >>> TSRMLS_CC);
> >>> reader =(axis2_xml_reader_t*)
> >>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
> >>> prefix = AXIS2_XML_READER_GET_PREFIX(reader, &env);
> >>> if(!prefix)
> >>> {
> >>> RETURN_NULL();
> >>> }
> >>> else
> >>> {
> >>> pre = estrdup(prefix);
> >>> if(prefix)
> >>> AXIS2_XML_READER_XML_FREE(reader, &env, prefix);
> >>> }
> >>> RETURN_STRING(pre, 0);
> >>>
> >>> }
> >>> PHP_FUNCTION(axis2_xml_reader_get_namespace_count)
> >>> {
> >>> axis2_object_ptr axis2_obj = NULL;
> >>> zval *obj = NULL;
> >>> axis2_xml_reader_t *reader = NULL;
> >>> axis2_env_t *env = NULL;
> >>> long i =0;
> >>> obj = getThis();
> >>> env = php_axis2_get_env();
> >>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
> >>> TSRMLS_CC);
> >>> reader =(axis2_xml_reader_t*)
> >>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
> >>> i = AXIS2_XML_READER_GET_NAMESPACE_COUNT(reader, &env);
> >>> RETURN_LONG(i);
> >>>
> >>> }
> >>> PHP_FUNCTION(axis2_xml_reader_get_namespace_uri_by_number)
> >>> {
> >>> axis2_object_ptr axis2_obj = NULL;
> >>> zval *obj = NULL;
> >>> axis2_xml_reader_t *reader = NULL;
> >>> axis2_env_t *env = NULL;
> >>> char *ns_uri = NULL;
> >>> char *uri = NULL;
> >>> long i = 0;
> >>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
> >>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
> >>> {
> >>> php_std_error_handling();
> >>> return;
> >>> }
> >>> env = php_axis2_get_env();
> >>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
> >>> TSRMLS_CC);
> >>> reader =(axis2_xml_reader_t*)
> >>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
> >>> ns_uri = AXIS2_XML_READER_GET_NAMESPACE_URI_BY_NUMBER(reader,
> >>> &env, i);
> >>> if(!ns_uri)
> >>> {
> >>> RETURN_NULL();
> >>> }
> >>> else
> >>> {
> >>> uri = estrdup(ns_uri);
> >>> AXIS2_XML_READER_XML_FREE(reader, &env, ns_uri);
> >>> }
> >>> RETURN_STRING(uri, 0);
> >>>
> >>> }
> >>> PHP_FUNCTION(axis2_xml_reader_get_namespace_prefix_by_number)
> >>> {
> >>> axis2_object_ptr axis2_obj = NULL;
> >>> zval *obj = NULL;
> >>> axis2_xml_reader_t *reader = NULL;
> >>> axis2_env_t *env = NULL;
> >>> char *ns_prefix = NULL;
> >>> char *prefix = NULL;
> >>> long i = 0;
> >>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
> >>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
> >>> {
> >>> php_std_error_handling();
> >>> return;
> >>> }
> >>> env = php_axis2_get_env();
> >>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
> >>> TSRMLS_CC);
> >>> reader =(axis2_xml_reader_t*)
> >>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
> >>> ns_prefix =
> >>> AXIS2_XML_READER_GET_NAMESPACE_PREFIX_BY_NUMBER(reader, &env, i);
> >>> if(!ns_prefix)
> >>> {
> >>> RETURN_NULL();
> >>> }
> >>> else
> >>> {
> >>> prefix = estrdup(ns_prefix);
> >>> AXIS2_XML_READER_XML_FREE(reader, &env, ns_prefix);
> >>> }
> >>> RETURN_STRING(prefix, 0);
> >>> }
> >>> PHP_FUNCTION(axis2_xml_reader_get_pi_target)
> >>> {
> >>> axis2_object_ptr axis2_obj = NULL;
> >>> zval *obj = NULL;
> >>> axis2_xml_reader_t *reader = NULL;
> >>> axis2_env_t *env = NULL;
> >>> char *pi_target = NULL;
> >>> char *target = NULL;
> >>> obj = getThis();
> >>> env = php_axis2_get_env();
> >>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
> >>> TSRMLS_CC);
> >>> reader =(axis2_xml_reader_t*)
> >>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
> >>> pi_target = AXIS2_XML_READER_GET_PI_TARGET(reader, &env);
> >>> if(!pi_target)
> >>> {
> >>> RETURN_NULL();
> >>> }
> >>> else
> >>> {
> >>> target = estrdup(pi_target);
> >>> if(pi_target)
> >>> AXIS2_XML_READER_XML_FREE(reader, &env, pi_target);
> >>> }
> >>> RETURN_STRING(target, 0);
> >>>
> >>> }
> >>> PHP_FUNCTION(axis2_xml_reader_get_pi_data)
> >>> {
> >>> axis2_object_ptr axis2_obj = NULL;
> >>> zval *obj = NULL;
> >>> axis2_xml_reader_t *reader = NULL;
> >>> axis2_env_t *env = NULL;
> >>> char *pi_data = NULL;
> >>> char *data = NULL;
> >>> obj = getThis();
> >>> env = php_axis2_get_env();
> >>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
> >>> TSRMLS_CC);
> >>> reader =(axis2_xml_reader_t*)
> >>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
> >>> pi_data = AXIS2_XML_READER_GET_PI_DATA(reader, &env);
> >>> if(!pi_data)
> >>> {
> >>> RETURN_NULL();
> >>> }
> >>> else
> >>> {
> >>> data = estrdup(pi_data);
> >>> if(pi_data)
> >>> AXIS2_XML_READER_XML_FREE(reader, &env, pi_data);
> >>> }
> >>> RETURN_STRING(data, 0);
> >>> }
> >>>
> >>
> >>
> >
> >
>
>
Re: [AXIS2] PHP extension for axis2 - automake/autoconf problems
Posted by Damitha Kumarage <da...@gmail.com>.
Hi Samisa
Samisa Abeysinghe wrote:
> Samisa Abeysinghe wrote:
>
>> I have been looking into getting this PHP binding code working on Linux.
>> The PHP source depends on autoconf-2.13 and automake-1.5.
>>
>> Our build system is based on autoconf-2.59 and automake-1.9
>
>
> Changing the line in configure.ac
> AC_PREREQ(2.59) to
> AC_PREREQ(2.13)
> does *not* solve this problem. :(
>
> autoconf 2.13 requres a different syntax in configure.ac.
I'll see whether it is possible to change configure.ac to work with any
version
from 2.13
damitha
>
> Samisa...
>
>>
>> This is a problem when it comes to working on both axis2c and PHP
>> extentions on the same machine :(
>>
>> Thanks,
>> Samisa...
>>
>> nandika jayawardana wrote:
>>
>>> Hi all,
>>>
>>> I have started writing a php extension for axis2c starting with om.
>>>
>>> For that I have added axis2_xml_reader api in this extension.
>>> Lot has to be done before everything in axis2 is supported.
>>>
>>> Pls commit this code.
>>> I think we can put it in a folder named c/bindings/php .
>>>
>>> Thanks
>>> nandika
>>>
>>> ------------------------------------------------------------------------
>>>
>>>
>>> #ifndef AXIS2_CE_H
>>> #define AXIS2_CE_H
>>>
>>> zend_class_entry *axis2_xml_reader_class_entry;
>>> zend_class_entry *axis2_xml_writer_class_entry;
>>> zend_class_entry *axis2_om_element_class_entry;
>>> zend_class_entry *axis2_om_comment_class_entry;
>>> zend_class_entry *axis2_om_text_class_entry;
>>> zend_class_entry *axis2_om_pi_entry;
>>> zend_class_entry *axis2_om_stax_builder_class_entry;
>>> zend_class_entry *axis2_om_document_class_entry;
>>> zend_class_entry *axis2_om_attribute_class_entry;
>>> zend_class_entry *axis2_om_namespace_class_entry;
>>>
>>>
>>> #endif /* AXIS2_CE_H */
>>>
>>> ------------------------------------------------------------------------
>>>
>>>
>>> #ifndef AXIS2_PROPERTIES_H
>>> #define AXIS2_PROPERTIES_H
>>>
>>> #endif /* AXIS2_PROPERTIES_H */
>>>
>>> ------------------------------------------------------------------------
>>>
>>>
>>> /*
>>> +----------------------------------------------------------------------+
>>>
>>> | PHP Version
>>> 5 |
>>> +----------------------------------------------------------------------+
>>>
>>> | Copyright (c) 1997-2004 The PHP
>>> Group |
>>> +----------------------------------------------------------------------+
>>>
>>> | This source file is subject to version 3.0 of the PHP
>>> license, |
>>> | that is bundled with this package in the file LICENSE, and
>>> is |
>>> | available through the world-wide-web at the following
>>> url: |
>>> |
>>> http://www.php.net/license/3_0.txt. |
>>> | If you did not receive a copy of the PHP license and are unable
>>> to |
>>> | obtain it through the world-wide-web, please send a note
>>> to |
>>> | license@php.net so we can mail you a copy
>>> immediately. |
>>> +----------------------------------------------------------------------+
>>>
>>> |
>>> Author: |
>>> +----------------------------------------------------------------------+
>>>
>>> */
>>>
>>> /* $Id: header,v 1.15 2004/01/08 16:46:52 sniper Exp $ */
>>>
>>> #ifdef HAVE_CONFIG_H
>>> #include "config.h"
>>> #endif
>>>
>>> #include "php.h"
>>> #include "php_ini.h"
>>> #include "ext/standard/info.h"
>>> #include "php_axis2.h"
>>> #include "axis2_env.h"
>>> #include "axis2_error_default.h"
>>> #include "axis2_stream_default.h"
>>> #include "axis2_log_default.h"
>>>
>>>
>>> zend_object_value axis2_objects_new(zend_class_entry *class_type
>>> TSRMLS_DC );
>>>
>>>
>>>
>>> /* If you declare any globals in php_axis2.h uncomment this:
>>> */
>>> ZEND_DECLARE_MODULE_GLOBALS(axis2)
>>>
>>>
>>> /* True global resources - no need for thread safety here */
>>> static int le_axis2;
>>>
>>> static zend_object_handlers axis2_object_handlers;
>>>
>>> /* {{{ axis2_functions[]
>>> *
>>> * Every user visible function must have an entry in axis2_functions[].
>>> */
>>> function_entry axis2_functions[] = {
>>> PHP_FE(axis2_helloworld, NULL) {NULL, NULL,
>>> NULL} /* Must be the last line in axis2_functions[] */
>>> };
>>> /* }}} */
>>>
>>> /* {{{ axis2_module_entry
>>> */
>>> zend_module_entry axis2_module_entry = {
>>> #if ZEND_MODULE_API_NO >= 20010901
>>> STANDARD_MODULE_HEADER,
>>> #endif
>>> "axis2",
>>> axis2_functions,
>>> PHP_MINIT(axis2),
>>> PHP_MSHUTDOWN(axis2),
>>> PHP_RINIT(axis2), /* Replace with NULL if there's nothing
>>> to do at request start */
>>> PHP_RSHUTDOWN(axis2), /* Replace with NULL if there's nothing
>>> to do at request end */
>>> PHP_MINFO(axis2),
>>> #if ZEND_MODULE_API_NO >= 20010901
>>> "0.1", /* Replace with version number for your extension */
>>> #endif
>>> STANDARD_MODULE_PROPERTIES
>>> };
>>> /* }}} */
>>>
>>> #ifdef COMPILE_DL_AXIS2
>>> ZEND_GET_MODULE(axis2)
>>> #endif
>>>
>>> /* {{{ PHP_INI
>>> */
>>> /* Remove comments and fill if you need to have entries in php.ini
>>> PHP_INI_BEGIN()
>>> STD_PHP_INI_ENTRY("axis2.global_value", "42", PHP_INI_ALL,
>>> OnUpdateLong, global_value, zend_axis2_globals, axis2_globals)
>>> STD_PHP_INI_ENTRY("axis2.global_string", "foobar", PHP_INI_ALL,
>>> OnUpdateString, global_string, zend_axis2_globals, axis2_globals)
>>> PHP_INI_END()
>>> */
>>> /* }}} */
>>>
>>> /* {{{ php_axis2_init_globals
>>> */
>>>
>>> static void php_axis2_init_globals(zend_axis2_globals *axis2_globals)
>>> {
>>> axis2_allocator_t *allocator = NULL;
>>> axis2_error_t *err = NULL;
>>> axis2_log_t *log = NULL;
>>> axis2_stream_t *stream = NULL;
>>> axis2_env_t *environment = NULL;
>>> allocator = axis2_allocator_init (NULL);
>>> log = axis2_log_create(allocator, NULL);
>>> stream = axis2_stream_create(allocator, NULL);
>>> err = axis2_error_create(allocator);
>>> environment= axis2_env_create_with_error_stream_log(allocator,
>>> err,stream, log);
>>> axis2_globals->global_value = 0;
>>> axis2_globals->global_string = NULL;
>>> axis2_globals->env = environment;
>>> axis2_globals->allocator = allocator;
>>> }
>>>
>>> /* }}} */
>>>
>>> /* {{{ PHP_MINIT_FUNCTION
>>> */
>>> PHP_MINIT_FUNCTION(axis2)
>>> {
>>> zend_class_entry ce;
>>> ZEND_INIT_MODULE_GLOBALS(axis2, php_axis2_init_globals, NULL);
>>> /* If you have INI entries, uncomment these lines
>>> REGISTER_INI_ENTRIES();
>>> */
>>> memcpy(&axis2_object_handlers,
>>> zend_get_std_object_handlers(), sizeof(zend_object_handlers));
>>> axis2_object_handlers.clone_obj = NULL;
>>> REGISTER_AXIS2_CLASS(ce,"Axis2XMLReader",NULL,
>>> php_axis2_xml_reader_class_functions, axis2_xml_reader_class_entry);
>>>
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_START_DOCUMENT",
>>> AXIS2_XML_READER_START_DOCUMENT, CONST_CS | CONST_PERSISTENT);
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_START_ELEMENT",
>>> AXIS2_XML_READER_START_ELEMENT , CONST_CS | CONST_PERSISTENT);
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_END_ELEMENT",
>>> AXIS2_XML_READER_END_ELEMENT, CONST_CS | CONST_PERSISTENT);
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_SPACE",
>>> AXIS2_XML_READER_SPACE, CONST_CS |
>>> CONST_PERSISTENT);
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_EMPTY_ELEMENT",
>>> AXIS2_XML_READER_EMPTY_ELEMENT, CONST_CS |
>>> CONST_PERSISTENT);
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_CHARACTER",
>>> AXIS2_XML_READER_CHARACTER, CONST_CS |
>>> CONST_PERSISTENT);
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_ENTITY_REFERANCE",
>>> AXIS2_XML_READER_ENTITY_REFERANCE, CONST_CS | CONST_PERSISTENT);
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_COMMENT",
>>> AXIS2_XML_READER_COMMENT, CONST_CS | CONST_PERSISTENT);
>>>
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_PROCESSING_INSTRUCTION",
>>> AXIS2_XML_READER_PROCESSING_INSTRUCTION, CONST_CS |
>>> CONST_PERSISTENT);
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_CDATA",
>>> AXIS2_XML_READER_CDATA, CONST_CS | CONST_PERSISTENT);
>>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_DOCUMENT_TYPE",
>>> AXIS2_XML_READER_DOCUMENT_TYPE, CONST_CS | CONST_PERSISTENT);
>>> return SUCCESS;
>>> }
>>> /* }}} */
>>>
>>> /* {{{ PHP_MSHUTDOWN_FUNCTION
>>> */
>>> PHP_MSHUTDOWN_FUNCTION(axis2)
>>> {
>>> /* uncomment this line if you have INI entries
>>> UNREGISTER_INI_ENTRIES();
>>> */
>>> php_axis2_destroy_env();
>>> return SUCCESS;
>>> }
>>> /* }}} */
>>>
>>>
>>>
>>> void php_axis2_objects_free_storage(void *object TSRMLS_DC)
>>> {
>>> axis2_object *intern = (axis2_object_ptr)object;
>>> zend_hash_destroy(intern->std.properties);
>>> FREE_HASHTABLE(intern->std.properties);
>>> if(intern->node_list)
>>> {
>>> zend_hash_destroy(intern->node_list);
>>> FREE_HASHTABLE(intern->node_list);
>>> }
>>> /*TODO individaul objects must be freed */
>>> if(intern->ptr)
>>> {
>>> }
>>> }
>>>
>>>
>>> static zend_object_value axis2_objects_new(zend_class_entry
>>> *class_type TSRMLS_DC )
>>> {
>>> zend_object_value retval;
>>> axis2_object *intern = NULL;
>>> zval *tmp = NULL;
>>> intern = emalloc(sizeof(axis2_object));
>>> intern->std.ce = class_type;
>>> intern->std.in_get = 0;
>>> intern->std.in_set = 0;
>>> intern->ptr = NULL;
>>> intern->prop_handler = NULL;
>>> ALLOC_HASHTABLE(intern->std.properties);
>>> zend_hash_init(intern->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
>>> zend_hash_copy(intern->std.properties,
>>> &class_type->default_properties,
>>> (copy_ctor_func_t)zval_add_ref, (void*)tmp, sizeof(zval
>>> *));
>>> retval.handle = zend_objects_store_put(intern, NULL,
>>> (
>>> zend_objects_free_object_storage_t)php_axis2_objects_free_storage,NULL
>>> TSRMLS_CC);
>>> intern->handle = retval.handle;
>>> retval.handlers = &axis2_object_handlers; return
>>> retval;
>>> }
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> /* Remove if there's nothing to do at request start */
>>> /* {{{ PHP_RINIT_FUNCTION
>>> */
>>> PHP_RINIT_FUNCTION(axis2)
>>> {
>>> return SUCCESS;
>>> }
>>> /* }}} */
>>>
>>> /* Remove if there's nothing to do at request end */
>>> /* {{{ PHP_RSHUTDOWN_FUNCTION
>>> */
>>> PHP_RSHUTDOWN_FUNCTION(axis2)
>>> {
>>> return SUCCESS;
>>> }
>>> /* }}} */
>>>
>>> /* {{{ PHP_MINFO_FUNCTION
>>> */
>>> PHP_MINFO_FUNCTION(axis2)
>>> {
>>> php_info_print_table_start();
>>> php_info_print_table_header(2, "axis2 support", "enabled");
>>> php_info_print_table_end();
>>>
>>> /* Remove comments if you have entries in php.ini
>>> DISPLAY_INI_ENTRIES();
>>> */
>>> }
>>> /* }}} */
>>>
>>>
>>>
>>>
>>>
>>> /* {{{ proto string axis2_helloworld()
>>> say welcome note */
>>> PHP_FUNCTION(axis2_helloworld)
>>> {
>>> php_printf(" welcome axis2");
>>> }
>>> /* }}} */
>>>
>>>
>>>
>>> void php_axis2_destroy_env()
>>> {
>>> TSRMLS_FETCH();
>>> axis2_env_free(AXIS2_G(env));
>>> AXIS2_G(env) = NULL;
>>> AXIS2_G(allocator) = NULL;
>>> }
>>>
>>> axis2_env_t *php_axis2_get_env()
>>> {
>>> TSRMLS_FETCH();
>>> return AXIS2_G(env);
>>> }
>>>
>>> /*
>>> * Local variables:
>>> * tab-width: 4
>>> * c-basic-offset: 4
>>> * End:
>>> * vim600: noet sw=4 ts=4 fdm=marker
>>> * vim<600: noet sw=4 ts=4
>>> */
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>>
>>> #ifndef AXIS2_FE_H
>>> #define AXIS2_FE_H
>>>
>>> extern zend_function_entry php_axis2_xml_reader_class_functions[];
>>> extern zend_function_entry php_axis2_xml_writer_class_functions[];
>>> extern zend_function_entry php_axis2_om_element_class_functions[];
>>> extern zend_function_entry php_axis2_om_comment_class_functions[];
>>> extern zend_function_entry php_axis2_om_text_class_functions[];
>>> extern zend_function_entry php_axis2_om_pi_class_functions[];
>>> extern zend_function_entry php_axis2_om_stax_builder_class_functions[];
>>> extern zend_function_entry php_axis2_om_document_class_functions[];
>>> extern zend_function_entry php_axis2_om_attribute_class_functions[];
>>> extern zend_function_entry php_axis2_om_namespace_class_functions[];
>>>
>>> /** axis2_xml_reader functions */
>>> PHP_METHOD(xml_reader, __construct);
>>> PHP_FUNCTION(axis2_xml_reader_next);
>>> PHP_FUNCTION(axis2_xml_reader_get_attribute_count);
>>> PHP_FUNCTION(axis2_xml_reader_get_attribute_name_by_number);
>>> PHP_FUNCTION(axis2_xml_reader_get_attribute_prefix_by_number);
>>> PHP_FUNCTION(axis2_xml_reader_get_attribute_namespace_by_number);
>>> PHP_FUNCTION(axis2_xml_reader_get_attribute_value_by_number);
>>> PHP_FUNCTION(axis2_xml_reader_get_name);
>>> PHP_FUNCTION(axis2_xml_reader_get_value);
>>> PHP_FUNCTION(axis2_xml_reader_get_prefix);
>>> PHP_FUNCTION(axis2_xml_reader_get_namespace_count);
>>> PHP_FUNCTION(axis2_xml_reader_get_namespace_uri_by_number);
>>> PHP_FUNCTION(axis2_xml_reader_get_namespace_prefix_by_number);
>>> PHP_FUNCTION(axis2_xml_reader_get_pi_target);
>>> PHP_FUNCTION(axis2_xml_reader_get_pi_data);
>>>
>>>
>>> typedef enum {
>>>
>>> OM_ELEMENT = 0,
>>> OM_NODE,
>>> OM_PI,
>>> OM_COMMENT,
>>> OM_TEXT,
>>> OM_DOCTYPE,
>>> AXIS2_XML_READER,
>>> AXIS2_XML_WRITER,
>>> OM_DOCUMENT,
>>> OM_STAX_BUILDER
>>> }om_obj_types;
>>>
>>>
>>> #endif /* AXIS2_FE_H */
>>>
>>> ------------------------------------------------------------------------
>>>
>>>
>>> /*
>>> +----------------------------------------------------------------------+
>>>
>>> | PHP Version
>>> 5 |
>>> +----------------------------------------------------------------------+
>>>
>>> | Copyright (c) 1997-2004 The PHP
>>> Group |
>>> +----------------------------------------------------------------------+
>>>
>>> | This source file is subject to version 3.0 of the PHP
>>> license, |
>>> | that is bundled with this package in the file LICENSE, and
>>> is |
>>> | available through the world-wide-web at the following
>>> url: |
>>> |
>>> http://www.php.net/license/3_0.txt. |
>>> | If you did not receive a copy of the PHP license and are unable
>>> to |
>>> | obtain it through the world-wide-web, please send a note
>>> to |
>>> | license@php.net so we can mail you a copy
>>> immediately. |
>>> +----------------------------------------------------------------------+
>>>
>>> |
>>> Author: |
>>> +----------------------------------------------------------------------+
>>>
>>> */
>>>
>>> /* $Id: header,v 1.15 2004/01/08 16:46:52 sniper Exp $ */
>>>
>>> #ifndef PHP_AXIS2_H
>>> #define PHP_AXIS2_H
>>>
>>> extern zend_module_entry axis2_module_entry;
>>> #define phpext_axis2_ptr &axis2_module_entry
>>>
>>> #ifdef PHP_WIN32
>>> #define PHP_AXIS2_API __declspec(dllexport)
>>> #else
>>> #define PHP_AXIS2_API
>>> #endif
>>>
>>> #ifdef ZTS
>>> #include "TSRM.h"
>>> #endif
>>>
>>> #include "axis2_ce.h"
>>> #include "axis2_fe.h"
>>> #include "axis2_common.h"
>>>
>>> #include <axis2.h>
>>> #include <axis2_env.h>
>>>
>>>
>>>
>>>
>>>
>>> PHP_MINIT_FUNCTION(axis2);
>>> PHP_MSHUTDOWN_FUNCTION(axis2);
>>> PHP_RINIT_FUNCTION(axis2);
>>> PHP_RSHUTDOWN_FUNCTION(axis2);
>>> PHP_MINFO_FUNCTION(axis2);
>>>
>>> PHP_FUNCTION(axis2_helloworld); /* For testing, remove later. */
>>>
>>>
>>>
>>> typedef struct axis2_object{
>>> zend_object std;
>>> void *ptr;
>>> int obj_type;
>>> HashTable *prop_handler;
>>> zend_object_handle handle;
>>> HashTable *node_list;
>>> }axis2_object;
>>>
>>> typedef axis2_object *axis2_object_ptr;
>>>
>>> void php_axis2_objects_free_storage(void *object TSRMLS_DC);
>>> void php_axis2_destroy_env();
>>> axis2_env_t *php_axis2_get_env();
>>>
>>> /* Declare any global variables you may need between the BEGIN
>>> and END macros here: */
>>>
>>> ZEND_BEGIN_MODULE_GLOBALS(axis2)
>>> long global_value;
>>> char *global_string;
>>> axis2_env_t *env;
>>> axis2_allocator_t *allocator;
>>> ZEND_END_MODULE_GLOBALS(axis2)
>>>
>>>
>>> /* In every utility function you add that needs to use variables
>>> in php_axis2_globals, call TSRMLS_FETCH(); after declaring other
>>> variables used by that function, or better yet, pass in TSRMLS_CC
>>> after the last function argument and declare your utility function
>>> with TSRMLS_DC after the last declared argument. Always refer to
>>> the globals in your function as AXIS2_G(variable). You are
>>> encouraged to rename these macros something shorter, see
>>> examples in any other php module directory.
>>> */
>>>
>>> #ifdef ZTS
>>> #define AXIS2_G(v) TSRMG(axis2_globals_id, zend_axis2_globals *, v)
>>> #else
>>> #define AXIS2_G(v) (axis2_globals.v)
>>> #endif
>>>
>>> #endif /* PHP_AXIS2_H */
>>>
>>>
>>> /*
>>> * Local variables:
>>> * tab-width: 4
>>> * c-basic-offset: 4
>>> * End:
>>> * vim600: noet sw=4 ts=4 fdm=marker
>>> * vim<600: noet sw=4 ts=4
>>> */
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>>
>>>
>>> #include "php.h"
>>> #include "php_axis2.h"
>>> #include "axis2_xml_reader.h"
>>>
>>> zend_function_entry php_axis2_xml_reader_class_functions[]=
>>> {
>>> PHP_FALIAS(next, axis2_xml_reader_next, NULL)
>>> PHP_FALIAS(getAttributeCount,
>>> axis2_xml_reader_get_attribute_count, NULL)
>>> PHP_FALIAS(getAttributeName ,
>>> axis2_xml_reader_get_attribute_name_by_number, NULL)
>>> PHP_FALIAS(getAttributePrefix,
>>> axis2_xml_reader_get_attribute_prefix_by_number, NULL)
>>> PHP_FALIAS(getAttributeNamespace,
>>> axis2_xml_reader_get_attribute_namespace_by_number, NULL)
>>> PHP_FALIAS(getAttributeValue,
>>> axis2_xml_reader_get_attribute_value_by_number, NULL)
>>> PHP_FALIAS(getName, axis2_xml_reader_get_name, NULL)
>>> PHP_FALIAS(getValue, axis2_xml_reader_get_value, NULL)
>>> PHP_FALIAS(getPrefix, axis2_xml_reader_get_prefix, NULL)
>>> PHP_FALIAS(getNamespaceCount,
>>> axis2_xml_reader_get_namespace_count, NULL)
>>> PHP_FALIAS(getNamespaceUri,
>>> axis2_xml_reader_get_namespace_uri_by_number, NULL)
>>> PHP_FALIAS(getNamespacePrefix,
>>> axis2_xml_reader_get_namespace_prefix_by_number, NULL)
>>> PHP_FALIAS(getPITarget , axis2_xml_reader_get_pi_target, NULL)
>>> PHP_FALIAS(getPIData, axis2_xml_reader_get_pi_data, NULL)
>>> PHP_ME(xml_reader, __construct, NULL, ZEND_ACC_PUBLIC)
>>> {NULL, NULL, NULL} };
>>>
>>> PHP_METHOD(xml_reader , __construct)
>>> {
>>> zval *object = NULL;
>>> axis2_object_ptr axis2_obj = NULL;
>>> om_object_ptr om_obj = NULL;
>>> char *path;
>>> int length;
>>> axis2_env_t *env;
>>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
>>> getThis(), "Os", &object, axis2_xml_reader_class_entry, &path,
>>> &length) == FAILURE)
>>> {
>>> php_std_error_handling();
>>> return;
>>> }
>>> env = php_axis2_get_env();
>>> om_obj = emalloc(sizeof(om_object));
>>> om_obj->ptr = NULL;
>>> om_obj->obj_type = AXIS2_XML_READER;
>>> om_obj->ptr = axis2_xml_reader_create_for_file(&env, path, NULL);
>>> om_obj->ref_count = 1;
>>> if(om_obj->ptr == NULL)
>>> {
>>> php_printf("reader null");
>>> }
>>> axis2_obj =
>>> (axis2_object_ptr)zend_object_store_get_object(object TSRMLS_CC);
>>> axis2_obj->ptr = om_obj;
>>> }
>>>
>>> PHP_FUNCTION(axis2_xml_reader_next)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> long i = 0;
>>> obj = getThis();
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> i = AXIS2_XML_READER_NEXT(reader, &env);
>>> RETURN_LONG(i);
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_attribute_count)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> int i = 0;
>>> obj = getThis();
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> i = AXIS2_XML_READER_GET_ATTRIBUTE_COUNT(reader, &env);
>>> RETURN_LONG(i);
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_attribute_name_by_number)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *attr_name = NULL;
>>> char *name;
>>> long i = 0;
>>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
>>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
>>> {
>>> php_std_error_handling();
>>> return;
>>> }
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> attr_name = AXIS2_XML_READER_GET_ATTRIBUTE_NAME_BY_NUMBER(reader,
>>> &env, i);
>>> if(!attr_name)
>>> {
>>> RETURN_NULL();
>>> }
>>> else
>>> {
>>> name = estrdup(attr_name);
>>> AXIS2_XML_READER_XML_FREE(reader, &env, attr_name);
>>> }
>>> RETURN_STRING(name, 0);
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_attribute_prefix_by_number)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *attr_prefix = NULL;
>>> char *prefix;
>>> long i = 0;
>>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
>>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
>>> {
>>> php_std_error_handling();
>>> return;
>>> }
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> attr_prefix =
>>> AXIS2_XML_READER_GET_ATTRIBUTE_PREFIX_BY_NUMBER(reader, &env, i);
>>> if(!attr_prefix)
>>> {
>>> RETURN_NULL();
>>> }
>>> else
>>> {
>>> prefix = estrdup(attr_prefix);
>>> AXIS2_XML_READER_XML_FREE(reader, &env, attr_prefix);
>>> }
>>> RETURN_STRING(prefix, 0);
>>>
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_attribute_namespace_by_number)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *attr_ns_uri = NULL;
>>> char *uri;
>>> long i = 0;
>>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
>>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
>>> {
>>> php_std_error_handling();
>>> return;
>>> }
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> attr_ns_uri =
>>> AXIS2_XML_READER_GET_ATTRIBUTE_NAMESPACE_BY_NUMBER(reader, &env, i);
>>> if(!attr_ns_uri)
>>> {
>>> RETURN_NULL();
>>> } else
>>> {
>>> uri = estrdup(attr_ns_uri);
>>> AXIS2_XML_READER_XML_FREE(reader, &env, attr_ns_uri);
>>> }
>>> RETURN_STRING(uri, 0);
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_attribute_value_by_number)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *attr_value = NULL;
>>> char *value;
>>> long i = 0;
>>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
>>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
>>> {
>>> php_std_error_handling();
>>> return;
>>> }
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> attr_value =
>>> AXIS2_XML_READER_GET_ATTRIBUTE_VALUE_BY_NUMBER(reader, &env, i);
>>> if(!attr_value)
>>> {
>>> RETURN_NULL();
>>> }
>>> else
>>> { value = estrdup(attr_value);
>>> AXIS2_XML_READER_XML_FREE(reader, &env, attr_value);
>>> }
>>> RETURN_STRING(value, 0);
>>>
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_name)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *name = NULL;
>>> char *na = NULL;
>>> obj = getThis();
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> name = AXIS2_XML_READER_GET_NAME(reader, &env);
>>> if(!name)
>>> {
>>> RETURN_NULL();
>>> }
>>> else
>>> { na = estrdup(name);
>>> if(name)
>>> AXIS2_XML_READER_XML_FREE(reader, &env, name);
>>> }
>>> RETURN_STRING(na, 0);
>>>
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_value)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *value = NULL;
>>> char *val = NULL;
>>> obj = getThis();
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> value = AXIS2_XML_READER_GET_VALUE(reader, &env);
>>> if(!value)
>>> {
>>> RETURN_NULL();
>>> }
>>> else
>>> {
>>> val = estrdup(value);
>>> if(value)
>>> AXIS2_XML_READER_XML_FREE(reader, &env, value);
>>> }
>>> RETURN_STRING(val, 0);
>>>
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_prefix)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *prefix = NULL;
>>> char *pre = NULL;
>>> obj = getThis();
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> prefix = AXIS2_XML_READER_GET_PREFIX(reader, &env);
>>> if(!prefix)
>>> {
>>> RETURN_NULL();
>>> }
>>> else
>>> {
>>> pre = estrdup(prefix);
>>> if(prefix)
>>> AXIS2_XML_READER_XML_FREE(reader, &env, prefix);
>>> }
>>> RETURN_STRING(pre, 0);
>>>
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_namespace_count)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> long i =0;
>>> obj = getThis();
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> i = AXIS2_XML_READER_GET_NAMESPACE_COUNT(reader, &env);
>>> RETURN_LONG(i);
>>>
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_namespace_uri_by_number)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *ns_uri = NULL;
>>> char *uri = NULL;
>>> long i = 0;
>>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
>>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
>>> {
>>> php_std_error_handling();
>>> return;
>>> }
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> ns_uri = AXIS2_XML_READER_GET_NAMESPACE_URI_BY_NUMBER(reader,
>>> &env, i);
>>> if(!ns_uri)
>>> {
>>> RETURN_NULL();
>>> }
>>> else
>>> {
>>> uri = estrdup(ns_uri);
>>> AXIS2_XML_READER_XML_FREE(reader, &env, ns_uri);
>>> }
>>> RETURN_STRING(uri, 0);
>>>
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_namespace_prefix_by_number)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *ns_prefix = NULL;
>>> char *prefix = NULL;
>>> long i = 0;
>>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
>>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
>>> {
>>> php_std_error_handling();
>>> return;
>>> }
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> ns_prefix =
>>> AXIS2_XML_READER_GET_NAMESPACE_PREFIX_BY_NUMBER(reader, &env, i);
>>> if(!ns_prefix)
>>> {
>>> RETURN_NULL();
>>> }
>>> else
>>> {
>>> prefix = estrdup(ns_prefix);
>>> AXIS2_XML_READER_XML_FREE(reader, &env, ns_prefix);
>>> }
>>> RETURN_STRING(prefix, 0);
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_pi_target)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *pi_target = NULL;
>>> char *target = NULL;
>>> obj = getThis();
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> pi_target = AXIS2_XML_READER_GET_PI_TARGET(reader, &env);
>>> if(!pi_target)
>>> {
>>> RETURN_NULL();
>>> }
>>> else
>>> {
>>> target = estrdup(pi_target);
>>> if(pi_target)
>>> AXIS2_XML_READER_XML_FREE(reader, &env, pi_target);
>>> }
>>> RETURN_STRING(target, 0);
>>>
>>> }
>>> PHP_FUNCTION(axis2_xml_reader_get_pi_data)
>>> {
>>> axis2_object_ptr axis2_obj = NULL;
>>> zval *obj = NULL;
>>> axis2_xml_reader_t *reader = NULL;
>>> axis2_env_t *env = NULL;
>>> char *pi_data = NULL;
>>> char *data = NULL;
>>> obj = getThis();
>>> env = php_axis2_get_env();
>>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>>> TSRMLS_CC);
>>> reader =(axis2_xml_reader_t*)
>>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>>> pi_data = AXIS2_XML_READER_GET_PI_DATA(reader, &env);
>>> if(!pi_data)
>>> {
>>> RETURN_NULL();
>>> }
>>> else
>>> {
>>> data = estrdup(pi_data);
>>> if(pi_data)
>>> AXIS2_XML_READER_XML_FREE(reader, &env, pi_data);
>>> }
>>> RETURN_STRING(data, 0);
>>> }
>>>
>>
>>
>
>
Re: [AXIS2] PHP extension for axis2 - automake/autoconf problems
Posted by Samisa Abeysinghe <sa...@gmail.com>.
Samisa Abeysinghe wrote:
> I have been looking into getting this PHP binding code working on Linux.
> The PHP source depends on autoconf-2.13 and automake-1.5.
>
> Our build system is based on autoconf-2.59 and automake-1.9
Changing the line in configure.ac
AC_PREREQ(2.59) to
AC_PREREQ(2.13)
does *not* solve this problem. :(
autoconf 2.13 requres a different syntax in configure.ac.
Samisa...
>
> This is a problem when it comes to working on both axis2c and PHP
> extentions on the same machine :(
>
> Thanks,
> Samisa...
>
> nandika jayawardana wrote:
>
>> Hi all,
>>
>> I have started writing a php extension for axis2c starting with om.
>>
>> For that I have added axis2_xml_reader api in this extension.
>> Lot has to be done before everything in axis2 is supported.
>>
>> Pls commit this code.
>> I think we can put it in a folder named c/bindings/php .
>>
>> Thanks
>> nandika
>>
>> ------------------------------------------------------------------------
>>
>> #ifndef AXIS2_CE_H
>> #define AXIS2_CE_H
>>
>> zend_class_entry *axis2_xml_reader_class_entry;
>> zend_class_entry *axis2_xml_writer_class_entry;
>> zend_class_entry *axis2_om_element_class_entry;
>> zend_class_entry *axis2_om_comment_class_entry;
>> zend_class_entry *axis2_om_text_class_entry;
>> zend_class_entry *axis2_om_pi_entry;
>> zend_class_entry *axis2_om_stax_builder_class_entry;
>> zend_class_entry *axis2_om_document_class_entry;
>> zend_class_entry *axis2_om_attribute_class_entry;
>> zend_class_entry *axis2_om_namespace_class_entry;
>>
>>
>> #endif /* AXIS2_CE_H */
>>
>> ------------------------------------------------------------------------
>>
>> #ifndef AXIS2_PROPERTIES_H
>> #define AXIS2_PROPERTIES_H
>>
>> #endif /* AXIS2_PROPERTIES_H */
>>
>> ------------------------------------------------------------------------
>>
>> /*
>> +----------------------------------------------------------------------+
>>
>> | PHP Version
>> 5 |
>> +----------------------------------------------------------------------+
>>
>> | Copyright (c) 1997-2004 The PHP
>> Group |
>> +----------------------------------------------------------------------+
>>
>> | This source file is subject to version 3.0 of the PHP
>> license, |
>> | that is bundled with this package in the file LICENSE, and
>> is |
>> | available through the world-wide-web at the following
>> url: |
>> |
>> http://www.php.net/license/3_0.txt. |
>> | If you did not receive a copy of the PHP license and are unable
>> to |
>> | obtain it through the world-wide-web, please send a note
>> to |
>> | license@php.net so we can mail you a copy
>> immediately. |
>> +----------------------------------------------------------------------+
>>
>> |
>> Author: |
>> +----------------------------------------------------------------------+
>>
>> */
>>
>> /* $Id: header,v 1.15 2004/01/08 16:46:52 sniper Exp $ */
>>
>> #ifdef HAVE_CONFIG_H
>> #include "config.h"
>> #endif
>>
>> #include "php.h"
>> #include "php_ini.h"
>> #include "ext/standard/info.h"
>> #include "php_axis2.h"
>> #include "axis2_env.h"
>> #include "axis2_error_default.h"
>> #include "axis2_stream_default.h"
>> #include "axis2_log_default.h"
>>
>>
>> zend_object_value axis2_objects_new(zend_class_entry *class_type
>> TSRMLS_DC );
>>
>>
>>
>> /* If you declare any globals in php_axis2.h uncomment this:
>> */
>> ZEND_DECLARE_MODULE_GLOBALS(axis2)
>>
>>
>> /* True global resources - no need for thread safety here */
>> static int le_axis2;
>>
>> static zend_object_handlers axis2_object_handlers;
>>
>> /* {{{ axis2_functions[]
>> *
>> * Every user visible function must have an entry in axis2_functions[].
>> */
>> function_entry axis2_functions[] = {
>> PHP_FE(axis2_helloworld, NULL)
>> {NULL, NULL, NULL} /* Must be the last line in
>> axis2_functions[] */
>> };
>> /* }}} */
>>
>> /* {{{ axis2_module_entry
>> */
>> zend_module_entry axis2_module_entry = {
>> #if ZEND_MODULE_API_NO >= 20010901
>> STANDARD_MODULE_HEADER,
>> #endif
>> "axis2",
>> axis2_functions,
>> PHP_MINIT(axis2),
>> PHP_MSHUTDOWN(axis2),
>> PHP_RINIT(axis2), /* Replace with NULL if there's nothing
>> to do at request start */
>> PHP_RSHUTDOWN(axis2), /* Replace with NULL if there's nothing
>> to do at request end */
>> PHP_MINFO(axis2),
>> #if ZEND_MODULE_API_NO >= 20010901
>> "0.1", /* Replace with version number for your extension */
>> #endif
>> STANDARD_MODULE_PROPERTIES
>> };
>> /* }}} */
>>
>> #ifdef COMPILE_DL_AXIS2
>> ZEND_GET_MODULE(axis2)
>> #endif
>>
>> /* {{{ PHP_INI
>> */
>> /* Remove comments and fill if you need to have entries in php.ini
>> PHP_INI_BEGIN()
>> STD_PHP_INI_ENTRY("axis2.global_value", "42", PHP_INI_ALL,
>> OnUpdateLong, global_value, zend_axis2_globals, axis2_globals)
>> STD_PHP_INI_ENTRY("axis2.global_string", "foobar", PHP_INI_ALL,
>> OnUpdateString, global_string, zend_axis2_globals, axis2_globals)
>> PHP_INI_END()
>> */
>> /* }}} */
>>
>> /* {{{ php_axis2_init_globals
>> */
>>
>> static void php_axis2_init_globals(zend_axis2_globals *axis2_globals)
>> {
>> axis2_allocator_t *allocator = NULL;
>> axis2_error_t *err = NULL;
>> axis2_log_t *log = NULL;
>> axis2_stream_t *stream = NULL;
>> axis2_env_t *environment = NULL;
>> allocator = axis2_allocator_init (NULL);
>> log = axis2_log_create(allocator, NULL);
>> stream = axis2_stream_create(allocator, NULL);
>> err = axis2_error_create(allocator);
>> environment= axis2_env_create_with_error_stream_log(allocator,
>> err,stream, log);
>> axis2_globals->global_value = 0;
>> axis2_globals->global_string = NULL;
>> axis2_globals->env = environment;
>> axis2_globals->allocator = allocator;
>> }
>>
>> /* }}} */
>>
>> /* {{{ PHP_MINIT_FUNCTION
>> */
>> PHP_MINIT_FUNCTION(axis2)
>> {
>> zend_class_entry ce;
>>
>> ZEND_INIT_MODULE_GLOBALS(axis2, php_axis2_init_globals, NULL);
>> /* If you have INI entries, uncomment these lines
>> REGISTER_INI_ENTRIES();
>> */
>>
>>
>> memcpy(&axis2_object_handlers, zend_get_std_object_handlers(),
>> sizeof(zend_object_handlers));
>> axis2_object_handlers.clone_obj = NULL;
>>
>> REGISTER_AXIS2_CLASS(ce,"Axis2XMLReader",NULL,
>> php_axis2_xml_reader_class_functions, axis2_xml_reader_class_entry);
>>
>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_START_DOCUMENT",
>> AXIS2_XML_READER_START_DOCUMENT, CONST_CS | CONST_PERSISTENT);
>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_START_ELEMENT",
>> AXIS2_XML_READER_START_ELEMENT , CONST_CS | CONST_PERSISTENT);
>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_END_ELEMENT",
>> AXIS2_XML_READER_END_ELEMENT, CONST_CS | CONST_PERSISTENT);
>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_SPACE",
>> AXIS2_XML_READER_SPACE, CONST_CS | CONST_PERSISTENT);
>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_EMPTY_ELEMENT",
>> AXIS2_XML_READER_EMPTY_ELEMENT, CONST_CS |
>> CONST_PERSISTENT);
>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_CHARACTER",
>> AXIS2_XML_READER_CHARACTER, CONST_CS | CONST_PERSISTENT);
>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_ENTITY_REFERANCE",
>> AXIS2_XML_READER_ENTITY_REFERANCE, CONST_CS | CONST_PERSISTENT);
>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_COMMENT",
>> AXIS2_XML_READER_COMMENT, CONST_CS | CONST_PERSISTENT);
>>
>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_PROCESSING_INSTRUCTION",
>> AXIS2_XML_READER_PROCESSING_INSTRUCTION, CONST_CS |
>> CONST_PERSISTENT);
>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_CDATA",
>> AXIS2_XML_READER_CDATA, CONST_CS | CONST_PERSISTENT);
>> REGISTER_LONG_CONSTANT("AXIS2_XML_READER_DOCUMENT_TYPE",
>> AXIS2_XML_READER_DOCUMENT_TYPE, CONST_CS | CONST_PERSISTENT);
>>
>>
>> return SUCCESS;
>> }
>> /* }}} */
>>
>> /* {{{ PHP_MSHUTDOWN_FUNCTION
>> */
>> PHP_MSHUTDOWN_FUNCTION(axis2)
>> {
>> /* uncomment this line if you have INI entries
>> UNREGISTER_INI_ENTRIES();
>> */
>> php_axis2_destroy_env();
>> return SUCCESS;
>> }
>> /* }}} */
>>
>>
>>
>> void php_axis2_objects_free_storage(void *object TSRMLS_DC)
>> {
>> axis2_object *intern = (axis2_object_ptr)object;
>> zend_hash_destroy(intern->std.properties);
>> FREE_HASHTABLE(intern->std.properties);
>> if(intern->node_list)
>> {
>> zend_hash_destroy(intern->node_list);
>> FREE_HASHTABLE(intern->node_list);
>> }
>> /*TODO individaul objects must be freed */
>> if(intern->ptr)
>> {
>> }
>>
>> }
>>
>>
>> static zend_object_value axis2_objects_new(zend_class_entry
>> *class_type TSRMLS_DC )
>> {
>> zend_object_value retval;
>> axis2_object *intern = NULL;
>> zval *tmp = NULL;
>> intern = emalloc(sizeof(axis2_object));
>> intern->std.ce = class_type;
>> intern->std.in_get = 0;
>> intern->std.in_set = 0;
>> intern->ptr = NULL;
>> intern->prop_handler = NULL;
>> ALLOC_HASHTABLE(intern->std.properties);
>> zend_hash_init(intern->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
>> zend_hash_copy(intern->std.properties,
>> &class_type->default_properties,
>> (copy_ctor_func_t)zval_add_ref, (void*)tmp, sizeof(zval *));
>> retval.handle = zend_objects_store_put(intern, NULL,
>> (
>> zend_objects_free_object_storage_t)php_axis2_objects_free_storage,NULL
>> TSRMLS_CC);
>> intern->handle = retval.handle;
>> retval.handlers = &axis2_object_handlers; return
>> retval;
>> }
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> /* Remove if there's nothing to do at request start */
>> /* {{{ PHP_RINIT_FUNCTION
>> */
>> PHP_RINIT_FUNCTION(axis2)
>> {
>> return SUCCESS;
>> }
>> /* }}} */
>>
>> /* Remove if there's nothing to do at request end */
>> /* {{{ PHP_RSHUTDOWN_FUNCTION
>> */
>> PHP_RSHUTDOWN_FUNCTION(axis2)
>> {
>> return SUCCESS;
>> }
>> /* }}} */
>>
>> /* {{{ PHP_MINFO_FUNCTION
>> */
>> PHP_MINFO_FUNCTION(axis2)
>> {
>> php_info_print_table_start();
>> php_info_print_table_header(2, "axis2 support", "enabled");
>> php_info_print_table_end();
>>
>> /* Remove comments if you have entries in php.ini
>> DISPLAY_INI_ENTRIES();
>> */
>> }
>> /* }}} */
>>
>>
>>
>>
>>
>> /* {{{ proto string axis2_helloworld()
>> say welcome note */
>> PHP_FUNCTION(axis2_helloworld)
>> {
>> php_printf(" welcome axis2");
>> }
>> /* }}} */
>>
>>
>>
>> void php_axis2_destroy_env()
>> {
>> TSRMLS_FETCH();
>> axis2_env_free(AXIS2_G(env));
>> AXIS2_G(env) = NULL;
>> AXIS2_G(allocator) = NULL;
>> }
>>
>> axis2_env_t *php_axis2_get_env()
>> {
>> TSRMLS_FETCH();
>> return AXIS2_G(env);
>> }
>>
>> /*
>> * Local variables:
>> * tab-width: 4
>> * c-basic-offset: 4
>> * End:
>> * vim600: noet sw=4 ts=4 fdm=marker
>> * vim<600: noet sw=4 ts=4
>> */
>>
>>
>> ------------------------------------------------------------------------
>>
>> #ifndef AXIS2_FE_H
>> #define AXIS2_FE_H
>>
>> extern zend_function_entry php_axis2_xml_reader_class_functions[];
>> extern zend_function_entry php_axis2_xml_writer_class_functions[];
>> extern zend_function_entry php_axis2_om_element_class_functions[];
>> extern zend_function_entry php_axis2_om_comment_class_functions[];
>> extern zend_function_entry php_axis2_om_text_class_functions[];
>> extern zend_function_entry php_axis2_om_pi_class_functions[];
>> extern zend_function_entry php_axis2_om_stax_builder_class_functions[];
>> extern zend_function_entry php_axis2_om_document_class_functions[];
>> extern zend_function_entry php_axis2_om_attribute_class_functions[];
>> extern zend_function_entry php_axis2_om_namespace_class_functions[];
>>
>> /** axis2_xml_reader functions */
>> PHP_METHOD(xml_reader, __construct);
>> PHP_FUNCTION(axis2_xml_reader_next);
>> PHP_FUNCTION(axis2_xml_reader_get_attribute_count);
>> PHP_FUNCTION(axis2_xml_reader_get_attribute_name_by_number);
>> PHP_FUNCTION(axis2_xml_reader_get_attribute_prefix_by_number);
>> PHP_FUNCTION(axis2_xml_reader_get_attribute_namespace_by_number);
>> PHP_FUNCTION(axis2_xml_reader_get_attribute_value_by_number);
>> PHP_FUNCTION(axis2_xml_reader_get_name);
>> PHP_FUNCTION(axis2_xml_reader_get_value);
>> PHP_FUNCTION(axis2_xml_reader_get_prefix);
>> PHP_FUNCTION(axis2_xml_reader_get_namespace_count);
>> PHP_FUNCTION(axis2_xml_reader_get_namespace_uri_by_number);
>> PHP_FUNCTION(axis2_xml_reader_get_namespace_prefix_by_number);
>> PHP_FUNCTION(axis2_xml_reader_get_pi_target);
>> PHP_FUNCTION(axis2_xml_reader_get_pi_data);
>>
>>
>> typedef enum {
>>
>> OM_ELEMENT = 0,
>> OM_NODE,
>> OM_PI,
>> OM_COMMENT,
>> OM_TEXT,
>> OM_DOCTYPE,
>> AXIS2_XML_READER,
>> AXIS2_XML_WRITER,
>> OM_DOCUMENT,
>> OM_STAX_BUILDER
>> }om_obj_types;
>>
>>
>> #endif /* AXIS2_FE_H */
>>
>> ------------------------------------------------------------------------
>>
>> /*
>> +----------------------------------------------------------------------+
>>
>> | PHP Version
>> 5 |
>> +----------------------------------------------------------------------+
>>
>> | Copyright (c) 1997-2004 The PHP
>> Group |
>> +----------------------------------------------------------------------+
>>
>> | This source file is subject to version 3.0 of the PHP
>> license, |
>> | that is bundled with this package in the file LICENSE, and
>> is |
>> | available through the world-wide-web at the following
>> url: |
>> |
>> http://www.php.net/license/3_0.txt. |
>> | If you did not receive a copy of the PHP license and are unable
>> to |
>> | obtain it through the world-wide-web, please send a note
>> to |
>> | license@php.net so we can mail you a copy
>> immediately. |
>> +----------------------------------------------------------------------+
>>
>> |
>> Author: |
>> +----------------------------------------------------------------------+
>>
>> */
>>
>> /* $Id: header,v 1.15 2004/01/08 16:46:52 sniper Exp $ */
>>
>> #ifndef PHP_AXIS2_H
>> #define PHP_AXIS2_H
>>
>> extern zend_module_entry axis2_module_entry;
>> #define phpext_axis2_ptr &axis2_module_entry
>>
>> #ifdef PHP_WIN32
>> #define PHP_AXIS2_API __declspec(dllexport)
>> #else
>> #define PHP_AXIS2_API
>> #endif
>>
>> #ifdef ZTS
>> #include "TSRM.h"
>> #endif
>>
>> #include "axis2_ce.h"
>> #include "axis2_fe.h"
>> #include "axis2_common.h"
>>
>> #include <axis2.h>
>> #include <axis2_env.h>
>>
>>
>>
>>
>>
>> PHP_MINIT_FUNCTION(axis2);
>> PHP_MSHUTDOWN_FUNCTION(axis2);
>> PHP_RINIT_FUNCTION(axis2);
>> PHP_RSHUTDOWN_FUNCTION(axis2);
>> PHP_MINFO_FUNCTION(axis2);
>>
>> PHP_FUNCTION(axis2_helloworld); /* For testing, remove later. */
>>
>>
>>
>> typedef struct axis2_object{
>> zend_object std;
>> void *ptr;
>> int obj_type;
>> HashTable *prop_handler;
>> zend_object_handle handle;
>> HashTable *node_list;
>> }axis2_object;
>>
>> typedef axis2_object *axis2_object_ptr;
>>
>> void php_axis2_objects_free_storage(void *object TSRMLS_DC);
>> void php_axis2_destroy_env();
>> axis2_env_t *php_axis2_get_env();
>>
>> /* Declare any global variables you may need between the BEGIN
>> and END macros here: */
>>
>> ZEND_BEGIN_MODULE_GLOBALS(axis2)
>> long global_value;
>> char *global_string;
>> axis2_env_t *env;
>> axis2_allocator_t *allocator;
>> ZEND_END_MODULE_GLOBALS(axis2)
>>
>>
>> /* In every utility function you add that needs to use variables in
>> php_axis2_globals, call TSRMLS_FETCH(); after declaring other
>> variables used by that function, or better yet, pass in TSRMLS_CC
>> after the last function argument and declare your utility function
>> with TSRMLS_DC after the last declared argument. Always refer to
>> the globals in your function as AXIS2_G(variable). You are
>> encouraged to rename these macros something shorter, see
>> examples in any other php module directory.
>> */
>>
>> #ifdef ZTS
>> #define AXIS2_G(v) TSRMG(axis2_globals_id, zend_axis2_globals *, v)
>> #else
>> #define AXIS2_G(v) (axis2_globals.v)
>> #endif
>>
>> #endif /* PHP_AXIS2_H */
>>
>>
>> /*
>> * Local variables:
>> * tab-width: 4
>> * c-basic-offset: 4
>> * End:
>> * vim600: noet sw=4 ts=4 fdm=marker
>> * vim<600: noet sw=4 ts=4
>> */
>>
>>
>> ------------------------------------------------------------------------
>>
>>
>> #include "php.h"
>> #include "php_axis2.h"
>> #include "axis2_xml_reader.h"
>>
>> zend_function_entry php_axis2_xml_reader_class_functions[]=
>> {
>> PHP_FALIAS(next, axis2_xml_reader_next, NULL)
>> PHP_FALIAS(getAttributeCount,
>> axis2_xml_reader_get_attribute_count, NULL)
>> PHP_FALIAS(getAttributeName ,
>> axis2_xml_reader_get_attribute_name_by_number, NULL)
>> PHP_FALIAS(getAttributePrefix,
>> axis2_xml_reader_get_attribute_prefix_by_number, NULL)
>> PHP_FALIAS(getAttributeNamespace,
>> axis2_xml_reader_get_attribute_namespace_by_number, NULL)
>> PHP_FALIAS(getAttributeValue,
>> axis2_xml_reader_get_attribute_value_by_number, NULL)
>> PHP_FALIAS(getName, axis2_xml_reader_get_name, NULL)
>> PHP_FALIAS(getValue, axis2_xml_reader_get_value, NULL)
>> PHP_FALIAS(getPrefix, axis2_xml_reader_get_prefix, NULL)
>> PHP_FALIAS(getNamespaceCount,
>> axis2_xml_reader_get_namespace_count, NULL)
>> PHP_FALIAS(getNamespaceUri,
>> axis2_xml_reader_get_namespace_uri_by_number, NULL)
>> PHP_FALIAS(getNamespacePrefix,
>> axis2_xml_reader_get_namespace_prefix_by_number, NULL)
>> PHP_FALIAS(getPITarget , axis2_xml_reader_get_pi_target, NULL)
>> PHP_FALIAS(getPIData, axis2_xml_reader_get_pi_data, NULL)
>> PHP_ME(xml_reader, __construct, NULL, ZEND_ACC_PUBLIC)
>> {NULL, NULL, NULL} };
>>
>> PHP_METHOD(xml_reader , __construct)
>> {
>> zval *object = NULL;
>> axis2_object_ptr axis2_obj = NULL;
>> om_object_ptr om_obj = NULL;
>> char *path;
>> int length;
>> axis2_env_t *env;
>>
>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
>> getThis(), "Os", &object, axis2_xml_reader_class_entry, &path,
>> &length) == FAILURE)
>> {
>> php_std_error_handling();
>> return;
>> }
>> env = php_axis2_get_env();
>> om_obj = emalloc(sizeof(om_object));
>> om_obj->ptr = NULL;
>> om_obj->obj_type = AXIS2_XML_READER;
>> om_obj->ptr = axis2_xml_reader_create_for_file(&env, path, NULL);
>> om_obj->ref_count = 1;
>> if(om_obj->ptr == NULL)
>> {
>> php_printf("reader null");
>> }
>> axis2_obj =
>> (axis2_object_ptr)zend_object_store_get_object(object TSRMLS_CC);
>> axis2_obj->ptr = om_obj;
>> }
>>
>> PHP_FUNCTION(axis2_xml_reader_next)
>> {
>> axis2_object_ptr axis2_obj = NULL;
>> zval *obj = NULL;
>> axis2_xml_reader_t *reader = NULL;
>> axis2_env_t *env = NULL;
>> long i = 0;
>> obj = getThis();
>> env = php_axis2_get_env();
>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>> TSRMLS_CC);
>> reader =(axis2_xml_reader_t*)
>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>> i = AXIS2_XML_READER_NEXT(reader, &env);
>> RETURN_LONG(i);
>> }
>> PHP_FUNCTION(axis2_xml_reader_get_attribute_count)
>> {
>> axis2_object_ptr axis2_obj = NULL;
>> zval *obj = NULL;
>> axis2_xml_reader_t *reader = NULL;
>> axis2_env_t *env = NULL;
>> int i = 0;
>> obj = getThis();
>> env = php_axis2_get_env();
>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>> TSRMLS_CC);
>> reader =(axis2_xml_reader_t*)
>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>> i = AXIS2_XML_READER_GET_ATTRIBUTE_COUNT(reader, &env);
>> RETURN_LONG(i);
>> }
>> PHP_FUNCTION(axis2_xml_reader_get_attribute_name_by_number)
>> {
>> axis2_object_ptr axis2_obj = NULL;
>> zval *obj = NULL;
>> axis2_xml_reader_t *reader = NULL;
>> axis2_env_t *env = NULL;
>> char *attr_name = NULL;
>> char *name;
>> long i = 0;
>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
>> {
>> php_std_error_handling();
>> return;
>> }
>> env = php_axis2_get_env();
>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>> TSRMLS_CC);
>> reader =(axis2_xml_reader_t*)
>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>> attr_name = AXIS2_XML_READER_GET_ATTRIBUTE_NAME_BY_NUMBER(reader,
>> &env, i);
>> if(!attr_name)
>> {
>> RETURN_NULL();
>> }
>> else
>> {
>> name = estrdup(attr_name);
>> AXIS2_XML_READER_XML_FREE(reader, &env, attr_name);
>> }
>> RETURN_STRING(name, 0);
>> }
>> PHP_FUNCTION(axis2_xml_reader_get_attribute_prefix_by_number)
>> {
>> axis2_object_ptr axis2_obj = NULL;
>> zval *obj = NULL;
>> axis2_xml_reader_t *reader = NULL;
>> axis2_env_t *env = NULL;
>> char *attr_prefix = NULL;
>> char *prefix;
>> long i = 0;
>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
>> {
>> php_std_error_handling();
>> return;
>> }
>> env = php_axis2_get_env();
>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>> TSRMLS_CC);
>> reader =(axis2_xml_reader_t*)
>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>> attr_prefix =
>> AXIS2_XML_READER_GET_ATTRIBUTE_PREFIX_BY_NUMBER(reader, &env, i);
>> if(!attr_prefix)
>> {
>> RETURN_NULL();
>> }
>> else
>> {
>> prefix = estrdup(attr_prefix);
>> AXIS2_XML_READER_XML_FREE(reader, &env, attr_prefix);
>> }
>> RETURN_STRING(prefix, 0);
>>
>> }
>> PHP_FUNCTION(axis2_xml_reader_get_attribute_namespace_by_number)
>> {
>> axis2_object_ptr axis2_obj = NULL;
>> zval *obj = NULL;
>> axis2_xml_reader_t *reader = NULL;
>> axis2_env_t *env = NULL;
>> char *attr_ns_uri = NULL;
>> char *uri;
>> long i = 0;
>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
>> {
>> php_std_error_handling();
>> return;
>> }
>> env = php_axis2_get_env();
>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>> TSRMLS_CC);
>> reader =(axis2_xml_reader_t*)
>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>> attr_ns_uri =
>> AXIS2_XML_READER_GET_ATTRIBUTE_NAMESPACE_BY_NUMBER(reader, &env, i);
>> if(!attr_ns_uri)
>> {
>> RETURN_NULL();
>> } else
>> {
>> uri = estrdup(attr_ns_uri);
>> AXIS2_XML_READER_XML_FREE(reader, &env, attr_ns_uri);
>> }
>> RETURN_STRING(uri, 0);
>> }
>> PHP_FUNCTION(axis2_xml_reader_get_attribute_value_by_number)
>> {
>> axis2_object_ptr axis2_obj = NULL;
>> zval *obj = NULL;
>> axis2_xml_reader_t *reader = NULL;
>> axis2_env_t *env = NULL;
>> char *attr_value = NULL;
>> char *value;
>> long i = 0;
>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
>> {
>> php_std_error_handling();
>> return;
>> }
>> env = php_axis2_get_env();
>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>> TSRMLS_CC);
>> reader =(axis2_xml_reader_t*)
>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>> attr_value =
>> AXIS2_XML_READER_GET_ATTRIBUTE_VALUE_BY_NUMBER(reader, &env, i);
>> if(!attr_value)
>> {
>> RETURN_NULL();
>> }
>> else
>> { value = estrdup(attr_value);
>> AXIS2_XML_READER_XML_FREE(reader, &env, attr_value);
>> }
>> RETURN_STRING(value, 0);
>>
>> }
>> PHP_FUNCTION(axis2_xml_reader_get_name)
>> {
>> axis2_object_ptr axis2_obj = NULL;
>> zval *obj = NULL;
>> axis2_xml_reader_t *reader = NULL;
>> axis2_env_t *env = NULL;
>> char *name = NULL;
>> char *na = NULL;
>> obj = getThis();
>> env = php_axis2_get_env();
>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>> TSRMLS_CC);
>> reader =(axis2_xml_reader_t*)
>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>> name = AXIS2_XML_READER_GET_NAME(reader, &env);
>> if(!name)
>> {
>> RETURN_NULL();
>> }
>> else
>> { na = estrdup(name);
>> if(name)
>> AXIS2_XML_READER_XML_FREE(reader, &env, name);
>> }
>> RETURN_STRING(na, 0);
>>
>> }
>> PHP_FUNCTION(axis2_xml_reader_get_value)
>> {
>> axis2_object_ptr axis2_obj = NULL;
>> zval *obj = NULL;
>> axis2_xml_reader_t *reader = NULL;
>> axis2_env_t *env = NULL;
>> char *value = NULL;
>> char *val = NULL;
>> obj = getThis();
>> env = php_axis2_get_env();
>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>> TSRMLS_CC);
>> reader =(axis2_xml_reader_t*)
>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>> value = AXIS2_XML_READER_GET_VALUE(reader, &env);
>> if(!value)
>> {
>> RETURN_NULL();
>> }
>> else
>> {
>> val = estrdup(value);
>> if(value)
>> AXIS2_XML_READER_XML_FREE(reader, &env, value);
>> }
>> RETURN_STRING(val, 0);
>>
>> }
>> PHP_FUNCTION(axis2_xml_reader_get_prefix)
>> {
>> axis2_object_ptr axis2_obj = NULL;
>> zval *obj = NULL;
>> axis2_xml_reader_t *reader = NULL;
>> axis2_env_t *env = NULL;
>> char *prefix = NULL;
>> char *pre = NULL;
>> obj = getThis();
>> env = php_axis2_get_env();
>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>> TSRMLS_CC);
>> reader =(axis2_xml_reader_t*)
>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>> prefix = AXIS2_XML_READER_GET_PREFIX(reader, &env);
>> if(!prefix)
>> {
>> RETURN_NULL();
>> }
>> else
>> {
>> pre = estrdup(prefix);
>> if(prefix)
>> AXIS2_XML_READER_XML_FREE(reader, &env, prefix);
>> }
>> RETURN_STRING(pre, 0);
>>
>> }
>> PHP_FUNCTION(axis2_xml_reader_get_namespace_count)
>> {
>> axis2_object_ptr axis2_obj = NULL;
>> zval *obj = NULL;
>> axis2_xml_reader_t *reader = NULL;
>> axis2_env_t *env = NULL;
>> long i =0;
>> obj = getThis();
>> env = php_axis2_get_env();
>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>> TSRMLS_CC);
>> reader =(axis2_xml_reader_t*)
>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>> i = AXIS2_XML_READER_GET_NAMESPACE_COUNT(reader, &env);
>> RETURN_LONG(i);
>>
>> }
>> PHP_FUNCTION(axis2_xml_reader_get_namespace_uri_by_number)
>> {
>> axis2_object_ptr axis2_obj = NULL;
>> zval *obj = NULL;
>> axis2_xml_reader_t *reader = NULL;
>> axis2_env_t *env = NULL;
>> char *ns_uri = NULL;
>> char *uri = NULL;
>> long i = 0;
>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
>> {
>> php_std_error_handling();
>> return;
>> }
>> env = php_axis2_get_env();
>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>> TSRMLS_CC);
>> reader =(axis2_xml_reader_t*)
>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>> ns_uri = AXIS2_XML_READER_GET_NAMESPACE_URI_BY_NUMBER(reader,
>> &env, i);
>> if(!ns_uri)
>> {
>> RETURN_NULL();
>> }
>> else
>> {
>> uri = estrdup(ns_uri);
>> AXIS2_XML_READER_XML_FREE(reader, &env, ns_uri);
>> }
>> RETURN_STRING(uri, 0);
>>
>> }
>> PHP_FUNCTION(axis2_xml_reader_get_namespace_prefix_by_number)
>> {
>> axis2_object_ptr axis2_obj = NULL;
>> zval *obj = NULL;
>> axis2_xml_reader_t *reader = NULL;
>> axis2_env_t *env = NULL;
>> char *ns_prefix = NULL;
>> char *prefix = NULL;
>> long i = 0;
>> if(zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
>> getThis(), "Ol", &obj, axis2_xml_reader_class_entry, &i) == FAILURE)
>> {
>> php_std_error_handling();
>> return;
>> }
>> env = php_axis2_get_env();
>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>> TSRMLS_CC);
>> reader =(axis2_xml_reader_t*)
>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>> ns_prefix =
>> AXIS2_XML_READER_GET_NAMESPACE_PREFIX_BY_NUMBER(reader, &env, i);
>> if(!ns_prefix)
>> {
>> RETURN_NULL();
>> }
>> else
>> {
>> prefix = estrdup(ns_prefix);
>> AXIS2_XML_READER_XML_FREE(reader, &env, ns_prefix);
>> }
>> RETURN_STRING(prefix, 0);
>> }
>> PHP_FUNCTION(axis2_xml_reader_get_pi_target)
>> {
>> axis2_object_ptr axis2_obj = NULL;
>> zval *obj = NULL;
>> axis2_xml_reader_t *reader = NULL;
>> axis2_env_t *env = NULL;
>> char *pi_target = NULL;
>> char *target = NULL;
>> obj = getThis();
>> env = php_axis2_get_env();
>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>> TSRMLS_CC);
>> reader =(axis2_xml_reader_t*)
>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>> pi_target = AXIS2_XML_READER_GET_PI_TARGET(reader, &env);
>> if(!pi_target)
>> {
>> RETURN_NULL();
>> }
>> else
>> {
>> target = estrdup(pi_target);
>> if(pi_target)
>> AXIS2_XML_READER_XML_FREE(reader, &env, pi_target);
>> }
>> RETURN_STRING(target, 0);
>>
>> }
>> PHP_FUNCTION(axis2_xml_reader_get_pi_data)
>> {
>> axis2_object_ptr axis2_obj = NULL;
>> zval *obj = NULL;
>> axis2_xml_reader_t *reader = NULL;
>> axis2_env_t *env = NULL;
>> char *pi_data = NULL;
>> char *data = NULL;
>> obj = getThis();
>> env = php_axis2_get_env();
>> axis2_obj = (axis2_object_ptr)zend_object_store_get_object(obj
>> TSRMLS_CC);
>> reader =(axis2_xml_reader_t*)
>> (((om_object_ptr)(axis2_obj->ptr))->ptr);
>> pi_data = AXIS2_XML_READER_GET_PI_DATA(reader, &env);
>> if(!pi_data)
>> {
>> RETURN_NULL();
>> }
>> else
>> {
>> data = estrdup(pi_data);
>> if(pi_data)
>> AXIS2_XML_READER_XML_FREE(reader, &env, pi_data);
>> }
>> RETURN_STRING(data, 0);
>> }
>>
>
>