blob: 1bd72b971e12aeab308bb4a432c416a67da6c7f8 [file] [log] [blame]
/*
* Copyright 2004,2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#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;
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);
}