57 xsl_object *intern = php_xsl_fetch_object(
object);
64 xsltStylesheetPtr sheet = intern->
ptr;
67 if (sheet->_private !=
NULL) {
68 sheet->_private =
NULL;
71 xsltFreeStylesheet(sheet);
79 xsl_object *intern = php_xsl_fetch_object(
object);
93 php_libxml_decrement_doc_ref(intern->
doc);
112 intern = zend_object_alloc(
sizeof(
xsl_object), class_type);
130# define XSL_DEFINE_PROP_ACCESSOR(c_name, php_name, prop_index) \
131 zval *xsl_prop_##c_name(zend_object *object) \
133 zend_string *prop_name = ZSTR_INIT_LITERAL(php_name, false); \
134 const zend_property_info *prop_info = zend_get_property_info(xsl_xsltprocessor_class_entry, prop_name, 0); \
135 zend_string_release_ex(prop_name, false); \
136 ZEND_ASSERT(OBJ_PROP_TO_NUM(prop_info->offset) == (prop_index)); \
137 return OBJ_PROP_NUM(object, (prop_index)); \
140# define XSL_DEFINE_PROP_ACCESSOR(c_name, php_name, prop_index) \
141 zval *xsl_prop_##c_name(zend_object *object) \
143 return OBJ_PROP_NUM(object, (prop_index)); \
163 return &
EG(error_zval);
174 return xsl_objects_write_property_with_validation(
object, member,
value, cache_slot,
property);
177 return xsl_objects_write_property_with_validation(
object, member,
value, cache_slot,
property);
183static bool xsl_is_validated_property(
const zend_string *member)
190 if (xsl_is_validated_property(member)) {
202 return &
EG(uninitialized_zval);
210 if (xsl_is_validated_property(member)) {
221static bool xsl_try_output_replaced_error_message(
229 const char *msg_replace_location =
strstr(
msg, search);
230 if (msg_replace_location !=
NULL) {
231 php_libxml_ctx_error(ctx,
"%.*s%s%s", (
int) (msg_replace_location -
msg),
msg, replace, msg_replace_location + search_len);
239#define XSL_TRY_OUTPUT_REPLACED_ERROR_MESSAGE(ctx, msg, search, replace) \
240 xsl_try_output_replaced_error_message(ctx, msg, "" search, sizeof("" search) - 1, "" replace)
244static void xsl_libxslt_error_handler(
void *ctx,
const char *
msg, ...)
251 const char *msg_arg = va_arg(
args,
const char *);
256 php_libxml_ctx_error(ctx,
"%s", msg_arg);
259 php_libxml_error_handler_va(PHP_LIBXML_ERROR, ctx,
msg,
args);
270 xsl_object_handlers.clone_obj =
NULL;
272 xsl_object_handlers.get_gc = xsl_objects_get_gc;
273 xsl_object_handlers.write_property = xsl_objects_write_property;
274 xsl_object_handlers.get_property_ptr_ptr = xsl_objects_get_property_ptr_ptr;
275 xsl_object_handlers.read_property = xsl_objects_read_property;
276 xsl_object_handlers.unset_property = xsl_objects_unset_property;
286 xsltRegisterExtModuleFunction ((
const xmlChar *)
"functionString",
287 (
const xmlChar *)
"http://php.net/xsl",
289 xsltRegisterExtModuleFunction ((
const xmlChar *)
"function",
290 (
const xmlChar *)
"http://php.net/xsl",
292 xsltSetGenericErrorFunc(
NULL, xsl_libxslt_error_handler);
294 register_php_xsl_symbols(module_number);
301static void xsl_object_set_data(
void *obj,
zval *wrapper)
303 ((xsltStylesheetPtr) obj)->_private = wrapper;
314 xsl_object_set_data(obj, wrapper);
321 xsltUnregisterExtModuleFunction ((
const xmlChar *)
"functionString",
322 (
const xmlChar *)
"http://php.net/xsl");
323 xsltUnregisterExtModuleFunction ((
const xmlChar *)
"function",
324 (
const xmlChar *)
"http://php.net/xsl");
325 xsltSetGenericErrorFunc(
NULL,
NULL);
326 xsltCleanupGlobals();
341 major = xsltLibxsltVersion/10000;
342 minor = (xsltLibxsltVersion -
major * 10000) / 100;
343 subminor = (xsltLibxsltVersion -
major * 10000 -
minor * 100);
346 major = xsltLibxmlVersion/10000;
347 minor = (xsltLibxmlVersion -
major * 10000) / 100;
348 subminor = (xsltLibxmlVersion -
major * 10000 -
minor * 100);
strstr(string $haystack, string $needle, bool $before_needle=false)
php_info_print_table_start()
php_info_print_table_row(2, "PDO Driver for Firebird", "enabled")
php_info_print_table_end()
#define PHP_MSHUTDOWN_FUNCTION
#define PHP_MINIT_FUNCTION
#define PHP_MINFO_FUNCTION
#define XSL_DEFINE_PROP_ACCESSOR(c_name, php_name, prop_index)
zend_object * xsl_objects_new(zend_class_entry *class_type)
void xsl_objects_free_storage(zend_object *object)
zend_class_entry * xsl_xsltprocessor_class_entry
void xsl_free_sheet(xsl_object *intern)
#define XSL_TRY_OUTPUT_REPLACED_ERROR_MESSAGE(ctx, msg, search, replace)
void php_xsl_set_object(zval *wrapper, void *obj)
zend_module_entry xsl_module_entry
zval * xsl_prop_max_template_vars(zend_object *object)
void xsl_ext_function_string_php(xmlXPathParserContextPtr ctxt, int nargs)
#define XSL_SECPREF_DEFAULT
zval * xsl_prop_max_template_depth(zend_object *object)
void xsl_ext_function_object_php(xmlXPathParserContextPtr ctxt, int nargs)
const LIBEXSLT_DOTTED_VERSION
php_libxml_node_object * doc
php_libxml_ref_obj * sheet_ref_obj
php_dom_xpath_callbacks xpath_callbacks
PHP_DOM_EXPORT void php_dom_xpath_callbacks_dtor(php_dom_xpath_callbacks *registry)
PHP_DOM_EXPORT void php_dom_xpath_callbacks_ctor(php_dom_xpath_callbacks *registry)
PHP_DOM_EXPORT HashTable * php_dom_xpath_callbacks_get_gc_for_whole_object(php_dom_xpath_callbacks *registry, zend_object *object, zval **table, int *n)
ZEND_API ZEND_COLD void zend_throw_error(zend_class_entry *exception_ce, const char *format,...)
ZEND_API ZEND_COLD void zend_value_error(const char *format,...)
ZEND_API void object_properties_init(zend_object *object, zend_class_entry *class_type)
#define ZEND_GET_MODULE(name)
#define FREE_HASHTABLE(ht)
strcmp(string $string1, string $string2)
ZEND_API void ZEND_FASTCALL zend_hash_destroy(HashTable *ht)
#define zend_new_array(size)
struct _zend_string zend_string
struct _zend_module_dep zend_module_dep
struct _zend_module_entry zend_module_entry
#define STANDARD_MODULE_PROPERTIES
#define ZEND_MOD_REQUIRED(name)
#define STANDARD_MODULE_HEADER_EX
ZEND_API zval * zend_std_get_property_ptr_ptr(zend_object *zobj, zend_string *name, int type, void **cache_slot)
ZEND_API const zend_object_handlers std_object_handlers
ZEND_API zval * zend_std_write_property(zend_object *zobj, zend_string *name, zval *value, void **cache_slot)
ZEND_API void zend_std_unset_property(zend_object *zobj, zend_string *name, void **cache_slot)
ZEND_API zval * zend_std_read_property(zend_object *zobj, zend_string *name, int type, void **cache_slot, zval *rv)
ZEND_API void ZEND_FASTCALL zend_object_std_init(zend_object *object, zend_class_entry *ce)
ZEND_API void zend_object_std_dtor(zend_object *object)
#define XtOffsetOf(s_type, field)
#define UNEXPECTED(condition)
struct _zend_class_entry zend_class_entry
struct _zend_object zend_object
#define zend_string_equals_literal(str, literal)
struct _zend_array HashTable
struct _zend_object_handlers zend_object_handlers