File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / libxml / php_libxml.h
Revision 1.1.1.4 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Sun Jun 15 20:03:49 2014 UTC (10 years, 1 month ago) by misho
Branches: php, MAIN
CVS tags: v5_4_29, HEAD
php 5.4.29

    1: /*
    2:    +----------------------------------------------------------------------+
    3:    | PHP Version 5                                                        |
    4:    +----------------------------------------------------------------------+
    5:    | Copyright (c) 1997-2014 The PHP Group                                |
    6:    +----------------------------------------------------------------------+
    7:    | This source file is subject to version 3.01 of the PHP license,      |
    8:    | that is bundled with this package in the file LICENSE, and is        |
    9:    | available through the world-wide-web at the following url:           |
   10:    | http://www.php.net/license/3_01.txt                                  |
   11:    | If you did not receive a copy of the PHP license and are unable to   |
   12:    | obtain it through the world-wide-web, please send a note to          |
   13:    | license@php.net so we can mail you a copy immediately.               |
   14:    +----------------------------------------------------------------------+
   15:    | Authors: Shane Caraveo <shane@php.net>                               |
   16:    |          Wez Furlong <wez@thebrainroom.com>                          |
   17:    +----------------------------------------------------------------------+
   18: */
   19: 
   20: /* $Id: php_libxml.h,v 1.1.1.4 2014/06/15 20:03:49 misho Exp $ */
   21: 
   22: #ifndef PHP_LIBXML_H
   23: #define PHP_LIBXML_H
   24: 
   25: #if HAVE_LIBXML
   26: extern zend_module_entry libxml_module_entry;
   27: #define libxml_module_ptr &libxml_module_entry
   28: 
   29: #ifdef PHP_WIN32
   30: #	define PHP_LIBXML_API __declspec(dllexport)
   31: #elif defined(__GNUC__) && __GNUC__ >= 4
   32: #	define PHP_LIBXML_API __attribute__ ((visibility("default")))
   33: #else
   34: #	define PHP_LIBXML_API
   35: #endif
   36: 
   37: #include "ext/standard/php_smart_str.h"
   38: #include <libxml/tree.h>
   39: 
   40: #define LIBXML_SAVE_NOEMPTYTAG 1<<2
   41: 
   42: ZEND_BEGIN_MODULE_GLOBALS(libxml)
   43: 	zval *stream_context;
   44: 	smart_str error_buffer;
   45: 	zend_llist *error_list;
   46: 	struct _php_libxml_entity_resolver {
   47: 		zend_fcall_info			fci;
   48: 		zend_fcall_info_cache	fcc;
   49: 	} entity_loader;
   50: 	zend_bool entity_loader_disabled;
   51: ZEND_END_MODULE_GLOBALS(libxml)
   52: 
   53: typedef struct _libxml_doc_props {
   54: 	int formatoutput;
   55: 	int validateonparse;
   56: 	int resolveexternals;
   57: 	int preservewhitespace;
   58: 	int substituteentities;
   59: 	int stricterror;
   60: 	int recover;
   61: 	HashTable *classmap;
   62: } libxml_doc_props;
   63: 
   64: typedef struct _php_libxml_ref_obj {
   65: 	void *ptr;
   66: 	int   refcount;
   67: 	libxml_doc_props *doc_props;
   68: } php_libxml_ref_obj;
   69: 
   70: typedef struct _php_libxml_node_ptr {
   71: 	xmlNodePtr node;
   72: 	int	refcount;
   73: 	void *_private;
   74: } php_libxml_node_ptr;
   75: 
   76: typedef struct _php_libxml_node_object {
   77: 	zend_object  std;
   78: 	php_libxml_node_ptr *node;
   79: 	php_libxml_ref_obj *document;
   80: 	HashTable *properties;
   81: } php_libxml_node_object;
   82: 
   83: typedef void * (*php_libxml_export_node) (zval *object TSRMLS_DC);
   84: 
   85: PHP_LIBXML_API int php_libxml_increment_node_ptr(php_libxml_node_object *object, xmlNodePtr node, void *private_data TSRMLS_DC);
   86: PHP_LIBXML_API int php_libxml_decrement_node_ptr(php_libxml_node_object *object TSRMLS_DC);
   87: PHP_LIBXML_API int php_libxml_increment_doc_ref(php_libxml_node_object *object, xmlDocPtr docp TSRMLS_DC);
   88: PHP_LIBXML_API int php_libxml_decrement_doc_ref(php_libxml_node_object *object TSRMLS_DC);
   89: PHP_LIBXML_API xmlNodePtr php_libxml_import_node(zval *object TSRMLS_DC);
   90: PHP_LIBXML_API int php_libxml_register_export(zend_class_entry *ce, php_libxml_export_node export_function);
   91: /* When an explicit freeing of node and children is required */
   92: PHP_LIBXML_API void php_libxml_node_free_resource(xmlNodePtr node TSRMLS_DC);
   93: /* When object dtor is called as node may still be referenced */
   94: PHP_LIBXML_API void php_libxml_node_decrement_resource(php_libxml_node_object *object TSRMLS_DC);
   95: PHP_LIBXML_API void php_libxml_error_handler(void *ctx, const char *msg, ...);
   96: PHP_LIBXML_API void php_libxml_ctx_warning(void *ctx, const char *msg, ...);
   97: PHP_LIBXML_API void php_libxml_ctx_error(void *ctx, const char *msg, ...);
   98: PHP_LIBXML_API int php_libxml_xmlCheckUTF8(const unsigned char *s);
   99: PHP_LIBXML_API zval *php_libxml_switch_context(zval *context TSRMLS_DC);
  100: PHP_LIBXML_API void php_libxml_issue_error(int level, const char *msg TSRMLS_DC);
  101: PHP_LIBXML_API zend_bool php_libxml_disable_entity_loader(zend_bool disable TSRMLS_DC);
  102: 
  103: /* Init/shutdown functions*/
  104: PHP_LIBXML_API void php_libxml_initialize(void);
  105: PHP_LIBXML_API void php_libxml_shutdown(void);
  106: 
  107: #ifdef ZTS
  108: #define LIBXML(v) TSRMG(libxml_globals_id, zend_libxml_globals *, v)
  109: #else
  110: #define LIBXML(v) (libxml_globals.v)
  111: #endif
  112: 
  113: #else /* HAVE_LIBXML */
  114: #define libxml_module_ptr NULL
  115: #endif
  116: 
  117: #define phpext_libxml_ptr libxml_module_ptr
  118: 
  119: #endif /* PHP_LIBXML_H */
  120: 
  121: /*
  122:  * Local variables:
  123:  * tab-width: 4
  124:  * c-basic-offset: 4
  125:  * End:
  126:  */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>